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

Side by Side Diff: include/core/SkPixelRef.h

Issue 23591030: start to remove lockPixels from bitmapshader (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/core/SkBitmapProcShader.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 /* 2 /*
3 * Copyright 2008 The Android Open Source Project 3 * Copyright 2008 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPixelRef_DEFINED 10 #ifndef SkPixelRef_DEFINED
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 * return a ref to its data. If the pixelRef 134 * return a ref to its data. If the pixelRef
135 * is uncompressed or otherwise does not have this form, return NULL. 135 * is uncompressed or otherwise does not have this form, return NULL.
136 * 136 *
137 * If non-null is returned, the caller is responsible for calling unref() 137 * If non-null is returned, the caller is responsible for calling unref()
138 * on the data when it is finished. 138 * on the data when it is finished.
139 */ 139 */
140 SkData* refEncodedData() { 140 SkData* refEncodedData() {
141 return this->onRefEncodedData(); 141 return this->onRefEncodedData();
142 } 142 }
143 143
144 /**
145 * Experimental -- tells the caller if it is worth it to call decodeInto().
146 * Just an optimization at this point, to avoid checking the cache first.
147 * We may remove/change this call in the future.
148 */
149 bool implementsDecodeInto() {
150 return this->onImplementsDecodeInto();
151 }
152
153 /**
154 * Return a decoded instance of this pixelRef in bitmap. If this cannot be
155 * done, return false and the bitmap parameter is ignored/unchanged.
156 *
157 * pow2 is the requeste power-of-two downscale that the caller needs. This
158 * can be ignored, and the "original" size can be returned, but if the
159 * underlying codec can efficiently return a smaller size, that should be
160 * done. Some examples:
161 *
162 * To request the "base" version (original scale), pass 0 for pow2
163 * To request 1/2 scale version (1/2 width, 1/2 height), pass 1 for pow2
164 * To request 1/4 scale version (1/4 width, 1/4 height), pass 2 for pow2
165 * ...
166 *
167 * If this returns true, then bitmap must be "locked" such that
168 * bitmap->getPixels() will return the correct address.
169 */
170 bool decodeInto(int pow2, SkBitmap* bitmap) {
171 SkASSERT(pow2 >= 0);
172 return this->onDecodeInto(pow2, bitmap);
173 }
174
144 /** Are we really wrapping a texture instead of a bitmap? 175 /** Are we really wrapping a texture instead of a bitmap?
145 */ 176 */
146 virtual GrTexture* getTexture() { return NULL; } 177 virtual GrTexture* getTexture() { return NULL; }
147 178
148 bool readPixels(SkBitmap* dst, const SkIRect* subset = NULL); 179 bool readPixels(SkBitmap* dst, const SkIRect* subset = NULL);
149 180
150 /** 181 /**
151 * Makes a deep copy of this PixelRef, respecting the requested config. 182 * Makes a deep copy of this PixelRef, respecting the requested config.
152 * @param config Desired config. 183 * @param config Desired config.
153 * @param subset Subset of this PixelRef to copy. Must be fully contained w ithin the bounds of 184 * @param subset Subset of this PixelRef to copy. Must be fully contained w ithin the bounds of
(...skipping 29 matching lines...) Expand all
183 virtual void* onLockPixels(SkColorTable**) = 0; 214 virtual void* onLockPixels(SkColorTable**) = 0;
184 /** Called when the lock count goes from 1 to 0. The caller will have 215 /** Called when the lock count goes from 1 to 0. The caller will have
185 already acquire a mutex for thread safety, so this method need not do 216 already acquire a mutex for thread safety, so this method need not do
186 that. 217 that.
187 */ 218 */
188 virtual void onUnlockPixels() = 0; 219 virtual void onUnlockPixels() = 0;
189 220
190 /** Default impl returns true */ 221 /** Default impl returns true */
191 virtual bool onLockPixelsAreWritable() const; 222 virtual bool onLockPixelsAreWritable() const;
192 223
224 // returns false;
225 virtual bool onImplementsDecodeInto();
226 // returns false;
227 virtual bool onDecodeInto(int pow2, SkBitmap* bitmap);
228
193 /** 229 /**
194 * For pixelrefs that don't have access to their raw pixels, they may be 230 * For pixelrefs that don't have access to their raw pixels, they may be
195 * able to make a copy of them (e.g. if the pixels are on the GPU). 231 * able to make a copy of them (e.g. if the pixels are on the GPU).
196 * 232 *
197 * The base class implementation returns false; 233 * The base class implementation returns false;
198 */ 234 */
199 virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subsetOrNull); 235 virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subsetOrNull);
200 236
201 // default impl returns NULL. 237 // default impl returns NULL.
202 virtual SkData* onRefEncodedData(); 238 virtual SkData* onRefEncodedData();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 bool fIsImmutable; 270 bool fIsImmutable;
235 // only ever set in constructor, const after that 271 // only ever set in constructor, const after that
236 bool fPreLocked; 272 bool fPreLocked;
237 273
238 void setMutex(SkBaseMutex* mutex); 274 void setMutex(SkBaseMutex* mutex);
239 275
240 typedef SkFlattenable INHERITED; 276 typedef SkFlattenable INHERITED;
241 }; 277 };
242 278
243 #endif 279 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkBitmapProcShader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698