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

Side by Side Diff: src/core/SkSpecialImage.cpp

Issue 1812023002: Switch SkSpecialImage & SkSpecialSurface classes over to smart pointers (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix build Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « src/core/SkSpecialImage.h ('k') | src/core/SkSpecialSurface.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 "SkCanvas.h" 8 #include "SkCanvas.h"
9 #include "SkImage_Base.h" 9 #include "SkImage_Base.h"
10 #include "SkSpecialImage.h" 10 #include "SkSpecialImage.h"
(...skipping 11 matching lines...) Expand all
22 22
23 virtual bool onPeekPixels(SkPixmap*) const { return false; } 23 virtual bool onPeekPixels(SkPixmap*) const { return false; }
24 24
25 virtual GrTexture* onPeekTexture() const { return nullptr; } 25 virtual GrTexture* onPeekTexture() const { return nullptr; }
26 26
27 virtual bool testingOnlyOnGetROPixels(SkBitmap*) const = 0; 27 virtual bool testingOnlyOnGetROPixels(SkBitmap*) const = 0;
28 28
29 // Delete this entry point ASAP (see skbug.com/4965) 29 // Delete this entry point ASAP (see skbug.com/4965)
30 virtual bool getBitmapDeprecated(SkBitmap* result) const = 0; 30 virtual bool getBitmapDeprecated(SkBitmap* result) const = 0;
31 31
32 virtual SkSpecialSurface* onNewSurface(const SkImageInfo& info) const = 0; 32 virtual sk_sp<SkSpecialSurface> onMakeSurface(const SkImageInfo& info) const = 0;
33 33
34 virtual SkSpecialImage* onExtractSubset(const SkIRect& subset) const = 0; 34 virtual sk_sp<SkSpecialImage> onMakeSubset(const SkIRect& subset) const = 0;
35 35
36 private: 36 private:
37 typedef SkSpecialImage INHERITED; 37 typedef SkSpecialImage INHERITED;
38 }; 38 };
39 39
40 /////////////////////////////////////////////////////////////////////////////// 40 ///////////////////////////////////////////////////////////////////////////////
41 static inline const SkSpecialImage_Base* as_SIB(const SkSpecialImage* image) { 41 static inline const SkSpecialImage_Base* as_SIB(const SkSpecialImage* image) {
42 return static_cast<const SkSpecialImage_Base*>(image); 42 return static_cast<const SkSpecialImage_Base*>(image);
43 } 43 }
44 44
45 void SkSpecialImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPain t* paint) const { 45 void SkSpecialImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPain t* paint) const {
46 return as_SIB(this)->onDraw(canvas, x, y, paint); 46 return as_SIB(this)->onDraw(canvas, x, y, paint);
47 } 47 }
48 48
49 bool SkSpecialImage::peekPixels(SkPixmap* pixmap) const { 49 bool SkSpecialImage::peekPixels(SkPixmap* pixmap) const {
50 return as_SIB(this)->onPeekPixels(pixmap); 50 return as_SIB(this)->onPeekPixels(pixmap);
51 } 51 }
52 52
53 GrTexture* SkSpecialImage::peekTexture() const { 53 GrTexture* SkSpecialImage::peekTexture() const {
54 return as_SIB(this)->onPeekTexture(); 54 return as_SIB(this)->onPeekTexture();
55 } 55 }
56 56
57 bool SkSpecialImage::testingOnlyGetROPixels(SkBitmap* result) const { 57 bool SkSpecialImage::testingOnlyGetROPixels(SkBitmap* result) const {
58 return as_SIB(this)->testingOnlyOnGetROPixels(result); 58 return as_SIB(this)->testingOnlyOnGetROPixels(result);
59 } 59 }
60 60
61 SkSpecialSurface* SkSpecialImage::newSurface(const SkImageInfo& info) const { 61 sk_sp<SkSpecialSurface> SkSpecialImage::makeSurface(const SkImageInfo& info) con st {
62 return as_SIB(this)->onNewSurface(info); 62 return as_SIB(this)->onMakeSurface(info);
63 } 63 }
64 64
65 SkSpecialImage* SkSpecialImage::extractSubset(const SkIRect& subset) const { 65 sk_sp<SkSpecialImage> SkSpecialImage::makeSubset(const SkIRect& subset) const {
66 return as_SIB(this)->onExtractSubset(subset); 66 return as_SIB(this)->onMakeSubset(subset);
67 } 67 }
68 68
69 #if SK_SUPPORT_GPU 69 #if SK_SUPPORT_GPU
70 #include "SkGr.h" 70 #include "SkGr.h"
71 #include "SkGrPixelRef.h" 71 #include "SkGrPixelRef.h"
72 #endif 72 #endif
73 73
74 SkSpecialImage* SkSpecialImage::internal_fromBM(SkImageFilter::Proxy* proxy, 74 sk_sp<SkSpecialImage> SkSpecialImage::internal_fromBM(SkImageFilter::Proxy* prox y,
75 const SkBitmap& src) { 75 const SkBitmap& src) {
76 // Need to test offset case! (see skbug.com/4967) 76 // Need to test offset case! (see skbug.com/4967)
77 if (src.getTexture()) { 77 if (src.getTexture()) {
78 return SkSpecialImage::NewFromGpu(proxy, 78 return SkSpecialImage::MakeFromGpu(proxy,
79 src.bounds(), 79 src.bounds(),
80 src.getGenerationID(), 80 src.getGenerationID(),
81 src.getTexture()); 81 src.getTexture());
82 } 82 }
83 83
84 return SkSpecialImage::NewFromRaster(proxy, src.bounds(), src); 84 return SkSpecialImage::MakeFromRaster(proxy, src.bounds(), src);
85 } 85 }
86 86
87 bool SkSpecialImage::internal_getBM(SkBitmap* result) { 87 bool SkSpecialImage::internal_getBM(SkBitmap* result) {
88 const SkSpecialImage_Base* ib = as_SIB(this); 88 const SkSpecialImage_Base* ib = as_SIB(this);
89 89
90 // TODO: need to test offset case! (see skbug.com/4967) 90 // TODO: need to test offset case! (see skbug.com/4967)
91 return ib->getBitmapDeprecated(result); 91 return ib->getBitmapDeprecated(result);
92 } 92 }
93 93
94 SkImageFilter::Proxy* SkSpecialImage::internal_getProxy() const { 94 SkImageFilter::Proxy* SkSpecialImage::internal_getProxy() const {
95 return fProxy; 95 return fProxy;
96 } 96 }
97 97
98 /////////////////////////////////////////////////////////////////////////////// 98 ///////////////////////////////////////////////////////////////////////////////
99 #include "SkImage.h" 99 #include "SkImage.h"
100 #if SK_SUPPORT_GPU 100 #if SK_SUPPORT_GPU
101 #include "SkGrPriv.h" 101 #include "SkGrPriv.h"
102 #endif 102 #endif
103 103
104 class SkSpecialImage_Image : public SkSpecialImage_Base { 104 class SkSpecialImage_Image : public SkSpecialImage_Base {
105 public: 105 public:
106 SkSpecialImage_Image(SkImageFilter::Proxy* proxy, const SkIRect& subset, con st SkImage* image) 106 SkSpecialImage_Image(SkImageFilter::Proxy* proxy,
107 const SkIRect& subset,
108 sk_sp<SkImage> image)
107 : INHERITED(proxy, subset, image->uniqueID()) 109 : INHERITED(proxy, subset, image->uniqueID())
108 , fImage(SkRef(image)) { 110 , fImage(image) {
109 } 111 }
110 112
111 ~SkSpecialImage_Image() override { } 113 ~SkSpecialImage_Image() override { }
112 114
113 bool isOpaque() const override { return fImage->isOpaque(); } 115 bool isOpaque() const override { return fImage->isOpaque(); }
114 116
115 size_t getSize() const override { 117 size_t getSize() const override {
116 #if SK_SUPPORT_GPU 118 #if SK_SUPPORT_GPU
117 if (GrTexture* texture = as_IB(fImage.get())->peekTexture()) { 119 if (GrTexture* texture = as_IB(fImage.get())->peekTexture()) {
118 return texture->gpuMemorySize(); 120 return texture->gpuMemorySize();
119 } else 121 } else
120 #endif 122 #endif
121 { 123 {
122 SkPixmap pm; 124 SkPixmap pm;
123 if (fImage->peekPixels(&pm)) { 125 if (fImage->peekPixels(&pm)) {
124 return pm.height() * pm.rowBytes(); 126 return pm.height() * pm.rowBytes();
125 } 127 }
126 } 128 }
127 return 0; 129 return 0;
128 } 130 }
129 131
130 void onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const override { 132 void onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const override {
131 SkRect dst = SkRect::MakeXYWH(x, y, this->subset().width(), this->subset ().height()); 133 SkRect dst = SkRect::MakeXYWH(x, y, this->subset().width(), this->subset ().height());
132 134
133 canvas->drawImageRect(fImage, this->subset(), 135 canvas->drawImageRect(fImage.get(), this->subset(),
134 dst, paint, SkCanvas::kStrict_SrcRectConstraint); 136 dst, paint, SkCanvas::kStrict_SrcRectConstraint);
135 } 137 }
136 138
137 bool onPeekPixels(SkPixmap* pixmap) const override { 139 bool onPeekPixels(SkPixmap* pixmap) const override {
138 return fImage->peekPixels(pixmap); 140 return fImage->peekPixels(pixmap);
139 } 141 }
140 142
141 GrTexture* onPeekTexture() const override { return as_IB(fImage.get())->peek Texture(); } 143 GrTexture* onPeekTexture() const override { return as_IB(fImage.get())->peek Texture(); }
142 144
143 bool getBitmapDeprecated(SkBitmap* result) const override { 145 bool getBitmapDeprecated(SkBitmap* result) const override {
(...skipping 11 matching lines...) Expand all
155 } 157 }
156 #endif 158 #endif
157 159
158 return as_IB(fImage.get())->asBitmapForImageFilters(result); 160 return as_IB(fImage.get())->asBitmapForImageFilters(result);
159 } 161 }
160 162
161 bool testingOnlyOnGetROPixels(SkBitmap* result) const override { 163 bool testingOnlyOnGetROPixels(SkBitmap* result) const override {
162 return fImage->asLegacyBitmap(result, SkImage::kRO_LegacyBitmapMode); 164 return fImage->asLegacyBitmap(result, SkImage::kRO_LegacyBitmapMode);
163 } 165 }
164 166
165 SkSpecialSurface* onNewSurface(const SkImageInfo& info) const override { 167 sk_sp<SkSpecialSurface> onMakeSurface(const SkImageInfo& info) const overrid e {
166 #if SK_SUPPORT_GPU 168 #if SK_SUPPORT_GPU
167 GrTexture* texture = as_IB(fImage.get())->peekTexture(); 169 GrTexture* texture = as_IB(fImage.get())->peekTexture();
168 if (texture) { 170 if (texture) {
169 GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(info); 171 GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(info);
170 desc.fFlags = kRenderTarget_GrSurfaceFlag; 172 desc.fFlags = kRenderTarget_GrSurfaceFlag;
171 173
172 return SkSpecialSurface::NewRenderTarget(this->proxy(), texture->get Context(), desc); 174 return SkSpecialSurface::MakeRenderTarget(this->proxy(), texture->ge tContext(), desc);
173 } 175 }
174 #endif 176 #endif
175 return SkSpecialSurface::NewRaster(this->proxy(), info, nullptr); 177 return SkSpecialSurface::MakeRaster(this->proxy(), info, nullptr);
176 } 178 }
177 179
178 SkSpecialImage* onExtractSubset(const SkIRect& subset) const override { 180 sk_sp<SkSpecialImage> onMakeSubset(const SkIRect& subset) const override {
179 SkAutoTUnref<SkImage> subsetImg(fImage->newSubset(subset)); 181 sk_sp<SkImage> subsetImg(fImage->makeSubset(subset));
180 if (!subsetImg) { 182 if (!subsetImg) {
181 return nullptr; 183 return nullptr;
182 } 184 }
183 185
184 return SkSpecialImage::NewFromImage(this->internal_getProxy(), 186 return SkSpecialImage::MakeFromImage(this->internal_getProxy(),
185 SkIRect::MakeWH(subset.width(), subs et.height()), 187 SkIRect::MakeWH(subset.width(), sub set.height()),
186 subsetImg); 188 subsetImg);
187 } 189 }
188 190
189 private: 191 private:
190 SkAutoTUnref<const SkImage> fImage; 192 sk_sp<SkImage> fImage;
191 193
192 typedef SkSpecialImage_Base INHERITED; 194 typedef SkSpecialImage_Base INHERITED;
193 }; 195 };
194 196
195 #ifdef SK_DEBUG 197 #ifdef SK_DEBUG
196 static bool rect_fits(const SkIRect& rect, int width, int height) { 198 static bool rect_fits(const SkIRect& rect, int width, int height) {
197 if (0 == width && 0 == height) { 199 if (0 == width && 0 == height) {
198 SkASSERT(0 == rect.fLeft && 0 == rect.fRight && 0 == rect.fTop && 0 == r ect.fBottom); 200 SkASSERT(0 == rect.fLeft && 0 == rect.fRight && 0 == rect.fTop && 0 == r ect.fBottom);
199 return true; 201 return true;
200 } 202 }
201 203
202 return rect.fLeft >= 0 && rect.fLeft < width && rect.fLeft < rect.fRight && 204 return rect.fLeft >= 0 && rect.fLeft < width && rect.fLeft < rect.fRight &&
203 rect.fRight >= 0 && rect.fRight <= width && 205 rect.fRight >= 0 && rect.fRight <= width &&
204 rect.fTop >= 0 && rect.fTop < height && rect.fTop < rect.fBottom && 206 rect.fTop >= 0 && rect.fTop < height && rect.fTop < rect.fBottom &&
205 rect.fBottom >= 0 && rect.fBottom <= height; 207 rect.fBottom >= 0 && rect.fBottom <= height;
206 } 208 }
207 #endif 209 #endif
208 210
209 SkSpecialImage* SkSpecialImage::NewFromImage(SkImageFilter::Proxy* proxy, 211 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromImage(SkImageFilter::Proxy* proxy,
210 const SkIRect& subset, 212 const SkIRect& subset,
211 const SkImage* image) { 213 sk_sp<SkImage> image) {
212 SkASSERT(rect_fits(subset, image->width(), image->height())); 214 SkASSERT(rect_fits(subset, image->width(), image->height()));
213 return new SkSpecialImage_Image(proxy, subset, image); 215
216 return sk_make_sp<SkSpecialImage_Image>(proxy, subset, image);
214 } 217 }
215 218
216 /////////////////////////////////////////////////////////////////////////////// 219 ///////////////////////////////////////////////////////////////////////////////
217 #include "SkBitmap.h" 220 #include "SkBitmap.h"
218 #include "SkImageInfo.h" 221 #include "SkImageInfo.h"
219 #include "SkPixelRef.h" 222 #include "SkPixelRef.h"
220 223
221 class SkSpecialImage_Raster : public SkSpecialImage_Base { 224 class SkSpecialImage_Raster : public SkSpecialImage_Base {
222 public: 225 public:
223 SkSpecialImage_Raster(SkImageFilter::Proxy* proxy, const SkIRect& subset, co nst SkBitmap& bm) 226 SkSpecialImage_Raster(SkImageFilter::Proxy* proxy, const SkIRect& subset, co nst SkBitmap& bm)
224 : INHERITED(proxy, subset, bm.getGenerationID()) 227 : INHERITED(proxy, subset, bm.getGenerationID())
225 , fBitmap(bm) { 228 , fBitmap(bm) {
226 if (bm.pixelRef() && bm.pixelRef()->isPreLocked()) { 229 if (bm.pixelRef() && bm.pixelRef()->isPreLocked()) {
227 // we only preemptively lock if there is no chance of triggering som ething expensive 230 // we only preemptively lock if there is no chance of triggering som ething expensive
228 // like a lazy decode or imagegenerator. PreLocked means it is flat pixels already. 231 // like a lazy decode or imagegenerator. PreLocked means it is flat pixels already.
229 fBitmap.lockPixels(); 232 fBitmap.lockPixels();
230 } 233 }
231 } 234 }
232 235
233 SkSpecialImage_Raster(SkImageFilter::Proxy* proxy, 236 SkSpecialImage_Raster(SkImageFilter::Proxy* proxy,
234 const SkIRect& subset, 237 const SkIRect& subset,
235 const SkPixmap& pixmap, 238 const SkPixmap& pixmap,
236 void (*releaseProc)(void* addr, void* context), 239 RasterReleaseProc releaseProc,
237 void* context) 240 ReleaseContext context)
238 : INHERITED(proxy, subset, kNeedNewImageUniqueID_SpecialImage) { 241 : INHERITED(proxy, subset, kNeedNewImageUniqueID_SpecialImage) {
239 fBitmap.installPixels(pixmap.info(), pixmap.writable_addr(), 242 fBitmap.installPixels(pixmap.info(), pixmap.writable_addr(),
240 pixmap.rowBytes(), pixmap.ctable(), 243 pixmap.rowBytes(), pixmap.ctable(),
241 releaseProc, context); 244 releaseProc, context);
242 } 245 }
243 246
244 ~SkSpecialImage_Raster() override { } 247 ~SkSpecialImage_Raster() override { }
245 248
246 bool isOpaque() const override { return fBitmap.isOpaque(); } 249 bool isOpaque() const override { return fBitmap.isOpaque(); }
247 250
(...skipping 19 matching lines...) Expand all
267 bool getBitmapDeprecated(SkBitmap* result) const override { 270 bool getBitmapDeprecated(SkBitmap* result) const override {
268 *result = fBitmap; 271 *result = fBitmap;
269 return true; 272 return true;
270 } 273 }
271 274
272 bool testingOnlyOnGetROPixels(SkBitmap* result) const override { 275 bool testingOnlyOnGetROPixels(SkBitmap* result) const override {
273 *result = fBitmap; 276 *result = fBitmap;
274 return true; 277 return true;
275 } 278 }
276 279
277 SkSpecialSurface* onNewSurface(const SkImageInfo& info) const override { 280 sk_sp<SkSpecialSurface> onMakeSurface(const SkImageInfo& info) const overrid e {
278 return SkSpecialSurface::NewRaster(this->proxy(), info, nullptr); 281 return SkSpecialSurface::MakeRaster(this->proxy(), info, nullptr);
279 } 282 }
280 283
281 SkSpecialImage* onExtractSubset(const SkIRect& subset) const override { 284 sk_sp<SkSpecialImage> onMakeSubset(const SkIRect& subset) const override {
282 SkBitmap subsetBM; 285 SkBitmap subsetBM;
283 286
284 if (!fBitmap.extractSubset(&subsetBM, subset)) { 287 if (!fBitmap.extractSubset(&subsetBM, subset)) {
285 return nullptr; 288 return nullptr;
286 } 289 }
287 290
288 return SkSpecialImage::NewFromRaster(this->internal_getProxy(), 291 return SkSpecialImage::MakeFromRaster(this->internal_getProxy(),
289 SkIRect::MakeWH(subset.width(), sub set.height()), 292 SkIRect::MakeWH(subset.width(), su bset.height()),
290 subsetBM); 293 subsetBM);
291 } 294 }
292 295
293 private: 296 private:
294 SkBitmap fBitmap; 297 SkBitmap fBitmap;
295 298
296 typedef SkSpecialImage_Base INHERITED; 299 typedef SkSpecialImage_Base INHERITED;
297 }; 300 };
298 301
299 SkSpecialImage* SkSpecialImage::NewFromRaster(SkImageFilter::Proxy* proxy, 302 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromRaster(SkImageFilter::Proxy* proxy ,
300 const SkIRect& subset, 303 const SkIRect& subset,
301 const SkBitmap& bm) { 304 const SkBitmap& bm) {
302 SkASSERT(nullptr == bm.getTexture()); 305 SkASSERT(nullptr == bm.getTexture());
303 SkASSERT(rect_fits(subset, bm.width(), bm.height())); 306 SkASSERT(rect_fits(subset, bm.width(), bm.height()));
304 return new SkSpecialImage_Raster(proxy, subset, bm); 307
308 return sk_make_sp<SkSpecialImage_Raster>(proxy, subset, bm);
305 } 309 }
306 310
307 SkSpecialImage* SkSpecialImage::NewFromPixmap(SkImageFilter::Proxy* proxy, 311 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromPixmap(SkImageFilter::Proxy* proxy ,
308 const SkIRect& subset, 312 const SkIRect& subset,
309 const SkPixmap& src, 313 const SkPixmap& src,
310 void (*releaseProc)(void* addr, vo id* context), 314 RasterReleaseProc releasePr oc,
311 void* context) { 315 ReleaseContext context) {
312 return new SkSpecialImage_Raster(proxy, subset, src, releaseProc, context); 316 if (!src.addr()) {
317 return nullptr;
318 }
319
320 return sk_make_sp<SkSpecialImage_Raster>(proxy, subset, src, releaseProc, co ntext);
313 } 321 }
314 322
315 323
316 #if SK_SUPPORT_GPU 324 #if SK_SUPPORT_GPU
317 /////////////////////////////////////////////////////////////////////////////// 325 ///////////////////////////////////////////////////////////////////////////////
318 #include "GrTexture.h" 326 #include "GrTexture.h"
319 327
320 class SkSpecialImage_Gpu : public SkSpecialImage_Base { 328 class SkSpecialImage_Gpu : public SkSpecialImage_Base {
321 public: 329 public:
322 SkSpecialImage_Gpu(SkImageFilter::Proxy* proxy, const SkIRect& subset, 330 SkSpecialImage_Gpu(SkImageFilter::Proxy* proxy, const SkIRect& subset,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 384
377 if (!fTexture->readPixels(0, 0, result->width(), result->height(), kSkia 8888_GrPixelConfig, 385 if (!fTexture->readPixels(0, 0, result->width(), result->height(), kSkia 8888_GrPixelConfig,
378 result->getPixels(), result->rowBytes())) { 386 result->getPixels(), result->rowBytes())) {
379 return false; 387 return false;
380 } 388 }
381 389
382 result->pixelRef()->setImmutable(); 390 result->pixelRef()->setImmutable();
383 return true; 391 return true;
384 } 392 }
385 393
386 SkSpecialSurface* onNewSurface(const SkImageInfo& info) const override { 394 sk_sp<SkSpecialSurface> onMakeSurface(const SkImageInfo& info) const overrid e {
387 GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(info); 395 GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(info);
388 desc.fFlags = kRenderTarget_GrSurfaceFlag; 396 desc.fFlags = kRenderTarget_GrSurfaceFlag;
389 397
390 return SkSpecialSurface::NewRenderTarget(this->proxy(), fTexture->getCon text(), desc); 398 return SkSpecialSurface::MakeRenderTarget(this->proxy(), fTexture->getCo ntext(), desc);
391 } 399 }
392 400
393 SkSpecialImage* onExtractSubset(const SkIRect& subset) const override { 401 sk_sp<SkSpecialImage> onMakeSubset(const SkIRect& subset) const override {
394 return SkSpecialImage::NewFromGpu(this->internal_getProxy(), 402 return SkSpecialImage::MakeFromGpu(this->internal_getProxy(),
395 subset, 403 subset,
396 this->uniqueID(), 404 this->uniqueID(),
397 fTexture, 405 fTexture,
398 fAlphaType); 406 fAlphaType);
399 } 407 }
400 408
401 private: 409 private:
402 SkAutoTUnref<GrTexture> fTexture; 410 SkAutoTUnref<GrTexture> fTexture;
403 const SkAlphaType fAlphaType; 411 const SkAlphaType fAlphaType;
404 412
405 typedef SkSpecialImage_Base INHERITED; 413 typedef SkSpecialImage_Base INHERITED;
406 }; 414 };
407 415
408 SkSpecialImage* SkSpecialImage::NewFromGpu(SkImageFilter::Proxy* proxy, 416 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromGpu(SkImageFilter::Proxy* proxy,
409 const SkIRect& subset, 417 const SkIRect& subset,
410 uint32_t uniqueID, 418 uint32_t uniqueID,
411 GrTexture* tex, 419 GrTexture* tex,
412 SkAlphaType at) { 420 SkAlphaType at) {
413 SkASSERT(rect_fits(subset, tex->width(), tex->height())); 421 SkASSERT(rect_fits(subset, tex->width(), tex->height()));
414 return new SkSpecialImage_Gpu(proxy, subset, uniqueID, tex, at); 422 return sk_make_sp<SkSpecialImage_Gpu>(proxy, subset, uniqueID, tex, at);
415 } 423 }
416 424
417 #else 425 #else
418 426
419 SkSpecialImage* SkSpecialImage::NewFromGpu(SkImageFilter::Proxy* proxy, 427 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromGpu(SkImageFilter::Proxy* proxy,
420 const SkIRect& subset, 428 const SkIRect& subset,
421 uint32_t uniqueID, 429 uint32_t uniqueID,
422 GrTexture* tex, 430 GrTexture* tex,
423 SkAlphaType at) { 431 SkAlphaType at) {
424 return nullptr; 432 return nullptr;
425 } 433 }
426 434
427 #endif 435 #endif
OLDNEW
« no previous file with comments | « src/core/SkSpecialImage.h ('k') | src/core/SkSpecialSurface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698