| Index: src/core/SkDevice.cpp
|
| diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp
|
| index 364b106dd8feb023fd8223efdf6e838809a28778..d69e4afab2b6817c3642578247e609fbcf8f18ad 100644
|
| --- a/src/core/SkDevice.cpp
|
| +++ b/src/core/SkDevice.cpp
|
| @@ -42,19 +42,53 @@ SkBaseDevice::~SkBaseDevice() {
|
| delete fMetaData;
|
| }
|
|
|
| +SkBaseDevice* SkBaseDevice::createCompatibleDevice(const SkImageInfo& info) {
|
| +#ifdef SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG
|
| + // We call the old method to support older subclasses.
|
| + // If they have, we return their device, else we use the new impl.
|
| + SkBitmap::Config config = SkColorTypeToBitmapConfig(info.colorType());
|
| + SkBaseDevice* dev = this->onCreateCompatibleDevice(config,
|
| + info.width(),
|
| + info.height(),
|
| + info.isOpaque(),
|
| + kGeneral_Usage);
|
| + if (dev) {
|
| + return dev;
|
| + }
|
| + // fall through to new impl
|
| +#endif
|
| + return this->onCreateDevice(info, kGeneral_Usage);
|
| +}
|
| +
|
| +SkBaseDevice* SkBaseDevice::createCompatibleDeviceForSaveLayer(const SkImageInfo& info) {
|
| +#ifdef SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG
|
| + // We call the old method to support older subclasses.
|
| + // If they have, we return their device, else we use the new impl.
|
| + SkBitmap::Config config = SkColorTypeToBitmapConfig(info.colorType());
|
| + SkBaseDevice* dev = this->onCreateCompatibleDevice(config,
|
| + info.width(),
|
| + info.height(),
|
| + info.isOpaque(),
|
| + kSaveLayer_Usage);
|
| + if (dev) {
|
| + return dev;
|
| + }
|
| + // fall through to new impl
|
| +#endif
|
| + return this->onCreateDevice(info, kSaveLayer_Usage);
|
| +}
|
| +
|
| +#ifdef SK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG
|
| SkBaseDevice* SkBaseDevice::createCompatibleDevice(SkBitmap::Config config,
|
| int width, int height,
|
| bool isOpaque) {
|
| - return this->onCreateCompatibleDevice(config, width, height,
|
| - isOpaque, kGeneral_Usage);
|
| -}
|
| -
|
| -SkBaseDevice* SkBaseDevice::createCompatibleDeviceForSaveLayer(SkBitmap::Config config,
|
| - int width, int height,
|
| - bool isOpaque) {
|
| - return this->onCreateCompatibleDevice(config, width, height,
|
| - isOpaque, kSaveLayer_Usage);
|
| + SkImageInfo info = SkImageInfo::Make(width, height,
|
| + SkBitmapConfigToColorType(config),
|
| + isOpaque ? kOpaque_SkAlphaType
|
| + : kPremul_SkAlphaType);
|
| + return this->createCompatibleDevice(info);
|
| }
|
| +#endif
|
|
|
| SkMetaData& SkBaseDevice::getMetaData() {
|
| // metadata users are rare, so we lazily allocate it. If that changes we
|
|
|