diff options
author | scuri <scuri> | 2010-01-04 14:23:52 +0000 |
---|---|---|
committer | scuri <scuri> | 2010-01-04 14:23:52 +0000 |
commit | 446e67d214829ecdcc953e1abba4c7953589c3eb (patch) | |
tree | 7e1ecdcf02c4b44a51b30b9167723dde1a1d26fe /src | |
parent | ab7bc083aa41ce8a3fc830dace5ab24f650789f6 (diff) |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/gdk/cdgdk.c | 392 | ||||
-rw-r--r-- | src/gdk/cdgdk.h | 13 | ||||
-rw-r--r-- | src/gdk/cdgdkclp.c | 2 | ||||
-rw-r--r-- | src/gdk/cdgdkdbuf.c | 2 | ||||
-rw-r--r-- | src/gdk/cdgdkimg.c | 2 | ||||
-rw-r--r-- | src/gdk/cdgdknative.c | 2 |
6 files changed, 174 insertions, 239 deletions
diff --git a/src/gdk/cdgdk.c b/src/gdk/cdgdk.c index e2bc5c0..f355fe9 100644 --- a/src/gdk/cdgdk.c +++ b/src/gdk/cdgdk.c @@ -1,5 +1,5 @@ /** \file - * \brief Gdk Cairo Base Driver + * \brief Gdk Base Driver * * See Copyright Notice in cd.h */ @@ -86,7 +86,7 @@ static unsigned long nearest_rgb(cdCtxCanvas *ctxcanvas, GdkColor clr) if (!gdk_colormap_alloc_color(ctxcanvas->colormap, &(ctxcanvas->color_table[pos]), FALSE, TRUE)) { /* Not allocated = update the table and search again */ - /* This is because the color can be found in an application that no longer exists */ + /* Because the color can be found in an application that no longer exists */ /* Once updated, the problem doesn't occur during a new search */ /* or the cell is read write */ @@ -183,25 +183,6 @@ static GdkColor truecolor_get_pixel(cdCtxCanvas *ctxcanvas, unsigned long rgb) (void)ctxcanvas; - //if (ctxcanvas->rshift < 0) - // clrRGB.red = clrRGB.red << (-ctxcanvas->rshift); - //else - // clrRGB.red = clrRGB.red >> ctxcanvas->rshift; - - //if (ctxcanvas->gshift < 0) - // clrRGB.green = clrRGB.green << (-ctxcanvas->gshift); - //else - // clrRGB.green = clrRGB.green >> ctxcanvas->gshift; - - //if (ctxcanvas->bshift < 0) - // clrRGB.blue = clrRGB.blue << (-ctxcanvas->bshift); - //else - // clrRGB.blue = clrRGB.blue >> ctxcanvas->bshift; - - //clrRGB.red = clrRGB.red & ctxcanvas->vis->red_mask; - //clrRGB.green = clrRGB.green & ctxcanvas->vis->green_mask; - //clrRGB.blue = clrRGB.blue & ctxcanvas->vis->blue_mask; - return clrRGB; } @@ -308,10 +289,13 @@ void cdgdkKillCanvas(cdCtxCanvas *ctxcanvas) } if (ctxcanvas->xidata) free(ctxcanvas->xidata); - if (ctxcanvas->font) cairo_scaled_font_destroy(ctxcanvas->font); if (ctxcanvas->last_hatch) g_object_unref(ctxcanvas->last_hatch); if (ctxcanvas->clip_polygon) g_object_unref(ctxcanvas->clip_polygon); + if (ctxcanvas->fontdesc) pango_font_description_free(ctxcanvas->fontdesc); + if (ctxcanvas->fontlayout) g_object_unref(ctxcanvas->fontlayout); + if (ctxcanvas->fontcontext) g_object_unref(ctxcanvas->fontcontext); + if (ctxcanvas->new_region) { g_object_unref(ctxcanvas->region_aux_gc); @@ -449,6 +433,7 @@ static void cdnewregion(cdCtxCanvas *ctxcanvas) ctxcanvas->region_aux = gdk_pixmap_new(ctxcanvas->wnd, ctxcanvas->canvas->w, ctxcanvas->canvas->h, 1); ctxcanvas->region_aux_gc = gdk_gc_new((GdkDrawable*)ctxcanvas->region_aux); + gdk_gc_set_colormap(ctxcanvas->region_aux_gc, gdk_screen_get_default_colormap(ctxcanvas->scr)); clr.pixel = 0; gdk_gc_set_background(ctxcanvas->region_aux_gc, &clr); @@ -891,46 +876,58 @@ static int cdbackopacity(cdCtxCanvas *ctxcanvas, int opaque) return opaque; } -static int cdfont(cdCtxCanvas *ctxcanvas, const char *type_face, int style, int size) +static int cdfont(cdCtxCanvas *ctxcanvas, const char *typeface, int style, int size) { - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - cairo_scaled_font_t *font; - cairo_font_slant_t slant = CAIRO_FONT_SLANT_NORMAL; /* default is */ - cairo_font_weight_t weight = CAIRO_FONT_WEIGHT_NORMAL; /* CD_PLAIN */ - - if (cdStrEqualNoCase(type_face, "System")) - type_face = "fixed"; - else if (cdStrEqualNoCase(type_face, "Monospace") || cdStrEqualNoCase(type_face, "Courier New")) - type_face = "courier"; - else if (cdStrEqualNoCase(type_face, "Serif") || cdStrEqualNoCase(type_face, "Times New Roman")) - type_face = "times"; - else if (cdStrEqualNoCase(type_face, "Sans") || cdStrEqualNoCase(type_face, "Arial")) - type_face = "helvetica"; + int is_italic = 0, is_bold = 0; /* default is CD_PLAIN */ + int is_strikeout = 0, is_underline = 0; + char font[256]; + PangoAttrList *attrs; - /* no underline or strikeout support */ + if (cdStrEqualNoCase(typeface, "Courier") || cdStrEqualNoCase(typeface, "Courier New")) + typeface = "Monospace"; + else if (cdStrEqualNoCase(typeface, "Times") || cdStrEqualNoCase(typeface, "Times New Roman")) + typeface = "Serif"; + else if (cdStrEqualNoCase(typeface, "Helvetica") || cdStrEqualNoCase(typeface, "Arial")) + typeface = "Sans"; if (style & CD_BOLD) - weight = CAIRO_FONT_WEIGHT_BOLD; + is_bold = 1; if (style & CD_ITALIC) - slant = CAIRO_FONT_SLANT_ITALIC; + is_italic = 1; - cairo_select_font_face(crWnd, type_face, slant, weight); - cairo_set_font_size(crWnd, (double)cdGetFontSizePixels(ctxcanvas->canvas, size)); + if (style & CD_UNDERLINE) + is_underline = 1; - font = cairo_get_scaled_font(crWnd); + if (style & CD_STRIKEOUT) + is_strikeout = 1; - if (!font) - return 0; + if (size < 0) + { + double res = ((double)gdk_screen_get_width(gdk_screen_get_default()) / + (double)gdk_screen_get_width_mm(gdk_screen_get_default())); /* pixels/mm */ + + /* 1 point = 1/72 inch 1 inch = 25.4 mm */ + /* pixel = ((point/72)*25.4)*pixel/mm */ + size = (int)((-size/res)*2.83464567 + 0.5); /* from pixels to points */ + } + + sprintf(font, "%s, %s%s%d", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", size); - if (ctxcanvas->font) - cairo_scaled_font_destroy(ctxcanvas->font); + ctxcanvas->fontdesc = pango_font_description_from_string(font); - font = cairo_scaled_font_reference(font); + if (!ctxcanvas->fontdesc) + return 0; - ctxcanvas->font = font; + ctxcanvas->fontlayout = pango_layout_new(ctxcanvas->fontcontext); + pango_layout_set_font_description(ctxcanvas->fontlayout, ctxcanvas->fontdesc); - cairo_destroy(crWnd); + attrs = pango_attr_list_new(); + pango_attr_list_insert(attrs, pango_attribute_copy(pango_attr_strikethrough_new(is_strikeout ? TRUE : FALSE))); + pango_attr_list_insert(attrs, pango_attribute_copy(pango_attr_underline_new(is_underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE))); + pango_layout_set_attributes(ctxcanvas->fontlayout, attrs); + + pango_attr_list_unref(attrs); return 1; } @@ -938,70 +935,45 @@ static int cdfont(cdCtxCanvas *ctxcanvas, const char *type_face, int style, int static int cdnativefont(cdCtxCanvas *ctxcanvas, const char* nativefont) { int size = 12, style = CD_PLAIN; - char type_face[1024]; - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - - if (nativefont[0] == '-') - { - cairo_scaled_font_t *font; + char typeface[1024]; - cairo_select_font_face(crWnd, nativefont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size(crWnd, (double)cdGetFontSizePixels(ctxcanvas->canvas, size)); + /* parse the old Windows format first */ + if (!cdParseIupWinFont(nativefont, typeface, &style, &size)) + if (!cdParseXWinFont(nativefont, typeface, &style, &size)) + if (!cdParsePangoFont(nativefont, typeface, &style, &size)) + return 0; - font = cairo_get_scaled_font(crWnd); - - if (!font) - return 0; - - if (!cdParseXWinFont(nativefont, type_face, &style, &size)) - { - cairo_scaled_font_destroy(font); - return 0; - } - - if (ctxcanvas->font) - cairo_scaled_font_destroy(ctxcanvas->font); - - ctxcanvas->font = font; - - cairo_set_scaled_font(crWnd, ctxcanvas->font); - } - else - { - if (!cdParsePangoFont(nativefont, type_face, &style, &size)) - return 0; - - if (!cdfont(ctxcanvas, type_face, style, size)) - return 0; - } + if (!cdfont(ctxcanvas, typeface, style, size)) + return 0; /* update cdfont parameters */ ctxcanvas->canvas->font_style = style; ctxcanvas->canvas->font_size = size; - strcpy(ctxcanvas->canvas->font_type_face, type_face); - - cairo_destroy(crWnd); + strcpy(ctxcanvas->canvas->font_type_face, typeface); return 1; } static void cdgetfontdim(cdCtxCanvas *ctxcanvas, int *max_width, int *height, int *ascent, int *descent) { - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - cairo_font_extents_t extents; + PangoFontMetrics* metrics; + int charwidth, charheight, charascent, chardescent; - if (!ctxcanvas->font) + if(!ctxcanvas->fontdesc) return; - cairo_set_scaled_font(crWnd, ctxcanvas->font); - cairo_font_extents(crWnd, &extents); + metrics = pango_context_get_metrics(ctxcanvas->fontcontext, ctxcanvas->fontdesc, pango_context_get_language(ctxcanvas->fontcontext)); + charascent = pango_font_metrics_get_ascent(metrics); + chardescent = pango_font_metrics_get_descent(metrics); + charheight = charascent + chardescent; + charwidth = pango_font_metrics_get_approximate_char_width(metrics); - if (max_width) *max_width = (int)extents.max_x_advance; - if (height) *height = (int)extents.height; - if (ascent) *ascent = (int)extents.ascent; - if (descent) *descent = (int)extents.descent; + if (max_width) *max_width = (((charwidth) + PANGO_SCALE/2) / PANGO_SCALE); + if (height) *height = (((charheight) + PANGO_SCALE/2) / PANGO_SCALE); + if (ascent) *ascent = (((charascent) + PANGO_SCALE/2) / PANGO_SCALE); + if (descent) *descent = (((chardescent) + PANGO_SCALE/2) / PANGO_SCALE); - cairo_destroy(crWnd); + pango_font_metrics_unref(metrics); } static long int cdbackground(cdCtxCanvas *ctxcanvas, long int color) @@ -1214,47 +1186,38 @@ static void cdbox(cdCtxCanvas *ctxcanvas, int xmin, int xmax, int ymin, int ymax static void cdtext(cdCtxCanvas *ctxcanvas, int x, int y, const char *s, int len) { - cairo_t *crWnd; - cairo_text_extents_t extents; - cairo_font_extents_t font_extents; const char *utf8_text; - - int dir = -1; - int x_origin = x; - int y_origin = y; - - if (!ctxcanvas->canvas->new_region) - crWnd = gdk_cairo_create(ctxcanvas->wnd); - else - crWnd = gdk_cairo_create((GdkDrawable*)ctxcanvas->region_aux); + PangoFontMetrics* metrics; + int w, h, desc, dir = -1; + int ox = x, oy = y; utf8_text = g_locale_to_utf8(s, len, NULL, 0, NULL); + pango_layout_set_text(ctxcanvas->fontlayout, utf8_text, -1); - cairo_set_scaled_font(crWnd, ctxcanvas->font); + pango_layout_get_pixel_size(ctxcanvas->fontlayout, &w, &h); + metrics = pango_context_get_metrics(ctxcanvas->fontcontext, ctxcanvas->fontdesc, pango_context_get_language(ctxcanvas->fontcontext)); + desc = (((pango_font_metrics_get_descent(metrics)) + PANGO_SCALE/2) / PANGO_SCALE); - cairo_font_extents(crWnd, &font_extents); - cairo_text_extents(crWnd, utf8_text, &extents); - switch (ctxcanvas->canvas->text_alignment) { - case CD_BASE_RIGHT: - case CD_NORTH_EAST: - case CD_EAST: - case CD_SOUTH_EAST: - x = x - (int)extents.width; - break; - case CD_BASE_CENTER: - case CD_CENTER: - case CD_NORTH: - case CD_SOUTH: - x = x - (int)(extents.width/2); - break; - case CD_BASE_LEFT: - case CD_NORTH_WEST: - case CD_WEST: - case CD_SOUTH_WEST: - x = x; - break; + case CD_BASE_RIGHT: + case CD_NORTH_EAST: + case CD_EAST: + case CD_SOUTH_EAST: + x = x - w; + break; + case CD_BASE_CENTER: + case CD_CENTER: + case CD_NORTH: + case CD_SOUTH: + x = x - w/2; + break; + case CD_BASE_LEFT: + case CD_NORTH_WEST: + case CD_WEST: + case CD_SOUTH_WEST: + x = x; + break; } if (ctxcanvas->canvas->invert_yaxis) @@ -1262,94 +1225,90 @@ static void cdtext(cdCtxCanvas *ctxcanvas, int x, int y, const char *s, int len) switch (ctxcanvas->canvas->text_alignment) { - case CD_BASE_LEFT: - case CD_BASE_CENTER: - case CD_BASE_RIGHT: - y = y; - break; - case CD_SOUTH_EAST: - case CD_SOUTH_WEST: - case CD_SOUTH: - y = y - dir*(int)font_extents.descent; - break; - case CD_NORTH_EAST: - case CD_NORTH: - case CD_NORTH_WEST: - y = y + dir*(int)(extents.height - font_extents.descent); - break; - case CD_CENTER: - case CD_EAST: - case CD_WEST: - y = y + dir*(int)(extents.height/2 - font_extents.descent); - break; + case CD_BASE_LEFT: + case CD_BASE_CENTER: + case CD_BASE_RIGHT: + y = y - (dir*h - desc); + break; + case CD_SOUTH_EAST: + case CD_SOUTH_WEST: + case CD_SOUTH: + y = y - (dir*h); + break; + case CD_NORTH_EAST: + case CD_NORTH: + case CD_NORTH_WEST: + y = y; + break; + case CD_CENTER: + case CD_EAST: + case CD_WEST: + y = y - (dir*(h/2)); + break; + } + + if(!ctxcanvas->canvas->use_matrix) + { + ctxcanvas->fontmatrix.xx = 1; ctxcanvas->fontmatrix.xy = 0; + ctxcanvas->fontmatrix.yx = 0; ctxcanvas->fontmatrix.yy = 1; + ctxcanvas->fontmatrix.x0 = 0; ctxcanvas->fontmatrix.y0 = 0; } if (ctxcanvas->canvas->text_orientation != 0) + pango_matrix_rotate(&ctxcanvas->fontmatrix, (double)ctxcanvas->canvas->text_orientation); + + if (ctxcanvas->canvas->use_matrix || ctxcanvas->canvas->text_orientation != 0) { - cairo_matrix_t matrix; + PangoRectangle rect; + double angle = CD_DEG2RAD*ctxcanvas->canvas->text_orientation; + double cos_angle = cos(angle); + double sin_angle = sin(angle); - cairo_translate(crWnd, (double)x_origin, (double)y_origin); - cairo_get_matrix(crWnd, &matrix); + pango_context_set_matrix (ctxcanvas->fontcontext, &ctxcanvas->fontmatrix); + pango_layout_context_changed (ctxcanvas->fontlayout); - x -= ctxcanvas->canvas->w/2; - y -= ctxcanvas->canvas->h/2; + pango_layout_get_pixel_extents(ctxcanvas->fontlayout, NULL, &rect); + pango_matrix_transform_pixel_rectangle(&ctxcanvas->fontmatrix, &rect); - cairo_matrix_rotate(&matrix, -ctxcanvas->canvas->text_orientation*CD_DEG2RAD); - cairo_matrix_translate(&matrix, (double)x, (double)y); + if (ctxcanvas->canvas->text_orientation) + cdRotatePoint(ctxcanvas->canvas, x, y, ox, oy, &x, &y, sin_angle, cos_angle); + + if (ctxcanvas->canvas->use_matrix) + cdMatrixTransformPoint(ctxcanvas->xmatrix, x, y, &x, &y); - cairo_set_matrix(crWnd, &matrix); - } - else - { - cairo_move_to(crWnd, (double)x, (double)y); + /* Defines the new position (X,Y), considering the Pango rectangle transformed */ + x += (int)rect.x; + y += (int)rect.y; } cdgdkCheckSolidStyle(ctxcanvas, 1); - if (ctxcanvas->canvas->use_matrix) - cdMatrixTransformPoint(ctxcanvas->xmatrix, x, y, &x, &y); - if (ctxcanvas->canvas->new_region) { sPrepareRegion(ctxcanvas); - - cairo_set_source_rgb(crWnd, 1.0, 1.0, 1.0); - cairo_show_text(crWnd, utf8_text); - + gdk_draw_layout_with_colors((GdkDrawable*)ctxcanvas->region_aux, (GdkGC*)ctxcanvas->region_aux_gc, x, y, ctxcanvas->fontlayout, &ctxcanvas->bg, &ctxcanvas->fg); sCombineRegion(ctxcanvas); } else { - cairo_set_source_rgb(crWnd, ctxcanvas->fg.red/255, ctxcanvas->fg.green/255, ctxcanvas->fg.blue/255); - cairo_show_text(crWnd, utf8_text); + gdk_draw_layout(ctxcanvas->wnd, ctxcanvas->gc, x, y, ctxcanvas->fontlayout); } + pango_context_set_matrix(ctxcanvas->fontcontext, NULL); + cdgdkCheckSolidStyle(ctxcanvas, 0); - cairo_destroy(crWnd); + pango_font_metrics_unref(metrics); } static void cdgettextsize(cdCtxCanvas *ctxcanvas, const char *s, int len, int *width, int *height) { - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - cairo_text_extents_t extents; - const char *utf8_text; - - if (!ctxcanvas->font) + if (!ctxcanvas->fontlayout) return; - utf8_text = g_locale_to_utf8(s, len, NULL, 0, NULL); - - cairo_set_scaled_font(crWnd, ctxcanvas->font); - cairo_text_extents(crWnd, utf8_text, &extents); - - if (width) - *width = (int)extents.width; - - if (height) - *height = (int)extents.height; + pango_layout_set_text(ctxcanvas->fontlayout, g_locale_to_utf8(s, len, NULL, 0, NULL), -1); - cairo_destroy(crWnd); + pango_layout_get_pixel_size(ctxcanvas->fontlayout, width, height); } void cdgdkPoly(cdCtxCanvas *ctxcanvas, int mode, cdPoint* poly, int n) @@ -2295,6 +2254,8 @@ static void cdtransform(cdCtxCanvas *ctxcanvas, const double* matrix) { if (matrix) { + PangoMatrix tmpMtx = PANGO_MATRIX_INIT; + /* configure a bottom-up coordinate system */ ctxcanvas->xmatrix[0] = 1; ctxcanvas->xmatrix[1] = 0; @@ -2304,6 +2265,14 @@ static void cdtransform(cdCtxCanvas *ctxcanvas, const double* matrix) ctxcanvas->xmatrix[5] = (ctxcanvas->canvas->h-1); cdMatrixMultiply(matrix, ctxcanvas->xmatrix); + /* Pango Matrix Transform */ + ctxcanvas->fontmatrix.xx = matrix[0] * tmpMtx.xx + matrix[1] * tmpMtx.xy; + ctxcanvas->fontmatrix.xy = matrix[0] * tmpMtx.yx + matrix[1] * tmpMtx.yy; + ctxcanvas->fontmatrix.yx = matrix[2] * tmpMtx.xx + matrix[3] * tmpMtx.xy; + ctxcanvas->fontmatrix.yy = matrix[2] * tmpMtx.yx + matrix[3] * tmpMtx.yy; + ctxcanvas->fontmatrix.x0 = 0; + ctxcanvas->fontmatrix.y0 = 0; + ctxcanvas->canvas->invert_yaxis = 0; } else @@ -2369,54 +2338,15 @@ static cdAttribute gc_attrib = get_gc_attrib }; -static void set_aa_attrib(cdCtxCanvas* ctxcanvas, char* data) -{ - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - cairo_font_options_t *crOptions = cairo_font_options_create(); - - cairo_scaled_font_get_font_options (ctxcanvas->font, crOptions); - - if (!data || data[0] == '0') - { - cairo_set_antialias(crWnd, CAIRO_ANTIALIAS_NONE); - cairo_font_options_set_antialias(crOptions, CAIRO_ANTIALIAS_NONE); - } - else - { - cairo_set_antialias(crWnd, CAIRO_ANTIALIAS_DEFAULT); - cairo_font_options_set_antialias(crOptions, CAIRO_ANTIALIAS_DEFAULT); - } - - cairo_font_options_destroy(crOptions); - cairo_destroy(crWnd); -} - -static char* get_aa_attrib(cdCtxCanvas* ctxcanvas) -{ - cairo_t* crWnd = gdk_cairo_create(ctxcanvas->wnd); - - if(cairo_get_antialias(crWnd) == CAIRO_ANTIALIAS_DEFAULT) - return "1"; - else - return "0"; -} - -static cdAttribute aa_attrib = -{ - "ANTIALIAS", - set_aa_attrib, - get_aa_attrib -}; - static char* get_version_attrib(cdCtxCanvas* ctxcanvas) { (void)ctxcanvas; - return (char*)cairo_version_string(); + return (char*)pango_version_string(); } static cdAttribute version_attrib = { - "CAIROVERSION", + "PANGOVERSION", NULL, get_version_attrib }; @@ -2441,6 +2371,9 @@ cdCtxCanvas *cdgdkCreateCanvas(cdCanvas* canvas, GdkDrawable* wnd, GdkScreen* sc } gdk_gc_set_colormap(ctxcanvas->gc, gdk_screen_get_default_colormap(ctxcanvas->scr)); + + ctxcanvas->fontcontext = gdk_pango_context_get(); + pango_context_set_language(ctxcanvas->fontcontext, pango_language_get_default()); ctxcanvas->canvas = canvas; canvas->ctxcanvas = ctxcanvas; @@ -2500,7 +2433,6 @@ cdCtxCanvas *cdgdkCreateCanvas(cdCanvas* canvas, GdkDrawable* wnd, GdkScreen* sc cdRegisterAttribute(canvas, &gc_attrib); cdRegisterAttribute(canvas, &rotate_attrib); - cdRegisterAttribute(canvas, &aa_attrib); cdRegisterAttribute(canvas, &version_attrib); first = 0; diff --git a/src/gdk/cdgdk.h b/src/gdk/cdgdk.h index 86ac7a6..bb63f60 100644 --- a/src/gdk/cdgdk.h +++ b/src/gdk/cdgdk.h @@ -1,5 +1,5 @@ /** \file - * \brief Gdk Cairo Base Driver + * \brief Gdk Base Driver * * See Copyright Notice in cd.h */ @@ -56,11 +56,14 @@ struct _cdCtxCanvas { int gshift; /* Green constant to calculate the true color */ int bshift; /* Blue constant to calculate the true color */ double xmatrix[6]; /* Transformation matrix that includes axis inversion */ - float rotate_angle; - int rotate_center_x, - rotate_center_y; + float rotate_angle; + int rotate_center_x; + int rotate_center_y; - cairo_scaled_font_t* font; /* Scaled font (character font + size font */ + PangoContext *fontcontext; + PangoFontDescription *fontdesc; + PangoLayout *fontlayout; + PangoMatrix fontmatrix; cdImage* image_dbuffer; /* Used by double buffer driver */ cdCanvas* canvas_dbuffer; diff --git a/src/gdk/cdgdkclp.c b/src/gdk/cdgdkclp.c index fd80fc7..22e7690 100644 --- a/src/gdk/cdgdkclp.c +++ b/src/gdk/cdgdkclp.c @@ -1,5 +1,5 @@ /** \file - * \brief Gdk/Cairo Clipboard Driver + * \brief Gdk Clipboard Driver * * See Copyright Notice in cd.h */ diff --git a/src/gdk/cdgdkdbuf.c b/src/gdk/cdgdkdbuf.c index 545a9b1..aa8d587 100644 --- a/src/gdk/cdgdkdbuf.c +++ b/src/gdk/cdgdkdbuf.c @@ -1,5 +1,5 @@ /** \file - * \brief Gdk/Cairo Double Buffer Driver + * \brief Gdk Double Buffer Driver * * See Copyright Notice in cd.h */ diff --git a/src/gdk/cdgdkimg.c b/src/gdk/cdgdkimg.c index 729d96c..0c5e5dd 100644 --- a/src/gdk/cdgdkimg.c +++ b/src/gdk/cdgdkimg.c @@ -1,5 +1,5 @@ /** \file - * \brief Gdk/Cairo Image Driver + * \brief Gdk Image Driver * * See Copyright Notice in cd.h */ diff --git a/src/gdk/cdgdknative.c b/src/gdk/cdgdknative.c index 6e8cbe5..9f0c5ed 100644 --- a/src/gdk/cdgdknative.c +++ b/src/gdk/cdgdknative.c @@ -1,5 +1,5 @@ /** \file - * \brief Gdk/Cairo Native Window Driver + * \brief Gdk Native Window Driver * * See Copyright Notice in cd.h */ |