Пример #1
0
static void primUpdateAttrib_Line(tPrimNode *prim, cdCanvas *canvas)
{
  cdCanvasSetBackground(canvas, prim->attrib.line.background);
  cdCanvasSetForeground(canvas, prim->attrib.line.foreground);
  cdCanvasBackOpacity(canvas, prim->attrib.line.back_opacity);
  cdCanvasLineStyle(canvas, prim->attrib.line.line_style); 
  cdCanvasLineWidth(canvas, sMin1(prim->attrib.line.line_width));
  cdCanvasLineCap(canvas, prim->attrib.line.line_cap);
  cdCanvasLineJoin(canvas, prim->attrib.line.line_join);

  if (prim->attrib.line.line_style==CD_CUSTOM && prim->attrib.line.line_dashes)
    cdCanvasLineStyleDashes(canvas, prim->attrib.line.line_dashes, prim->attrib.line.line_dashes_count);
}
Пример #2
0
static void cdcgm_LineAttrib(const char *type, const char *cap, const char *join, double width, const char *mode, cgmRGB color, cdCGM* cd_cgm)
{
  int style = CD_CONTINUOUS;
  int linecap = CD_CAPFLAT;
  int linejoin = CD_MITER;

  if (strcmp(type, "SOLID")==0)
    style = CD_CONTINUOUS;
  else if (strcmp(type, "DASH")==0)
    style = CD_DASHED;
  else if (strcmp(type, "DOT")==0)
    style = CD_DOTTED;
  else if (strcmp(type, "DASH_DOT")==0)
    style = CD_DASH_DOT;
  else if (strcmp(type, "DASH_DOT_DOT")==0)
    style = CD_DASH_DOT_DOT;

  if (strcmp(cap, "UNSPECIFIED")==0  || strcmp(cap, "BUTT")==0 || strcmp(cap, "TRIANGLE")==0)
    linecap = CD_CAPFLAT;
  else if (strcmp(cap, "ROUND")==0)
    linecap = CD_CAPROUND;
  else if (strcmp(cap, "PROJECTING_SQUARE")==0)
    linecap = CD_CAPSQUARE;

  if (strcmp(join, "UNSPECIFIED")==0  || strcmp(join, "MITRE")==0)
    linejoin = CD_MITER;
  else if (strcmp(join, "ROUND")==0)
    linejoin = CD_ROUND;
  else if (strcmp(join, "BEVEL")==0)
    linejoin = CD_BEVEL;

  cdCanvasLineCap(cd_cgm->canvas, linecap);

  cdCanvasLineJoin(cd_cgm->canvas, linejoin);

  cdCanvasLineStyle(cd_cgm->canvas, style);

  width = get_size_mode(cd_cgm->canvas, width, mode, cdCanvasLineWidth(cd_cgm->canvas, CD_QUERY));

  cdCanvasLineWidth(cd_cgm->canvas, sMin1(sRound(width)));

  cdCanvasForeground(cd_cgm->canvas, cdEncodeColor(color.red, color.green, color.blue));
}
Пример #3
0
static void cdcgm_MarkerAttrib(const char *type, double size, const char *mode, cgmRGB color, cdCGM* cd_cgm)
{
  int style = CD_PLUS;
  if (strcmp(type, "DOT")==0)
    style = CD_BOX;  /* actually a pixel */
  else if (strcmp(type, "PLUS")==0)
    style = CD_PLUS;
  else if (strcmp(type, "ASTERISK")==0)
    style = CD_STAR;
  else if (strcmp(type, "CIRCLE")==0)
    style = CD_HOLLOW_CIRCLE;
  else if (strcmp(type, "CROSS")==0)
    style = CD_X;

  cdCanvasMarkType(cd_cgm->canvas, style);

  size = get_size_mode(cd_cgm->canvas, size, mode, cdCanvasMarkSize(cd_cgm->canvas, CD_QUERY));

  cdCanvasMarkSize(cd_cgm->canvas, sMin1(sRound(size)));

  cdCanvasForeground(cd_cgm->canvas, cdEncodeColor(color.red, color.green, color.blue));
}