Files correlati : pdflib Ricompilazione Demo : [ ] Commento : Aggiornata pdflib.dll alla versione 7.0.4 git-svn-id: svn://10.65.10.50/trunk@18580 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			117 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*---------------------------------------------------------------------------*
 | |
|  |              PDFlib - A library for generating PDF on the fly             |
 | |
|  +---------------------------------------------------------------------------+
 | |
|  | Copyright (c) 1997-2006 Thomas Merz and PDFlib GmbH. All rights reserved. |
 | |
|  +---------------------------------------------------------------------------+
 | |
|  |                                                                           |
 | |
|  |    This software is subject to the PDFlib license. It is NOT in the       |
 | |
|  |    public domain. Extended versions and commercial licenses are           |
 | |
|  |    available, please check http://www.pdflib.com.                         |
 | |
|  |                                                                           |
 | |
|  *---------------------------------------------------------------------------*/
 | |
| 
 | |
| /* $Id: pc_geom.h,v 1.4 2009-03-23 08:51:17 guy Exp $
 | |
|  *
 | |
|  * PDFlib core geometry utilities
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef PC_GEOM_H
 | |
| #define PC_GEOM_H
 | |
| 
 | |
| /* Unfortunately M_PI causes porting woes, so we use a private name */
 | |
| #define PDC_M_PI                3.14159265358979323846          /* pi */
 | |
| #define PDC_DEG2RAD             0.0174532925199433
 | |
| #define PDC_RAD2DEG            57.2957795130823070
 | |
| 
 | |
| /* Conversion factors */
 | |
| #define PDC_INCH2METER          0.0254
 | |
| #define PDC_METER2INCH         39.3701
 | |
| 
 | |
| /* same as PDF_SMALLREAL */
 | |
| #define PDC_SMALLREAL   (0.000015)
 | |
| 
 | |
| typedef double pdc_scalar;
 | |
| typedef struct { pdc_scalar x, y; } pdc_vector;
 | |
| typedef struct { pdc_vector ll, ur; } pdc_box;
 | |
| typedef struct { pdc_scalar llx, lly, urx, ury; } pdc_rectangle;
 | |
| typedef struct { int np; pdc_vector *p; } pdc_polyline;
 | |
| typedef struct { pdc_scalar a, b, c, d, e, f; } pdc_matrix;
 | |
| 
 | |
| /* methods for fitting rectangle elements into a box */
 | |
| typedef enum
 | |
| {
 | |
|     pdc_nofit = 0,      /* no fit, only positioning */
 | |
|     pdc_clip,           /* no fit, only positioning with following condition:
 | |
|                          * - the parts of element beyond the bounds of box
 | |
|                          *   are clipped */
 | |
|     pdc_slice,          /* fit into the box with following conditions:
 | |
|                          * - aspect ratio of element is preserved
 | |
|                          * - entire box is covered by the element
 | |
|                          * - the parts of element beyond the bounds of box
 | |
|                          *   are clipped */
 | |
|     pdc_meet,           /* fit into the box with following conditions:
 | |
|                          * - aspect ratio of element is preserved
 | |
|                          * - entire element is visible in the box */
 | |
|     pdc_entire,         /* fit into the box with following conditions:
 | |
|                          * - entire box is covered by the element
 | |
|                          * - entire element is visible in the box */
 | |
|     pdc_tauto           /* automatic fitting. If element extends fit box in
 | |
|                          * length, then element is shrinked, if shrink
 | |
|                          * factor is greater than a specified value. Otherwise
 | |
|                          * pdc_meet is applied. */
 | |
| }
 | |
| pdc_fitmethod;
 | |
| 
 | |
| pdc_bool pdc_is_identity_matrix(pdc_matrix *m);
 | |
| void pdc_identity_matrix(pdc_matrix *M);
 | |
| void pdc_translation_matrix(pdc_scalar tx, pdc_scalar ty, pdc_matrix *M);
 | |
| void pdc_scale_matrix(pdc_scalar sx, pdc_scalar sy, pdc_matrix *M);
 | |
| void pdc_rotation_matrix(pdc_scalar angle, pdc_matrix *M);
 | |
| void pdc_skew_matrix(pdc_scalar alpha, pdc_scalar beta, pdc_matrix *M);
 | |
| void pdc_multiply_matrix(const pdc_matrix *M, pdc_matrix *N);
 | |
| void pdc_multiply_matrix3(pdc_matrix *L, const pdc_matrix *M,
 | |
|         const pdc_matrix *N);
 | |
| void pdc_multiply_6s_matrix(pdc_matrix *M, pdc_scalar a, pdc_scalar b,
 | |
|         pdc_scalar c, pdc_scalar d, pdc_scalar e, pdc_scalar f);
 | |
| void pdc_invert_matrix(pdc_core *pdc, pdc_matrix *N, pdc_matrix *M);
 | |
| void pdc_print_matrix(const char *name, const pdc_matrix *M);
 | |
| pdc_scalar pdc_transform_scalar(const pdc_matrix *M, pdc_scalar s);
 | |
| void pdc_transform_point(const pdc_matrix *M,
 | |
|         pdc_scalar x, pdc_scalar y, pdc_scalar *tx, pdc_scalar *ty);
 | |
| void pdc_transform_vector(const pdc_matrix *M, pdc_vector *v, pdc_vector *tv);
 | |
| void pdc_transform_rvector(const pdc_matrix *M, pdc_vector *v, pdc_vector *tv);
 | |
| pdc_scalar pdc_get_vector_length(pdc_vector *start, pdc_vector *end);
 | |
| 
 | |
| void pdc_place_element(pdc_fitmethod method, pdc_scalar minfscale,
 | |
|         const pdc_box *fitbox, const pdc_vector *fitrelpos,
 | |
|         const pdc_vector *elemsize, const pdc_vector *elemrelpos,
 | |
|         pdc_box *elembox, pdc_vector *scale);
 | |
| void pdc_box2polyline(const pdc_matrix *M, const pdc_box *box,
 | |
|         pdc_vector *polyline);
 | |
| void *pdc_delete_polylinelist(pdc_core *pdc, pdc_polyline *polylinelist,
 | |
|         int nplines);
 | |
| void pdc_init_box(pdc_box *box);
 | |
| void pdc_adapt_box(pdc_box *box, const pdc_vector *v);
 | |
| void pdc_normalize_box(pdc_box *box, pdc_scalar ydir);
 | |
| void pdc_transform_box(const pdc_matrix *M, pdc_box *box, pdc_box *tbox);
 | |
| 
 | |
| pdc_bool pdc_rect_isnull(const pdc_rectangle *r);
 | |
| pdc_bool pdc_rect_contains(const pdc_rectangle *r1, const pdc_rectangle *r2);
 | |
| void pdc_rect_copy(pdc_rectangle *r1, const pdc_rectangle *r2);
 | |
| void pdc_rect_init(pdc_rectangle *r,
 | |
|         pdc_scalar llx, pdc_scalar lly, pdc_scalar urx, pdc_scalar ury);
 | |
| pdc_bool pdc_rect_intersect(pdc_rectangle *result,
 | |
| 	const pdc_rectangle *r1, const pdc_rectangle *r2);
 | |
| void pdc_rect_transform(const pdc_matrix *M,
 | |
|         const pdc_rectangle *r1, pdc_rectangle *r2);
 | |
| void pdc_rect_normalize(pdc_rectangle *r);
 | |
| void pdc_rect_normalize2(pdc_rectangle *dst, const pdc_rectangle *src);
 | |
| void pdc_rect2polyline(const pdc_matrix *M, const pdc_rectangle *r,
 | |
|         pdc_vector *polyline);
 | |
| void pdc_polyline2rect(const pdc_vector *polyline, int np, pdc_rectangle *r);
 | |
| void pdc_print_rectangle(const char *name, const pdc_rectangle *r);
 | |
| 
 | |
| #endif  /* PC_GEOM_H */
 | |
| 
 |