<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
  "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="PangoRenderer">
<refmeta>
<refentrytitle role="top_of_page" id="PangoRenderer.top_of_page">PangoRenderer</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>PANGO Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>PangoRenderer</refname>
<refpurpose>Rendering driver base class</refpurpose>
</refnamediv>

<refsect1 id="PangoRenderer.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-layout">pango_renderer_draw_layout</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-layout-line">pango_renderer_draw_layout_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-glyphs">pango_renderer_draw_glyphs</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-glyph-item">pango_renderer_draw_glyph_item</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-rectangle">pango_renderer_draw_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-error-underline">pango_renderer_draw_error_underline</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-trapezoid">pango_renderer_draw_trapezoid</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-draw-glyph">pango_renderer_draw_glyph</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-activate">pango_renderer_activate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-deactivate">pango_renderer_deactivate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-part-changed">pango_renderer_part_changed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-set-color">pango_renderer_set_color</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="PangoColor"><returnvalue>PangoColor</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="pango-renderer-get-color">pango_renderer_get_color</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-set-alpha">pango_renderer_set_alpha</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint16"><returnvalue>guint16</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-get-alpha">pango_renderer_get_alpha</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="pango-renderer-set-matrix">pango_renderer_set_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type">const <link linkend="PangoMatrix"><returnvalue>PangoMatrix</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="pango-renderer-get-matrix">pango_renderer_get_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="PangoLayout"><returnvalue>PangoLayout</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="pango-renderer-get-layout">pango_renderer_get_layout</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="PangoLayoutLine"><returnvalue>PangoLayoutLine</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="pango-renderer-get-layout-line">pango_renderer_get_layout_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="PangoRenderer.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="PangoRenderer-struct">PangoRenderer</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="PangoRenderPart">PangoRenderPart</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="PANGO-TYPE-RENDER-PART:CAPS">PANGO_TYPE_RENDER_PART</link></entry></row>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="PangoRendererClass">PangoRendererClass</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="PangoRenderer.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GEnum">GEnum</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> PangoRenderPart
    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> PangoRenderer
        <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> <link linkend="PangoXftRenderer">PangoXftRenderer</link>
</screen>
</refsect1>


<refsect1 id="PangoRenderer.description" role="desc">
<title role="desc.title">Description</title>
<para><link linkend="PangoRenderer"><type>PangoRenderer</type></link> is a base class that contains the necessary logic for
rendering a <link linkend="PangoLayout"><type>PangoLayout</type></link> or <link linkend="PangoLayoutLine"><type>PangoLayoutLine</type></link>. By subclassing
<link linkend="PangoRenderer"><type>PangoRenderer</type></link> and overriding operations such as <parameter>draw_glyphs</parameter>
 and
<parameter>draw_rectangle</parameter>
, renderers for particular font backends and
destinations can be created.</para>

</refsect1>
<refsect1 id="PangoRenderer.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="pango-renderer-draw-layout" role="function" condition="since:1.8">
<title>pango_renderer_draw_layout&#160;()</title>
<indexterm zone="pango-renderer-draw-layout" role="1.8"><primary>pango_renderer_draw_layout</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_layout (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                            <parameter><link linkend="PangoLayout"><type>PangoLayout</type></link> *layout</parameter>,
                            <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                            <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
<para>Draws <parameter>layout</parameter>
 with the specified <link linkend="PangoRenderer"><type>PangoRenderer</type></link>.</para>
<refsect3 id="pango-renderer-draw-layout.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>layout</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoLayout"><type>PangoLayout</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-layout-line" role="function" condition="since:1.8">
<title>pango_renderer_draw_layout_line&#160;()</title>
<indexterm zone="pango-renderer-draw-layout-line" role="1.8"><primary>pango_renderer_draw_layout_line</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_layout_line (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                                 <parameter><link linkend="PangoLayoutLine"><type>PangoLayoutLine</type></link> *line</parameter>,
                                 <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                                 <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
<para>Draws <parameter>line</parameter>
 with the specified <link linkend="PangoRenderer"><type>PangoRenderer</type></link>.</para>
<refsect3 id="pango-renderer-draw-layout-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>line</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoLayoutLine"><type>PangoLayoutLine</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-glyphs" role="function" condition="since:1.8">
<title>pango_renderer_draw_glyphs&#160;()</title>
<indexterm zone="pango-renderer-draw-glyphs" role="1.8"><primary>pango_renderer_draw_glyphs</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_glyphs (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                            <parameter><link linkend="PangoFont"><type>PangoFont</type></link> *font</parameter>,
                            <parameter><link linkend="PangoGlyphString"><type>PangoGlyphString</type></link> *glyphs</parameter>,
                            <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                            <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
<para>Draws the glyphs in <parameter>glyphs</parameter>
 with the specified <link linkend="PangoRenderer"><type>PangoRenderer</type></link>.</para>
<refsect3 id="pango-renderer-draw-glyphs.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>font</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoFont"><type>PangoFont</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>glyphs</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoGlyphString"><type>PangoGlyphString</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-glyph-item" role="function" condition="since:1.22">
<title>pango_renderer_draw_glyph_item&#160;()</title>
<indexterm zone="pango-renderer-draw-glyph-item" role="1.22"><primary>pango_renderer_draw_glyph_item</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_glyph_item (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                                <parameter>const <link linkend="char"><type>char</type></link> *text</parameter>,
                                <parameter><link linkend="PangoGlyphItem"><type>PangoGlyphItem</type></link> *glyph_item</parameter>,
                                <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                                <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
<para>Draws the glyphs in <parameter>glyph_item</parameter>
 with the specified <link linkend="PangoRenderer"><type>PangoRenderer</type></link>,
embedding the text associated with the glyphs in the output if the
output format supports it (PDF for example).</para>
<para>Note that <parameter>text</parameter>
 is the start of the text for layout, which is then
indexed by <literal><parameter>glyph_item->item->offset</parameter>
</literal>.</para>
<para>If <parameter>text</parameter>
 is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, this simply calls <link linkend="pango-renderer-draw-glyphs"><function>pango_renderer_draw_glyphs()</function></link>.</para>
<para>The default implementation of this method simply falls back to
<link linkend="pango-renderer-draw-glyphs"><function>pango_renderer_draw_glyphs()</function></link>.</para>
<refsect3 id="pango-renderer-draw-glyph-item.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>text</para></entry>
<entry role="parameter_description"><para>the UTF-8 text that <parameter>glyph_item</parameter>
refers to, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>glyph_item</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoGlyphItem"><type>PangoGlyphItem</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y position of left edge of baseline, in user space coordinates
in Pango units.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.22">1.22</link></para></refsect2>
<refsect2 id="pango-renderer-draw-rectangle" role="function" condition="since:1.8">
<title>pango_renderer_draw_rectangle&#160;()</title>
<indexterm zone="pango-renderer-draw-rectangle" role="1.8"><primary>pango_renderer_draw_rectangle</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_rectangle (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                               <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>,
                               <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                               <parameter><link linkend="int"><type>int</type></link> y</parameter>,
                               <parameter><link linkend="int"><type>int</type></link> width</parameter>,
                               <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
<para>Draws an axis-aligned rectangle in user space coordinates with the
specified <link linkend="PangoRenderer"><type>PangoRenderer</type></link>.</para>
<para>This should be called while <parameter>renderer</parameter>
 is already active.  Use
<link linkend="pango-renderer-activate"><function>pango_renderer_activate()</function></link> to activate a renderer.</para>
<refsect3 id="pango-renderer-draw-rectangle.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>type of object this rectangle is part of</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X position at which to draw rectangle, in user space coordinates in Pango units</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y position at which to draw rectangle, in user space coordinates in Pango units</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>width of rectangle in Pango units in user space coordinates</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>height of rectangle in Pango units in user space coordinates</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-error-underline" role="function" condition="since:1.8">
<title>pango_renderer_draw_error_underline&#160;()</title>
<indexterm zone="pango-renderer-draw-error-underline" role="1.8"><primary>pango_renderer_draw_error_underline</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_error_underline (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                                     <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                                     <parameter><link linkend="int"><type>int</type></link> y</parameter>,
                                     <parameter><link linkend="int"><type>int</type></link> width</parameter>,
                                     <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
<para>Draw a squiggly line that approximately covers the given rectangle
in the style of an underline used to indicate a spelling error.
(The width of the underline is rounded to an integer number
of up/down segments and the resulting rectangle is centered
in the original rectangle)</para>
<para>This should be called while <parameter>renderer</parameter>
 is already active.  Use
<link linkend="pango-renderer-activate"><function>pango_renderer_activate()</function></link> to activate a renderer.</para>
<refsect3 id="pango-renderer-draw-error-underline.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate of underline, in Pango units in user coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate of underline, in Pango units in user coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>width of underline, in Pango units in user coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>height of underline, in Pango units in user coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-trapezoid" role="function" condition="since:1.8">
<title>pango_renderer_draw_trapezoid&#160;()</title>
<indexterm zone="pango-renderer-draw-trapezoid" role="1.8"><primary>pango_renderer_draw_trapezoid</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_trapezoid (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                               <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> y1_</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> x11</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> x21</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> y2</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> x12</parameter>,
                               <parameter><link linkend="double"><type>double</type></link> x22</parameter>);</programlisting>
<para>Draws a trapezoid with the parallel sides aligned with the X axis
using the given <link linkend="PangoRenderer"><type>PangoRenderer</type></link>; coordinates are in device space.</para>
<refsect3 id="pango-renderer-draw-trapezoid.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>type of object this trapezoid is part of</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y1_</para></entry>
<entry role="parameter_description"><para>Y coordinate of top of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x11</para></entry>
<entry role="parameter_description"><para>X coordinate of left end of top of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x21</para></entry>
<entry role="parameter_description"><para>X coordinate of right end of top of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y2</para></entry>
<entry role="parameter_description"><para>Y coordinate of bottom of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x12</para></entry>
<entry role="parameter_description"><para>X coordinate of left end of bottom of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x22</para></entry>
<entry role="parameter_description"><para>X coordinate of right end of bottom of trapezoid</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-draw-glyph" role="function" condition="since:1.8">
<title>pango_renderer_draw_glyph&#160;()</title>
<indexterm zone="pango-renderer-draw-glyph" role="1.8"><primary>pango_renderer_draw_glyph</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_draw_glyph (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                           <parameter><link linkend="PangoFont"><type>PangoFont</type></link> *font</parameter>,
                           <parameter><link linkend="PangoGlyph"><type>PangoGlyph</type></link> glyph</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> x</parameter>,
                           <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
<para>Draws a single glyph with coordinates in device space.</para>
<refsect3 id="pango-renderer-draw-glyph.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>font</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoFont"><type>PangoFont</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>glyph</para></entry>
<entry role="parameter_description"><para>the glyph index of a single glyph</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate of left edge of baseline of glyph</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate of left edge of baseline of glyph</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-activate" role="function" condition="since:1.8">
<title>pango_renderer_activate&#160;()</title>
<indexterm zone="pango-renderer-activate" role="1.8"><primary>pango_renderer_activate</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_activate (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>);</programlisting>
<para>Does initial setup before rendering operations on <parameter>renderer</parameter>
.
<link linkend="pango-renderer-deactivate"><function>pango_renderer_deactivate()</function></link> should be called when done drawing.
Calls such as <link linkend="pango-renderer-draw-layout"><function>pango_renderer_draw_layout()</function></link> automatically
activate the layout before drawing on it. Calls to
<link linkend="pango-renderer-activate"><function>pango_renderer_activate()</function></link> and <link linkend="pango-renderer-deactivate"><function>pango_renderer_deactivate()</function></link> can
be nested and the renderer will only be initialized and
deinitialized once.</para>
<refsect3 id="pango-renderer-activate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-deactivate" role="function" condition="since:1.8">
<title>pango_renderer_deactivate&#160;()</title>
<indexterm zone="pango-renderer-deactivate" role="1.8"><primary>pango_renderer_deactivate</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_deactivate (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>);</programlisting>
<para>Cleans up after rendering operations on <parameter>renderer</parameter>
. See
docs for <link linkend="pango-renderer-activate"><function>pango_renderer_activate()</function></link>.</para>
<refsect3 id="pango-renderer-deactivate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-part-changed" role="function" condition="since:1.8">
<title>pango_renderer_part_changed&#160;()</title>
<indexterm zone="pango-renderer-part-changed" role="1.8"><primary>pango_renderer_part_changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_part_changed (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                             <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>);</programlisting>
<para>Informs Pango that the way that the rendering is done
for <parameter>part</parameter>
 has changed in a way that would prevent multiple
pieces being joined together into one drawing call. For
instance, if a subclass of <link linkend="PangoRenderer"><type>PangoRenderer</type></link> was to add a stipple
option for drawing underlines, it needs to call</para>
<informalexample><programlisting>
pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
</programlisting></informalexample>
<para>When the stipple changes or underlines with different stipples
might be joined together. Pango automatically calls this for
changes to colors. (See <link linkend="pango-renderer-set-color"><function>pango_renderer_set_color()</function></link>)</para>
<refsect3 id="pango-renderer-part-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>the part for which rendering has changed.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-set-color" role="function" condition="since:1.8">
<title>pango_renderer_set_color&#160;()</title>
<indexterm zone="pango-renderer-set-color" role="1.8"><primary>pango_renderer_set_color</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_set_color (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                          <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>,
                          <parameter>const <link linkend="PangoColor"><type>PangoColor</type></link> *color</parameter>);</programlisting>
<para>Sets the color for part of the rendering.
Also see <link linkend="pango-renderer-set-alpha"><function>pango_renderer_set_alpha()</function></link>.</para>
<refsect3 id="pango-renderer-set-color.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>the part to change the color of</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>color</para></entry>
<entry role="parameter_description"><para>the new color or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to unset the current color. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-get-color" role="function" condition="since:1.8">
<title>pango_renderer_get_color&#160;()</title>
<indexterm zone="pango-renderer-get-color" role="1.8"><primary>pango_renderer_get_color</primary></indexterm>
<programlisting language="C"><link linkend="PangoColor"><returnvalue>PangoColor</returnvalue></link>&#160;*
pango_renderer_get_color (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                          <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>);</programlisting>
<para>Gets the current rendering color for the specified part.</para>
<refsect3 id="pango-renderer-get-color.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>the part to get the color for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="pango-renderer-get-color.returns" role="returns">
<title>Returns</title>
<para>the color for the
specified part, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if it hasn't been set and should be
inherited from the environment. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-set-alpha" role="function" condition="since:1.38">
<title>pango_renderer_set_alpha&#160;()</title>
<indexterm zone="pango-renderer-set-alpha" role="1.38"><primary>pango_renderer_set_alpha</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_set_alpha (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                          <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>,
                          <parameter><link linkend="guint16"><type>guint16</type></link> alpha</parameter>);</programlisting>
<para>Sets the alpha for part of the rendering.
Note that the alpha may only be used if a color is
specified for <parameter>part</parameter>
 as well.</para>
<refsect3 id="pango-renderer-set-alpha.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>the part to set the alpha for</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>alpha</para></entry>
<entry role="parameter_description"><para>an alpha value between 1 and 65536, or 0 to unset the alpha</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.38">1.38</link></para></refsect2>
<refsect2 id="pango-renderer-get-alpha" role="function" condition="since:1.38">
<title>pango_renderer_get_alpha&#160;()</title>
<indexterm zone="pango-renderer-get-alpha" role="1.38"><primary>pango_renderer_get_alpha</primary></indexterm>
<programlisting language="C"><link linkend="guint16"><returnvalue>guint16</returnvalue></link>
pango_renderer_get_alpha (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                          <parameter><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> part</parameter>);</programlisting>
<para>Gets the current alpha for the specified part.</para>
<refsect3 id="pango-renderer-get-alpha.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>part</para></entry>
<entry role="parameter_description"><para>the part to get the alpha for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="pango-renderer-get-alpha.returns" role="returns">
<title>Returns</title>
<para> the alpha for the specified part,
or 0 if it hasn't been set and should be
inherited from the environment.</para>
</refsect3><para role="since">Since: <link linkend="api-index-1.38">1.38</link></para></refsect2>
<refsect2 id="pango-renderer-set-matrix" role="function" condition="since:1.8">
<title>pango_renderer_set_matrix&#160;()</title>
<indexterm zone="pango-renderer-set-matrix" role="1.8"><primary>pango_renderer_set_matrix</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
pango_renderer_set_matrix (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>,
                           <parameter>const <link linkend="PangoMatrix"><type>PangoMatrix</type></link> *matrix</parameter>);</programlisting>
<para>Sets the transformation matrix that will be applied when rendering.</para>
<refsect3 id="pango-renderer-set-matrix.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>matrix</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoMatrix"><type>PangoMatrix</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to unset any existing matrix.
(No matrix set is the same as setting the identity matrix.). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-get-matrix" role="function" condition="since:1.8">
<title>pango_renderer_get_matrix&#160;()</title>
<indexterm zone="pango-renderer-get-matrix" role="1.8"><primary>pango_renderer_get_matrix</primary></indexterm>
<programlisting language="C">const <link linkend="PangoMatrix"><returnvalue>PangoMatrix</returnvalue></link>&#160;*
pango_renderer_get_matrix (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>);</programlisting>
<para>Gets the transformation matrix that will be applied when
rendering. See <link linkend="pango-renderer-set-matrix"><function>pango_renderer_set_matrix()</function></link>.</para>
<refsect3 id="pango-renderer-get-matrix.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="pango-renderer-get-matrix.returns" role="returns">
<title>Returns</title>
<para>the matrix, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if no matrix has
been set (which is the same as the identity matrix). The returned
matrix is owned by Pango and must not be modified or freed. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="pango-renderer-get-layout" role="function" condition="since:1.20">
<title>pango_renderer_get_layout&#160;()</title>
<indexterm zone="pango-renderer-get-layout" role="1.20"><primary>pango_renderer_get_layout</primary></indexterm>
<programlisting language="C"><link linkend="PangoLayout"><returnvalue>PangoLayout</returnvalue></link>&#160;*
pango_renderer_get_layout (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>);</programlisting>
<para>Gets the layout currently being rendered using <parameter>renderer</parameter>
.
Calling this function only makes sense from inside a subclass's
methods, like in its draw_shape vfunc, for example.</para>
<para>The returned layout should not be modified while still being
rendered.</para>
<refsect3 id="pango-renderer-get-layout.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="pango-renderer-get-layout.returns" role="returns">
<title>Returns</title>
<para>the layout, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if
no layout is being rendered using <parameter>renderer</parameter>
at this time. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-1.20">1.20</link></para></refsect2>
<refsect2 id="pango-renderer-get-layout-line" role="function" condition="since:1.20">
<title>pango_renderer_get_layout_line&#160;()</title>
<indexterm zone="pango-renderer-get-layout-line" role="1.20"><primary>pango_renderer_get_layout_line</primary></indexterm>
<programlisting language="C"><link linkend="PangoLayoutLine"><returnvalue>PangoLayoutLine</returnvalue></link>&#160;*
pango_renderer_get_layout_line (<parameter><link linkend="PangoRenderer"><type>PangoRenderer</type></link> *renderer</parameter>);</programlisting>
<para>Gets the layout line currently being rendered using <parameter>renderer</parameter>
.
Calling this function only makes sense from inside a subclass's
methods, like in its draw_shape vfunc, for example.</para>
<para>The returned layout line should not be modified while still being
rendered.</para>
<refsect3 id="pango-renderer-get-layout-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>renderer</para></entry>
<entry role="parameter_description"><para>a <link linkend="PangoRenderer"><type>PangoRenderer</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="pango-renderer-get-layout-line.returns" role="returns">
<title>Returns</title>
<para>the layout line, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
if no layout line is being rendered using <parameter>renderer</parameter>
at this time. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-1.20">1.20</link></para></refsect2>

</refsect1>
<refsect1 id="PangoRenderer.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="PangoRenderer-struct" role="struct">
<title>struct PangoRenderer</title>
<indexterm zone="PangoRenderer-struct" role="1.8"><primary>PangoRenderer</primary></indexterm>
<programlisting language="C">struct PangoRenderer {
  PangoMatrix *matrix;          /* May be NULL */
};
</programlisting>
<para><link linkend="PangoRenderer"><type>PangoRenderer</type></link> is a base class for objects that are used to
render Pango objects such as <link linkend="PangoGlyphString"><type>PangoGlyphString</type></link> and
<link linkend="PangoLayout"><type>PangoLayout</type></link>.</para>
<refsect3 id="PangoRenderer.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><link linkend="PangoMatrix"><type>PangoMatrix</type></link>&#160;*<structfield id="PangoRenderer-struct.matrix">matrix</structfield>;</para></entry>
<entry role="struct_member_description"><para>the current transformation matrix for
the Renderer; may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>, which should be treated the
same as the identity matrix. </para></entry>
<entry role="struct_member_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="PangoRenderPart" role="enum" condition="since:1.8">
<title>enum PangoRenderPart</title>
<indexterm zone="PangoRenderPart" role="1.8"><primary>PangoRenderPart</primary></indexterm>
<para><link linkend="PangoRenderPart"><type>PangoRenderPart</type></link> defines different items to render for such
purposes as setting colors.</para>
<refsect3 id="PangoRenderPart.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="PANGO-RENDER-PART-FOREGROUND:CAPS">PANGO_RENDER_PART_FOREGROUND</para></entry>
<entry role="enum_member_description"><para>the text itself</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="PANGO-RENDER-PART-BACKGROUND:CAPS">PANGO_RENDER_PART_BACKGROUND</para></entry>
<entry role="enum_member_description"><para>the area behind the text</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="PANGO-RENDER-PART-UNDERLINE:CAPS">PANGO_RENDER_PART_UNDERLINE</para></entry>
<entry role="enum_member_description"><para>underlines</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="PANGO-RENDER-PART-STRIKETHROUGH:CAPS">PANGO_RENDER_PART_STRIKETHROUGH</para></entry>
<entry role="enum_member_description"><para>strikethrough lines</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="PANGO-RENDER-PART-OVERLINE:CAPS">PANGO_RENDER_PART_OVERLINE</para></entry>
<entry role="enum_member_description"><para>overlines</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
<refsect2 id="PANGO-TYPE-RENDER-PART:CAPS" role="macro">
<title>PANGO_TYPE_RENDER_PART</title>
<indexterm zone="PANGO-TYPE-RENDER-PART:CAPS"><primary>PANGO_TYPE_RENDER_PART</primary></indexterm>
<programlisting language="C">#define PANGO_TYPE_RENDER_PART (pango_render_part_get_type ())
</programlisting>
</refsect2>
<refsect2 id="PangoRendererClass" role="struct" condition="since:1.8">
<title>struct PangoRendererClass</title>
<indexterm zone="PangoRendererClass" role="1.8"><primary>PangoRendererClass</primary></indexterm>
<programlisting language="C">struct PangoRendererClass {
  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);
  void (*draw_shape)           (PangoRenderer    *renderer,
                                PangoAttrShape   *attr,
                                int               x,
                                int               y);

  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);

  void (*part_changed)         (PangoRenderer    *renderer,
                                PangoRenderPart   part);

  void (*begin)                (PangoRenderer    *renderer);
  void (*end)                  (PangoRenderer    *renderer);

  void (*prepare_run)          (PangoRenderer    *renderer,
                                PangoLayoutRun   *run);

  void (*draw_glyph_item)      (PangoRenderer    *renderer,
                                const char       *text,
                                PangoGlyphItem   *glyph_item,
                                int               x,
                                int               y);
};
</programlisting>
<para>Class structure for <link linkend="PangoRenderer"><type>PangoRenderer</type></link>.</para>
<para>The following vfuncs take user space coordinates in Pango units
and have default implementations:</para>
<itemizedlist>
<listitem><para>draw_glyphs</para></listitem>
<listitem><para>draw_rectangle</para></listitem>
<listitem><para>draw_error_underline</para></listitem>
<listitem><para>draw_shape</para></listitem>
<listitem>
<para>draw_glyph_item</para>
</listitem>
</itemizedlist>
<para>The default draw_shape implementation draws nothing.</para>
<para>The following vfuncs take device space coordinates as doubles
and must be implemented:</para>
<itemizedlist>
<listitem><para>draw_trapezoid</para></listitem>
<listitem><para>draw_glyph</para></listitem>
</itemizedlist>
<refsect3 id="PangoRendererClass.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-glyphs">draw_glyphs</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a <link linkend="PangoGlyphString"><type>PangoGlyphString</type></link></para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-rectangle">draw_rectangle</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a rectangle</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-error-underline">draw_error_underline</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a squiggly line that approximately
covers the given rectangle in the style of an underline used to
indicate a spelling error.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-shape">draw_shape</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draw content for a glyph shaped with <link linkend="PangoAttrShape"><type>PangoAttrShape</type></link>.
<parameter>x</parameter>
, <parameter>y</parameter>
are the coordinates of the left edge of the baseline,
in user coordinates.</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-trapezoid">draw_trapezoid</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a trapezoidal filled area</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-glyph">draw_glyph</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a single glyph</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.part-changed">part_changed</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>do renderer specific processing when rendering
attributes change</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.begin">begin</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Do renderer-specific initialization before drawing</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.end">end</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>Do renderer-specific cleanup after drawing</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.prepare-run">prepare_run</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>updates the renderer for a new run</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><structfield id="PangoRendererClass.draw-glyph-item">draw_glyph_item</structfield>&#160;()</para></entry>
<entry role="struct_member_description"><para>draws a <link linkend="PangoGlyphItem"><type>PangoGlyphItem</type></link></para></entry>
<entry role="struct_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>

</refsect1>

</refentry>
