| Index: src/pdf/SkPDFDeviceFlattener.cpp
|
| diff --git a/src/pdf/SkPDFDeviceFlattener.cpp b/src/pdf/SkPDFDeviceFlattener.cpp
|
| deleted file mode 100644
|
| index ab6ce09e0ee774bba3efb4cf5376e78d6ab81371..0000000000000000000000000000000000000000
|
| --- a/src/pdf/SkPDFDeviceFlattener.cpp
|
| +++ /dev/null
|
| @@ -1,144 +0,0 @@
|
| -/*
|
| - * Copyright 2013 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "SkPDFDeviceFlattener.h"
|
| -#include "SkDraw.h"
|
| -
|
| -static SkISize SkSizeToISize(const SkSize& size) {
|
| - return SkISize::Make(SkScalarRoundToInt(size.width()), SkScalarRoundToInt(size.height()));
|
| -}
|
| -
|
| -SkPDFDeviceFlattener::SkPDFDeviceFlattener(const SkSize& pageSize, const SkRect* trimBox)
|
| - : SkPDFDevice(SkSizeToISize(pageSize),
|
| - SkSizeToISize(pageSize),
|
| - SkMatrix::I()) {
|
| - // TODO(edisonn): store the trimbox on emit.
|
| -}
|
| -
|
| -SkPDFDeviceFlattener::~SkPDFDeviceFlattener() {
|
| -}
|
| -
|
| -static void flattenPaint(const SkDraw& d, SkPaint* paint) {
|
| - if (paint->getShader()) {
|
| - SkAutoTUnref<SkShader> lms(SkShader::CreateLocalMatrixShader(paint->getShader(),
|
| - *d.fMatrix));
|
| - paint->setShader(lms);
|
| - }
|
| -}
|
| -
|
| -void SkPDFDeviceFlattener::drawPoints(const SkDraw& d, SkCanvas::PointMode mode,
|
| - size_t count, const SkPoint points[],
|
| - const SkPaint& paint) {
|
| - if (!mustFlatten(d)) {
|
| - INHERITED::drawPoints(d, mode, count, points, paint);
|
| - return;
|
| - }
|
| -
|
| - SkPaint paintFlatten(paint);
|
| - flattenPaint(d, &paintFlatten);
|
| -
|
| - SkPoint* flattenedPoints = SkNEW_ARRAY(SkPoint, count);
|
| - d.fMatrix->mapPoints(flattenedPoints, points, SkToS32(count));
|
| - SkDraw draw(d);
|
| - SkMatrix identity = SkMatrix::I();
|
| - draw.fMatrix = &identity;
|
| - INHERITED::drawPoints(draw, mode, count, flattenedPoints, paintFlatten);
|
| - SkDELETE_ARRAY(flattenedPoints);
|
| -}
|
| -
|
| -void SkPDFDeviceFlattener::drawRect(const SkDraw& d, const SkRect& r, const SkPaint& paint) {
|
| - if (!mustFlatten(d)) {
|
| - INHERITED::drawRect(d, r, paint);
|
| - return;
|
| - }
|
| -
|
| - SkPath path;
|
| - path.addRect(r);
|
| - path.transform(*d.fMatrix);
|
| - SkDraw draw(d);
|
| - SkMatrix matrix = SkMatrix::I();
|
| - draw.fMatrix = &matrix;
|
| -
|
| - SkPaint paintFlatten(paint);
|
| - flattenPaint(d, &paintFlatten);
|
| -
|
| - INHERITED::drawPath(draw, path, paintFlatten, NULL, true);
|
| -}
|
| -
|
| -void SkPDFDeviceFlattener::drawPath(const SkDraw& d, const SkPath& origPath,
|
| - const SkPaint& paint, const SkMatrix* prePathMatrix,
|
| - bool pathIsMutable) {
|
| - if (!mustFlatten(d) && !(prePathMatrix && prePathMatrix->hasPerspective())) {
|
| - INHERITED::drawPath(d, origPath, paint, prePathMatrix, pathIsMutable);
|
| - return;
|
| - }
|
| -
|
| - SkPath* pathPtr = (SkPath*)&origPath;
|
| - SkPath tmpPath;
|
| -
|
| - if (!pathIsMutable) {
|
| - tmpPath = origPath;
|
| - pathPtr = &tmpPath;
|
| - }
|
| -
|
| - if (prePathMatrix) {
|
| - pathPtr->transform(*prePathMatrix);
|
| - }
|
| -
|
| - SkPaint paintFlatten(paint);
|
| - flattenPaint(d, &paintFlatten);
|
| -
|
| - bool fill = paintFlatten.getFillPath(*pathPtr, &tmpPath);
|
| - SkDEBUGCODE(pathPtr = (SkPath*)0x12345678); // Don't use pathPtr after this point.
|
| -
|
| - paintFlatten.setPathEffect(NULL);
|
| - if (fill) {
|
| - paintFlatten.setStyle(SkPaint::kFill_Style);
|
| - } else {
|
| - paintFlatten.setStyle(SkPaint::kStroke_Style);
|
| - paintFlatten.setStrokeWidth(0);
|
| - }
|
| -
|
| - tmpPath.transform(*d.fMatrix);
|
| -
|
| - SkDraw draw(d);
|
| - SkMatrix matrix = SkMatrix::I();
|
| - draw.fMatrix = &matrix;
|
| -
|
| - INHERITED::drawPath(draw, tmpPath, paintFlatten, NULL, true);
|
| -}
|
| -
|
| -void SkPDFDeviceFlattener::drawText(const SkDraw& d, const void* text, size_t len,
|
| - SkScalar x, SkScalar y, const SkPaint& paint) {
|
| - if (mustPathText(d, paint)) {
|
| - d.drawText_asPaths((const char*)text, len, x, y, paint);
|
| - return;
|
| - }
|
| -
|
| - INHERITED::drawText(d, text, len, x, y, paint);
|
| -}
|
| -
|
| -void SkPDFDeviceFlattener::drawPosText(const SkDraw& d, const void* text, size_t len,
|
| - const SkScalar pos[], int scalarsPerPos,
|
| - const SkPoint& offset, const SkPaint& paint) {
|
| - if (mustPathText(d, paint)) {
|
| - d.drawPosText_asPaths((const char*)text, len, pos, scalarsPerPos, offset, paint);
|
| - return;
|
| - }
|
| - INHERITED::drawPosText(d, text, len, pos, scalarsPerPos, offset, paint);
|
| -}
|
| -
|
| -bool SkPDFDeviceFlattener::mustFlatten(const SkDraw& d) const {
|
| - // TODO(edisonn): testability, add flag to force return true.
|
| - return d.fMatrix->hasPerspective();
|
| -}
|
| -
|
| -bool SkPDFDeviceFlattener::mustPathText(const SkDraw& d, const SkPaint&) {
|
| - // TODO(edisonn): testability, add flag to force return true.
|
| - // TODO(edisonn): TBD: How to flatten MaskFilter.
|
| - return d.fMatrix->hasPerspective();
|
| -}
|
|
|