diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2007-01-16 00:23:59 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2007-01-16 00:23:59 +0000 |
commit | 7a102793913cb7a1a0eefbbfc9d5c0d04c9eb868 (patch) | |
tree | d614b6941c83927af97a818fde59841499dd7917 /pango/pango-matrix.h | |
parent | fd7ecbb0203d89f31e9b9b7c10147fa2a3864513 (diff) | |
download | pango-7a102793913cb7a1a0eefbbfc9d5c0d04c9eb868.tar.gz |
Bug 323173 – Add layout of mixed direction text for vertical layout
2007-01-15 Behdad Esfahbod <behdad@gnome.org>
Bug 323173 – Add layout of mixed direction text for vertical layout
* pango/pango-gravity.h:
* pango/pango-gravity.c:
Moved gravity stuff here. New public API:
PangoGravityHint
pango_gravity_get_for_matrix()
pango_gravity_get_for_script()
* pango/pango-context.h:
* pango/pango-context.c (pango_context_init),
(update_resolved_gravity), (itemize_state_update_for_new_run):
Support gravity hint. New public API:
pango_context_set_gravity_hint()
pango_context_get_gravity_hint()
* pango/pango-utils.c:
* pango/pango-matrix.c:
* pango/pango-matrix.h:
* pango/pango-types.h:
Moved gravity and matrix stuff into its own header. pango-types.h
includes both pango-matrix.h and pango-gravity.h
* pango/pango.h:
Include new headers.
* pango/pango.def:
* pango/Makefile.am:
Update.
* docs/pango-docs.sgml:
* docs/pango-sections.txt:
* docs/tmpl/glyphs.sgml:
* docs/tmpl/main.sgml:
* docs/tmpl/vertical.sgml:
Add a section for Vertical Text.
* examples/renderdemo.c (do_output), (parse_gravity_hint),
(parse_options):
Support gravity hint.
* examples/test-mixed.txt:
New test, mixed Latin, Arabic, Chinese text.
svn path=/trunk/; revision=2144
Diffstat (limited to 'pango/pango-matrix.h')
-rw-r--r-- | pango/pango-matrix.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/pango/pango-matrix.h b/pango/pango-matrix.h new file mode 100644 index 00000000..2b746c4f --- /dev/null +++ b/pango/pango-matrix.h @@ -0,0 +1,115 @@ +/* Pango + * pango-matrix.h: Matrix manipulation routines + * + * Copyright (C) 2002, 2006 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <glib.h> + +#ifndef __PANGO_MATRIX_H__ +#define __PANGO_MATRIX_H__ + +G_BEGIN_DECLS + +typedef struct _PangoMatrix PangoMatrix; + +/** + * PangoMatrix: + * @xx: 1st component of the transformation matrix + * @xy: 2nd component of the transformation matrix + * @yx: 3rd component of the transformation matrix + * @yy: 4th component of the transformation matrix + * @x0: x translation + * @y0: y translation + * + * A structure specifying a transformation between user-space + * coordinates and device coordinates. The transformation + * is given by + * + * <programlisting> + * x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0; + * y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0; + * </programlisting> + * + * Since: 1.6 + **/ +struct _PangoMatrix +{ + double xx; + double xy; + double yx; + double yy; + double x0; + double y0; +}; + +/** + * PANGO_TYPE_MATRIX + * + * The GObject type for #PangoMatrix + **/ +#define PANGO_TYPE_MATRIX (pango_matrix_get_type ()) + +/** + * PANGO_MATRIX_INIT + * + * Constant that can be used to initialize a PangoMatrix to + * the identity transform. + * + * <informalexample><programlisting> + * PangoMatrix matrix = PANGO_MATRIX_INIT; + * pango_matrix_rotate (&matrix, 45.); + * </programlisting></informalexample> + * + * Since: 1.6 + **/ +#define PANGO_MATRIX_INIT { 1., 0., 0., 1., 0., 0. } + +#include <pango/pango-types.h> + +GType pango_matrix_get_type (void); + +PangoMatrix *pango_matrix_copy (const PangoMatrix *matrix); +void pango_matrix_free (PangoMatrix *matrix); + +void pango_matrix_translate (PangoMatrix *matrix, + double tx, + double ty); +void pango_matrix_scale (PangoMatrix *matrix, + double scale_x, + double scale_y); +void pango_matrix_rotate (PangoMatrix *matrix, + double degrees); +void pango_matrix_concat (PangoMatrix *matrix, + const PangoMatrix *new_matrix); +void pango_matrix_transform_point (const PangoMatrix *matrix, + double *x, + double *y); +void pango_matrix_transform_distance (const PangoMatrix *matrix, + double *dx, + double *dy); +void pango_matrix_transform_rectangle (const PangoMatrix *matrix, + PangoRectangle *rect); +void pango_matrix_transform_pixel_rectangle (const PangoMatrix *matrix, + PangoRectangle *rect); +double pango_matrix_get_font_scale_factor (const PangoMatrix *matrix); + + +G_END_DECLS + +#endif /* __PANGO_MATRIX_H__ */ |