diff options
Diffstat (limited to 'pango/pango-renderer.c')
-rw-r--r-- | pango/pango-renderer.c | 787 |
1 files changed, 401 insertions, 386 deletions
diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index 432875a4..2d676782 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -10,7 +10,7 @@ * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public @@ -67,37 +67,37 @@ struct _PangoRendererPrivate static void pango_renderer_finalize (GObject *gobject); static void pango_renderer_default_draw_glyphs (PangoRenderer *renderer, - PangoFont *font, - PangoGlyphString *glyphs, - int x, - int y); + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y); static void pango_renderer_default_draw_glyph_item (PangoRenderer *renderer, - const char *text, - PangoGlyphItem *glyph_item, - int x, - int y); + const char *text, + PangoGlyphItem *glyph_item, + int x, + int y); static void pango_renderer_default_draw_rectangle (PangoRenderer *renderer, - PangoRenderPart part, - int x, - int y, - int width, - int height); + PangoRenderPart part, + int x, + int y, + int width, + int height); static void pango_renderer_default_draw_error_underline (PangoRenderer *renderer, - int x, - int y, - int width, - int height); + int x, + int y, + int width, + int height); static void pango_renderer_default_prepare_run (PangoRenderer *renderer, - PangoLayoutRun *run); + PangoLayoutRun *run); static void pango_renderer_prepare_run (PangoRenderer *renderer, - PangoLayoutRun *run); + PangoLayoutRun *run); static void to_device (PangoMatrix *matrix, - double x, - double y, - Point *result) + double x, + double y, + Point *result) { if (matrix) { @@ -148,22 +148,22 @@ pango_renderer_finalize (GObject *gobject) /** * pango_renderer_draw_layout: - * @renderer: a #PangoRenderer - * @layout: a #PangoLayout + * @renderer: a `PangoRenderer` + * @layout: a `PangoLayout` * @x: X position of left edge of baseline, in user space coordinates * in Pango units. * @y: Y position of left edge of baseline, in user space coordinates * in Pango units. * - * Draws @layout with the specified #PangoRenderer. + * Draws @layout with the specified `PangoRenderer`. * * Since: 1.8 - **/ + */ void -pango_renderer_draw_layout (PangoRenderer *renderer, - PangoLayout *layout, - int x, - int y) +pango_renderer_draw_layout (PangoRenderer *renderer, + PangoLayout *layout, + int x, + int y) { PangoLayoutIter iter; @@ -177,7 +177,7 @@ pango_renderer_draw_layout (PangoRenderer *renderer, { PangoContext *context = pango_layout_get_context (layout); pango_renderer_set_matrix (renderer, - pango_context_get_matrix (context)); + pango_context_get_matrix (context)); } pango_renderer_activate (renderer); @@ -196,9 +196,9 @@ pango_renderer_draw_layout (PangoRenderer *renderer, baseline = pango_layout_iter_get_baseline (&iter); pango_renderer_draw_layout_line (renderer, - line, - x + logical_rect.x, - y + baseline); + line, + x + logical_rect.x, + y + baseline); } while (pango_layout_iter_next_line (&iter)); @@ -209,7 +209,7 @@ pango_renderer_draw_layout (PangoRenderer *renderer, static void draw_underline (PangoRenderer *renderer, - LineState *state) + LineState *state) { PangoRectangle *rect = &state->underline_rect; PangoUnderline underline = state->underline; @@ -223,29 +223,29 @@ draw_underline (PangoRenderer *renderer, case PANGO_UNDERLINE_DOUBLE: case PANGO_UNDERLINE_DOUBLE_LINE: pango_renderer_draw_rectangle (renderer, - PANGO_RENDER_PART_UNDERLINE, - rect->x, - rect->y + 2 * rect->height, - rect->width, - rect->height); + PANGO_RENDER_PART_UNDERLINE, + rect->x, + rect->y + 2 * rect->height, + rect->width, + rect->height); G_GNUC_FALLTHROUGH; case PANGO_UNDERLINE_SINGLE: case PANGO_UNDERLINE_LOW: case PANGO_UNDERLINE_SINGLE_LINE: pango_renderer_draw_rectangle (renderer, - PANGO_RENDER_PART_UNDERLINE, - rect->x, - rect->y, - rect->width, - rect->height); + PANGO_RENDER_PART_UNDERLINE, + rect->x, + rect->y, + rect->width, + rect->height); break; case PANGO_UNDERLINE_ERROR: case PANGO_UNDERLINE_ERROR_LINE: pango_renderer_draw_error_underline (renderer, - rect->x, - rect->y, - rect->width, - 3 * rect->height); + rect->x, + rect->y, + rect->width, + 3 * rect->height); break; } } @@ -265,18 +265,18 @@ draw_overline (PangoRenderer *renderer, break; case PANGO_OVERLINE_SINGLE: pango_renderer_draw_rectangle (renderer, - PANGO_RENDER_PART_OVERLINE, - rect->x, - rect->y, - rect->width, - rect->height); + PANGO_RENDER_PART_OVERLINE, + rect->x, + rect->y, + rect->width, + rect->height); break; } } static void draw_strikethrough (PangoRenderer *renderer, - LineState *state) + LineState *state) { PangoRectangle *rect = &state->strikethrough_rect; gboolean strikethrough = state->strikethrough; @@ -295,7 +295,7 @@ draw_strikethrough (PangoRenderer *renderer, static void handle_line_state_change (PangoRenderer *renderer, - PangoRenderPart part) + PangoRenderPart part) { LineState *state = renderer->priv->line_state; if (!state) @@ -340,12 +340,12 @@ handle_line_state_change (PangoRenderer *renderer, static void add_underline (PangoRenderer *renderer, - LineState *state, - PangoFontMetrics *metrics, - int base_x, - int base_y, - PangoRectangle *ink_rect, - PangoRectangle *logical_rect) + LineState *state, + PangoFontMetrics *metrics, + int base_x, + int base_y, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect) { PangoRectangle *current_rect = &state->underline_rect; PangoRectangle new_rect; @@ -453,12 +453,12 @@ add_overline (PangoRenderer *renderer, static void add_strikethrough (PangoRenderer *renderer, - LineState *state, - PangoFontMetrics *metrics, - int base_x, - int base_y, - PangoRectangle *ink_rect G_GNUC_UNUSED, - PangoRectangle *logical_rect, + LineState *state, + PangoFontMetrics *metrics, + int base_x, + int base_y, + PangoRectangle *ink_rect G_GNUC_UNUSED, + PangoRectangle *logical_rect, int num_glyphs) { PangoRectangle *current_rect = &state->strikethrough_rect; @@ -490,8 +490,8 @@ add_strikethrough (PangoRenderer *renderer, static void get_item_properties (PangoItem *item, - gint *rise, - PangoAttrShape **shape_attr) + gint *rise, + PangoAttrShape **shape_attr) { GSList *l; @@ -506,29 +506,29 @@ get_item_properties (PangoItem *item, PangoAttribute *attr = l->data; switch ((int) attr->klass->type) - { - case PANGO_ATTR_SHAPE: - if (shape_attr) - *shape_attr = (PangoAttrShape *)attr; - break; - - case PANGO_ATTR_RISE: - if (rise) - *rise = ((PangoAttrInt *)attr)->value; - break; - - default: - break; - } + { + case PANGO_ATTR_SHAPE: + if (shape_attr) + *shape_attr = (PangoAttrShape *)attr; + break; + + case PANGO_ATTR_RISE: + if (rise) + *rise = ((PangoAttrInt *)attr)->value; + break; + + default: + break; + } } } static void draw_shaped_glyphs (PangoRenderer *renderer, - PangoGlyphString *glyphs, - PangoAttrShape *attr, - int x, - int y) + PangoGlyphString *glyphs, + PangoAttrShape *attr, + int x, + int y) { PangoRendererClass *class = PANGO_RENDERER_GET_CLASS (renderer); int i; @@ -549,22 +549,22 @@ draw_shaped_glyphs (PangoRenderer *renderer, /** * pango_renderer_draw_layout_line: - * @renderer: a #PangoRenderer - * @line: a #PangoLayoutLine + * @renderer: a `PangoRenderer` + * @line: a `PangoLayoutLine` * @x: X position of left edge of baseline, in user space coordinates * in Pango units. * @y: Y position of left edge of baseline, in user space coordinates * in Pango units. * - * Draws @line with the specified #PangoRenderer. + * Draws @line with the specified `PangoRenderer`. * * Since: 1.8 - **/ + */ void -pango_renderer_draw_layout_line (PangoRenderer *renderer, - PangoLayoutLine *line, - int x, - int y) +pango_renderer_draw_layout_line (PangoRenderer *renderer, + PangoLayoutLine *line, + int x, + int y) { int x_off = 0; int glyph_string_width; @@ -581,10 +581,10 @@ pango_renderer_draw_layout_line (PangoRenderer *renderer, */ if (!renderer->active_count) pango_renderer_set_matrix (renderer, - G_LIKELY (line->layout) ? - pango_context_get_matrix - (pango_layout_get_context (line->layout)) : - NULL); + G_LIKELY (line->layout) ? + pango_context_get_matrix + (pango_layout_get_context (line->layout)) : + NULL); pango_renderer_activate (renderer); @@ -607,118 +607,118 @@ pango_renderer_draw_layout_line (PangoRenderer *renderer, PangoRectangle logical_rect, *logical = NULL; if (run->item->analysis.flags & PANGO_ANALYSIS_FLAG_CENTERED_BASELINE) - logical = &logical_rect; + logical = &logical_rect; pango_renderer_prepare_run (renderer, run); get_item_properties (run->item, &rise, &shape_attr); if (shape_attr) - { - ink = &ink_rect; - logical = &logical_rect; + { + ink = &ink_rect; + logical = &logical_rect; _pango_shape_get_extents (run->glyphs->num_glyphs, - &shape_attr->ink_rect, - &shape_attr->logical_rect, - ink, - logical); - glyph_string_width = logical->width; - } + &shape_attr->ink_rect, + &shape_attr->logical_rect, + ink, + logical); + glyph_string_width = logical->width; + } else - { - if (renderer->underline != PANGO_UNDERLINE_NONE || + { + if (renderer->underline != PANGO_UNDERLINE_NONE || renderer->priv->overline != PANGO_OVERLINE_NONE || - renderer->strikethrough) - { - ink = &ink_rect; - logical = &logical_rect; - } - if (G_UNLIKELY (ink || logical)) - pango_glyph_string_extents (run->glyphs, run->item->analysis.font, - ink, logical); - if (logical) - glyph_string_width = logical_rect.width; - else - glyph_string_width = pango_glyph_string_get_width (run->glyphs); - } + renderer->strikethrough) + { + ink = &ink_rect; + logical = &logical_rect; + } + if (G_UNLIKELY (ink || logical)) + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, + ink, logical); + if (logical) + glyph_string_width = logical_rect.width; + else + glyph_string_width = pango_glyph_string_get_width (run->glyphs); + } state.logical_rect_end = x + x_off + glyph_string_width; if (run->item->analysis.flags & PANGO_ANALYSIS_FLAG_CENTERED_BASELINE) - { - gboolean is_hinted = ((logical_rect.y | logical_rect.height) & (PANGO_SCALE - 1)) == 0; - int adjustment = logical_rect.y + logical_rect.height / 2; + { + gboolean is_hinted = ((logical_rect.y | logical_rect.height) & (PANGO_SCALE - 1)) == 0; + int adjustment = logical_rect.y + logical_rect.height / 2; - if (is_hinted) - adjustment = PANGO_UNITS_ROUND (adjustment); + if (is_hinted) + adjustment = PANGO_UNITS_ROUND (adjustment); - rise += adjustment; - } + rise += adjustment; + } if (renderer->priv->color_set[PANGO_RENDER_PART_BACKGROUND]) - { - if (!got_overall) - { - pango_layout_line_get_extents (line, NULL, &overall_rect); - got_overall = TRUE; - } - - pango_renderer_draw_rectangle (renderer, - PANGO_RENDER_PART_BACKGROUND, - x + x_off, - y + overall_rect.y, - glyph_string_width, - overall_rect.height); - } + { + if (!got_overall) + { + pango_layout_line_get_extents (line, NULL, &overall_rect); + got_overall = TRUE; + } + + pango_renderer_draw_rectangle (renderer, + PANGO_RENDER_PART_BACKGROUND, + x + x_off, + y + overall_rect.y, + glyph_string_width, + overall_rect.height); + } if (shape_attr) - { - draw_shaped_glyphs (renderer, run->glyphs, shape_attr, x + x_off, y - rise); - } + { + draw_shaped_glyphs (renderer, run->glyphs, shape_attr, x + x_off, y - rise); + } else - { - pango_renderer_draw_glyph_item (renderer, - text, - run, - x + x_off, y - rise); - } + { + pango_renderer_draw_glyph_item (renderer, + text, + run, + x + x_off, y - rise); + } if (renderer->underline != PANGO_UNDERLINE_NONE || renderer->priv->overline != PANGO_OVERLINE_NONE || - renderer->strikethrough) - { - metrics = pango_font_get_metrics (run->item->analysis.font, - run->item->analysis.language); + renderer->strikethrough) + { + metrics = pango_font_get_metrics (run->item->analysis.font, + run->item->analysis.language); - if (renderer->underline != PANGO_UNDERLINE_NONE) - add_underline (renderer, &state,metrics, - x + x_off, y - rise, - ink, logical); + if (renderer->underline != PANGO_UNDERLINE_NONE) + add_underline (renderer, &state,metrics, + x + x_off, y - rise, + ink, logical); - if (renderer->priv->overline != PANGO_OVERLINE_NONE) - add_overline (renderer, &state,metrics, - x + x_off, y - rise, - ink, logical); + if (renderer->priv->overline != PANGO_OVERLINE_NONE) + add_overline (renderer, &state,metrics, + x + x_off, y - rise, + ink, logical); - if (renderer->strikethrough) - add_strikethrough (renderer, &state, metrics, - x + x_off, y - rise, - ink, logical, run->glyphs->num_glyphs); + if (renderer->strikethrough) + add_strikethrough (renderer, &state, metrics, + x + x_off, y - rise, + ink, logical, run->glyphs->num_glyphs); - pango_font_metrics_unref (metrics); - } + pango_font_metrics_unref (metrics); + } if (renderer->underline == PANGO_UNDERLINE_NONE && - state.underline != PANGO_UNDERLINE_NONE) - draw_underline (renderer, &state); + state.underline != PANGO_UNDERLINE_NONE) + draw_underline (renderer, &state); if (renderer->priv->overline == PANGO_OVERLINE_NONE && - state.overline != PANGO_OVERLINE_NONE) - draw_overline (renderer, &state); + state.overline != PANGO_OVERLINE_NONE) + draw_overline (renderer, &state); if (!renderer->strikethrough && state.strikethrough) - draw_strikethrough (renderer, &state); + draw_strikethrough (renderer, &state); x_off += glyph_string_width; } @@ -737,24 +737,24 @@ pango_renderer_draw_layout_line (PangoRenderer *renderer, /** * pango_renderer_draw_glyphs: - * @renderer: a #PangoRenderer - * @font: a #PangoFont - * @glyphs: a #PangoGlyphString + * @renderer: a `PangoRenderer` + * @font: a `PangoFont` + * @glyphs: a `PangoGlyphString` * @x: X position of left edge of baseline, in user space coordinates * in Pango units. * @y: Y position of left edge of baseline, in user space coordinates * in Pango units. * - * Draws the glyphs in @glyphs with the specified #PangoRenderer. + * Draws the glyphs in @glyphs with the specified `PangoRenderer`. * * Since: 1.8 - **/ + */ void pango_renderer_draw_glyphs (PangoRenderer *renderer, - PangoFont *font, - PangoGlyphString *glyphs, - int x, - int y) + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); @@ -767,10 +767,10 @@ pango_renderer_draw_glyphs (PangoRenderer *renderer, static void pango_renderer_default_draw_glyphs (PangoRenderer *renderer, - PangoFont *font, - PangoGlyphString *glyphs, - int x, - int y) + PangoFont *font, + PangoGlyphString *glyphs, + int x, + int y) { int i; int x_position = 0; @@ -781,9 +781,9 @@ pango_renderer_default_draw_glyphs (PangoRenderer *renderer, Point p; to_device (renderer->matrix, - x + x_position + gi->geometry.x_offset, - y + gi->geometry.y_offset, - &p); + x + x_position + gi->geometry.x_offset, + y + gi->geometry.y_offset, + &p); pango_renderer_draw_glyph (renderer, font, gi->glyph, p.x, p.y); @@ -793,41 +793,43 @@ pango_renderer_default_draw_glyphs (PangoRenderer *renderer, /** * pango_renderer_draw_glyph_item: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @text: (allow-none): the UTF-8 text that @glyph_item refers to, or %NULL - * @glyph_item: a #PangoGlyphItem + * @glyph_item: a `PangoGlyphItem` * @x: X position of left edge of baseline, in user space coordinates * in Pango units. * @y: Y position of left edge of baseline, in user space coordinates * in Pango units. * - * Draws the glyphs in @glyph_item with the specified #PangoRenderer, + * Draws the glyphs in @glyph_item with the specified `PangoRenderer`, * embedding the text associated with the glyphs in the output if the - * output format supports it (PDF for example). + * output format supports it. + * + * This is useful for rendering text in PDF. * * Note that @text is the start of the text for layout, which is then - * indexed by <literal>@glyph_item->item->offset</literal>. + * indexed by `glyph_item->item->offset`. * - * If @text is %NULL, this simply calls pango_renderer_draw_glyphs(). + * If @text is %NULL, this simply calls [method@Pango.Renderer.draw_glyphs]. * * The default implementation of this method simply falls back to - * pango_renderer_draw_glyphs(). + * [method@Pango.Renderer.draw_glyphs]. * * Since: 1.22 - **/ + */ void -pango_renderer_draw_glyph_item (PangoRenderer *renderer, - const char *text, - PangoGlyphItem *glyph_item, - int x, - int y) +pango_renderer_draw_glyph_item (PangoRenderer *renderer, + const char *text, + PangoGlyphItem *glyph_item, + int x, + int y) { if (!text) { pango_renderer_draw_glyphs (renderer, - glyph_item->item->analysis.font, - glyph_item->glyphs, - x, y); + glyph_item->item->analysis.font, + glyph_item->glyphs, + x, y); return; } @@ -841,42 +843,44 @@ pango_renderer_draw_glyph_item (PangoRenderer *renderer, } static void -pango_renderer_default_draw_glyph_item (PangoRenderer *renderer, - const char *text G_GNUC_UNUSED, - PangoGlyphItem *glyph_item, - int x, - int y) +pango_renderer_default_draw_glyph_item (PangoRenderer *renderer, + const char *text G_GNUC_UNUSED, + PangoGlyphItem *glyph_item, + int x, + int y) { pango_renderer_draw_glyphs (renderer, - glyph_item->item->analysis.font, - glyph_item->glyphs, - x, y); + glyph_item->item->analysis.font, + glyph_item->glyphs, + x, y); } /** * pango_renderer_draw_rectangle: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: type of object this rectangle is part of - * @x: X position at which to draw rectangle, in user space coordinates in Pango units - * @y: Y position at which to draw rectangle, in user space coordinates in Pango units - * @width: width of rectangle in Pango units in user space coordinates - * @height: height of rectangle in Pango units in user space coordinates + * @x: X position at which to draw rectangle, in user space coordinates + * in Pango units + * @y: Y position at which to draw rectangle, in user space coordinates + * in Pango units + * @width: width of rectangle in Pango units + * @height: height of rectangle in Pango units * * Draws an axis-aligned rectangle in user space coordinates with the - * specified #PangoRenderer. + * specified `PangoRenderer`. * - * This should be called while @renderer is already active. Use - * pango_renderer_activate() to activate a renderer. + * This should be called while @renderer is already active. + * Use [method@Pango.Renderer.activate] to activate a renderer. * * Since: 1.8 - **/ + */ void pango_renderer_draw_rectangle (PangoRenderer *renderer, - PangoRenderPart part, - int x, - int y, - int width, - int height) + PangoRenderPart part, + int x, + int y, + int width, + int height) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (IS_VALID_PART (part)); @@ -887,7 +891,7 @@ pango_renderer_draw_rectangle (PangoRenderer *renderer, static int compare_points (const void *a, - const void *b) + const void *b) { const Point *pa = a; const Point *pb = b; @@ -906,12 +910,12 @@ compare_points (const void *a, static void draw_rectangle (PangoRenderer *renderer, - PangoMatrix *matrix, - PangoRenderPart part, - int x, - int y, - int width, - int height) + PangoMatrix *matrix, + PangoRenderPart part, + int x, + int y, + int width, + int height) { Point points[4]; @@ -944,8 +948,8 @@ draw_rectangle (PangoRenderer *renderer, { /* Case 1 (pure shear) */ pango_renderer_draw_trapezoid (renderer, part, /* B */ - points[0].y, points[0].x, points[1].x, - points[2].y, points[2].x, points[3].x); + points[0].y, points[0].x, points[1].x, + points[2].y, points[2].x, points[3].x); } else if (points[1].x < points[2].x) { @@ -954,14 +958,14 @@ draw_rectangle (PangoRenderer *renderer, double base_width = tmp_width + points[0].x - points[1].x; pango_renderer_draw_trapezoid (renderer, part, /* A */ - points[0].y, points[0].x, points[0].x, - points[1].y, points[1].x, points[1].x + base_width); + points[0].y, points[0].x, points[0].x, + points[1].y, points[1].x, points[1].x + base_width); pango_renderer_draw_trapezoid (renderer, part, /* B */ - points[1].y, points[1].x, points[1].x + base_width, - points[2].y, points[2].x - base_width, points[2].x); + points[1].y, points[1].x, points[1].x + base_width, + points[2].y, points[2].x - base_width, points[2].x); pango_renderer_draw_trapezoid (renderer, part, /* C */ - points[2].y, points[2].x - base_width, points[2].x, - points[3].y, points[3].x, points[3].x); + points[2].y, points[2].x - base_width, points[2].x, + points[3].y, points[3].x, points[3].x); } else { @@ -970,31 +974,31 @@ draw_rectangle (PangoRenderer *renderer, double base_width = tmp_width + points[1].x - points[0].x; pango_renderer_draw_trapezoid (renderer, part, /* A */ - points[0].y, points[0].x, points[0].x, - points[1].y, points[1].x - base_width, points[1].x); + points[0].y, points[0].x, points[0].x, + points[1].y, points[1].x - base_width, points[1].x); pango_renderer_draw_trapezoid (renderer, part, /* B */ - points[1].y, points[1].x - base_width, points[1].x, - points[2].y, points[2].x, points[2].x + base_width); + points[1].y, points[1].x - base_width, points[1].x, + points[2].y, points[2].x, points[2].x + base_width); pango_renderer_draw_trapezoid (renderer, part, /* C */ - points[2].y, points[2].x, points[2].x + base_width, - points[3].y, points[3].x, points[3].x); + points[2].y, points[2].x, points[2].x + base_width, + points[3].y, points[3].x, points[3].x); } } static void pango_renderer_default_draw_rectangle (PangoRenderer *renderer, - PangoRenderPart part, - int x, - int y, - int width, - int height) + PangoRenderPart part, + int x, + int y, + int width, + int height) { draw_rectangle (renderer, renderer->matrix, part, x, y, width, height); } /** * pango_renderer_draw_error_underline: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @x: X coordinate of underline, in Pango units in user coordinate system * @y: Y coordinate of underline, in Pango units in user coordinate system * @width: width of underline, in Pango units in user coordinate system @@ -1002,21 +1006,22 @@ pango_renderer_default_draw_rectangle (PangoRenderer *renderer, * * 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 + * + * 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) + * in the original rectangle. * - * This should be called while @renderer is already active. Use - * pango_renderer_activate() to activate a renderer. + * This should be called while @renderer is already active. + * Use [method@Pango.Renderer.activate] to activate a renderer. * * Since: 1.8 - **/ + */ void pango_renderer_draw_error_underline (PangoRenderer *renderer, - int x, - int y, - int width, - int height) + int x, + int y, + int width, + int height) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (renderer->active_count > 0); @@ -1065,10 +1070,10 @@ pango_renderer_draw_error_underline (PangoRenderer *renderer, static void get_total_matrix (PangoMatrix *total, - const PangoMatrix *global, - int x, - int y, - int square) + const PangoMatrix *global, + int x, + int y, + int square) { PangoMatrix local; gdouble scale = 0.5 * square; @@ -1092,10 +1097,10 @@ get_total_matrix (PangoMatrix *total, static void pango_renderer_default_draw_error_underline (PangoRenderer *renderer, - int x, - int y, - int width, - int height) + int x, + int y, + int width, + int height) { int square; int unit_width; @@ -1129,16 +1134,16 @@ pango_renderer_default_draw_error_underline (PangoRenderer *renderer, while (TRUE) { draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* A */ - 0, 0, - HEIGHT_SQUARES * 2 - 1, 1); + 0, 0, + HEIGHT_SQUARES * 2 - 1, 1); if (i <= 0) break; i--; draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* B */ - HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 3), - 1, HEIGHT_SQUARES * 2 - 3); + HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 3), + 1, HEIGHT_SQUARES * 2 - 3); total.x0 += dx0; total.y0 += dy0; @@ -1146,14 +1151,14 @@ pango_renderer_default_draw_error_underline (PangoRenderer *renderer, if (width_units % 2 == 0) { draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* C */ - HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 2), - 1, HEIGHT_SQUARES * 2 - 2); + HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 2), + 1, HEIGHT_SQUARES * 2 - 2); } } /** * pango_renderer_draw_trapezoid: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: type of object this trapezoid is part of * @y1_: Y coordinate of top of trapezoid * @x11: X coordinate of left end of top of trapezoid @@ -1163,32 +1168,32 @@ pango_renderer_default_draw_error_underline (PangoRenderer *renderer, * @x22: X coordinate of right end of bottom of trapezoid * * Draws a trapezoid with the parallel sides aligned with the X axis - * using the given #PangoRenderer; coordinates are in device space. + * using the given `PangoRenderer`; coordinates are in device space. * * Since: 1.8 - **/ + */ void -pango_renderer_draw_trapezoid (PangoRenderer *renderer, - PangoRenderPart part, - double y1_, - double x11, - double x21, - double y2, - double x12, - double x22) +pango_renderer_draw_trapezoid (PangoRenderer *renderer, + PangoRenderPart part, + double y1_, + double x11, + double x21, + double y2, + double x12, + double x22) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (renderer->active_count > 0); if (PANGO_RENDERER_GET_CLASS (renderer)->draw_trapezoid) PANGO_RENDERER_GET_CLASS (renderer)->draw_trapezoid (renderer, part, - y1_, x11, x21, - y2, x12, x22); + y1_, x11, x21, + y2, x12, x22); } /** * pango_renderer_draw_glyph: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @font: a #PangoFont * @glyph: the glyph index of a single glyph * @x: X coordinate of left edge of baseline of glyph @@ -1197,13 +1202,13 @@ pango_renderer_draw_trapezoid (PangoRenderer *renderer, * Draws a single glyph with coordinates in device space. * * Since: 1.8 - **/ + */ void pango_renderer_draw_glyph (PangoRenderer *renderer, - PangoFont *font, - PangoGlyph glyph, - double x, - double y) + PangoFont *font, + PangoGlyph glyph, + double x, + double y) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (renderer->active_count > 0); @@ -1217,14 +1222,15 @@ pango_renderer_draw_glyph (PangoRenderer *renderer, /** * pango_renderer_activate: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * * Does initial setup before rendering operations on @renderer. - * pango_renderer_deactivate() should be called when done drawing. - * Calls such as pango_renderer_draw_layout() automatically + * + * [method@Pango.Renderer.deactivate] should be called when done drawing. + * Calls such as [method@Pango.Renderer.draw_layout] automatically * activate the layout before drawing on it. Calls to - * pango_renderer_activate() and pango_renderer_deactivate() can - * be nested and the renderer will only be initialized and + * `pango_renderer_activate()` and `pango_renderer_deactivate()` + * can be nested and the renderer will only be initialized and * deinitialized once. * * Since: 1.8 @@ -1238,19 +1244,20 @@ pango_renderer_activate (PangoRenderer *renderer) if (renderer->active_count == 1) { if (PANGO_RENDERER_GET_CLASS (renderer)->begin) - PANGO_RENDERER_GET_CLASS (renderer)->begin (renderer); + PANGO_RENDERER_GET_CLASS (renderer)->begin (renderer); } } /** * pango_renderer_deactivate: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` + * + * Cleans up after rendering operations on @renderer. * - * Cleans up after rendering operations on @renderer. See - * docs for pango_renderer_activate(). + * See docs for [method@Pango.Renderer.activate]. * * Since: 1.8 - **/ + */ void pango_renderer_deactivate (PangoRenderer *renderer) { @@ -1260,26 +1267,27 @@ pango_renderer_deactivate (PangoRenderer *renderer) if (renderer->active_count == 1) { if (PANGO_RENDERER_GET_CLASS (renderer)->end) - PANGO_RENDERER_GET_CLASS (renderer)->end (renderer); + PANGO_RENDERER_GET_CLASS (renderer)->end (renderer); } renderer->active_count--; } /** * pango_renderer_set_color: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: the part to change the color of * @color: (allow-none): the new color or %NULL to unset the current color * * Sets the color for part of the rendering. - * Also see pango_renderer_set_alpha(). + * + * Also see [method@Pango.Renderer.set_alpha]. * * Since: 1.8 - **/ + */ void pango_renderer_set_color (PangoRenderer *renderer, - PangoRenderPart part, - const PangoColor *color) + PangoRenderPart part, + const PangoColor *color) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (IS_VALID_PART (part)); @@ -1306,7 +1314,7 @@ pango_renderer_set_color (PangoRenderer *renderer, /** * pango_renderer_get_color: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: the part to get the color for * * Gets the current rendering color for the specified part. @@ -1316,10 +1324,10 @@ pango_renderer_set_color (PangoRenderer *renderer, * inherited from the environment. * * Since: 1.8 - **/ + */ PangoColor * pango_renderer_get_color (PangoRenderer *renderer, - PangoRenderPart part) + PangoRenderPart part) { g_return_val_if_fail (PANGO_IS_RENDERER_FAST (renderer), NULL); g_return_val_if_fail (IS_VALID_PART (part), NULL); @@ -1332,11 +1340,12 @@ pango_renderer_get_color (PangoRenderer *renderer, /** * pango_renderer_set_alpha: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: the part to set the alpha for * @alpha: an alpha value between 1 and 65536, or 0 to unset the alpha * * Sets the alpha for part of the rendering. + * * Note that the alpha may only be used if a color is * specified for @part as well. * @@ -1362,7 +1371,7 @@ pango_renderer_set_alpha (PangoRenderer *renderer, /** * pango_renderer_get_alpha: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: the part to get the alpha for * * Gets the current alpha for the specified part. @@ -1385,28 +1394,30 @@ pango_renderer_get_alpha (PangoRenderer *renderer, /** * pango_renderer_part_changed: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * @part: the part for which rendering has changed. * * Informs Pango that the way that the rendering is done - * for @part has changed in a way that would prevent multiple - * pieces being joined together into one drawing call. For - * instance, if a subclass of #PangoRenderer was to add a stipple + * for @part has changed. + * + * This should be called if the rendering changes in a way that would + * prevent multiple pieces being joined together into one drawing call. + * For instance, if a subclass of `PangoRenderer` was to add a stipple * option for drawing underlines, it needs to call * - * <informalexample><programlisting> + * ``` * pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE); - * </programlisting></informalexample> + * ``` * * When the stipple changes or underlines with different stipples * might be joined together. Pango automatically calls this for - * changes to colors. (See pango_renderer_set_color()) + * changes to colors. (See [method@Pango.Renderer.set_color]) * * Since: 1.8 - **/ + */ void -pango_renderer_part_changed (PangoRenderer *renderer, - PangoRenderPart part) +pango_renderer_part_changed (PangoRenderer *renderer, + PangoRenderPart part) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); g_return_if_fail (IS_VALID_PART (part)); @@ -1420,16 +1431,16 @@ pango_renderer_part_changed (PangoRenderer *renderer, /** * pango_renderer_prepare_run: - * @renderer: a #PangoRenderer - * @run: a #PangoLayoutRun + * @renderer: a `PangoRenderer` + * @run: a `PangoLayoutRun` * - * Set up the state of the #PangoRenderer for rendering @run. + * Set up the state of the `PangoRenderer` for rendering @run. * * Since: 1.8 - **/ + */ static void pango_renderer_prepare_run (PangoRenderer *renderer, - PangoLayoutRun *run) + PangoLayoutRun *run) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); @@ -1438,7 +1449,7 @@ pango_renderer_prepare_run (PangoRenderer *renderer, static void pango_renderer_default_prepare_run (PangoRenderer *renderer, - PangoLayoutRun *run) + PangoLayoutRun *run) { PangoColor *fg_color = NULL; PangoColor *bg_color = NULL; @@ -1458,50 +1469,50 @@ pango_renderer_default_prepare_run (PangoRenderer *renderer, PangoAttribute *attr = l->data; switch ((int) attr->klass->type) - { - case PANGO_ATTR_UNDERLINE: - renderer->underline = ((PangoAttrInt *)attr)->value; - break; + { + case PANGO_ATTR_UNDERLINE: + renderer->underline = ((PangoAttrInt *)attr)->value; + break; - case PANGO_ATTR_OVERLINE: - renderer->priv->overline = ((PangoAttrInt *)attr)->value; - break; + case PANGO_ATTR_OVERLINE: + renderer->priv->overline = ((PangoAttrInt *)attr)->value; + break; - case PANGO_ATTR_STRIKETHROUGH: - renderer->strikethrough = ((PangoAttrInt *)attr)->value; - break; + case PANGO_ATTR_STRIKETHROUGH: + renderer->strikethrough = ((PangoAttrInt *)attr)->value; + break; - case PANGO_ATTR_FOREGROUND: - fg_color = &((PangoAttrColor *)attr)->color; - break; + case PANGO_ATTR_FOREGROUND: + fg_color = &((PangoAttrColor *)attr)->color; + break; - case PANGO_ATTR_BACKGROUND: - bg_color = &((PangoAttrColor *)attr)->color; - break; + case PANGO_ATTR_BACKGROUND: + bg_color = &((PangoAttrColor *)attr)->color; + break; - case PANGO_ATTR_UNDERLINE_COLOR: - underline_color = &((PangoAttrColor *)attr)->color; - break; + case PANGO_ATTR_UNDERLINE_COLOR: + underline_color = &((PangoAttrColor *)attr)->color; + break; - case PANGO_ATTR_OVERLINE_COLOR: - overline_color = &((PangoAttrColor *)attr)->color; - break; + case PANGO_ATTR_OVERLINE_COLOR: + overline_color = &((PangoAttrColor *)attr)->color; + break; - case PANGO_ATTR_STRIKETHROUGH_COLOR: - strikethrough_color = &((PangoAttrColor *)attr)->color; - break; + case PANGO_ATTR_STRIKETHROUGH_COLOR: + strikethrough_color = &((PangoAttrColor *)attr)->color; + break; - case PANGO_ATTR_FOREGROUND_ALPHA: + case PANGO_ATTR_FOREGROUND_ALPHA: fg_alpha = ((PangoAttrInt *)attr)->value; - break; + break; - case PANGO_ATTR_BACKGROUND_ALPHA: + case PANGO_ATTR_BACKGROUND_ALPHA: bg_alpha = ((PangoAttrInt *)attr)->value; - break; + break; - default: - break; - } + default: + break; + } } if (!underline_color) @@ -1528,17 +1539,17 @@ pango_renderer_default_prepare_run (PangoRenderer *renderer, /** * pango_renderer_set_matrix: - * @renderer: a #PangoRenderer - * @matrix: (allow-none): a #PangoMatrix, or %NULL to unset any existing matrix. + * @renderer: a `PangoRenderer` + * @matrix: (allow-none): a `PangoMatrix`, or %NULL to unset any existing matrix. * (No matrix set is the same as setting the identity matrix.) * * Sets the transformation matrix that will be applied when rendering. * * Since: 1.8 - **/ + */ void pango_renderer_set_matrix (PangoRenderer *renderer, - const PangoMatrix *matrix) + const PangoMatrix *matrix) { g_return_if_fail (PANGO_IS_RENDERER_FAST (renderer)); @@ -1548,17 +1559,19 @@ pango_renderer_set_matrix (PangoRenderer *renderer, /** * pango_renderer_get_matrix: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * * Gets the transformation matrix that will be applied when - * rendering. See pango_renderer_set_matrix(). + * rendering. + * + * See [method@Pango.Renderer.set_matrix]. * * Return value: (nullable): the matrix, or %NULL 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. + * been set (which is the same as the identity matrix). The returned + * matrix is owned by Pango and must not be modified or freed. * * Since: 1.8 - **/ + */ const PangoMatrix * pango_renderer_get_matrix (PangoRenderer *renderer) { @@ -1569,9 +1582,10 @@ pango_renderer_get_matrix (PangoRenderer *renderer) /** * pango_renderer_get_layout: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * * Gets the layout currently being rendered using @renderer. + * * Calling this function only makes sense from inside a subclass's * methods, like in its draw_shape vfunc, for example. * @@ -1579,10 +1593,10 @@ pango_renderer_get_matrix (PangoRenderer *renderer) * rendered. * * Return value: (transfer none) (nullable): the layout, or %NULL if - * no layout is being rendered using @renderer at this time. + * no layout is being rendered using @renderer at this time. * * Since: 1.20 - **/ + */ PangoLayout * pango_renderer_get_layout (PangoRenderer *renderer) { @@ -1594,9 +1608,10 @@ pango_renderer_get_layout (PangoRenderer *renderer) /** * pango_renderer_get_layout_line: - * @renderer: a #PangoRenderer + * @renderer: a `PangoRenderer` * * Gets the layout line currently being rendered using @renderer. + * * Calling this function only makes sense from inside a subclass's * methods, like in its draw_shape vfunc, for example. * @@ -1607,9 +1622,9 @@ pango_renderer_get_layout (PangoRenderer *renderer) * if no layout line is being rendered using @renderer at this time. * * Since: 1.20 - **/ + */ PangoLayoutLine * -pango_renderer_get_layout_line (PangoRenderer *renderer) +pango_renderer_get_layout_line (PangoRenderer *renderer) { return renderer->priv->line; } |