]> Pileus Git - ~andy/gtk/blob - gdk/gdkpango.h
Remove deprecated code from GdkPango
[~andy/gtk] / gdk / gdkpango.h
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2000 Red Hat, Inc. 
3  *
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.
8  *
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.
13  *
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.
18  */
19
20 #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
21 #error "Only <gdk/gdk.h> can be included directly."
22 #endif
23
24 #ifndef __GDK_PANGO_H__
25 #define __GDK_PANGO_H__
26
27 #include <gdk/gdktypes.h>
28
29 G_BEGIN_DECLS
30
31 /* Pango interaction */
32
33 typedef struct _GdkPangoRenderer        GdkPangoRenderer;
34 typedef struct _GdkPangoRendererClass   GdkPangoRendererClass;
35 typedef struct _GdkPangoRendererPrivate GdkPangoRendererPrivate;
36
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))
43
44 /**
45  * GdkPangoRenderer:
46  *
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
52  * the renderer.
53  *
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.
60  *
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'.
65  *
66  * Since: 2.6
67  **/
68 struct _GdkPangoRenderer
69 {
70   /*< private >*/
71   PangoRenderer parent_instance;
72
73   GdkPangoRendererPrivate *priv;
74 };
75
76 /**
77  * GdkPangoRendererClass:
78  *
79  * #GdkPangoRenderer is the class structure for #GdkPangoRenderer.
80  *
81  * Since: 2.6
82  **/
83 struct _GdkPangoRendererClass
84 {
85   /*< private >*/
86   PangoRendererClass parent_class;
87 };
88
89 GType gdk_pango_renderer_get_type (void) G_GNUC_CONST;
90
91 PangoRenderer *gdk_pango_renderer_new         (GdkScreen *screen);
92 PangoRenderer *gdk_pango_renderer_get_default (GdkScreen *screen);
93
94 void gdk_pango_renderer_set_drawable       (GdkPangoRenderer *gdk_renderer,
95                                             GdkDrawable      *drawable);
96 void gdk_pango_renderer_set_gc             (GdkPangoRenderer *gdk_renderer,
97                                             GdkGC            *gc);
98 void gdk_pango_renderer_set_stipple        (GdkPangoRenderer *gdk_renderer,
99                                             PangoRenderPart   part,
100                                             GdkBitmap        *stipple);
101 void gdk_pango_renderer_set_override_color (GdkPangoRenderer *gdk_renderer,
102                                             PangoRenderPart   part,
103                                             const GdkColor   *color);
104
105 /************************************************************************/
106
107 PangoContext *gdk_pango_context_get_for_screen (GdkScreen    *screen);
108 #ifndef GDK_MULTIHEAD_SAFE
109 PangoContext *gdk_pango_context_get            (void);
110 #endif
111
112
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.
117  */
118
119 GdkRegion    *gdk_pango_layout_line_get_clip_region (PangoLayoutLine *line,
120                                                      gint             x_origin,
121                                                      gint             y_origin,
122                                                      const gint      *index_ranges,
123                                                      gint             n_ranges);
124 GdkRegion    *gdk_pango_layout_get_clip_region      (PangoLayout     *layout,
125                                                      gint             x_origin,
126                                                      gint             y_origin,
127                                                      const gint      *index_ranges,
128                                                      gint             n_ranges);
129
130
131
132 /* Attributes use to render insensitive text in GTK+. */
133
134 typedef struct _GdkPangoAttrStipple GdkPangoAttrStipple;
135 typedef struct _GdkPangoAttrEmbossed GdkPangoAttrEmbossed;
136 typedef struct _GdkPangoAttrEmbossColor GdkPangoAttrEmbossColor;
137
138 struct _GdkPangoAttrStipple
139 {
140   PangoAttribute attr;
141   GdkBitmap *stipple;
142 };
143
144 struct _GdkPangoAttrEmbossed
145 {
146   PangoAttribute attr;
147   gboolean embossed;
148 };
149
150 struct _GdkPangoAttrEmbossColor
151 {
152   PangoAttribute attr;
153   PangoColor color;
154 };
155
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);
159
160 G_END_DECLS
161
162 #endif /* __GDK_FONT_H__ */