Index: experimental/PdfViewer/SkPdfRenderer.cpp |
=================================================================== |
--- experimental/PdfViewer/SkPdfRenderer.cpp (revision 10595) |
+++ experimental/PdfViewer/SkPdfRenderer.cpp (working copy) |
@@ -390,26 +390,6 @@ |
canvas->save(); |
-#if 1 |
- SkMatrix matrix = pdfContext->fGraphicsState.fMatrixTm; |
- |
- SkPoint point1; |
- pdfContext->fGraphicsState.fMatrixTm.mapXY(SkIntToScalar(0), SkIntToScalar(0), &point1); |
- |
- SkMatrix mirror; |
- mirror.setTranslate(0, -point1.y()); |
- // TODO(edisonn): fix rotated text, and skewed too |
- mirror.postScale(SK_Scalar1, -SK_Scalar1); |
- // TODO(edisonn): post rotate, skew |
- mirror.postTranslate(0, point1.y()); |
- |
- matrix.postConcat(mirror); |
- |
- canvas->setMatrix(matrix); |
- |
- SkTraceMatrix(matrix, "mirrored"); |
-#endif |
- |
skfont->drawText(decoded, &paint, pdfContext, canvas); |
canvas->restore(); |
@@ -756,8 +736,10 @@ |
if (skobj->has_Matrix()) { |
pdfContext->fGraphicsState.fCTM.preConcat(skobj->Matrix(pdfContext->fPdfDoc)); |
- pdfContext->fGraphicsState.fMatrixTm = pdfContext->fGraphicsState.fCTM; |
- pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fCTM; |
+ SkMatrix matrix = pdfContext->fGraphicsState.fCTM; |
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1)); |
+ pdfContext->fGraphicsState.fMatrixTm = matrix; |
+ pdfContext->fGraphicsState.fMatrixTlm = matrix; |
// TODO(edisonn) reset matrixTm and matricTlm also? |
} |
@@ -870,9 +852,10 @@ |
pdfContext->fGraphicsState.fMatrixTm.preConcat(matrix); |
pdfContext->fGraphicsState.fMatrixTm.preScale(SkDoubleToScalar(textSize), SkDoubleToScalar(textSize)); |
+ pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fMatrixTm; |
pdfContext->fGraphicsState.fCTM = pdfContext->fGraphicsState.fMatrixTm; |
- pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fCTM; |
+ pdfContext->fGraphicsState.fCTM.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1)); |
SkTraceMatrix(pdfContext->fGraphicsState.fCTM, "Total matrix"); |
@@ -1074,7 +1057,7 @@ |
obj = obj; |
double tx = pdfContext->fObjectStack.top()->numberValue(); pdfContext->fObjectStack.pop(); |
- double array[6] = {1, 0, 0, 1, tx, ty}; |
+ double array[6] = {1, 0, 0, 1, tx, -ty}; |
SkMatrix matrix = SkMatrixFromPdfMatrix(array); |
pdfContext->fGraphicsState.fMatrixTm.preConcat(matrix); |
@@ -1125,6 +1108,7 @@ |
SkMatrix matrix = SkMatrixFromPdfMatrix(array); |
matrix.postConcat(pdfContext->fGraphicsState.fCTM); |
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1)); |
// TODO(edisonn): Text positioning. |
pdfContext->fGraphicsState.fMatrixTm = matrix; |
@@ -1459,8 +1443,10 @@ |
static PdfResult PdfOp_BT(PdfContext* pdfContext, SkCanvas* canvas, PdfTokenLooper** looper) { |
pdfContext->fGraphicsState.fTextBlock = true; |
- pdfContext->fGraphicsState.fMatrixTm = pdfContext->fGraphicsState.fCTM; |
- pdfContext->fGraphicsState.fMatrixTlm = pdfContext->fGraphicsState.fCTM; |
+ SkMatrix matrix = pdfContext->fGraphicsState.fCTM; |
+ matrix.preScale(SkDoubleToScalar(1), SkDoubleToScalar(-1)); |
+ pdfContext->fGraphicsState.fMatrixTm = matrix; |
+ pdfContext->fGraphicsState.fMatrixTlm = matrix; |
return kPartial_PdfResult; |
} |