| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkDevice.h" | 8 #include "SkDevice.h" |
| 9 #include "SkDeviceProperties.h" | 9 #include "SkDeviceProperties.h" |
| 10 #include "SkDraw.h" | 10 #include "SkDraw.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 { | 21 { |
| 22 fOrigin.setZero(); | 22 fOrigin.setZero(); |
| 23 fMetaData = NULL; | 23 fMetaData = NULL; |
| 24 } | 24 } |
| 25 | 25 |
| 26 SkBaseDevice::~SkBaseDevice() { | 26 SkBaseDevice::~SkBaseDevice() { |
| 27 SkDELETE(fLeakyProperties); | 27 SkDELETE(fLeakyProperties); |
| 28 SkDELETE(fMetaData); | 28 SkDELETE(fMetaData); |
| 29 } | 29 } |
| 30 | 30 |
| 31 SkBaseDevice* SkBaseDevice::createCompatibleDevice(const SkImageInfo& info) { | |
| 32 return this->onCreateDevice(info, kGeneral_Usage); | |
| 33 } | |
| 34 | |
| 35 SkBaseDevice* SkBaseDevice::createCompatibleDeviceForSaveLayer(const SkImageInfo
& info) { | |
| 36 return this->onCreateDevice(info, kSaveLayer_Usage); | |
| 37 } | |
| 38 | |
| 39 SkBaseDevice* SkBaseDevice::createCompatibleDeviceForImageFilter(const SkImageIn
fo& info) { | |
| 40 return this->onCreateDevice(info, kImageFilter_Usage); | |
| 41 } | |
| 42 | |
| 43 SkMetaData& SkBaseDevice::getMetaData() { | 31 SkMetaData& SkBaseDevice::getMetaData() { |
| 44 // metadata users are rare, so we lazily allocate it. If that changes we | 32 // metadata users are rare, so we lazily allocate it. If that changes we |
| 45 // can decide to just make it a field in the device (rather than a ptr) | 33 // can decide to just make it a field in the device (rather than a ptr) |
| 46 if (NULL == fMetaData) { | 34 if (NULL == fMetaData) { |
| 47 fMetaData = new SkMetaData; | 35 fMetaData = new SkMetaData; |
| 48 } | 36 } |
| 49 return *fMetaData; | 37 return *fMetaData; |
| 50 } | 38 } |
| 51 | 39 |
| 52 SkImageInfo SkBaseDevice::imageInfo() const { | 40 SkImageInfo SkBaseDevice::imageInfo() const { |
| 53 return SkImageInfo::MakeUnknown(); | 41 return SkImageInfo::MakeUnknown(); |
| 54 } | 42 } |
| 55 | 43 |
| 56 const SkBitmap& SkBaseDevice::accessBitmap(bool changePixels) { | 44 const SkBitmap& SkBaseDevice::accessBitmap(bool changePixels) { |
| 57 const SkBitmap& bitmap = this->onAccessBitmap(); | 45 const SkBitmap& bitmap = this->onAccessBitmap(); |
| 58 if (changePixels) { | 46 if (changePixels) { |
| 59 bitmap.notifyPixelsChanged(); | 47 bitmap.notifyPixelsChanged(); |
| 60 } | 48 } |
| 61 return bitmap; | 49 return bitmap; |
| 62 } | 50 } |
| 63 | 51 |
| 64 void SkBaseDevice::setPixelGeometry(SkPixelGeometry geo) { | 52 void SkBaseDevice::setPixelGeometry(SkPixelGeometry geo) { |
| 65 fLeakyProperties->setPixelGeometry(geo); | 53 fLeakyProperties->setPixelGeometry(geo); |
| 66 } | 54 } |
| 67 | 55 |
| 56 void SkBaseDevice::setup(SkPixelGeometry geo, Usage usage) { |
| 57 switch (usage) { |
| 58 case kGeneral_Usage: |
| 59 break; |
| 60 case kSaveLayer_Usage: |
| 61 if (this->imageInfo().alphaType() != kOpaque_SkAlphaType) { |
| 62 geo = kUnknown_SkPixelGeometry; |
| 63 } |
| 64 break; |
| 65 case kImageFilter_Usage: |
| 66 geo = kUnknown_SkPixelGeometry; |
| 67 break; |
| 68 } |
| 69 fLeakyProperties->setPixelGeometry(geo); |
| 70 } |
| 71 |
| 68 SkSurface* SkBaseDevice::newSurface(const SkImageInfo&, const SkSurfaceProps&) {
return NULL; } | 72 SkSurface* SkBaseDevice::newSurface(const SkImageInfo&, const SkSurfaceProps&) {
return NULL; } |
| 69 | 73 |
| 70 const void* SkBaseDevice::peekPixels(SkImageInfo*, size_t*) { return NULL; } | 74 const void* SkBaseDevice::peekPixels(SkImageInfo*, size_t*) { return NULL; } |
| 71 | 75 |
| 72 void SkBaseDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, | 76 void SkBaseDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, |
| 73 const SkRRect& inner, const SkPaint& paint) { | 77 const SkRRect& inner, const SkPaint& paint) { |
| 74 SkPath path; | 78 SkPath path; |
| 75 path.addRRect(outer); | 79 path.addRRect(outer); |
| 76 path.addRRect(inner); | 80 path.addRRect(inner); |
| 77 path.setFillType(SkPath::kEvenOdd_FillType); | 81 path.setFillType(SkPath::kEvenOdd_FillType); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 | 184 |
| 181 void* SkBaseDevice::onAccessPixels(SkImageInfo* info, size_t* rowBytes) { | 185 void* SkBaseDevice::onAccessPixels(SkImageInfo* info, size_t* rowBytes) { |
| 182 return NULL; | 186 return NULL; |
| 183 } | 187 } |
| 184 | 188 |
| 185 bool SkBaseDevice::EXPERIMENTAL_drawPicture(SkCanvas*, const SkPicture*, const S
kMatrix*, | 189 bool SkBaseDevice::EXPERIMENTAL_drawPicture(SkCanvas*, const SkPicture*, const S
kMatrix*, |
| 186 const SkPaint*) { | 190 const SkPaint*) { |
| 187 // The base class doesn't perform any accelerated picture rendering | 191 // The base class doesn't perform any accelerated picture rendering |
| 188 return false; | 192 return false; |
| 189 } | 193 } |
| 194 |
| 195 ////////////////////////////////////////////////////////////////////////////////
////////// |
| 196 |
| 197 bool SkBaseDevice::disableLCD(const SkPaint& paint) const { |
| 198 if (!paint.isLCDRenderText() || !paint.isAntiAlias()) { |
| 199 return false; |
| 200 } |
| 201 |
| 202 if (kUnknown_SkPixelGeometry == fLeakyProperties->pixelGeometry()) { |
| 203 return true; |
| 204 } |
| 205 |
| 206 return this->onDisableLCD(paint); |
| 207 } |
| 208 |
| OLD | NEW |