int hatch;
float r, g, b;
- print_get_colour(ps->drawing, colour, &hatch, &r, &g, &b);
+ print_get_colour(ps->drawing, colour, ps->colour, &hatch, &r, &g, &b);
- if (ps->colour) {
- ps_printf(ps, "%g %g %g setrgbcolor fill\n", r, g, b);
- } else if (hatch == HATCH_SOLID || hatch == HATCH_CLEAR) {
- ps_printf(ps, "%d setgray fill\n", hatch == HATCH_CLEAR);
+ if (hatch < 0) {
+ if (ps->colour)
+ ps_printf(ps, "%g %g %g setrgbcolor fill\n", r, g, b);
+ else
+ ps_printf(ps, "%g setgray fill\n", r);
} else {
/* Clip to the region. */
ps_printf(ps, "gsave clip\n");
int hatch;
float r, g, b;
- print_get_colour(ps->drawing, colour, &hatch, &r, &g, &b);
+ print_get_colour(ps->drawing, colour, ps->colour, &hatch, &r, &g, &b);
- if (ps->colour) {
- if (r != g || r != b)
- ps_printf(ps, "%g %g %g setrgbcolor%s\n", r, g, b, suffix);
- else
- ps_printf(ps, "%g setgray%s\n", r, suffix);
- } else {
- /*
- * Stroking in hatched colours is not permitted.
- */
- assert(hatch == HATCH_SOLID || hatch == HATCH_CLEAR);
- ps_printf(ps, "%d setgray%s\n", hatch == HATCH_CLEAR, suffix);
- }
+ /*
+ * Stroking in hatched colours is not permitted.
+ */
+ assert(hatch < 0);
+
+ if (ps->colour)
+ ps_printf(ps, "%g %g %g setrgbcolor%s\n", r, g, b, suffix);
+ else
+ ps_printf(ps, "%g setgray%s\n", r, suffix);
}
static void ps_setcolour(psdata *ps, int colour)
ps_printf(ps, "%g setlinewidth\n", width);
}
+static void ps_line_dotted(void *handle, int dotted)
+{
+ psdata *ps = (psdata *)handle;
+
+ if (dotted) {
+ ps_printf(ps, "[ currentlinewidth 3 mul ] 0 setdash\n");
+ } else {
+ ps_printf(ps, "[ ] 0 setdash\n");
+ }
+}
+
static void ps_begin_doc(void *handle, int pages)
{
psdata *ps = (psdata *)handle;
ps_end_page,
ps_end_doc,
ps_line_width,
+ ps_line_dotted,
};
psdata *ps_init(FILE *outfile, int colour)