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) { fonts = NULL; 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);
122 void opSetRenderingIntent(Object args[], int numArgs);
125 void opSetFillGray(Object args[], int numArgs);
126 void opSetStrokeGray(Object args[], int numArgs);
127 void opSetFillCMYKColor(Object args[], int numArgs);
128 void opSetStrokeCMYKColor(Object args[], int numArgs);
129 void opSetFillRGBColor(Object args[], int numArgs);
130 void opSetStrokeRGBColor(Object args[], int numArgs);
131 void opSetFillColorSpace(Object args[], int numArgs);
132 void opSetStrokeColorSpace(Object args[], int numArgs);
133 void opSetFillColor(Object args[], int numArgs);
134 void opSetStrokeColor(Object args[], int numArgs);
135 void opSetFillColorN(Object args[], int numArgs);
136 void opSetStrokeColorN(Object args[], int numArgs);
138 // path segment operators
139 void opMoveTo(Object args[], int numArgs);
140 void opLineTo(Object args[], int numArgs);
141 void opCurveTo(Object args[], int numArgs);
142 void opCurveTo1(Object args[], int numArgs);
143 void opCurveTo2(Object args[], int numArgs);
144 void opRectangle(Object args[], int numArgs);
145 void opClosePath(Object args[], int numArgs);
147 // path painting operators
148 void opEndPath(Object args[], int numArgs);
149 void opStroke(Object args[], int numArgs);
150 void opCloseStroke(Object args[], int numArgs);
151 void opFill(Object args[], int numArgs);
152 void opEOFill(Object args[], int numArgs);
153 void opFillStroke(Object args[], int numArgs);
154 void opCloseFillStroke(Object args[], int numArgs);
155 void opEOFillStroke(Object args[], int numArgs);
156 void opCloseEOFillStroke(Object args[], int numArgs);
157 void opShFill(Object args[], int numArgs);
160 // path clipping operators
161 void opClip(Object args[], int numArgs);
162 void opEOClip(Object args[], int numArgs);
164 // text object operators
165 void opBeginText(Object args[], int numArgs);
166 void opEndText(Object args[], int numArgs);
168 // text state operators
169 void opSetCharSpacing(Object args[], int numArgs);
170 void opSetFont(Object args[], int numArgs);
171 void opSetTextLeading(Object args[], int numArgs);
172 void opSetTextRender(Object args[], int numArgs);
173 void opSetTextRise(Object args[], int numArgs);
174 void opSetWordSpacing(Object args[], int numArgs);
175 void opSetHorizScaling(Object args[], int numArgs);
177 // text positioning operators
178 void opTextMove(Object args[], int numArgs);
179 void opTextMoveSet(Object args[], int numArgs);
180 void opSetTextMatrix(Object args[], int numArgs);
181 void opTextNextLine(Object args[], int numArgs);
183 // text string operators
184 void opShowText(Object args[], int numArgs);
185 void opMoveShowText(Object args[], int numArgs);
186 void opMoveSetShowText(Object args[], int numArgs);
187 void opShowSpaceText(Object args[], int numArgs);
188 void doShowText(GString *s);
189 int getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16);
192 void opXObject(Object args[], int numArgs);
193 void doImage(Stream *str, GBool inlineImg);
194 void doForm(Object *str);
196 // in-line image operators
197 void opBeginImage(Object args[], int numArgs);
198 Stream *buildImageStream();
199 void opImageData(Object args[], int numArgs);
200 void opEndImage(Object args[], int numArgs);
202 // type 3 font operators
203 void opSetCharWidth(Object args[], int numArgs);
204 void opSetCacheDevice(Object args[], int numArgs);
206 // compatibility operators
207 void opBeginIgnoreUndef(Object args[], int numArgs);
208 void opEndIgnoreUndef(Object args[], int numArgs);
210 // marked content operators
211 void opBeginMarkedContent(Object args[], int numArgs);
212 void opEndMarkedContent(Object args[], int numArgs);
213 void opMarkPoint(Object args[], int numArgs);