static void pdf__setdashpattern(PDF *p, float *darray, int length, float phase) { pdf_gstate *gs = &p->gstate[p->sl]; /* length == 0 or 1 means solid line */ if (length < 2) { if (gs->dashed || PDF_FORCE_OUTPUT()) { pdc_puts(p->out, "[] 0 d\n"); gs->dashed = pdc_false; } } else { int i; pdc_puts(p->out, "["); for (i = 0; i < length; i++) { pdc_printf(p->out, "%f ", darray[i]); } pdc_printf(p->out, "] %f d\n", phase); gs->dashed = pdc_true; } }
void pdf_setdashpattern_internal(PDF *p, pdc_scalar *darray, int length, pdc_scalar phase) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; /* length == 0 or 1 means solid line */ if (length < 2) { if (gs->dashed || PDF_FORCE_OUTPUT()) { pdc_puts(p->out, "[] 0 d\n"); gs->dashed = pdc_false; } } else { int i; pdc_begin_array(p->out); for (i = 0; i < length; i++) { pdc_printf(p->out, "%f ", darray[i]); } pdc_end_array_c(p->out); pdc_printf(p->out, "%f d\n", phase); gs->dashed = pdc_true; } }
void pdf__setmiterlimit(PDF *p, float miter) { pdf_gstate *gs = &p->gstate[p->sl]; if (miter != gs->miter || PDF_FORCE_OUTPUT()) { gs->miter = miter; pdc_printf(p->out, "%f M\n", miter); } }
void pdf__setlinewidth(PDF *p, float width) { pdf_gstate *gs = &p->gstate[p->sl]; if (width != gs->lwidth || PDF_FORCE_OUTPUT()) { gs->lwidth = width; pdc_printf(p->out, "%f w\n", width); } }
void pdf__setlinecap(PDF *p, int cap) { pdf_gstate *gs = &p->gstate[p->sl]; if (cap != gs->lcap || PDF_FORCE_OUTPUT()) { gs->lcap = cap; pdc_printf(p->out, "%d J\n", cap); } }
void pdf__setlinejoin(PDF *p, int join) { pdf_gstate *gs = &p->gstate[p->sl]; if (join != gs->ljoin || PDF_FORCE_OUTPUT()) { gs->ljoin = join; pdc_printf(p->out, "%d j\n", join); } }
void pdf__setflat(PDF *p, float flat) { pdf_gstate *gs = &p->gstate[p->sl]; if (flat != gs->flatness || PDF_FORCE_OUTPUT()) { gs->flatness = flat; pdc_printf(p->out, "%f i\n", flat); } }
static void pdf_set_color_values(PDF *p, pdf_color *cfill, pdf_color *cstroke, pdf_drawmode drawmode) { pdf_colorspace *cs; if (drawmode == pdf_stroke || drawmode == pdf_fillstroke) { pdf_color *strokecolor = pdf_get_cstate(p, pdf_stroke); if (!pdf_color_equal(p, strokecolor, cstroke) || PDF_FORCE_OUTPUT()) { if (PDF_GET_STATE(p) != pdf_state_document) pdf_write_color_values(p, cstroke, pdf_stroke); *strokecolor = *cstroke; } cs = &p->colorspaces[cstroke->cs]; if (!PDF_SIMPLE_COLORSPACE(cs)) cs->used_on_current_page = pdc_true; } if (drawmode == pdf_fill || drawmode == pdf_fillstroke) { pdf_color *fillcolor = pdf_get_cstate(p, pdf_fill); if (!pdf_color_equal(p, fillcolor, cfill) || PDF_FORCE_OUTPUT()) { if (PDF_GET_STATE(p) != pdf_state_document) pdf_write_color_values(p, cfill, pdf_fill); *fillcolor = *cfill; } cs = &p->colorspaces[cfill->cs]; if (!PDF_SIMPLE_COLORSPACE(cs)) cs->used_on_current_page = pdc_true; } } /* pdf_set_color_values */
void pdf__setmiterlimit(PDF *p, pdc_scalar miter) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; pdc_check_number_limits(p->pdc, "miter", miter, 1.0, PDC_FLOAT_MAX); if (miter != gs->miter || PDF_FORCE_OUTPUT()) { gs->miter = miter; pdc_printf(p->out, "%f M\n", miter); } }
void pdf__setflat(PDF *p, pdc_scalar flat) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; pdc_check_number_limits(p->pdc, "flat", flat, 0.0, 100.0); if (flat != gs->flatness || PDF_FORCE_OUTPUT()) { gs->flatness = flat; pdc_printf(p->out, "%f i\n", flat); } }
void pdf__setlinewidth(PDF *p, pdc_scalar width) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; pdc_check_number_limits(p->pdc, "width", width, PDC_FLOAT_PREC, PDC_FLOAT_MAX); if (width != gs->lwidth || PDF_FORCE_OUTPUT()) { gs->lwidth = width; pdc_printf(p->out, "%f w\n", width); } }
void pdf__setlinecap(PDF *p, int cap) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; const int LAST_CAP = 2; if (cap < 0 || cap > LAST_CAP) pdc_error(p->pdc, PDC_E_ILLARG_INT, "cap", pdc_errprintf(p->pdc, "%d", cap), 0, 0); if (cap != gs->lcap || PDF_FORCE_OUTPUT()) { gs->lcap = cap; pdc_printf(p->out, "%d J\n", cap); } }
void pdf__setlinejoin(PDF *p, int join) { pdf_gstate *gs = &p->curr_ppt->gstate[p->curr_ppt->sl]; const int LAST_JOIN = 2; if (join < 0 || join > LAST_JOIN) pdc_error(p->pdc, PDC_E_ILLARG_INT, "join", pdc_errprintf(p->pdc, "%d", join), 0, 0); if (join != gs->ljoin || PDF_FORCE_OUTPUT()) { gs->ljoin = join; pdc_printf(p->out, "%d j\n", join); } }