pango-pangorenderer.html

来自「GTK+-2.0源码之pango-1.15.6.tar.gz」· HTML 代码 · 共 1,015 行 · 第 1/3 页

HTML
1,015
字号
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>PangoRenderer</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><link rel="start" href="index.html" title="Pango Reference Manual"><link rel="up" href="lowlevel.html" title="Low Level Functionality"><link rel="prev" href="lowlevel.html" title="Low Level Functionality"><link rel="next" href="PangoFcFontMap.html" title="PangoFcFontMap"><meta name="generator" content="GTK-Doc V1.6 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="chapter" href="pango.html" title="Basic Pango Interfaces"><link rel="chapter" href="rendering.html" title="Rendering with Pango"><link rel="chapter" href="lowlevel.html" title="Low Level Functionality"><link rel="chapter" href="tools.html" title="Pango Tools"><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 1.2"><link rel="index" href="ix04.html" title="Index of new symbols in 1.4"><link rel="index" href="ix05.html" title="Index of new symbols in 1.6"><link rel="index" href="ix06.html" title="Index of new symbols in 1.8"><link rel="index" href="ix07.html" title="Index of new symbols in 1.10"><link rel="index" href="ix08.html" title="Index of new symbols in 1.12"><link rel="index" href="ix09.html" title="Index of new symbols in 1.14"><link rel="index" href="ix10.html" title="Index of new symbols in 1.16"></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="lowlevel.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="lowlevel.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">Pango Reference Manual</th><td><a accesskey="n" href="PangoFcFontMap.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="#top_of_page" class="shortcut">Top</a>                  &#160;|&#160;                  <a href="#desc" class="shortcut">Description</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="pango-PangoRenderer"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><span class="refentrytitle"><a name="top_of_page"></a>PangoRenderer</span></h2><p>PangoRenderer &#8212; Rendering driver base class</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><a name="synopsis"></a><h2>Synopsis</h2><pre class="synopsis">            <a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a>;enum        <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a>;#define     <a href="pango-PangoRenderer.html#PANGO-TYPE-RENDER-PART:CAPS">PANGO_TYPE_RENDER_PART</a>            <a href="pango-PangoRenderer.html#PangoRendererClass">PangoRendererClass</a>;void        <a href="pango-PangoRenderer.html#pango-renderer-draw-layout">pango_renderer_draw_layout</a>      (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-Layout-Objects.html#PangoLayout">PangoLayout</a> *layout,                                             int x,                                             int y);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-layout-line">pango_renderer_draw_layout_line</a> (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-Layout-Objects.html#PangoLayoutLine">PangoLayoutLine</a> *line,                                             int x,                                             int y);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-glyphs">pango_renderer_draw_glyphs</a>      (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-Fonts.html#PangoFont">PangoFont</a> *font,                                             <a href="pango-Glyph-Storage.html#PangoGlyphString">PangoGlyphString</a> *glyphs,                                             int x,                                             int y);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-rectangle">pango_renderer_draw_rectangle</a>   (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part,                                             int x,                                             int y,                                             int width,                                             int height);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-error-underline">pango_renderer_draw_error_underline</a>                                            (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             int x,                                             int y,                                             int width,                                             int height);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-trapezoid">pango_renderer_draw_trapezoid</a>   (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part,                                             double y1_,                                             double x11,                                             double x21,                                             double y2,                                             double x12,                                             double x22);void        <a href="pango-PangoRenderer.html#pango-renderer-draw-glyph">pango_renderer_draw_glyph</a>       (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-Fonts.html#PangoFont">PangoFont</a> *font,                                             <a href="pango-Glyph-Storage.html#PangoGlyph">PangoGlyph</a> glyph,                                             double x,                                             double y);void        <a href="pango-PangoRenderer.html#pango-renderer-activate">pango_renderer_activate</a>         (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer);void        <a href="pango-PangoRenderer.html#pango-renderer-deactivate">pango_renderer_deactivate</a>       (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer);void        <a href="pango-PangoRenderer.html#pango-renderer-part-changed">pango_renderer_part_changed</a>     (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part);void        <a href="pango-PangoRenderer.html#pango-renderer-set-color">pango_renderer_set_color</a>        (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part,                                             const <a href="pango-Text-Attributes.html#PangoColor">PangoColor</a> *color);<a href="pango-Text-Attributes.html#PangoColor">PangoColor</a>* <a href="pango-PangoRenderer.html#pango-renderer-get-color">pango_renderer_get_color</a>        (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             <a href="pango-PangoRenderer.html#PangoRenderPart">PangoRenderPart</a> part);void        <a href="pango-PangoRenderer.html#pango-renderer-set-matrix">pango_renderer_set_matrix</a>       (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer,                                             const <a href="pango-Glyph-Storage.html#PangoMatrix">PangoMatrix</a> *matrix);const <a href="pango-Glyph-Storage.html#PangoMatrix">PangoMatrix</a>* <a href="pango-PangoRenderer.html#pango-renderer-get-matrix">pango_renderer_get_matrix</a>                                            (<a href="pango-PangoRenderer.html#PangoRenderer">PangoRenderer</a> *renderer);</pre></div><div class="refsect1" lang="en"><a name="desc"></a><h2>Description</h2><p><a href="pango-PangoRenderer.html#PangoRenderer"><span class="type">PangoRenderer</span></a> is a base class that contains the necessary logic forrendering a <a href="pango-Layout-Objects.html#PangoLayout"><span class="type">PangoLayout</span></a> or <a href="pango-Layout-Objects.html#PangoLayoutLine"><span class="type">PangoLayoutLine</span></a>. By subclassing<a href="pango-PangoRenderer.html#PangoRenderer"><span class="type">PangoRenderer</span></a> and overriding operations such as <em class="parameter"><code>draw_glyphs</code></em> and<em class="parameter"><code>draw_rectangle</code></em>, renderers for particular font backends anddestinations can be created.</p></div><div class="refsect1" lang="en"><a name="details"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2910539"></a><h3><a name="PangoRenderer"></a>PangoRenderer</h3><a class="indexterm" name="id2910553"></a><pre class="programlisting">typedef struct {  PangoMatrix *matrix;		/* May be NULL */} PangoRenderer;</pre><p><a href="pango-PangoRenderer.html#PangoRenderer"><span class="type">PangoRenderer</span></a> is a base class for objects that are used torender Pango objects such as <a href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a> and<a href="pango-Layout-Objects.html#PangoLayout"><span class="type">PangoLayout</span></a>.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><a href="pango-Glyph-Storage.html#PangoMatrix">PangoMatrix</a>&#160;*<em class="structfield"><code>matrix</code></em>;</span></td><td> the current transformation matrix for the Renderer; may   be <ahref="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, which should be treated the same as the identity matrix.</td></tr></tbody></table></div><p>Since  1.8</p></div><hr><div class="refsect2" lang="en"><a name="id2910639"></a><h3><a name="PangoRenderPart"></a>enum PangoRenderPart</h3><a class="indexterm" name="id2910655"></a><pre class="programlisting">typedef enum{  PANGO_RENDER_PART_FOREGROUND,  PANGO_RENDER_PART_BACKGROUND,  PANGO_RENDER_PART_UNDERLINE,  PANGO_RENDER_PART_STRIKETHROUGH} PangoRenderPart;</pre><p><a href="pango-PangoRenderer.html#PangoRenderPart"><span class="type">PangoRenderPart</span></a> defines different items to render for suchpurposes as setting colors.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><a name="PANGO-RENDER-PART-FOREGROUND:CAPS"></a><code class="literal">PANGO_RENDER_PART_FOREGROUND</code></span></td><td> the text itself</td></tr><tr><td><span class="term"><a name="PANGO-RENDER-PART-BACKGROUND:CAPS"></a><code class="literal">PANGO_RENDER_PART_BACKGROUND</code></span></td><td> the area behind the text</td></tr><tr><td><span class="term"><a name="PANGO-RENDER-PART-UNDERLINE:CAPS"></a><code class="literal">PANGO_RENDER_PART_UNDERLINE</code></span></td><td> underlines</td></tr><tr><td><span class="term"><a name="PANGO-RENDER-PART-STRIKETHROUGH:CAPS"></a><code class="literal">PANGO_RENDER_PART_STRIKETHROUGH</code></span></td><td> strikethrough lines</td></tr></tbody></table></div><p>Since  1.8</p></div><hr><div class="refsect2" lang="en"><a name="id2910787"></a><h3><a name="PANGO-TYPE-RENDER-PART:CAPS"></a>PANGO_TYPE_RENDER_PART</h3><a class="indexterm" name="id2910800"></a><pre class="programlisting">#define PANGO_TYPE_RENDER_PART (pango_render_part_get_type())</pre><p>The <ahref="../gobject/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> type for <a href="pango-PangoRenderer.html#PangoRenderPart"><span class="type">PangoRenderPart</span></a>.</p></div><hr><div class="refsect2" lang="en"><a name="id2910832"></a><h3><a name="PangoRendererClass"></a>PangoRendererClass</h3><a class="indexterm" name="id2910848"></a><pre class="programlisting">typedef struct {  /* All of the following have default implementations   * and take as coordinates user coordinates in Pango units   */  void (*draw_glyphs) (PangoRenderer     *renderer,		       PangoFont         *font,		       PangoGlyphString  *glyphs,		       int                x,		       int                y);  void (*draw_rectangle) (PangoRenderer     *renderer,			  PangoRenderPart    part,			  int                x,			  int                y,			  int                width,			  int                height);  void (*draw_error_underline) (PangoRenderer     *renderer,				int                x,				int                y,				int                width,				int                height);  /* Nothing is drawn for shaped glyphs unless this is implemented */  void (*draw_shape) (PangoRenderer  *renderer,		      PangoAttrShape *attr,		      int             x,		      int             y);  /* These two must be implemented and take coordinates in   * device space as doubles.   */  void (*draw_trapezoid) (PangoRenderer  *renderer,			  PangoRenderPart part,			  double          y1_,			  double          x11,			  double          x21,			  double          y2,			  double          x12,			  double          x22);  void (*draw_glyph) (PangoRenderer *renderer,		      PangoFont     *font,		      PangoGlyph     glyph,		      double         x,		      double         y);  /* Notification of change in rendering attributes   */  void (*part_changed) (PangoRenderer   *renderer,			PangoRenderPart  part);  /* Paired around drawing operations   */  void (*begin) (PangoRenderer *renderer);  void (*end)   (PangoRenderer *renderer);  /* Hooks into the details of layout rendering   */  void (*prepare_run) (PangoRenderer  *renderer,		       PangoLayoutRun *run);} PangoRendererClass;</pre><p>Class structure for <a href="pango-PangoRenderer.html#PangoRenderer"><span class="type">PangoRenderer</span></a>.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="structfield"><code>draw_glyphs</code></em>&#160;()</span></td><td> draws a <a href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a></td></tr><tr><td><span class="term"><em class="structfield"><code>draw_rectangle</code></em>&#160;()</span></td><td> draws a rectangle</td></tr><tr><td><span class="term"><em class="structfield"><code>draw_error_underline</code></em>&#160;()</span></td><td> draws a squiggly line that approximatelycovers the given rectangle in the style of an underline used toindicate a spelling error.</td></tr><tr><td><span class="term"><em class="structfield"><code>draw_shape</code></em>&#160;()</span></td><td> draw content for a glyph shaped with <a href="pango-Text-Attributes.html#PangoAttrShape"><span class="type">PangoAttrShape</span></a>.  <em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em> are the coordinates of the left edge of the baseline,  in user coordinates.</td></tr><tr><td><span class="term"><em class="structfield"><code>draw_trapezoid</code></em>&#160;()</span></td><td> draws a trapezoidal filled area</td></tr><tr><td><span class="term"><em class="structfield"><code>draw_glyph</code></em>&#160;()</span></td><td> draws a single glyph</td></tr><tr><td><span class="term"><em class="structfield"><code>part_changed</code></em>&#160;()</span></td><td> do renderer specific processing when rendering attributes change</td></tr><tr><td><span class="term"><em class="structfield"><code>begin</code></em>&#160;()</span></td>

⌨️ 快捷键说明

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