Git init
[external/pango1.0.git] / pango / pango-matrix.h
1 /* Pango
2  * pango-matrix.h: Matrix manipulation routines
3  *
4  * Copyright (C) 2002, 2006 Red Hat Software
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21
22 #ifndef __PANGO_MATRIX_H__
23 #define __PANGO_MATRIX_H__
24
25 #include <glib.h>
26 #include <glib-object.h>
27
28 G_BEGIN_DECLS
29
30 typedef struct _PangoMatrix    PangoMatrix;
31
32 /**
33  * PangoMatrix:
34  * @xx: 1st component of the transformation matrix
35  * @xy: 2nd component of the transformation matrix
36  * @yx: 3rd component of the transformation matrix
37  * @yy: 4th component of the transformation matrix
38  * @x0: x translation
39  * @y0: y translation
40  *
41  * A structure specifying a transformation between user-space
42  * coordinates and device coordinates. The transformation
43  * is given by
44  *
45  * <programlisting>
46  * x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0;
47  * y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0;
48  * </programlisting>
49  *
50  * Since: 1.6
51  **/
52 struct _PangoMatrix
53 {
54   double xx;
55   double xy;
56   double yx;
57   double yy;
58   double x0;
59   double y0;
60 };
61
62 /**
63  * PANGO_TYPE_MATRIX
64  *
65  * The GObject type for #PangoMatrix
66  **/
67 #define PANGO_TYPE_MATRIX (pango_matrix_get_type ())
68
69 /**
70  * PANGO_MATRIX_INIT
71  *
72  * Constant that can be used to initialize a PangoMatrix to
73  * the identity transform.
74  *
75  * <informalexample><programlisting>
76  * PangoMatrix matrix = PANGO_MATRIX_INIT;
77  * pango_matrix_rotate (&amp;matrix, 45.);
78  * </programlisting></informalexample>
79  *
80  * Since: 1.6
81  **/
82 #define PANGO_MATRIX_INIT { 1., 0., 0., 1., 0., 0. }
83
84 /* for PangoRectangle */
85 #include <pango/pango-types.h>
86
87 GType pango_matrix_get_type (void) G_GNUC_CONST;
88
89 PangoMatrix *pango_matrix_copy   (const PangoMatrix *matrix);
90 void         pango_matrix_free   (PangoMatrix *matrix);
91
92 void pango_matrix_translate (PangoMatrix *matrix,
93                              double       tx,
94                              double       ty);
95 void pango_matrix_scale     (PangoMatrix *matrix,
96                              double       scale_x,
97                              double       scale_y);
98 void pango_matrix_rotate    (PangoMatrix *matrix,
99                              double       degrees);
100 void pango_matrix_concat    (PangoMatrix       *matrix,
101                              const PangoMatrix *new_matrix);
102 void pango_matrix_transform_point    (const PangoMatrix *matrix,
103                                       double            *x,
104                                       double            *y);
105 void pango_matrix_transform_distance (const PangoMatrix *matrix,
106                                       double            *dx,
107                                       double            *dy);
108 void pango_matrix_transform_rectangle (const PangoMatrix *matrix,
109                                        PangoRectangle    *rect);
110 void pango_matrix_transform_pixel_rectangle (const PangoMatrix *matrix,
111                                              PangoRectangle    *rect);
112 double pango_matrix_get_font_scale_factor (const PangoMatrix *matrix) G_GNUC_PURE;
113
114
115 G_END_DECLS
116
117 #endif /* __PANGO_MATRIX_H__ */