static void add_strikethrough (PangoRenderer *renderer, LineState *state, PangoFontMetrics *metrics, int base_x, int base_y, PangoRectangle *ink_rect, PangoRectangle *logical_rect) { PangoRectangle *current_rect = &state->strikethrough_rect; PangoRectangle new_rect; int strikethrough_thickness = pango_font_metrics_get_strikethrough_thickness (metrics); int strikethrough_position = pango_font_metrics_get_strikethrough_position (metrics); new_rect.x = base_x + logical_rect->x; new_rect.width = logical_rect->width; new_rect.y = base_y - strikethrough_position; new_rect.height = strikethrough_thickness; if (state->strikethrough && new_rect.y == current_rect->y && new_rect.height == current_rect->height) { current_rect->width = new_rect.x + new_rect.width - current_rect->x; } else { draw_strikethrough (renderer, state); *current_rect = new_rect; state->strikethrough = TRUE; } }
/* Helper function to draw a strikethrough for one layout run */ static void draw_strikethrough (GnomePrintContext *gpc, PangoFontMetrics *metrics, gint x, gint width) { gint strikethrough_thickness = pango_font_metrics_get_strikethrough_thickness (metrics); gint strikethrough_position = pango_font_metrics_get_strikethrough_position (metrics); rect_filled (gpc, x, strikethrough_position - strikethrough_thickness, width, strikethrough_thickness); }
} } 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) { PangoRectangle *current_rect = &state->strikethrough_rect; PangoRectangle new_rect; int strikethrough_thickness = pango_font_metrics_get_strikethrough_thickness (metrics); int strikethrough_position = pango_font_metrics_get_strikethrough_position (metrics); new_rect.x = base_x + logical_rect->x; new_rect.width = logical_rect->width; new_rect.y = base_y - strikethrough_position; new_rect.height = strikethrough_thickness; if (state->strikethrough && new_rect.y == current_rect->y && new_rect.height == current_rect->height) { current_rect->width = new_rect.x + new_rect.width - current_rect->x; } else {