ref: 9961d1c13446442ca866353187b0e747cca2095f
parent: 7b9490c36eed8a9545890a108e003c5b0e57a39f
author: Noam Preil <noam@pixelhero.dev>
date: Fri Apr 8 20:02:32 EDT 2022
cs: initialize color when color space is set
--- a/op.c
+++ b/op.c
@@ -364,6 +364,7 @@
cspace(Op *op, Page *p)
{
ColorSpace *c = (op->flags & Nonstroking) ? &p->GSactive->NSCS : &p->GSactive->SCS;
+ u32int *color = (op->flags & Nonstroking) ? &p->GSactive->NSC : &p->GSactive->SC;
char *s = arrayget(p->stack, 0)->name;
Object *o;
int i;
@@ -370,6 +371,7 @@
for(i = 0; i < 3; i += 1)
if(strcmp(s, colorspacedevices[i]) == 0){
*c = i;
+ *color = i == 2 ? 0xFF : 0;
return 1;
}
if((o = dictget(dictget(p->obj, "Resources"), "ColorSpace")) == &null
@@ -380,7 +382,10 @@
if(strcmp(arrayget(o, 0)->name, "ICCBased") == 0){
/* Don't support ICC; fall back to Alternate or default */
o = arrayget(o, 1);
- return iccbasedcspace(o, c);
+ if(!iccbasedcspace(o, c))
+ return 0;
+ *color = *c == 2 ? 0xFF : 0;
+ return 1;
}
werrstr("cspace: TODO: %s color space", arrayget(o, 0)->name);
return 0;