X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..534090e354ebd5b4c42e6c27a6aa6073c0ef669e:/src/x11/pango_x.cpp diff --git a/src/x11/pango_x.cpp b/src/x11/pango_x.cpp index 50370c89d3..8836e142c1 100644 --- a/src/x11/pango_x.cpp +++ b/src/x11/pango_x.cpp @@ -1,8 +1,8 @@ /** - * This file gets included from dcclient.cpp and implements - * the X11 interface to Pango. + * This file gets included from dcclient.cpp and implements + * the X11 interface to Pango. * Copyright (C) Owen Taylor and Robert Roebling. - * Licence: The wxWidgets licence + * Licence: The wxWindows licence */ /* Declaration */ @@ -15,31 +15,31 @@ x11_draw_glyphs( Drawable drawable, int y, PangoGlyphString *glyphs, wxColour &colour ); - -void + +void x11_draw_layout_line_with_colors( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayoutLine *line, wxColour &colour ); - -void + +void x11_draw_layout_with_colors( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayout *layout, wxColour &colour ); - -void + +void x11_draw_layout( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayout *layout, wxColour &colour); - + void x11_pango_get_item_properties( PangoItem *item, PangoUnderline *uline, @@ -64,6 +64,7 @@ x11_draw_glyphs( Drawable drawable, PangoGlyphString *glyphs, wxColour &colour ) { +#ifdef HAVE_PANGO_XFT if (PANGO_XFT_IS_FONT (font)) { Display* xdisplay = wxGlobalDisplay(); @@ -80,19 +81,20 @@ x11_draw_glyphs( Drawable drawable, color.color.blue = colour.Blue() << 8; color.color.alpha = 65000; pango_xft_render( draw, &color, font, glyphs, x, y ); - + XftDrawDestroy( draw ); } else +#endif { pango_x_render( wxGlobalDisplay(), drawable, gc, font, glyphs, x, y ); } } -void +void x11_draw_layout_line_with_colors( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayoutLine *line, wxColour &colour ) @@ -105,9 +107,9 @@ x11_draw_layout_line_with_colors( Drawable drawable, gint rise = 0; context = pango_layout_get_context (line->layout); - + pango_layout_line_get_extents (line,NULL, &overall_rect); - + GSList *tmp_list = line->runs; while (tmp_list) { @@ -116,16 +118,16 @@ x11_draw_layout_line_with_colors( Drawable drawable, PangoColor fg_color, bg_color; gboolean strike, fg_set, bg_set, shape_set; gint risen_y; - + tmp_list = tmp_list->next; - - x11_pango_get_item_properties (run->item, &uline, - &strike, &rise, &fg_color, &fg_set, &bg_color, &bg_set, + + x11_pango_get_item_properties (run->item, &uline, + &strike, &rise, &fg_color, &fg_set, &bg_color, &bg_set, &shape_set, &ink_rect, &logical_rect); /* we subtract the rise because X coordinates are upside down */ risen_y = y - rise / PANGO_SCALE; - + if (!shape_set) { if (uline == PANGO_UNDERLINE_NONE) @@ -146,12 +148,12 @@ x11_draw_layout_line_with_colors( Drawable drawable, { int gx = x + x_off / PANGO_SCALE; int gy = risen_y; - + x11_draw_glyphs( drawable, gc, run->item->analysis.font, gx, gy, run->glyphs, colour ); } - + if (uline == PANGO_UNDERLINE_SINGLE) - { + { XDrawLine( wxGlobalDisplay(), drawable, gc, x + (x_off + ink_rect.x) / PANGO_SCALE - 1, risen_y + 1, @@ -163,40 +165,40 @@ x11_draw_layout_line_with_colors( Drawable drawable, } } -void +void x11_draw_layout_with_colors( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayout *layout, wxColour &colour ) { PangoLayoutIter *iter = pango_layout_get_iter (layout); - + do { PangoLayoutLine *line = pango_layout_iter_get_line (iter); - + PangoRectangle logical_rect; pango_layout_iter_get_line_extents (iter, NULL, &logical_rect); - + int baseline = pango_layout_iter_get_baseline (iter); - + x11_draw_layout_line_with_colors( drawable, gc, x + logical_rect.x / PANGO_SCALE, y + baseline / PANGO_SCALE, line, colour ); - + } while (pango_layout_iter_next_line (iter)); pango_layout_iter_free (iter); } -void +void x11_draw_layout( Drawable drawable, GC gc, - int x, + int x, int y, PangoLayout *layout, wxColour &colour) @@ -223,10 +225,10 @@ x11_pango_get_item_properties( PangoItem *item, if (strikethrough) *strikethrough = FALSE; - + if (fg_set) *fg_set = FALSE; - + if (bg_set) *bg_set = FALSE; @@ -251,21 +253,21 @@ x11_pango_get_item_properties( PangoItem *item, if (strikethrough) *strikethrough = ((PangoAttrInt *)attr)->value; break; - + case PANGO_ATTR_FOREGROUND: if (fg_color) *fg_color = ((PangoAttrColor *)attr)->color; if (fg_set) *fg_set = TRUE; - + break; - + case PANGO_ATTR_BACKGROUND: if (bg_color) *bg_color = ((PangoAttrColor *)attr)->color; if (bg_set) *bg_set = TRUE; - + break; case PANGO_ATTR_SHAPE: @@ -281,7 +283,7 @@ x11_pango_get_item_properties( PangoItem *item, if (rise) *rise = ((PangoAttrInt *)attr)->value; break; - + default: break; }