static void set_imgdither_attrib(cdCtxCanvas* ctxcanvas, char* data) { if (data && cdStrEqualNoCase(data, "NORMAL")) ctxcanvas->img_dither = GDK_RGB_DITHER_NORMAL; else ctxcanvas->img_dither = GDK_RGB_DITHER_NONE; }
static void set_interp_attrib(cdCtxCanvas* ctxcanvas, char* data) { if (data && cdStrEqualNoCase(data, "BILINEAR")) ctxcanvas->img_interp = GDK_INTERP_BILINEAR; else ctxcanvas->img_interp = GDK_INTERP_NEAREST; }
int cdSimFontFT(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size) { cdCanvas* canvas = ((cdCtxCanvasBase*)ctxcanvas)->canvas; /* check for the pre-defined names */ if (cdStrEqualNoCase(type_face, "System")) type_face = "cour"; else if (cdStrEqualNoCase(type_face, "Courier")) type_face = "cour"; else if (cdStrEqualNoCase(type_face, "Times")) type_face = "times"; else if (cdStrEqualNoCase(type_face, "Helvetica")) type_face = "arial"; else { /* use the font map */ const char* filename = find_font_filename(canvas->simulation, type_face); if (filename) return cdTT_load(canvas->simulation->tt_text, filename, cdGetFontSizePoints(canvas, size), canvas->xres, canvas->yres); else { /* try the type_face name without change */ if (cdTT_load(canvas->simulation->tt_text, type_face, cdGetFontSizePoints(canvas, size), canvas->xres, canvas->yres)) return 1; } } { static char * cd_ttf_font_style[4] = { "", "bd", "i", "bi"}; char font[10240]; /* can have a path */ sprintf(font, "%s%s", type_face, cd_ttf_font_style[style&3]); return cdTT_load(canvas->simulation->tt_text, font, cdGetFontSizePoints(canvas, size), canvas->xres, canvas->yres); } }
static int cdfont(cdCtxCanvas *ctxcanvas, const char *typeface, int style, int size) { int is_italic = 0, is_bold = 0; /* default is CD_PLAIN */ int is_strikeout = 0, is_underline = 0; char font[256]; PangoAttrList *attrs; 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) is_bold = 1; if (style & CD_ITALIC) is_italic = 1; if (style & CD_UNDERLINE) is_underline = 1; if (style & CD_STRIKEOUT) is_strikeout = 1; size = cdGetFontSizePoints(ctxcanvas->canvas, size); sprintf(font, "%s, %s%s%d", typeface, is_bold?"Bold ":"", is_italic?"Italic ":"", size); if (ctxcanvas->fontdesc) pango_font_description_free(ctxcanvas->fontdesc); ctxcanvas->fontdesc = pango_font_description_from_string(font); if (!ctxcanvas->fontdesc) return 0; if (ctxcanvas->fontlayout) g_object_unref(ctxcanvas->fontlayout); ctxcanvas->fontlayout = pango_layout_new(ctxcanvas->fontcontext); pango_layout_set_font_description(ctxcanvas->fontlayout, ctxcanvas->fontdesc); 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; }
static int cdfont(cdCtxCanvas *ctxcanvas, const char *type_face, int style, int size) { long index = 0; if (cdStrEqualNoCase(type_face, "System")) switch (style&3) { case CD_PLAIN: index = 1; break; case CD_BOLD: index = 5; break; case CD_ITALIC: index = 9; break; case CD_BOLD_ITALIC: index = 13; break; } else if (cdStrEqualNoCase(type_face, "Courier")) switch (style&3) { case CD_PLAIN: index = 2; break; case CD_BOLD: index = 6; break; case CD_ITALIC: index = 10; break; case CD_BOLD_ITALIC: index = 14; break; } else if (cdStrEqualNoCase(type_face, "Times")) switch (style&3) { case CD_PLAIN: index = 3; break; case CD_BOLD: index = 7; break; case CD_ITALIC: index = 11; break; case CD_BOLD_ITALIC: index = 15; break; } else if (cdStrEqualNoCase(type_face, "Helvetica")) switch (style&3) { case CD_PLAIN: index = 4; break; case CD_BOLD: index = 8; break; case CD_ITALIC: index = 12; break; case CD_BOLD_ITALIC: index = 16; break; } if (index == 0) return 0; cgm_char_height ( ctxcanvas->cgm, cdGetFontSizePixels(ctxcanvas->canvas, size)); cgm_text_font_index( ctxcanvas->cgm, index ); return 1; }