Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: experimental/PdfViewer/SkPdfRenderer.cpp

Issue 22460004: pdfviewer: /Pattern color space, uses the matrix of the last content stream, not the global matrix. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « experimental/PdfViewer/SkPdfBasics.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/PdfViewer/SkPdfRenderer.cpp
===================================================================
--- experimental/PdfViewer/SkPdfRenderer.cpp (revision 10588)
+++ experimental/PdfViewer/SkPdfRenderer.cpp (working copy)
@@ -236,11 +236,11 @@
bool ret = fTokenizer->readToken(token);
gReadOp++;
-
+ gLastOpKeyword++;
#ifdef PDF_TRACE_DIFF_IN_PNG
// TODO(edisonn): compare with old bitmap, and save only new bits are available, and save
// the numbar and name of last operation, so the file name will reflect op that changed.
- if (hasVisualEffect(gLastKeyword)) { // TODO(edisonn): and has dirty bits.
+ if (gLastKeyword[0] && hasVisualEffect(gLastKeyword)) { // TODO(edisonn): and has dirty bits.
gDumpCanvas->flush();
SkBitmap bitmap;
@@ -311,6 +311,14 @@
out.appendf("/usr/local/google/home/edisonn/log_view2/step-%i-%s.png", gLastOpKeyword, gLastKeyword);
SkImageEncoder::EncodeFile(out.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
}
+
+ if (ret && token->fType == kKeyword_TokenType && token->fKeyword && token->fKeywordLength > 0 && token->fKeywordLength < 100) {
+ strncpy(gLastKeyword, token->fKeyword, token->fKeywordLength);
+ gLastKeyword[token->fKeywordLength] = '\0';
+ } else {
+ gLastKeyword[0] = '\0';
+ }
+
#endif
return ret;
@@ -642,7 +650,6 @@
canvas->save();
canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
-#if 1
SkScalar z = SkIntToScalar(0);
SkScalar one = SkIntToScalar(1);
@@ -653,8 +660,17 @@
SkMatrix solveImageFlip = pdfContext->fGraphicsState.fCTM;
solveImageFlip.preConcat(flip);
canvas->setMatrix(solveImageFlip);
-#endif
+#ifdef PDF_TRACE
+ SkPoint final[4] = {SkPoint::Make(z, z), SkPoint::Make(one, z), SkPoint::Make(one, one), SkPoint::Make(z, one)};
+ solveImageFlip.mapPoints(final, 4);
+ printf("IMAGE rect = ");
+ for (int i = 0; i < 4; i++) {
+ printf("(%f %f) ", SkScalarToDouble(final[i].x()), SkScalarToDouble(final[i].y()));
+ }
+ printf("\n");
+#endif // PDF_TRACE
+
SkRect dst = SkRect::MakeXYWH(SkDoubleToScalar(0.0), SkDoubleToScalar(0.0), SkDoubleToScalar(1.0), SkDoubleToScalar(1.0));
// TODO(edisonn): soft mask type? alpha/luminosity.
@@ -746,6 +762,7 @@
}
SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Total matrix");
+ pdfContext->fGraphicsState.fContentStreamMatrix = pdfContext->fGraphicsState.fCTM;
canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
@@ -803,18 +820,16 @@
pdfContext->fGraphicsState.fResources = skobj->Resources(pdfContext->fPdfDoc);
}
- SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Current matrix");
+ SkTraceMatrix(pdfContext->fGraphicsState.fContentStreamMatrix, "Current Content stream matrix");
if (skobj->has_Matrix()) {
- pdfContext->fGraphicsState.fCTM.preConcat(skobj->Matrix(pdfContext->fPdfDoc));
- pdfContext->fGraphicsState.fMatrixTm = pdfContext->fGraphicsState.fCTM;
- pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fCTM;
- // TODO(edisonn) reset matrixTm and matricTlm also?
+ pdfContext->fGraphicsState.fContentStreamMatrix.preConcat(skobj->Matrix(pdfContext->fPdfDoc));
}
- SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Total matrix");
+ SkTraceMatrix(pdfContext->fGraphicsState.fContentStreamMatrix, "Total Content stream matrix");
- canvas->setMatrix(pdfContext->fGraphicsState.fCTM);
+ canvas->setMatrix(pdfContext->fGraphicsState.fContentStreamMatrix);
+ pdfContext->fGraphicsState.fCTM = pdfContext->fGraphicsState.fContentStreamMatrix;
SkRect bbox = skobj->BBox(pdfContext->fPdfDoc);
canvas->clipRect(bbox, SkRegion::kIntersect_Op, true); // TODO(edisonn): AA from settings.
@@ -1323,17 +1338,17 @@
while (x < bounds.right()) {
doXObject(pdfContext, canvas, pattern);
- pdfContext->fGraphicsState.fCTM.preTranslate(SkIntToScalar(xStep), SkIntToScalar(0));
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(SkIntToScalar(xStep), SkIntToScalar(0));
totalx += xStep;
x += SkIntToScalar(xStep);
}
- pdfContext->fGraphicsState.fCTM.preTranslate(SkIntToScalar(-totalx), SkIntToScalar(0));
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(SkIntToScalar(-totalx), SkIntToScalar(0));
- pdfContext->fGraphicsState.fCTM.preTranslate(SkIntToScalar(0), SkIntToScalar(-yStep));
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(SkIntToScalar(0), SkIntToScalar(-yStep));
totaly += yStep;
y += SkIntToScalar(yStep);
}
- pdfContext->fGraphicsState.fCTM.preTranslate(SkIntToScalar(0), SkIntToScalar(totaly));
+ pdfContext->fGraphicsState.fContentStreamMatrix.preTranslate(SkIntToScalar(0), SkIntToScalar(totaly));
}
}
@@ -2534,8 +2549,8 @@
SkAssertResult(pdfContext.fOriginalMatrix.setPolyToPoly(pdfSpace, skiaSpace, 4));
SkTraceMatrix(pdfContext.fOriginalMatrix, "Original matrix");
-
pdfContext.fGraphicsState.fCTM = pdfContext.fOriginalMatrix;
+ pdfContext.fGraphicsState.fContentStreamMatrix = pdfContext.fOriginalMatrix;
pdfContext.fGraphicsState.fMatrixTm = pdfContext.fGraphicsState.fCTM;
pdfContext.fGraphicsState.fMatrixTlm = pdfContext.fGraphicsState.fCTM;
« no previous file with comments | « experimental/PdfViewer/SkPdfBasics.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698