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_setcolour(ps, colour);
ps_printf(ps, "/%s findfont %d scalefont setfont\n",
fonttype == FONT_FIXED ? "Courier" : "Helvetica",
- fontsize, x, y);
+ fontsize);
if (align & ALIGN_VCENTRE) {
ps_printf(ps, "newpath 0 0 moveto (X) true charpath flattenpath"
" pathbbox\n"
ps->ytop = 0;
ps->clipped = FALSE;
ps->hatchthick = ps->hatchspace = ps->gamewidth = ps->gameheight = 0;
- ps->drawing = drawing_init(&ps_drawing, ps);
+ ps->drawing = drawing_new(&ps_drawing, NULL, ps);
return ps;
}