//------------------------------------------------------------------------
void Gfx::opSave(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
out->saveState(state);
state = state->save();
}
void Gfx::opRestore(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
state = state->restore();
out->restoreState(state);
}
void Gfx::opConcat(Object args[], int numArgs) {
+ (void)numArgs;
+
state->concatCTM(args[0].getNum(), args[1].getNum(),
args[2].getNum(), args[3].getNum(),
args[4].getNum(), args[5].getNum());
double *dash;
int i;
+ (void)numArgs;
+
a = args[0].getArray();
length = a->getLength();
if (length == 0) {
}
void Gfx::opSetFlat(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setFlatness((int)args[0].getNum());
out->updateFlatness(state);
}
void Gfx::opSetLineJoin(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setLineJoin(args[0].getInt());
out->updateLineJoin(state);
}
void Gfx::opSetLineCap(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setLineCap(args[0].getInt());
out->updateLineCap(state);
}
void Gfx::opSetMiterLimit(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setMiterLimit(args[0].getNum());
out->updateMiterLimit(state);
}
void Gfx::opSetLineWidth(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setLineWidth(args[0].getNum());
out->updateLineWidth(state);
}
void Gfx::opSetExtGState(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
}
void Gfx::opSetRenderingIntent(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
void Gfx::opSetFillGray(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setFillColorSpace(new GfxColorSpace(colorGray));
state->setFillGray(args[0].getNum());
out->updateFillColor(state);
}
void Gfx::opSetStrokeGray(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setStrokeColorSpace(new GfxColorSpace(colorGray));
state->setStrokeGray(args[0].getNum());
out->updateStrokeColor(state);
}
void Gfx::opSetFillCMYKColor(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setFillColorSpace(new GfxColorSpace(colorCMYK));
state->setFillCMYK(args[0].getNum(), args[1].getNum(),
args[2].getNum(), args[3].getNum());
}
void Gfx::opSetStrokeCMYKColor(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setStrokeColorSpace(new GfxColorSpace(colorCMYK));
state->setStrokeCMYK(args[0].getNum(), args[1].getNum(),
args[2].getNum(), args[3].getNum());
}
void Gfx::opSetFillRGBColor(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setFillColorSpace(new GfxColorSpace(colorRGB));
state->setFillRGB(args[0].getNum(), args[1].getNum(), args[2].getNum());
out->updateFillColor(state);
}
void Gfx::opSetStrokeRGBColor(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setStrokeColorSpace(new GfxColorSpace(colorRGB));
state->setStrokeRGB(args[0].getNum(), args[1].getNum(), args[2].getNum());
out->updateStrokeColor(state);
GfxColorSpace *colorSpace;
double x[4];
+ (void)numArgs;
+
lookupColorSpace(args[0].getName(), &obj);
if (obj.isNull())
colorSpace = new GfxColorSpace(&args[0]);
GfxColorSpace *colorSpace;
double x[4];
+ (void)numArgs;
+
lookupColorSpace(args[0].getName(), &obj);
if (obj.isNull())
colorSpace = new GfxColorSpace(&args[0]);
//------------------------------------------------------------------------
void Gfx::opMoveTo(Object args[], int numArgs) {
+ (void)numArgs;
+
state->moveTo(args[0].getNum(), args[1].getNum());
}
void Gfx::opLineTo(Object args[], int numArgs) {
+ (void)numArgs;
+
if (!state->isCurPt()) {
error(getPos(), "No current point in lineto");
return;
void Gfx::opCurveTo(Object args[], int numArgs) {
double x1, y1, x2, y2, x3, y3;
+ (void)numArgs;
+
if (!state->isCurPt()) {
error(getPos(), "No current point in curveto");
return;
void Gfx::opCurveTo1(Object args[], int numArgs) {
double x1, y1, x2, y2, x3, y3;
+ (void)numArgs;
+
if (!state->isCurPt()) {
error(getPos(), "No current point in curveto1");
return;
void Gfx::opCurveTo2(Object args[], int numArgs) {
double x1, y1, x2, y2, x3, y3;
+ (void)numArgs;
+
if (!state->isCurPt()) {
error(getPos(), "No current point in curveto2");
return;
void Gfx::opRectangle(Object args[], int numArgs) {
double x, y, w, h;
+ (void)numArgs;
+
x = args[0].getNum();
y = args[1].getNum();
w = args[2].getNum();
}
void Gfx::opClosePath(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isPath()) {
error(getPos(), "No current point in closepath");
return;
//------------------------------------------------------------------------
void Gfx::opEndPath(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
doEndPath();
}
void Gfx::opStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in stroke");
return;
}
void Gfx::opCloseStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in closepath/stroke");
return;
}
void Gfx::opFill(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in fill");
return;
}
void Gfx::opEOFill(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in eofill");
return;
}
void Gfx::opFillStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in fill/stroke");
return;
}
void Gfx::opCloseFillStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in closepath/fill/stroke");
return;
}
void Gfx::opEOFillStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in eofill/stroke");
return;
}
void Gfx::opCloseEOFillStroke(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (!state->isCurPt()) {
//error(getPos(), "No path in closepath/eofill/stroke");
return;
}
void Gfx::opShFill(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
}
void Gfx::doEndPath() {
//------------------------------------------------------------------------
void Gfx::opClip(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
clip = clipNormal;
}
void Gfx::opEOClip(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
clip = clipEO;
}
//------------------------------------------------------------------------
void Gfx::opBeginText(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
state->setTextMat(1, 0, 0, 1, 0, 0);
state->textMoveTo(0, 0);
out->updateTextMat(state);
}
void Gfx::opEndText(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
void Gfx::opSetCharSpacing(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
state->setCharSpace(args[0].getNum());
out->updateCharSpace(state);
}
void Gfx::opSetFont(Object args[], int numArgs) {
GfxFont *font;
+ (void)numArgs;
+
if (!(font = lookupFont(args[0].getName())))
return;
if (printCommands) {
}
void Gfx::opSetTextLeading(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setLeading(args[0].getNum());
}
void Gfx::opSetTextRender(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setRender(args[0].getInt());
out->updateRender(state);
}
void Gfx::opSetTextRise(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setRise(args[0].getNum());
out->updateRise(state);
}
void Gfx::opSetWordSpacing(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setWordSpace(args[0].getNum());
out->updateWordSpace(state);
}
void Gfx::opSetHorizScaling(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setHorizScaling(args[0].getNum());
out->updateHorizScaling(state);
}
void Gfx::opTextMove(Object args[], int numArgs) {
double tx, ty;
+ (void)numArgs;
+
tx = state->getLineX() + args[0].getNum();
ty = state->getLineY() + args[1].getNum();
state->textMoveTo(tx, ty);
void Gfx::opTextMoveSet(Object args[], int numArgs) {
double tx, ty;
+ (void)numArgs;
+
tx = state->getLineX() + args[0].getNum();
ty = args[1].getNum();
state->setLeading(-ty);
}
void Gfx::opSetTextMatrix(Object args[], int numArgs) {
+ (void)numArgs;
+
state->setTextMat(args[0].getNum(), args[1].getNum(),
args[2].getNum(), args[3].getNum(),
args[4].getNum(), args[5].getNum());
void Gfx::opTextNextLine(Object args[], int numArgs) {
double tx, ty;
+ (void)args;
+ (void)numArgs;
+
tx = state->getLineX();
ty = state->getLineY() - state->getLeading();
state->textMoveTo(tx, ty);
//------------------------------------------------------------------------
void Gfx::opShowText(Object args[], int numArgs) {
+ (void)numArgs;
+
if (!state->getFont()) {
error(getPos(), "No font in show");
return;
void Gfx::opMoveShowText(Object args[], int numArgs) {
double tx, ty;
+ (void)numArgs;
+
if (!state->getFont()) {
error(getPos(), "No font in move/show");
return;
void Gfx::opMoveSetShowText(Object args[], int numArgs) {
double tx, ty;
+ (void)numArgs;
+
if (!state->getFont()) {
error(getPos(), "No font in move/set/show");
return;
Object obj;
int i;
+ (void)numArgs;
+
if (!state->getFont()) {
error(getPos(), "No font in show/space");
return;
Object opiDict;
#endif
+ (void)numArgs;
+
if (!lookupXObject(args[0].getName(), &obj1))
return;
if (!obj1.isStream()) {
Stream *str;
int c1, c2;
+ (void)args;
+ (void)numArgs;
+
// build dict/stream
str = buildImageStream();
}
void Gfx::opImageData(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
error(getPos(), "Internal: got 'ID' operator");
}
void Gfx::opEndImage(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
error(getPos(), "Internal: got 'EI' operator");
}
//------------------------------------------------------------------------
void Gfx::opSetCharWidth(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
error(getPos(), "Encountered 'd0' operator in content stream");
}
void Gfx::opSetCacheDevice(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
error(getPos(), "Encountered 'd1' operator in content stream");
}
//------------------------------------------------------------------------
void Gfx::opBeginIgnoreUndef(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
++ignoreUndef;
}
void Gfx::opEndIgnoreUndef(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
+
if (ignoreUndef > 0)
--ignoreUndef;
}
//------------------------------------------------------------------------
void Gfx::opBeginMarkedContent(Object args[], int numArgs) {
+ (void)numArgs;
+
if (printCommands) {
printf(" marked content: %s ", args[0].getName());
if (numArgs == 2)
}
void Gfx::opEndMarkedContent(Object args[], int numArgs) {
+ (void)args;
+ (void)numArgs;
}
void Gfx::opMarkPoint(Object args[], int numArgs) {
+ (void)numArgs;
+
if (printCommands) {
printf(" mark point: %s ", args[0].getName());
if (numArgs == 2)