static VALUE rg_draw_rectangle(VALUE self, VALUE part, VALUE x, VALUE y, VALUE width, VALUE height) { #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE pango_renderer_draw_rectangle(_SELF(self), RVAL2GENUM(part, PANGO_TYPE_RENDER_PART), NUM2INT(x), NUM2INT(y), NUM2INT(width), NUM2INT(height)); #else pango_renderer_draw_rectangle(_SELF(self), NUM2INT(part), NUM2INT(x), NUM2INT(y), NUM2INT(width), NUM2INT(height)); #endif return self; }
static void draw_underline (PangoRenderer *renderer, LineState *state) { PangoRectangle *rect = &state->underline_rect; PangoUnderline underline = state->underline; state->underline = PANGO_UNDERLINE_NONE; switch (underline) { case PANGO_UNDERLINE_NONE: break; case PANGO_UNDERLINE_DOUBLE: pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_UNDERLINE, rect->x, rect->y + 2 * rect->height, rect->width, rect->height); /* Fall through */ case PANGO_UNDERLINE_SINGLE: case PANGO_UNDERLINE_LOW: pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_UNDERLINE, rect->x, rect->y, rect->width, rect->height); break; case PANGO_UNDERLINE_ERROR: pango_renderer_draw_error_underline (renderer, rect->x, rect->y, rect->width, 3 * rect->height); break; } }
static void draw_strikethrough (PangoRenderer *renderer, LineState *state) { PangoRectangle *rect = &state->strikethrough_rect; gboolean strikethrough = state->strikethrough; state->strikethrough = FALSE; if (strikethrough) pango_renderer_draw_rectangle (renderer, PANGO_RENDER_PART_STRIKETHROUGH, rect->x, rect->y, rect->width, rect->height); }