⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdk-pango-interaction.html

📁 最新gtk中文资料集
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>Pango Interaction</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="GDK Reference Manual"><link rel="up" href="reference.html" title="API Reference"><link rel="prev" href="gdk-Input-Devices.html" title="Input Devices"><link rel="next" href="gdk-Cairo-Interaction.html" title="Cairo Interaction"><meta name="generator" content="GTK-Doc V1.9 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="reference" href="reference.html" title="API Reference"><link rel="index" href="ix01.html" title="Index"><link rel="index" href="ix02.html" title="Index of deprecated symbols"><link rel="index" href="ix03.html" title="Index of new symbols in 2.2"><link rel="index" href="ix04.html" title="Index of new symbols in 2.4"><link rel="index" href="ix05.html" title="Index of new symbols in 2.6"><link rel="index" href="ix06.html" title="Index of new symbols in 2.8"><link rel="index" href="ix07.html" title="Index of new symbols in 2.10"><link rel="index" href="ix08.html" title="Index of new symbols in 2.12"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="gdk-Input-Devices.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">GDK Reference Manual</th><td><a accesskey="n" href="gdk-Cairo-Interaction.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr><tr><td colspan="5" class="shortcuts"><nobr><a href="#id3293599" class="shortcut">Top</a>                  &#160;|&#160;                  <a href="#id3294180" class="shortcut">Description</a>                  &#160;|&#160;                  <a href="#id3294114" class="shortcut">Object Hierarchy</a>                  &#160;|&#160;                  <a href="#id3294146" class="shortcut">Properties</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="gdk-Pango-Interaction"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><a name="id3293599"></a><span class="refentrytitle">Pango Interaction</span></h2><p>Pango Interaction &#8212; Using Pango in GDK</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><a name="GdkPangoRenderer"></a><pre class="synopsis">#include &lt;gdk/gdk.h&gt;                    <a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer-struct">GdkPangoRenderer</a>;                    <a class="link" href="gdk-Pango-Interaction.html#GdkPangoRendererClass">GdkPangoRendererClass</a>;<ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html">PangoRenderer</a>*      <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-new">gdk_pango_renderer_new</a>              (<a class="link" href="GdkScreen.html" title="GdkScreen">GdkScreen</a> *screen);<ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html">PangoRenderer</a>*      <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-get-default">gdk_pango_renderer_get_default</a>      (<a class="link" href="GdkScreen.html" title="GdkScreen">GdkScreen</a> *screen);void                <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-set-drawable">gdk_pango_renderer_set_drawable</a>     (<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer">GdkPangoRenderer</a> *gdk_renderer,                                                         <a class="link" href="gdk-Drawing-Primitives.html#GdkDrawable">GdkDrawable</a> *drawable);void                <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-set-gc">gdk_pango_renderer_set_gc</a>           (<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer">GdkPangoRenderer</a> *gdk_renderer,                                                         <a class="link" href="gdk-Graphics-Contexts.html#GdkGC">GdkGC</a> *gc);void                <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-set-stipple">gdk_pango_renderer_set_stipple</a>      (<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer">GdkPangoRenderer</a> *gdk_renderer,                                                         <ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part,                                                         <a class="link" href="gdk-Bitmaps-and-Pixmaps.html#GdkBitmap">GdkBitmap</a> *stipple);void                <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-renderer-set-override-color">gdk_pango_renderer_set_override_color</a>                                                        (<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer">GdkPangoRenderer</a> *gdk_renderer,                                                         <ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part,                                                         const <a class="link" href="gdk-Colormaps-and-Colors.html#GdkColor">GdkColor</a> *color);<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Processing.html#PangoContext">PangoContext</a>*       <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-context-get">gdk_pango_context_get</a>               (void);<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Processing.html#PangoContext">PangoContext</a>*       <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-context-get-for-screen">gdk_pango_context_get_for_screen</a>    (<a class="link" href="GdkScreen.html" title="GdkScreen">GdkScreen</a> *screen);void                <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-context-set-colormap">gdk_pango_context_set_colormap</a>      (<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Processing.html#PangoContext">PangoContext</a> *context,                                                         <a class="link" href="gdk-Colormaps-and-Colors.html#GdkColormap">GdkColormap</a> *colormap);                    <a class="link" href="gdk-Pango-Interaction.html#GdkPangoAttrEmbossed">GdkPangoAttrEmbossed</a>;                    <a class="link" href="gdk-Pango-Interaction.html#GdkPangoAttrEmbossColor">GdkPangoAttrEmbossColor</a>;                    <a class="link" href="gdk-Pango-Interaction.html#GdkPangoAttrStipple">GdkPangoAttrStipple</a>;<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Attributes.html#PangoAttribute">PangoAttribute</a>*     <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-attr-emboss-color-new">gdk_pango_attr_emboss_color_new</a>     (const <a class="link" href="gdk-Colormaps-and-Colors.html#GdkColor">GdkColor</a> *color);<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Attributes.html#PangoAttribute">PangoAttribute</a>*     <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-attr-embossed-new">gdk_pango_attr_embossed_new</a>         (<ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean">gboolean</a> embossed);<ahref="/usr/share/gtk-doc/html/pango/pango-Text-Attributes.html#PangoAttribute">PangoAttribute</a>*     <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-attr-stipple-new">gdk_pango_attr_stipple_new</a>          (<a class="link" href="gdk-Bitmaps-and-Pixmaps.html#GdkBitmap">GdkBitmap</a> *stipple);<a class="link" href="gdk-Points-Rectangles-and-Regions.html#GdkRegion">GdkRegion</a>*          <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-layout-get-clip-region">gdk_pango_layout_get_clip_region</a>    (<ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#PangoLayout">PangoLayout</a> *layout,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> x_origin,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> y_origin,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> *index_ranges,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> n_ranges);<a class="link" href="gdk-Points-Rectangles-and-Regions.html#GdkRegion">GdkRegion</a>*          <a class="link" href="gdk-Pango-Interaction.html#gdk-pango-layout-line-get-clip-region">gdk_pango_layout_line_get_clip_region</a>                                                        (<ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#PangoLayoutLine">PangoLayoutLine</a> *line,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> x_origin,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> y_origin,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> *index_ranges,                                                         <ahref="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint">gint</a> n_ranges);</pre></div><div class="refsect1" lang="en"><a name="id3294114"></a><h2>Object Hierarchy</h2><pre class="synopsis">  <ahref="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>   +----<ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html">PangoRenderer</a>         +----GdkPangoRenderer</pre></div><div class="refsect1" lang="en"><a name="id3294146"></a><h2>Properties</h2><pre class="synopsis">  "<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer--screen">screen</a>"                   <a class="link" href="GdkScreen.html" title="GdkScreen">GdkScreen</a>             : Read / Write / Construct Only</pre></div><div class="refsect1" lang="en"><a name="id3294180"></a><h2>Description</h2><p>Pango is the text layout system used by GDK and GTK+. The functionsand types in this section are used to render Pango objects to GDK.drawables, and also extend the set of Pango attributes to includestippling and embossing.</p><p>Creating a <ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#PangoLayout"><span class="type">PangoLayout</span></a> object is the first step in rendering text,and requires getting a handle to a <ahref="/usr/share/gtk-doc/html/pango/pango-Text-Processing.html#PangoContext"><span class="type">PangoContext</span></a>. For GTK+ programs,you'll usually want to use <ahref="/usr/share/gtk-doc/html/gtk/GtkWidget.html#gtk-widget-get-pango-context"><code class="function">gtk_widget_get_pango_context()</code></a>, or<ahref="/usr/share/gtk-doc/html/gtk/GtkWidget.html#gtk-widget-create-pango-layout"><code class="function">gtk_widget_create_pango_layout()</code></a>, rather than using the lowlevel<a class="link" href="gdk-Pango-Interaction.html#gdk-pango-context-get-for-screen"><code class="function">gdk_pango_context_get_for_screen()</code></a>. Once you have a <ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#PangoLayout"><span class="type">PangoLayout</span></a>, youcan set the text and attributes of it with Pango functions like<ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#pango-layout-set-text"><code class="function">pango_layout_set_text()</code></a> and get its size with <ahref="/usr/share/gtk-doc/html/pango/pango-Layout-Objects.html#pango-layout-get-size"><code class="function">pango_layout_get_size()</code></a>.(Note that Pango uses a fixed point system internally, so convertingbetween Pango units and pixels using PANGO_SCALE or the <ahref="/usr/share/gtk-doc/html/pango/pango-Glyph-Storage.html#PANGO-PIXELS:CAPS"><code class="function">PANGO_PIXELS()</code></a> macro.)</p><p>Rendering a Pango layout is done most simply with <a class="link" href="gdk-Drawing-Primitives.html#gdk-draw-layout"><code class="function">gdk_draw_layout()</code></a>;you can also draw pieces of the layout with <a class="link" href="gdk-Drawing-Primitives.html#gdk-draw-layout"><code class="function">gdk_draw_layout()</code></a> or<a class="link" href="gdk-Drawing-Primitives.html#gdk-draw-glyphs"><code class="function">gdk_draw_glyphs()</code></a>. <a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer"><span class="type">GdkPangoRenderer</span></a> is a subclass of <ahref="/usr/share/gtk-doc/html/pango/PangoRenderer.html"><span class="type">PangoRenderer</span></a>that is used internally to implement these functions. Using itdirectly or subclassing it can be useful in some cases. See the<a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer"><span class="type">GdkPangoRenderer</span></a> documentation for details.</p><div class="example"><a name="rotated-example"></a><p class="title"><b>Example&#160;8.&#160;Using <a class="link" href="gdk-Pango-Interaction.html#GdkPangoRenderer"><span class="type">GdkPangoRenderer</span></a> to draw transformed text</b></p><div class="example-contents"><pre class="programlisting">#define RADIUS 100#define N_WORDS 10#define FONT "Sans Bold 18"  GdkScreen *screen = gdk_drawable_get_screen (drawable);PangoRenderer *renderer;GdkGC *gc;PangoMatrix matrix = PANGO_MATRIX_INIT;PangoContext *context;PangoLayout *layout;PangoFontDescription *desc;double device_radius;int width, height;int i;/* Get the default renderer for the screen, and set it up for drawing  */renderer = gdk_pango_renderer_get_default (screen);gdk_pango_renderer_set_drawable (GDK_PANGO_RENDERER (renderer), drawable);gc = gdk_gc_new (drawable);gdk_pango_renderer_set_gc (GDK_PANGO_RENDERER (renderer), gc);/* Set up a transformation matrix so that the user space coordinates for * where we are drawing are [-RADIUS, RADIUS], [-RADIUS, RADIUS] * We first center, then change the scale */gdk_drawable_get_size (drawable, &amp;width, &amp;height);device_radius = MIN (width, height) / 2.;pango_matrix_translate (&amp;matrix,                        device_radius + (width - 2 * device_radius) / 2,                        device_radius + (height - 2 * device_radius) / 2);pango_matrix_scale (&amp;matrix, device_radius / RADIUS, device_radius / RADIUS);/* Create a PangoLayout, set the font and text */context = gdk_pango_context_get_for_screen (screen);layout = pango_layout_new (context);pango_layout_set_text (layout, "Text", -1);desc = pango_font_description_from_string (FONT);pango_layout_set_font_description (layout, desc);pango_font_description_free (desc);/* Draw the layout N_WORDS times in a circle */for (i = 0; i &lt; N_WORDS; i++)  {    GdkColor color;    PangoMatrix rotated_matrix = matrix;    int width, height;    double angle = (360. * i) / N_WORDS;    /* Gradient from red at angle == 60 to blue at angle == 300 */    color.red   = 65535 * (1 + cos ((angle - 60) * M_PI / 180.)) / 2;    color.green = 0;    color.blue  = 65535  - color.red;        gdk_pango_renderer_set_override_color (GDK_PANGO_RENDERER (renderer),                                           PANGO_RENDER_PART_FOREGROUND, &amp;color);                                                 pango_matrix_rotate (&amp;rotated_matrix, angle);    pango_context_set_matrix (context, &amp;rotated_matrix);        /* Inform Pango to re-layout the text with the new transformation matrix */    pango_layout_context_changed (layout);        pango_layout_get_size (layout, &amp;width, &amp;height);    pango_renderer_draw_layout (renderer, layout,                                - width / 2, - RADIUS * PANGO_SCALE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -