home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / pango-1.0 / pango / pango-renderer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-04-25  |  7.8 KB  |  244 lines

  1. /* Pango
  2.  * pango-renderer.h: Base class for rendering
  3.  *
  4.  * Copyright (C) 2004, Red Hat, Inc.
  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. #ifndef __PANGO_RENDERER_H_
  22. #define __PANGO_RENDERER_H_
  23.  
  24. #include <pango/pango-layout.h>
  25.  
  26. G_BEGIN_DECLS
  27.  
  28. #define PANGO_TYPE_RENDERER            (pango_renderer_get_type())
  29. #define PANGO_RENDERER(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_RENDERER, PangoRenderer))
  30. #define PANGO_IS_RENDERER(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_RENDERER))
  31. #define PANGO_RENDERER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_RENDERER, PangoRendererClass))
  32. #define PANGO_IS_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_RENDERER))
  33. #define PANGO_RENDERER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_RENDERER, PangoRendererClass))
  34.  
  35. typedef struct _PangoRenderer        PangoRenderer;
  36. typedef struct _PangoRendererClass   PangoRendererClass;
  37. typedef struct _PangoRendererPrivate PangoRendererPrivate;
  38.  
  39. /**
  40.  * PangoRenderPart:
  41.  * @PANGO_RENDER_PART_FOREGROUND: the text itself
  42.  * @PANGO_RENDER_PART_BACKGROUND: the area behind the text
  43.  * @PANGO_RENDER_PART_UNDERLINE: underlines
  44.  * @PANGO_RENDER_PART_STRIKETHROUGH: strikethrough lines
  45.  *
  46.  * #PangoRenderPart defines different items to render for such
  47.  * purposes as setting colors.
  48.  *
  49.  * Since: 1.8
  50.  **/
  51. /* When extending, note N_RENDER_PARTS #define in pango-renderer.c */
  52. typedef enum
  53. {
  54.   PANGO_RENDER_PART_FOREGROUND,
  55.   PANGO_RENDER_PART_BACKGROUND,
  56.   PANGO_RENDER_PART_UNDERLINE,
  57.   PANGO_RENDER_PART_STRIKETHROUGH
  58. } PangoRenderPart;
  59.  
  60. /**
  61.  * PangoRenderer:
  62.  * @matrix: the current transformation matrix for the Renderer; may
  63.  *    be %NULL, which should be treated the same as the identity matrix.
  64.  *
  65.  * #PangoRenderer is a base class for objects that are used to
  66.  * render Pango objects such as #PangoGlyphString and
  67.  * #PangoLayout.
  68.  *
  69.  * Since: 1.8
  70.  **/
  71. struct _PangoRenderer
  72. {
  73.   /*< private >*/
  74.   GObject parent_instance;
  75.  
  76.   PangoUnderline underline;
  77.   gboolean strikethrough;
  78.   int active_count;
  79.   
  80.   /*< public >*/
  81.   PangoMatrix *matrix;        /* May be NULL */
  82.   
  83.   /*< private >*/
  84.   PangoRendererPrivate *priv;
  85. };
  86.  
  87. /**
  88.  * PangoRendererClass:
  89.  * @draw_glyphs: draws a #PangoGlyphString
  90.  * @draw_rectangle: draws a rectangle
  91.  * @draw_error_underline: draws a squiggly line that approximately
  92.  * covers the given rectangle in the style of an underline used to
  93.  * indicate a spelling error. 
  94.  * @draw_shape: draw content for a glyph shaped with #PangoAttrShape.
  95.  *   @x, @y are the coordinates of the left edge of the baseline,
  96.  *   in user coordinates.
  97.  * @draw_trapezoid: draws a trapezoidal filled area
  98.  * @draw_glyph: draws a single glyph
  99.  * @part_changed: do renderer specific processing when rendering
  100.  *  attributes change
  101.  * @begin: Do renderer-specific initialization before drawing
  102.  * @end: Do renderer-specific cleanup after drawing
  103.  * @prepare_run: updates the renderer for a new run
  104.  *
  105.  * Class structure for #PangoRenderer.
  106.  *
  107.  * Since: 1.8
  108.  **/
  109. struct _PangoRendererClass
  110. {
  111.   /*< private >*/
  112.   GObjectClass parent_class;
  113.  
  114.   /* vtable - not signals */
  115.   /*< public >*/
  116.  
  117.   /* All of the following have default implementations
  118.    * and take as coordinates user coordinates in Pango units
  119.    */
  120.   void (*draw_glyphs) (PangoRenderer     *renderer,
  121.                PangoFont         *font,
  122.                PangoGlyphString  *glyphs,
  123.                int                x,
  124.                int                y);
  125.   void (*draw_rectangle) (PangoRenderer     *renderer,
  126.               PangoRenderPart    part,
  127.               int                x,
  128.               int                y,
  129.               int                width,
  130.               int                height);
  131.   void (*draw_error_underline) (PangoRenderer     *renderer,
  132.                 int                x,
  133.                 int                y,
  134.                 int                width,
  135.                 int                height);
  136.  
  137.   /* Nothing is drawn for shaped glyphs unless this is implemented */
  138.   void (*draw_shape) (PangoRenderer  *renderer,
  139.               PangoAttrShape *attr,
  140.               int             x,
  141.               int             y);
  142.  
  143.   /* These two must be implemented and take coordinates in
  144.    * device space as doubles.
  145.    */
  146.   void (*draw_trapezoid) (PangoRenderer  *renderer,
  147.               PangoRenderPart part,
  148.               double          y1_,
  149.               double          x11,
  150.               double          x21,
  151.               double          y2,
  152.               double          x12,
  153.               double          x22);
  154.   void (*draw_glyph) (PangoRenderer *renderer,
  155.               PangoFont     *font,
  156.               PangoGlyph     glyph,
  157.               double         x,
  158.               double         y);
  159.  
  160.   /* Notification of change in rendering attributes
  161.    */
  162.   void (*part_changed) (PangoRenderer   *renderer,
  163.             PangoRenderPart  part);
  164.  
  165.   /* Paired around drawing operations
  166.    */
  167.   void (*begin) (PangoRenderer *renderer);
  168.   void (*end)   (PangoRenderer *renderer);
  169.  
  170.   /* Hooks into the details of layout rendering
  171.    */
  172.   void (*prepare_run) (PangoRenderer  *renderer,
  173.                PangoLayoutRun *run);
  174.  
  175.   /*< private >*/
  176.   
  177.   /* Padding for future expansion */
  178.   void (*_pango_reserved1) (void);
  179.   void (*_pango_reserved2) (void);
  180.   void (*_pango_reserved3) (void);
  181.   void (*_pango_reserved4) (void);
  182. };
  183.  
  184. GType pango_renderer_get_type    (void);
  185.  
  186. void pango_renderer_draw_layout          (PangoRenderer    *renderer,
  187.                       PangoLayout      *layout,
  188.                       int               x,
  189.                       int               y);
  190. void pango_renderer_draw_layout_line     (PangoRenderer    *renderer,
  191.                       PangoLayoutLine  *line,
  192.                       int               x,
  193.                       int               y);
  194. void pango_renderer_draw_glyphs          (PangoRenderer    *renderer,
  195.                       PangoFont        *font,
  196.                       PangoGlyphString *glyphs,
  197.                       int               x,
  198.                       int               y);
  199. void pango_renderer_draw_rectangle       (PangoRenderer    *renderer,
  200.                       PangoRenderPart   part,
  201.                       int               x,
  202.                       int               y,
  203.                       int               width,
  204.                       int               height);
  205. void pango_renderer_draw_error_underline (PangoRenderer    *renderer,
  206.                       int               x,
  207.                       int               y,
  208.                       int               width,
  209.                       int               height);
  210. void pango_renderer_draw_trapezoid       (PangoRenderer    *renderer,
  211.                       PangoRenderPart   part,
  212.                       double            y1_,
  213.                       double            x11,
  214.                       double            x21,
  215.                       double            y2,
  216.                       double            x12,
  217.                       double            x22);
  218. void pango_renderer_draw_glyph           (PangoRenderer    *renderer,
  219.                       PangoFont        *font,
  220.                       PangoGlyph        glyph,
  221.                       double            x,
  222.                       double            y);
  223.  
  224. void pango_renderer_activate             (PangoRenderer    *renderer);
  225. void pango_renderer_deactivate           (PangoRenderer    *renderer);
  226.  
  227. void        pango_renderer_part_changed (PangoRenderer   *renderer,
  228.                      PangoRenderPart  part);
  229.  
  230. void        pango_renderer_set_color (PangoRenderer    *renderer,
  231.                       PangoRenderPart   part,
  232.                       const PangoColor *color);
  233. PangoColor *pango_renderer_get_color (PangoRenderer    *renderer,
  234.                       PangoRenderPart   part);
  235.  
  236. void                        pango_renderer_set_matrix (PangoRenderer     *renderer,
  237.                                const PangoMatrix *matrix);
  238. G_CONST_RETURN PangoMatrix *pango_renderer_get_matrix (PangoRenderer     *renderer);
  239.  
  240. G_END_DECLS
  241.  
  242. #endif /* __PANGO_RENDERER_H_ */
  243.  
  244.