| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2008 The Android Open Source Project | 2  * Copyright 2008 The Android Open Source Project | 
| 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 "SkCanvas.h" | 8 #include "SkCanvas.h" | 
| 9 #include "SkCanvasPriv.h" | 9 #include "SkCanvasPriv.h" | 
| 10 #include "SkBitmapDevice.h" | 10 #include "SkBitmapDevice.h" | 
| (...skipping 1115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1126 SkImageInfo SkCanvas::imageInfo() const { | 1126 SkImageInfo SkCanvas::imageInfo() const { | 
| 1127     SkBaseDevice* dev = this->getDevice(); | 1127     SkBaseDevice* dev = this->getDevice(); | 
| 1128     if (dev) { | 1128     if (dev) { | 
| 1129         return dev->imageInfo(); | 1129         return dev->imageInfo(); | 
| 1130     } else { | 1130     } else { | 
| 1131         return SkImageInfo::MakeUnknown(0, 0); | 1131         return SkImageInfo::MakeUnknown(0, 0); | 
| 1132     } | 1132     } | 
| 1133 } | 1133 } | 
| 1134 | 1134 | 
| 1135 const void* SkCanvas::peekPixels(SkImageInfo* info, size_t* rowBytes) { | 1135 const void* SkCanvas::peekPixels(SkImageInfo* info, size_t* rowBytes) { | 
| 1136     return this->onPeekPixels(info, rowBytes); | 1136     SkPixmap pmap; | 
|  | 1137     if (!this->onPeekPixels(&pmap)) { | 
|  | 1138         return NULL; | 
|  | 1139     } | 
|  | 1140     if (info) { | 
|  | 1141         *info = pmap.info(); | 
|  | 1142     } | 
|  | 1143     if (rowBytes) { | 
|  | 1144         *rowBytes = pmap.rowBytes(); | 
|  | 1145     } | 
|  | 1146     return pmap.addr(); | 
| 1137 } | 1147 } | 
| 1138 | 1148 | 
| 1139 const void* SkCanvas::onPeekPixels(SkImageInfo* info, size_t* rowBytes) { | 1149 bool SkCanvas::onPeekPixels(SkPixmap* pmap) { | 
| 1140     SkBaseDevice* dev = this->getDevice(); | 1150     SkBaseDevice* dev = this->getDevice(); | 
| 1141     return dev ? dev->peekPixels(info, rowBytes) : NULL; | 1151     return dev && dev->peekPixels(pmap); | 
| 1142 } | 1152 } | 
| 1143 | 1153 | 
| 1144 void* SkCanvas::accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, SkIPoi
      nt* origin) { | 1154 void* SkCanvas::accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, SkIPoi
      nt* origin) { | 
| 1145     void* pixels = this->onAccessTopLayerPixels(info, rowBytes); | 1155     SkPixmap pmap; | 
| 1146     if (pixels && origin) { | 1156     if (!this->onAccessTopLayerPixels(&pmap)) { | 
|  | 1157         return NULL; | 
|  | 1158     } | 
|  | 1159     if (info) { | 
|  | 1160         *info = pmap.info(); | 
|  | 1161     } | 
|  | 1162     if (rowBytes) { | 
|  | 1163         *rowBytes = pmap.rowBytes(); | 
|  | 1164     } | 
|  | 1165     if (origin) { | 
| 1147         *origin = this->getTopDevice(false)->getOrigin(); | 1166         *origin = this->getTopDevice(false)->getOrigin(); | 
| 1148     } | 1167     } | 
| 1149     return pixels; | 1168     return pmap.writable_addr(); | 
| 1150 } | 1169 } | 
| 1151 | 1170 | 
| 1152 void* SkCanvas::onAccessTopLayerPixels(SkImageInfo* info, size_t* rowBytes) { | 1171 bool SkCanvas::onAccessTopLayerPixels(SkPixmap* pmap) { | 
| 1153     SkBaseDevice* dev = this->getTopDevice(); | 1172     SkBaseDevice* dev = this->getTopDevice(); | 
| 1154     return dev ? dev->accessPixels(info, rowBytes) : NULL; | 1173     return dev && dev->accessPixels(pmap); | 
| 1155 } | 1174 } | 
| 1156 | 1175 | 
| 1157 SkAutoROCanvasPixels::SkAutoROCanvasPixels(SkCanvas* canvas) { | 1176 SkAutoROCanvasPixels::SkAutoROCanvasPixels(SkCanvas* canvas) { | 
| 1158     fAddr = canvas->peekPixels(&fInfo, &fRowBytes); | 1177     fAddr = canvas->peekPixels(&fInfo, &fRowBytes); | 
| 1159     if (NULL == fAddr) { | 1178     if (NULL == fAddr) { | 
| 1160         fInfo = canvas->imageInfo(); | 1179         fInfo = canvas->imageInfo(); | 
| 1161         if (kUnknown_SkColorType == fInfo.colorType() || !fBitmap.tryAllocPixels
      (fInfo)) { | 1180         if (kUnknown_SkColorType == fInfo.colorType() || !fBitmap.tryAllocPixels
      (fInfo)) { | 
| 1162             return; // failure, fAddr is NULL | 1181             return; // failure, fAddr is NULL | 
| 1163         } | 1182         } | 
| 1164         if (!canvas->readPixels(&fBitmap, 0, 0)) { | 1183         if (!canvas->readPixels(&fBitmap, 0, 0)) { | 
| (...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2690     } | 2709     } | 
| 2691 | 2710 | 
| 2692     if (matrix) { | 2711     if (matrix) { | 
| 2693         canvas->concat(*matrix); | 2712         canvas->concat(*matrix); | 
| 2694     } | 2713     } | 
| 2695 } | 2714 } | 
| 2696 | 2715 | 
| 2697 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 2716 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 
| 2698     fCanvas->restoreToCount(fSaveCount); | 2717     fCanvas->restoreToCount(fSaveCount); | 
| 2699 } | 2718 } | 
| OLD | NEW | 
|---|