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); }
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)); }
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)); }