Index: src/core/SkDevice.cpp |
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp |
index 3d5000f5694ae97752cdf01ed70da33aa340aca5..c9afe67b02617dcc19d189127a7b608b069e31a7 100644 |
--- a/src/core/SkDevice.cpp |
+++ b/src/core/SkDevice.cpp |
@@ -28,18 +28,6 @@ SkBaseDevice::~SkBaseDevice() { |
SkDELETE(fMetaData); |
} |
-SkBaseDevice* SkBaseDevice::createCompatibleDevice(const SkImageInfo& info) { |
- return this->onCreateDevice(info, kGeneral_Usage); |
-} |
- |
-SkBaseDevice* SkBaseDevice::createCompatibleDeviceForSaveLayer(const SkImageInfo& info) { |
- return this->onCreateDevice(info, kSaveLayer_Usage); |
-} |
- |
-SkBaseDevice* SkBaseDevice::createCompatibleDeviceForImageFilter(const SkImageInfo& info) { |
- return this->onCreateDevice(info, kImageFilter_Usage); |
-} |
- |
SkMetaData& SkBaseDevice::getMetaData() { |
// metadata users are rare, so we lazily allocate it. If that changes we |
// can decide to just make it a field in the device (rather than a ptr) |
@@ -65,6 +53,22 @@ void SkBaseDevice::setPixelGeometry(SkPixelGeometry geo) { |
fLeakyProperties->setPixelGeometry(geo); |
} |
+void SkBaseDevice::setup(SkPixelGeometry geo, Usage usage) { |
+ switch (usage) { |
+ case kGeneral_Usage: |
+ break; |
+ case kSaveLayer_Usage: |
+ if (this->imageInfo().alphaType() != kOpaque_SkAlphaType) { |
+ geo = kUnknown_SkPixelGeometry; |
+ } |
+ break; |
+ case kImageFilter_Usage: |
+ geo = kUnknown_SkPixelGeometry; |
+ break; |
+ } |
+ fLeakyProperties->setPixelGeometry(geo); |
+} |
+ |
SkSurface* SkBaseDevice::newSurface(const SkImageInfo&, const SkSurfaceProps&) { return NULL; } |
const void* SkBaseDevice::peekPixels(SkImageInfo*, size_t*) { return NULL; } |
@@ -187,3 +191,18 @@ bool SkBaseDevice::EXPERIMENTAL_drawPicture(SkCanvas*, const SkPicture*, const S |
// The base class doesn't perform any accelerated picture rendering |
return false; |
} |
+ |
+////////////////////////////////////////////////////////////////////////////////////////// |
+ |
+bool SkBaseDevice::disableLCD(const SkPaint& paint) const { |
+ if (!paint.isLCDRenderText() || !paint.isAntiAlias()) { |
+ return false; |
+ } |
+ |
+ if (kUnknown_SkPixelGeometry == fLeakyProperties->pixelGeometry()) { |
+ return true; |
+ } |
+ |
+ return this->onDisableLCD(paint); |
+} |
+ |