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 (&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 | void pango_matrix_get_font_scale_factors (const PangoMatrix *matrix, |

114 | double *xscale, double *yscale); |

115 | |

116 | |

117 | G_END_DECLS |

118 | |

119 | #endif /* __PANGO_MATRIX_H__ */ |

120 |