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

Unified Diff: src/pdf/SkPDFDevice.cpp

Issue 354133002: change gpudevice and pdfdevice to inherit from basedevice (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: pdfdevice needs to override newSurface Created 6 years, 6 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 | « src/gpu/SkGpuDevice.cpp ('k') | src/utils/SkGatherPixelRefsAndRects.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/pdf/SkPDFDevice.cpp
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index ab4d71d37f8f24bd9a91ae188ca34bdd208b0cd6..e571477e439fd2f1875007cb8b51d397847b71f1 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -29,6 +29,7 @@
#include "SkRect.h"
#include "SkRRect.h"
#include "SkString.h"
+#include "SkSurface.h"
#include "SkTextFormatParams.h"
#include "SkTemplates.h"
#include "SkTypefacePriv.h"
@@ -702,8 +703,8 @@ private:
////////////////////////////////////////////////////////////////////////////////
-static inline SkBitmap makeContentBitmap(const SkISize& contentSize,
- const SkMatrix* initialTransform) {
+static inline SkImageInfo make_content_info(const SkISize& contentSize,
+ const SkMatrix* initialTransform) {
SkImageInfo info;
if (initialTransform) {
// Compute the size of the drawing area.
@@ -723,24 +724,22 @@ static inline SkBitmap makeContentBitmap(const SkISize& contentSize,
info = SkImageInfo::MakeUnknown(abs(contentSize.fWidth),
abs(contentSize.fHeight));
}
-
- SkBitmap bitmap;
- bitmap.setInfo(info);
- return bitmap;
+ return info;
}
// TODO(vandebo) change pageSize to SkSize.
-// TODO: inherit from SkBaseDevice instead of SkBitmapDevice
SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize,
const SkMatrix& initialTransform)
- : SkBitmapDevice(makeContentBitmap(contentSize, &initialTransform)),
- fPageSize(pageSize),
- fContentSize(contentSize),
- fLastContentEntry(NULL),
- fLastMarginContentEntry(NULL),
- fClipStack(NULL),
- fEncoder(NULL),
- fRasterDpi(72.0f) {
+ : fPageSize(pageSize)
+ , fContentSize(contentSize)
+ , fLastContentEntry(NULL)
+ , fLastMarginContentEntry(NULL)
+ , fClipStack(NULL)
+ , fEncoder(NULL)
+ , fRasterDpi(72.0f)
+{
+ const SkImageInfo info = make_content_info(contentSize, &initialTransform);
+
// Just report that PDF does not supports perspective in the
// initial transform.
NOT_IMPLEMENTED(initialTransform.hasPerspective(), true);
@@ -751,10 +750,10 @@ SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize,
fInitialTransform.setTranslate(0, SkIntToScalar(pageSize.fHeight));
fInitialTransform.preScale(SK_Scalar1, -SK_Scalar1);
fInitialTransform.preConcat(initialTransform);
+ fLegacyBitmap.setInfo(info);
- SkIRect existingClip = SkIRect::MakeWH(this->width(), this->height());
+ SkIRect existingClip = SkIRect::MakeWH(info.width(), info.height());
fExistingClipRegion.setRect(existingClip);
-
this->init();
}
@@ -762,17 +761,19 @@ SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize,
SkPDFDevice::SkPDFDevice(const SkISize& layerSize,
const SkClipStack& existingClipStack,
const SkRegion& existingClipRegion)
- : SkBitmapDevice(makeContentBitmap(layerSize, NULL)),
- fPageSize(layerSize),
- fContentSize(layerSize),
- fExistingClipStack(existingClipStack),
- fExistingClipRegion(existingClipRegion),
- fLastContentEntry(NULL),
- fLastMarginContentEntry(NULL),
- fClipStack(NULL),
- fEncoder(NULL),
- fRasterDpi(72.0f) {
+ : fPageSize(layerSize)
+ , fContentSize(layerSize)
+ , fExistingClipStack(existingClipStack)
+ , fExistingClipRegion(existingClipRegion)
+ , fLastContentEntry(NULL)
+ , fLastMarginContentEntry(NULL)
+ , fClipStack(NULL)
+ , fEncoder(NULL)
+ , fRasterDpi(72.0f)
+{
fInitialTransform.reset();
+ fLegacyBitmap.setInfo(make_content_info(layerSize, NULL));
+
this->init();
}
@@ -961,13 +962,18 @@ void SkPDFDevice::drawRect(const SkDraw& d, const SkRect& rect,
&content.entry()->fContent);
}
-void SkPDFDevice::drawRRect(const SkDraw& draw, const SkRRect& rrect,
- const SkPaint& paint) {
+void SkPDFDevice::drawRRect(const SkDraw& draw, const SkRRect& rrect, const SkPaint& paint) {
SkPath path;
path.addRRect(rrect);
this->drawPath(draw, path, paint, NULL, true);
}
+void SkPDFDevice::drawOval(const SkDraw& draw, const SkRect& oval, const SkPaint& paint) {
+ SkPath path;
+ path.addOval(oval);
+ this->drawPath(draw, path, paint, NULL, true);
+}
+
void SkPDFDevice::drawPath(const SkDraw& d, const SkPath& origPath,
const SkPaint& paint, const SkMatrix* prePathMatrix,
bool pathIsMutable) {
@@ -1364,6 +1370,10 @@ void SkPDFDevice::drawDevice(const SkDraw& d, SkBaseDevice* device,
fFontGlyphUsage->merge(pdfDevice->getFontGlyphUsage());
}
+SkImageInfo SkPDFDevice::imageInfo() const {
+ return fLegacyBitmap.info();
+}
+
void SkPDFDevice::onAttachToCanvas(SkCanvas* canvas) {
INHERITED::onAttachToCanvas(canvas);
@@ -1377,6 +1387,10 @@ void SkPDFDevice::onDetachFromCanvas() {
fClipStack = NULL;
}
+SkSurface* SkPDFDevice::newSurface(const SkImageInfo& info) {
+ return SkSurface::NewRaster(info);
+}
+
ContentEntry* SkPDFDevice::getLastContentEntry() {
if (fDrawingArea == kContent_DrawingArea) {
return fLastContentEntry;
@@ -2237,8 +2251,7 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
}
perspectiveBitmap.eraseColor(SK_ColorTRANSPARENT);
- SkBitmapDevice device(perspectiveBitmap);
- SkCanvas canvas(&device);
+ SkCanvas canvas(perspectiveBitmap);
SkScalar deltaX = bounds.left();
SkScalar deltaY = bounds.top();
@@ -2305,6 +2318,3 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
&content.entry()->fContent);
}
-bool SkPDFDevice::allowImageFilter(const SkImageFilter*) {
- return false;
-}
« no previous file with comments | « src/gpu/SkGpuDevice.cpp ('k') | src/utils/SkGatherPixelRefsAndRects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698