1 //========================================================================
5 // Copyright 1996 Derek B. Noonburg
7 //========================================================================
26 struct GfxFontEncoding16;
30 //------------------------------------------------------------------------
32 //------------------------------------------------------------------------
43 tchkNum, // number (integer or real)
47 tchkProps, // properties (dictionary or name)
48 tchkSCN, // scn/SCN args (number of name)
49 tchkNone // used to avoid empty initializer lists
57 TchkType tchk[maxArgs];
58 void (Gfx::*func)(Object args[], int numArgs);
64 GfxResources(GfxResources *next1) { next = next1; }
69 Object colorSpaceDict;
76 // Constructor for regular output.
77 Gfx(OutputDev *out1, int pageNum, Dict *resDict,
78 int dpi, double x1, double y1, double x2, double y2, GBool crop,
79 double cropX1, double cropY1, double cropX2, double cropY2,
85 // Interpret a stream or array of streams.
86 void display(Object *obj);
90 OutputDev *out; // output device
91 GfxResources *res; // resource stack
93 GfxState *state; // current graphics state
94 GBool fontChanged; // set if font or text matrix has changed
95 GfxClipType clip; // do a clip?
96 int ignoreUndef; // current BX/EX nesting level
98 Parser *parser; // parser for page content stream(s)
100 static Operator opTab[]; // table of operators
103 void execOp(Object *cmd, Object args[], int numArgs);
104 Operator *findOp(char *name);
105 GBool checkArg(Object *arg, TchkType type);
107 GfxFont *lookupFont(char *name);
108 GBool lookupXObject(char *name, Object *obj);
109 void lookupColorSpace(char *name, Object *obj);
111 // graphics state operators
112 void opSave(Object args[], int numArgs);
113 void opRestore(Object args[], int numArgs);
114 void opConcat(Object args[], int numArgs);
115 void opSetDash(Object args[], int numArgs);
116 void opSetFlat(Object args[], int numArgs);
117 void opSetLineJoin(Object args[], int numArgs);
118 void opSetLineCap(Object args[], int numArgs);
119 void opSetMiterLimit(Object args[], int numArgs);
120 void opSetLineWidth(Object args[], int numArgs);
121 void opSetExtGState(Object args[], int numArgs);
124 void opSetFillGray(Object args[], int numArgs);
125 void opSetStrokeGray(Object args[], int numArgs);
126 void opSetFillCMYKColor(Object args[], int numArgs);
127 void opSetStrokeCMYKColor(Object args[], int numArgs);
128 void opSetFillRGBColor(Object args[], int numArgs);
129 void opSetStrokeRGBColor(Object args[], int numArgs);
130 void opSetFillColorSpace(Object args[], int numArgs);
131 void opSetStrokeColorSpace(Object args[], int numArgs);
132 void opSetFillColor(Object args[], int numArgs);
133 void opSetStrokeColor(Object args[], int numArgs);
134 void opSetFillColorN(Object args[], int numArgs);
135 void opSetStrokeColorN(Object args[], int numArgs);
137 // path segment operators
138 void opMoveTo(Object args[], int numArgs);
139 void opLineTo(Object args[], int numArgs);
140 void opCurveTo(Object args[], int numArgs);
141 void opCurveTo1(Object args[], int numArgs);
142 void opCurveTo2(Object args[], int numArgs);
143 void opRectangle(Object args[], int numArgs);
144 void opClosePath(Object args[], int numArgs);
146 // path painting operators
147 void opEndPath(Object args[], int numArgs);
148 void opStroke(Object args[], int numArgs);
149 void opCloseStroke(Object args[], int numArgs);
150 void opFill(Object args[], int numArgs);
151 void opEOFill(Object args[], int numArgs);
152 void opFillStroke(Object args[], int numArgs);
153 void opCloseFillStroke(Object args[], int numArgs);
154 void opEOFillStroke(Object args[], int numArgs);
155 void opCloseEOFillStroke(Object args[], int numArgs);
158 // path clipping operators
159 void opClip(Object args[], int numArgs);
160 void opEOClip(Object args[], int numArgs);
162 // text object operators
163 void opBeginText(Object args[], int numArgs);
164 void opEndText(Object args[], int numArgs);
166 // text state operators
167 void opSetCharSpacing(Object args[], int numArgs);
168 void opSetFont(Object args[], int numArgs);
169 void opSetTextLeading(Object args[], int numArgs);
170 void opSetTextRender(Object args[], int numArgs);
171 void opSetTextRise(Object args[], int numArgs);
172 void opSetWordSpacing(Object args[], int numArgs);
173 void opSetHorizScaling(Object args[], int numArgs);
175 // text positioning operators
176 void opTextMove(Object args[], int numArgs);
177 void opTextMoveSet(Object args[], int numArgs);
178 void opSetTextMatrix(Object args[], int numArgs);
179 void opTextNextLine(Object args[], int numArgs);
181 // text string operators
182 void opShowText(Object args[], int numArgs);
183 void opMoveShowText(Object args[], int numArgs);
184 void opMoveSetShowText(Object args[], int numArgs);
185 void opShowSpaceText(Object args[], int numArgs);
186 void doShowText(GString *s);
187 int getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16);
190 void opXObject(Object args[], int numArgs);
191 void doImage(Stream *str, GBool inlineImg);
192 void doForm(Object *str);
194 // in-line image operators
195 void opBeginImage(Object args[], int numArgs);
196 Stream *buildImageStream();
197 void opImageData(Object args[], int numArgs);
198 void opEndImage(Object args[], int numArgs);
200 // type 3 font operators
201 void opSetCharWidth(Object args[], int numArgs);
202 void opSetCacheDevice(Object args[], int numArgs);
204 // compatibility operators
205 void opBeginIgnoreUndef(Object args[], int numArgs);
206 void opEndIgnoreUndef(Object args[], int numArgs);
208 // marked content operators
209 void opBeginMarkedContent(Object args[], int numArgs);
210 void opEndMarkedContent(Object args[], int numArgs);
211 void opMarkPoint(Object args[], int numArgs);