예제 #1
0
파일: cdgdk.c 프로젝트: LuaDist/cd
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;
}
예제 #2
0
파일: cdgdk.c 프로젝트: LuaDist/cd
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;
}
예제 #3
0
파일: sim_text.c 프로젝트: LuaDist/cd
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);
  }
}
예제 #4
0
파일: cdgdk.c 프로젝트: LuaDist/cd
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;
}
예제 #5
0
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;
}