1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 2000 Red Hat, Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
21 #error "Only <gdk/gdk.h> can be included directly."
24 #ifndef __GDK_PANGO_H__
25 #define __GDK_PANGO_H__
27 #include <gdk/gdktypes.h>
31 /* Pango interaction */
33 typedef struct _GdkPangoRenderer GdkPangoRenderer;
34 typedef struct _GdkPangoRendererClass GdkPangoRendererClass;
35 typedef struct _GdkPangoRendererPrivate GdkPangoRendererPrivate;
37 #define GDK_TYPE_PANGO_RENDERER (gdk_pango_renderer_get_type())
38 #define GDK_PANGO_RENDERER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PANGO_RENDERER, GdkPangoRenderer))
39 #define GDK_IS_PANGO_RENDERER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PANGO_RENDERER))
40 #define GDK_PANGO_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_PANGO_RENDERER, GdkPangoRendererClass))
41 #define GDK_IS_PANGO_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PANGO_RENDERER))
42 #define GDK_PANGO_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_PANGO_RENDERER, GdkPangoRendererClass))
47 * #GdkPangoRenderer is a subclass of #PangoRenderer used for rendering
48 * Pango objects into GDK drawables. The default renderer for a particular
49 * screen is obtained with gdk_pango_renderer_get_default(); Pango
50 * functions like pango_renderer_draw_layout() and
51 * pango_renderer_draw_layout_line() are then used to draw objects with
54 * In most simple cases, applications can just use gdk_draw_layout(), and
55 * don't need to directly use #GdkPangoRenderer at all. Using the
56 * #GdkPangoRenderer directly is most useful when working with a
57 * transformation such as a rotation, because the Pango drawing functions
58 * take user space coordinates (coordinates before the transformation)
59 * instead of device coordinates.
61 * In certain cases it can be useful to subclass #GdkPangoRenderer. Examples
62 * of reasons to do this are to add handling of custom attributes by
63 * overriding 'prepare_run' or to do custom drawing of embedded objects
64 * by overriding 'draw_shape'.
68 struct _GdkPangoRenderer
71 PangoRenderer parent_instance;
73 GdkPangoRendererPrivate *priv;
77 * GdkPangoRendererClass:
79 * #GdkPangoRenderer is the class structure for #GdkPangoRenderer.
83 struct _GdkPangoRendererClass
86 PangoRendererClass parent_class;
89 GType gdk_pango_renderer_get_type (void) G_GNUC_CONST;
91 PangoRenderer *gdk_pango_renderer_new (GdkScreen *screen);
92 PangoRenderer *gdk_pango_renderer_get_default (GdkScreen *screen);
94 void gdk_pango_renderer_set_drawable (GdkPangoRenderer *gdk_renderer,
95 GdkDrawable *drawable);
96 void gdk_pango_renderer_set_gc (GdkPangoRenderer *gdk_renderer,
98 void gdk_pango_renderer_set_stipple (GdkPangoRenderer *gdk_renderer,
101 void gdk_pango_renderer_set_override_color (GdkPangoRenderer *gdk_renderer,
102 PangoRenderPart part,
103 const GdkColor *color);
105 /************************************************************************/
107 PangoContext *gdk_pango_context_get_for_screen (GdkScreen *screen);
108 #ifndef GDK_MULTIHEAD_SAFE
109 PangoContext *gdk_pango_context_get (void);
113 /* Get a clip region to draw only part of a layout or
114 * line. index_ranges contains alternating range starts/stops. The
115 * region is the region which contains the given ranges, i.e. if you
116 * draw with the region as clip, only the given ranges are drawn.
119 GdkRegion *gdk_pango_layout_line_get_clip_region (PangoLayoutLine *line,
122 const gint *index_ranges,
124 GdkRegion *gdk_pango_layout_get_clip_region (PangoLayout *layout,
127 const gint *index_ranges,
132 /* Attributes use to render insensitive text in GTK+. */
134 typedef struct _GdkPangoAttrStipple GdkPangoAttrStipple;
135 typedef struct _GdkPangoAttrEmbossed GdkPangoAttrEmbossed;
136 typedef struct _GdkPangoAttrEmbossColor GdkPangoAttrEmbossColor;
138 struct _GdkPangoAttrStipple
144 struct _GdkPangoAttrEmbossed
150 struct _GdkPangoAttrEmbossColor
156 PangoAttribute *gdk_pango_attr_stipple_new (GdkBitmap *stipple);
157 PangoAttribute *gdk_pango_attr_embossed_new (gboolean embossed);
158 PangoAttribute *gdk_pango_attr_emboss_color_new (const GdkColor *color);
162 #endif /* __GDK_FONT_H__ */