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

Side by Side Diff: src/image/SkImage_Raster.cpp

Issue 2250663002: Add alphaType() to SkImage (Closed) Base URL: https://skia.googlesource.com/skia.git@special-image-alpha-type
Patch Set: Remove virtuals from SkImage, slight cleanup Created 4 years, 4 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/image/SkImage_Gpu.cpp ('k') | src/pdf/SkPDFBitmap.cpp » ('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 2012 Google Inc. 2 * Copyright 2012 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 "SkImage_Base.h" 8 #include "SkImage_Base.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapProcShader.h" 10 #include "SkBitmapProcShader.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 } 71 }
72 return true; 72 return true;
73 } 73 }
74 74
75 SkImage_Raster(const SkImageInfo&, sk_sp<SkData>, size_t rb, SkColorTable*); 75 SkImage_Raster(const SkImageInfo&, sk_sp<SkData>, size_t rb, SkColorTable*);
76 virtual ~SkImage_Raster(); 76 virtual ~SkImage_Raster();
77 77
78 SkImageInfo onImageInfo() const override { 78 SkImageInfo onImageInfo() const override {
79 return fBitmap.info(); 79 return fBitmap.info();
80 } 80 }
81 SkAlphaType onAlphaType() const override {
82 return fBitmap.alphaType();
83 }
81 84
82 bool onReadPixels(const SkImageInfo&, void*, size_t, int srcX, int srcY, Cac hingHint) const override; 85 bool onReadPixels(const SkImageInfo&, void*, size_t, int srcX, int srcY, Cac hingHint) const override;
83 bool onPeekPixels(SkPixmap*) const override; 86 bool onPeekPixels(SkPixmap*) const override;
84 const SkBitmap* onPeekBitmap() const override { return &fBitmap; } 87 const SkBitmap* onPeekBitmap() const override { return &fBitmap; }
85 88
86 SkData* onRefEncoded(GrContext*) const override; 89 SkData* onRefEncoded(GrContext*) const override;
87 bool getROPixels(SkBitmap*, CachingHint) const override; 90 bool getROPixels(SkBitmap*, CachingHint) const override;
88 GrTexture* asTextureRef(GrContext*, const GrTextureParams&, 91 GrTexture* asTextureRef(GrContext*, const GrTextureParams&,
89 SkSourceGammaTreatment) const override; 92 SkSourceGammaTreatment) const override;
90 sk_sp<SkImage> onMakeSubset(const SkIRect&) const override; 93 sk_sp<SkImage> onMakeSubset(const SkIRect&) const override;
91 94
92 // exposed for SkSurface_Raster via SkNewImageFromPixelRef 95 // exposed for SkSurface_Raster via SkNewImageFromPixelRef
93 SkImage_Raster(const SkImageInfo&, SkPixelRef*, const SkIPoint& origin, size _t rowBytes); 96 SkImage_Raster(const SkImageInfo&, SkPixelRef*, const SkIPoint& origin, size _t rowBytes);
94 97
95 SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); } 98 SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); }
96 99
97 bool isOpaque() const override;
98 bool onAsLegacyBitmap(SkBitmap*, LegacyBitmapMode) const override; 100 bool onAsLegacyBitmap(SkBitmap*, LegacyBitmapMode) const override;
99 101
100 SkImage_Raster(const SkBitmap& bm, bool bitmapMayBeMutable = false) 102 SkImage_Raster(const SkBitmap& bm, bool bitmapMayBeMutable = false)
101 : INHERITED(bm.width(), bm.height(), 103 : INHERITED(bm.width(), bm.height(),
102 is_not_subset(bm) ? bm.getGenerationID() 104 is_not_subset(bm) ? bm.getGenerationID()
103 : (uint32_t)kNeedNewImageUniqueID) 105 : (uint32_t)kNeedNewImageUniqueID)
104 , fBitmap(bm) 106 , fBitmap(bm)
105 { 107 {
106 if (bm.pixelRef()->isPreLocked()) { 108 if (bm.pixelRef()->isPreLocked()) {
107 // we only preemptively lock if there is no chance of triggering som ething expensive 109 // we only preemptively lock if there is no chance of triggering som ething expensive
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 image = sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cp m); 355 image = sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cp m);
354 } 356 }
355 } 357 }
356 return image; 358 return image;
357 } 359 }
358 360
359 const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) { 361 const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) {
360 return ((const SkImage_Raster*)image)->getPixelRef(); 362 return ((const SkImage_Raster*)image)->getPixelRef();
361 } 363 }
362 364
363 bool SkImage_Raster::isOpaque() const {
364 return fBitmap.isOpaque();
365 }
366
367 bool SkImage_Raster::onAsLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode mode) c onst { 365 bool SkImage_Raster::onAsLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode mode) c onst {
368 if (kRO_LegacyBitmapMode == mode) { 366 if (kRO_LegacyBitmapMode == mode) {
369 // When we're a snapshot from a surface, our bitmap may not be marked im mutable 367 // When we're a snapshot from a surface, our bitmap may not be marked im mutable
370 // even though logically always we are, but in that case we can't physic ally share our 368 // even though logically always we are, but in that case we can't physic ally share our
371 // pixelref since the caller might call setImmutable() themselves 369 // pixelref since the caller might call setImmutable() themselves
372 // (thus changing our state). 370 // (thus changing our state).
373 if (fBitmap.isImmutable()) { 371 if (fBitmap.isImmutable()) {
374 bitmap->setInfo(fBitmap.info(), fBitmap.rowBytes()); 372 bitmap->setInfo(fBitmap.info(), fBitmap.rowBytes());
375 bitmap->setPixelRef(fBitmap.pixelRef(), fBitmap.pixelRefOrigin()); 373 bitmap->setPixelRef(fBitmap.pixelRef(), fBitmap.pixelRefOrigin());
376 return true; 374 return true;
377 } 375 }
378 } 376 }
379 return this->INHERITED::onAsLegacyBitmap(bitmap, mode); 377 return this->INHERITED::onAsLegacyBitmap(bitmap, mode);
380 } 378 }
OLDNEW
« no previous file with comments | « src/image/SkImage_Gpu.cpp ('k') | src/pdf/SkPDFBitmap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698