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

Unified Diff: skia/ext/vector_platform_device_skia.cc

Issue 6820038: Push the initial transform down into SkPDFDevice. (Chrome side). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and roll Skia to r1111 Created 9 years, 8 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 | « skia/ext/vector_platform_device_skia.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: skia/ext/vector_platform_device_skia.cc
diff --git a/skia/ext/vector_platform_device_skia.cc b/skia/ext/vector_platform_device_skia.cc
index 8c064cb981e010ee8bd0096130cfdb727f5cff89..db011691c873f393d3576e701d9fadf568ba5bf5 100644
--- a/skia/ext/vector_platform_device_skia.cc
+++ b/skia/ext/vector_platform_device_skia.cc
@@ -19,10 +19,13 @@ SkDevice* VectorPlatformDeviceSkiaFactory::newDevice(SkCanvas* noUsed,
bool isOpaque,
bool isForLayer) {
SkASSERT(config == SkBitmap::kARGB_8888_Config);
- SkPDFDevice::OriginTransform flip = SkPDFDevice::kFlip_OriginTransform;
- if (isForLayer)
- flip = SkPDFDevice::kNoFlip_OriginTransform;
- return new VectorPlatformDeviceSkia(width, height, flip);
+ SkMatrix initialTransform;
+ initialTransform.reset();
+ if (isForLayer) {
+ initialTransform.setTranslate(0, height);
+ initialTransform.preScale(1, -1);
+ }
+ return new VectorPlatformDeviceSkia(width, height, initialTransform);
}
static inline SkBitmap makeABitmap(int width, int height) {
@@ -32,11 +35,10 @@ static inline SkBitmap makeABitmap(int width, int height) {
}
VectorPlatformDeviceSkia::VectorPlatformDeviceSkia(
- int width, int height, SkPDFDevice::OriginTransform flip)
+ int width, int height, const SkMatrix& initialTransform)
: PlatformDevice(makeABitmap(width, height)),
- pdf_device_(new SkPDFDevice(width, height, flip)) {
+ pdf_device_(new SkPDFDevice(width, height, initialTransform)) {
pdf_device_->unref(); // SkRefPtr and new both took a reference.
- base_transform_.reset();
}
VectorPlatformDeviceSkia::~VectorPlatformDeviceSkia() {
@@ -79,11 +81,8 @@ PlatformDevice::PlatformSurface VectorPlatformDeviceSkia::BeginPlatformPaint() {
void VectorPlatformDeviceSkia::EndPlatformPaint() {
DCHECK(raster_surface_ != NULL);
SkPaint paint;
- pdf_device_->drawSprite(SkDraw(),
- raster_surface_->accessBitmap(false),
- base_transform_.getTranslateX(),
- base_transform_.getTranslateY(),
- paint);
+ pdf_device_->drawSprite(SkDraw(), raster_surface_->accessBitmap(false),
+ 0, 0, paint);
raster_surface_ = NULL;
}
@@ -106,16 +105,7 @@ int VectorPlatformDeviceSkia::height() const {
void VectorPlatformDeviceSkia::setMatrixClip(const SkMatrix& matrix,
const SkRegion& region,
const SkClipStack& stack) {
- SkMatrix transform = base_transform_;
- transform.preConcat(matrix);
-
- DCHECK(SkMatrix::kTranslate_Mask == base_transform_.getType() ||
- SkMatrix::kIdentity_Mask == base_transform_.getType());
- SkRegion clip = region;
- clip.translate(base_transform_.getTranslateX(),
- base_transform_.getTranslateY());
-
- pdf_device_->setMatrixClip(transform, clip, stack);
+ pdf_device_->setMatrixClip(matrix, region, stack);
}
bool VectorPlatformDeviceSkia::readPixels(const SkIRect& srcRect,
@@ -231,24 +221,4 @@ void VectorPlatformDeviceSkia::drawToHDC(HDC dc,
}
#endif
-void VectorPlatformDeviceSkia::setInitialTransform(int xOffset, int yOffset,
- float scale_factor) {
- // TODO(vandebo) Supporting a scale factor is some work because we have to
- // transform both matrices and clips that come in, but Region only supports
- // translation. Instead, we could change SkPDFDevice to include it in the
- // initial transform. Delay that work until we would use it. Also checked
- // in setMatrixClip.
- DCHECK_EQ(1.0f, scale_factor);
-
- base_transform_.setTranslate(xOffset, yOffset);
- SkScalar scale = SkFloatToScalar(scale_factor);
- base_transform_.postScale(scale, scale);
-
- SkMatrix matrix;
- matrix.reset();
- SkRegion region;
- SkClipStack stack;
- setMatrixClip(matrix, region, stack);
-}
-
} // namespace skia
« no previous file with comments | « skia/ext/vector_platform_device_skia.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698