Index: experimental/PdfViewer/src/SkPdfRenderer.cpp |
diff --git a/experimental/PdfViewer/src/SkPdfRenderer.cpp b/experimental/PdfViewer/src/SkPdfRenderer.cpp |
index 714da5027ce7920f67eb0f882576fbf765fa3647..eea7c6e4775e2f77543093d06bbd7eca8aa67767 100644 |
--- a/experimental/PdfViewer/src/SkPdfRenderer.cpp |
+++ b/experimental/PdfViewer/src/SkPdfRenderer.cpp |
@@ -208,21 +208,26 @@ StringsInit gStringsInit; |
// TODO(edisonn): Document SkPdfTokenLooper and subclasses. |
class PdfInlineImageLooper : public SkPdfTokenLooper { |
public: |
- PdfInlineImageLooper() |
- : SkPdfTokenLooper(NULL, NULL, NULL, NULL) {} |
+ explicit PdfInlineImageLooper(SkPdfTokenLooper* parent) |
+ : INHERITED(parent) {} |
- virtual SkPdfResult consumeToken(PdfToken& token); |
- virtual void loop(); |
- SkPdfResult done(); |
+ virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE; |
+ virtual void loop() SK_OVERRIDE; |
+ |
+private: |
+ typedef SkPdfTokenLooper INHERITED; |
}; |
class PdfCompatibilitySectionLooper : public SkPdfTokenLooper { |
public: |
- PdfCompatibilitySectionLooper() |
- : SkPdfTokenLooper(NULL, NULL, NULL, NULL) {} |
+ explicit PdfCompatibilitySectionLooper(SkPdfTokenLooper* parent) |
+ : INHERITED (parent) {} |
+ |
+ virtual SkPdfResult consumeToken(PdfToken& token) SK_OVERRIDE; |
+ virtual void loop() SK_OVERRIDE; |
- virtual SkPdfResult consumeToken(PdfToken& token); |
- virtual void loop(); |
+private: |
+ typedef SkPdfTokenLooper INHERITED; |
}; |
// Utilities |
@@ -347,10 +352,10 @@ static SkPdfResult DrawText(SkPdfContext* pdfContext, |
} |
// TODO(edisonn): create header files with declarations! |
-SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper); |
-SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper); |
-SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper); |
-SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper); |
+SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper); |
+SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper); |
+SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper); |
+SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper* parentLooper); |
// TODO(edisonn): perf!!! |
static SkColorTable* getGrayColortable() { |
@@ -915,14 +920,14 @@ static SkPdfResult doPage(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kPartial_SkPdfResult; |
} |
-SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+SkPdfResult PdfOp_q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fStateStack.push(pdfContext->fGraphicsState); |
canvas->save(); |
pdfContext->fObjectStack.nest(); |
return kOK_SkPdfResult; |
} |
-SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fStateStack.count() > 0) { |
pdfContext->fGraphicsState = pdfContext->fStateStack.top(); |
pdfContext->fStateStack.pop(); |
@@ -944,7 +949,7 @@ SkPdfResult PdfOp_Q(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_cm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_cm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("cm", pdfContext, 6); |
POP_NUMBER(pdfContext, f); |
POP_NUMBER(pdfContext, e); |
@@ -985,7 +990,7 @@ static SkPdfResult PdfOp_cm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//leading TL Set the text leading, Tl |
//, to leading, which is a number expressed in unscaled text |
//space units. Text leading is used only by the T*, ', and " operators. Initial value: 0. |
-static SkPdfResult PdfOp_TL(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_TL(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("TL", pdfContext, 1); |
POP_NUMBER(pdfContext, ty); |
CHECK_PARAMETERS(); |
@@ -995,7 +1000,7 @@ static SkPdfResult PdfOp_TL(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_Td(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Td(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Td", pdfContext, 2); |
POP_NUMBER(pdfContext, ty); |
POP_NUMBER(pdfContext, tx); |
@@ -1010,7 +1015,8 @@ static SkPdfResult PdfOp_Td(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_TD(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_TD(SkPdfContext* pdfContext, SkCanvas* canvas, |
+ SkPdfTokenLooper* parentLooper) { |
EXPECT_OPERANDS("TD", pdfContext, 2) |
POP_NUMBER(pdfContext, ty); |
POP_NUMBER(pdfContext, tx); |
@@ -1020,7 +1026,7 @@ static SkPdfResult PdfOp_TD(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
SkPdfReal* _ty = pdfContext->fPdfDoc->createReal(-ty); |
pdfContext->fObjectStack.push(_ty); |
- PdfOp_TL(pdfContext, canvas, looper); |
+ PdfOp_TL(pdfContext, canvas, parentLooper); |
SkPdfReal* vtx = pdfContext->fPdfDoc->createReal(tx); |
pdfContext->fObjectStack.push(vtx); |
@@ -1028,12 +1034,12 @@ static SkPdfResult PdfOp_TD(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
SkPdfReal* vty = pdfContext->fPdfDoc->createReal(ty); |
pdfContext->fObjectStack.push(vty); |
- SkPdfResult ret = PdfOp_Td(pdfContext, canvas, looper); |
+ SkPdfResult ret = PdfOp_Td(pdfContext, canvas, parentLooper); |
return ret; |
} |
-static SkPdfResult PdfOp_Tm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Tm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tm", pdfContext, 6); |
POP_NUMBER(pdfContext, f); |
POP_NUMBER(pdfContext, e); |
@@ -1069,19 +1075,19 @@ static SkPdfResult PdfOp_Tm(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//0 Tl Td |
//where Tl is the current leading parameter in the text state |
static SkPdfResult PdfOp_T_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper* parentLooper) { |
SkPdfReal* zero = pdfContext->fPdfDoc->createReal(0.0); |
SkPdfReal* tl = pdfContext->fPdfDoc->createReal(pdfContext->fGraphicsState.fTextLeading); |
pdfContext->fObjectStack.push(zero); |
pdfContext->fObjectStack.push(tl); |
- SkPdfResult ret = PdfOp_Td(pdfContext, canvas, looper); |
+ SkPdfResult ret = PdfOp_Td(pdfContext, canvas, parentLooper); |
return ret; |
} |
-static SkPdfResult PdfOp_m(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_m(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1101,7 +1107,7 @@ static SkPdfResult PdfOp_m(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_l(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_l(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1121,7 +1127,7 @@ static SkPdfResult PdfOp_l(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_c(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_c(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1146,7 +1152,7 @@ static SkPdfResult PdfOp_c(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_v(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_v(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1172,7 +1178,7 @@ static SkPdfResult PdfOp_v(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_y(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_y(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1198,7 +1204,7 @@ static SkPdfResult PdfOp_y(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_re(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_re(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (pdfContext->fGraphicsState.fPathClosed) { |
pdfContext->fGraphicsState.fPath.reset(); |
pdfContext->fGraphicsState.fPathClosed = false; |
@@ -1222,7 +1228,7 @@ static SkPdfResult PdfOp_re(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_h(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_h(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fGraphicsState.fPath.close(); |
return kOK_SkPdfResult; |
} |
@@ -1372,46 +1378,46 @@ static SkPdfResult PdfOp_fillAndStroke(SkPdfContext* pdfContext, SkCanvas* canva |
} |
-static SkPdfResult PdfOp_S(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_S(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, false, true, false, false); |
} |
-static SkPdfResult PdfOp_s(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_s(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, false, true, true, false); |
} |
-static SkPdfResult PdfOp_F(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_F(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, false); |
} |
-static SkPdfResult PdfOp_f(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_f(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, false); |
} |
static SkPdfResult PdfOp_f_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, false, false, true); |
} |
-static SkPdfResult PdfOp_B(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_B(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, true, false, false); |
} |
static SkPdfResult PdfOp_B_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, true, false, true); |
} |
-static SkPdfResult PdfOp_b(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_b(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, true, true, false); |
} |
static SkPdfResult PdfOp_b_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper*) { |
return PdfOp_fillAndStroke(pdfContext, canvas, true, true, true, true); |
} |
-static SkPdfResult PdfOp_n(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_n(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
canvas->setMatrix(pdfContext->fGraphicsState.fCTM); |
if (pdfContext->fGraphicsState.fHasClipPathToApply) { |
#ifndef PDF_DEBUG_NO_CLIPING |
@@ -1426,7 +1432,7 @@ static SkPdfResult PdfOp_n(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_BT(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_BT(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fGraphicsState.fTextBlock = true; |
SkMatrix matrix = pdfContext->fGraphicsState.fCTM; |
matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1)); |
@@ -1436,7 +1442,7 @@ static SkPdfResult PdfOp_BT(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_ET(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_ET(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
if (!pdfContext->fGraphicsState.fTextBlock) { |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, "ET without BT", NULL, |
pdfContext); |
@@ -1489,7 +1495,7 @@ static SkPdfResult skpdfGraphicsStateApplyFontCore(SkPdfContext* pdfContext, |
//font resource in the Fontsubdictionary of the current resource dictionary; size is |
//a number representing a scale factor. There is no initial value for either font or |
//size; they must be specified explicitly using Tf before any text is shown. |
-static SkPdfResult PdfOp_Tf(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Tf(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tf", pdfContext, 2); |
POP_NUMBER(pdfContext, fontSize); |
POP_NAME(pdfContext, fontName); |
@@ -1498,7 +1504,7 @@ static SkPdfResult PdfOp_Tf(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return skpdfGraphicsStateApplyFontCore(pdfContext, fontName, fontSize); |
} |
-static SkPdfResult PdfOp_Tj(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Tj(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tj", pdfContext, 1); |
POP_STRING(pdfContext, str); |
CHECK_PARAMETERS(); |
@@ -1516,7 +1522,7 @@ static SkPdfResult PdfOp_Tj(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
static SkPdfResult PdfOp_quote(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper* parentLooper) { |
if (!pdfContext->fGraphicsState.fTextBlock) { |
// TODO(edisonn): try to recover and draw it any way? |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, |
@@ -1524,13 +1530,13 @@ static SkPdfResult PdfOp_quote(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kIgnoreError_SkPdfResult; |
} |
- PdfOp_T_star(pdfContext, canvas, looper); |
+ PdfOp_T_star(pdfContext, canvas, parentLooper); |
// Do not pop, and push, just transfer the param to Tj |
- return PdfOp_Tj(pdfContext, canvas, looper); |
+ return PdfOp_Tj(pdfContext, canvas, parentLooper); |
} |
static SkPdfResult PdfOp_doublequote(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+ SkPdfTokenLooper* parentLooper) { |
if (!pdfContext->fGraphicsState.fTextBlock) { |
// TODO(edisonn): try to recover and draw it any way? |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kMissingBT_SkPdfIssue, |
@@ -1545,18 +1551,18 @@ static SkPdfResult PdfOp_doublequote(SkPdfContext* pdfContext, SkCanvas* canvas, |
CHECK_PARAMETERS(); |
pdfContext->fObjectStack.push(aw); |
- PdfOp_Tw(pdfContext, canvas, looper); |
+ PdfOp_Tw(pdfContext, canvas, parentLooper); |
pdfContext->fObjectStack.push(ac); |
- PdfOp_Tc(pdfContext, canvas, looper); |
+ PdfOp_Tc(pdfContext, canvas, parentLooper); |
pdfContext->fObjectStack.push(str); |
- PdfOp_quote(pdfContext, canvas, looper); |
+ PdfOp_quote(pdfContext, canvas, parentLooper); |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_TJ(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_TJ(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tf", pdfContext, 1); |
POP_ARRAY(pdfContext, array); |
CHECK_PARAMETERS(); |
@@ -1670,11 +1676,11 @@ static SkPdfResult PdfOp_CS_cs(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_CS(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_CS(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_CS_cs(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_cs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_cs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_CS_cs(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
@@ -1717,11 +1723,11 @@ static SkPdfResult PdfOp_SC_sc(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_SC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_SC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_SC_sc(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_sc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_sc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_SC_sc(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
@@ -1750,11 +1756,11 @@ static SkPdfResult PdfOp_SCN_scn(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_SCN(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_SCN(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_SCN_scn(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_scn(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_scn(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_SCN_scn(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
@@ -1775,11 +1781,11 @@ static SkPdfResult PdfOp_G_g(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kPartial_SkPdfResult; |
} |
-static SkPdfResult PdfOp_G(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_G(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_G_g(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_g(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_g(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_G_g(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
@@ -1796,11 +1802,11 @@ static SkPdfResult PdfOp_RG_rg(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_RG(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_RG(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_RG_rg(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_rg(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_rg(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_RG_rg(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
@@ -1824,23 +1830,22 @@ static SkPdfResult PdfOp_K_k(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kNYI_SkPdfResult; |
} |
-static SkPdfResult PdfOp_K(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_K(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_K_k(pdfContext, canvas, &pdfContext->fGraphicsState.fStroking); |
} |
-static SkPdfResult PdfOp_k(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_k(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
return PdfOp_K_k(pdfContext, canvas, &pdfContext->fGraphicsState.fNonStroking); |
} |
-static SkPdfResult PdfOp_W(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_W(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fGraphicsState.fClipPath = pdfContext->fGraphicsState.fPath; |
pdfContext->fGraphicsState.fHasClipPathToApply = true; |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_W_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
- SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_W_star(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fGraphicsState.fClipPath = pdfContext->fGraphicsState.fPath; |
pdfContext->fGraphicsState.fClipPath.setFillType(SkPath::kEvenOdd_FillType); |
@@ -1849,12 +1854,14 @@ static SkPdfResult PdfOp_W_star(SkPdfContext* pdfContext, SkCanvas* canvas, |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_BX(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
- *looper = new PdfCompatibilitySectionLooper(); |
+static SkPdfResult PdfOp_BX(SkPdfContext* pdfContext, SkCanvas* canvas, |
+ SkPdfTokenLooper* parentLooper) { |
+ PdfCompatibilitySectionLooper looper(parentLooper); |
+ looper.loop(); |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_EX(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_EX(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue, |
"EX operator should not be called, it is handled in a looper, " |
"unless the file is corrupted, we should assert", |
@@ -1863,12 +1870,14 @@ static SkPdfResult PdfOp_EX(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kIgnoreError_SkPdfResult; |
} |
-static SkPdfResult PdfOp_BI(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
- *looper = new PdfInlineImageLooper(); |
+static SkPdfResult PdfOp_BI(SkPdfContext* pdfContext, SkCanvas* canvas, |
+ SkPdfTokenLooper* parentLooper) { |
+ PdfInlineImageLooper looper(parentLooper); |
+ looper.loop(); |
return kOK_SkPdfResult; |
} |
-static SkPdfResult PdfOp_ID(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_ID(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue, |
"ID operator should not be called, it is habdled in a looper, " |
"unless the file is corrupted, we should assert", |
@@ -1876,7 +1885,7 @@ static SkPdfResult PdfOp_ID(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
return kIgnoreError_SkPdfResult; |
} |
-static SkPdfResult PdfOp_EI(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_EI(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
SkPdfReport(kIgnoreError_SkPdfIssueSeverity, kNullObject_SkPdfIssue, |
"EI operator should not be called, it is habdled in a looper, " |
"unless the file is corrupted, we should assert", |
@@ -2041,7 +2050,7 @@ static void skpdfGraphicsStateApplyFont(SkPdfContext* pdfContext, SkPdfArray* fo |
//lineWidth w Set the line width in the graphics state (see “Line Width” on page 152). |
-static SkPdfResult PdfOp_w(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_w(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("w", pdfContext, 1); |
POP_NUMBER(pdfContext, lw); |
CHECK_PARAMETERS(); |
@@ -2050,7 +2059,7 @@ static SkPdfResult PdfOp_w(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
} |
//lineCap J Set the line cap style in the graphics state (see “Line Cap Style” on page 153). |
-static SkPdfResult PdfOp_J(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_J(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
// TODO(edisonn): round/ceil to int? |
EXPECT_OPERANDS("J", pdfContext, 1); |
POP_NUMBER(pdfContext, lc); |
@@ -2060,7 +2069,7 @@ static SkPdfResult PdfOp_J(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
} |
//lineJoin j Set the line join style in the graphics state (see “Line Join Style” on page 153). |
-static SkPdfResult PdfOp_j(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_j(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
// TODO(edisonn): round/ceil to int? |
EXPECT_OPERANDS("j", pdfContext, 1); |
POP_NUMBER(pdfContext, lj); |
@@ -2070,7 +2079,7 @@ static SkPdfResult PdfOp_j(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
} |
//miterLimit M Set the miter limit in the graphics state (see “Miter Limit” on page 153). |
-static SkPdfResult PdfOp_M(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_M(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("M", pdfContext, 1); |
POP_NUMBER(pdfContext, ml); |
CHECK_PARAMETERS(); |
@@ -2079,7 +2088,7 @@ static SkPdfResult PdfOp_M(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
//dashArray dashPhase d Set the line dash pattern in the graphics state (see “Line Dash Pattern” on |
//page 155). |
-static SkPdfResult PdfOp_d(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_d(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("d", pdfContext, 2); |
POP_OBJ(pdfContext, phase); |
POP_ARRAY(pdfContext, array); |
@@ -2090,7 +2099,7 @@ static SkPdfResult PdfOp_d(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfToke |
//intent ri (PDF 1.1) Set the color rendering intent in the graphics state (see “Rendering Intents” |
// on page 197). |
-static SkPdfResult PdfOp_ri(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_ri(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
pdfContext->fObjectStack.pop(); |
SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "render intent NYI", NULL, |
@@ -2102,7 +2111,7 @@ static SkPdfResult PdfOp_ri(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//flatness i Set the flatness tolerance in the graphics state (see Section 6.5.1, “Flatness |
//Tolerance”). flatness is a number in the range 0 to 100; a value of 0 speci- |
//fies the output device’s default flatness tolerance. |
-static SkPdfResult PdfOp_i(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_i(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("i", pdfContext, 1); |
POP_NUMBER(pdfContext, flatness); |
CHECK_PARAMETERS(); |
@@ -2259,7 +2268,7 @@ static void skpdfGraphicsStateApplyAIS(SkPdfContext* pdfContext, bool alphaSourc |
//dictName gs (PDF 1.2) Set the specified parameters in the graphics state. dictName is |
//the name of a graphics state parameter dictionary in the ExtGState subdictionary of the current |
//resource dictionary (see the next section). |
-static SkPdfResult PdfOp_gs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_gs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("gs", pdfContext, 1); |
POP_NAME(pdfContext, name); |
CHECK_PARAMETERS(); |
@@ -2361,7 +2370,7 @@ static SkPdfResult PdfOp_gs(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//, to charSpace, which is a number expressed in unscaled text space units. |
// Character spacing is used by the Tj, TJ, and ' operators. |
//Initial value: 0. |
-SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tc", pdfContext, 1); |
POP_NUMBER(pdfContext, charSpace); |
CHECK_PARAMETERS(); |
@@ -2376,7 +2385,7 @@ SkPdfResult PdfOp_Tc(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLoope |
//, to wordSpace, which is a number expressed in unscaled |
//text space units. Word spacing is used by the Tj, TJ, and ' operators. Initial |
//value: 0. |
-SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tw", pdfContext, 1); |
POP_NUMBER(pdfContext, wordSpace); |
CHECK_PARAMETERS(); |
@@ -2389,7 +2398,7 @@ SkPdfResult PdfOp_Tw(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLoope |
//scale Tz Set the horizontal scaling, Th |
//, to (scale ˜ 100). scale is a number specifying the |
//percentage of the normal width. Initial value: 100 (normal width). |
-static SkPdfResult PdfOp_Tz(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Tz(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tz", pdfContext, 1); |
POP_NUMBER(pdfContext, scale); |
CHECK_PARAMETERS(); |
@@ -2405,7 +2414,7 @@ static SkPdfResult PdfOp_Tz(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//render Tr Set the text rendering mode, T |
//mode, to render, which is an integer. Initial value: 0. |
-static SkPdfResult PdfOp_Tr(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Tr(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Tr", pdfContext, 1); |
POP_INTEGER(pdfContext, mode); |
CHECK_PARAMETERS(); |
@@ -2420,7 +2429,7 @@ static SkPdfResult PdfOp_Tr(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
//rise Ts Set the text rise, Trise, to rise, which is a number expressed in unscaled text space |
//units. Initial value: 0. |
-static SkPdfResult PdfOp_Ts(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Ts(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Ts", pdfContext, 1); |
POP_NUMBER(pdfContext, rise); |
CHECK_PARAMETERS(); |
@@ -2435,7 +2444,7 @@ static SkPdfResult PdfOp_Ts(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
//wx wy d0 |
-static SkPdfResult PdfOp_d0(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_d0(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("d0", pdfContext, 2); |
POP_NUMBER(pdfContext, wy); |
POP_NUMBER(pdfContext, wx); |
@@ -2457,7 +2466,7 @@ static SkPdfResult PdfOp_d0(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
//wx wy llx lly urx ury d1 |
-static SkPdfResult PdfOp_d1(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_d1(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("d1", pdfContext, 6); |
POP_NUMBER(pdfContext, ury); |
POP_NUMBER(pdfContext, urx); |
@@ -2476,7 +2485,7 @@ static SkPdfResult PdfOp_d1(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
//name sh |
-static SkPdfResult PdfOp_sh(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_sh(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("sh", pdfContext, 1); |
POP_NAME(pdfContext, name); |
CHECK_PARAMETERS(); |
@@ -2491,7 +2500,7 @@ static SkPdfResult PdfOp_sh(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
} |
//name Do |
-static SkPdfResult PdfOp_Do(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_Do(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("Do", pdfContext, 1); |
POP_NAME(pdfContext, name); |
CHECK_PARAMETERS(); |
@@ -2512,7 +2521,7 @@ static SkPdfResult PdfOp_Do(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//tag MP Designate a marked-content point. tag is a name object indicating the role or |
//significance of the point. |
-static SkPdfResult PdfOp_MP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_MP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("MP", pdfContext, 1); |
POP_OBJ(pdfContext, tag); |
CHECK_PARAMETERS(); |
@@ -2532,7 +2541,7 @@ static SkPdfResult PdfOp_MP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//either an inline dictionary containing the property list or a name object |
//associated with it in the Properties subdictionary of the current resource |
//dictionary (see Section 9.5.1, “Property Lists”). |
-static SkPdfResult PdfOp_DP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_DP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("DP", pdfContext, 2); |
POP_OBJ(pdfContext, properties); |
POP_OBJ(pdfContext, tag); |
@@ -2556,7 +2565,7 @@ static SkPdfResult PdfOp_DP(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTok |
//tag BMC Begin a marked-content sequence terminated by a balancing EMC operator. |
//tag is a name object indicating the role or significance of the sequence. |
-static SkPdfResult PdfOp_BMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_BMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("BMC", pdfContext, 1); |
POP_OBJ(pdfContext, tag); |
CHECK_PARAMETERS(); |
@@ -2576,7 +2585,7 @@ static SkPdfResult PdfOp_BMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTo |
// sequence; propertiesis either an inline dictionary containing the |
//property list or a name object associated with it in the Properties subdictionary of the current |
//resource dictionary (see Section 9.5.1, “Property Lists”). |
-static SkPdfResult PdfOp_BDC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_BDC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
EXPECT_OPERANDS("BDC", pdfContext, 2); |
POP_OBJ(pdfContext, properties); |
POP_OBJ(pdfContext, tag); |
@@ -2599,7 +2608,7 @@ static SkPdfResult PdfOp_BDC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTo |
} |
//— EMC End a marked-content sequence begun by a BMC or BDC operator. |
-static SkPdfResult PdfOp_EMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper** looper) { |
+static SkPdfResult PdfOp_EMC(SkPdfContext* pdfContext, SkCanvas* canvas, SkPdfTokenLooper*) { |
SkPdfReport(kCodeWarning_SkPdfIssueSeverity, kNYI_SkPdfIssue, "EMC NYI", NULL, NULL); |
return kNYI_SkPdfResult; |
} |
@@ -2721,13 +2730,12 @@ SkPdfResult PdfInlineImageLooper::consumeToken(PdfToken& token) { |
} |
void PdfInlineImageLooper::loop() { |
+ // FIXME (scroggo): Does this need to be looper? It does not consumeTokens, |
+ // nor does it loop. The one thing it does is provide access to the |
+ // protected members of SkPdfTokenLooper. |
doXObject_Image(fPdfContext, fCanvas, fTokenizer->readInlineImage()); |
} |
-SkPdfResult PdfInlineImageLooper::done() { |
- return kNYI_SkPdfResult; |
-} |
- |
SkPdfResult PdfCompatibilitySectionLooper::consumeToken(PdfToken& token) { |
return fParent->consumeToken(token); |
} |
@@ -2738,12 +2746,12 @@ void PdfCompatibilitySectionLooper::loop() { |
PdfToken token; |
while (fTokenizer->readToken(&token)) { |
if (token.fType == kKeyword_TokenType && strcmp(token.fKeyword, "BX") == 0) { |
- SkPdfTokenLooper* looper = new PdfCompatibilitySectionLooper(); |
- looper->setUp(this); |
- looper->loop(); |
- delete looper; |
+ PdfCompatibilitySectionLooper looper(this); |
+ looper.loop(); |
} else { |
- if (token.fType == kKeyword_TokenType && strcmp(token.fKeyword, "EX") == 0) break; |
+ if (token.fType == kKeyword_TokenType && strcmp(token.fKeyword, "EX") == 0) { |
+ break; |
+ } |
fParent->consumeToken(token); |
} |
} |