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

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

Issue 1169553003: add callbacks to Images that wrap client-provided content (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: privatize Created 5 years, 6 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 | « no previous file | include/core/SkImageInfo.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 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 #ifndef SkImage_DEFINED 8 #ifndef SkImage_DEFINED
9 #define SkImage_DEFINED 9 #define SkImage_DEFINED
10 10
(...skipping 26 matching lines...) Expand all
37 * 37 *
38 * SkImage always has a non-zero dimensions. If there is a request to create a new image, either 38 * SkImage always has a non-zero dimensions. If there is a request to create a new image, either
39 * directly or via SkSurface, and either of the requested dimensions are zero, then NULL will be 39 * directly or via SkSurface, and either of the requested dimensions are zero, then NULL will be
40 * returned. 40 * returned.
41 */ 41 */
42 class SK_API SkImage : public SkRefCnt { 42 class SK_API SkImage : public SkRefCnt {
43 public: 43 public:
44 SK_DECLARE_INST_COUNT(SkImage) 44 SK_DECLARE_INST_COUNT(SkImage)
45 45
46 typedef SkImageInfo Info; 46 typedef SkImageInfo Info;
47 typedef void* ReleaseContext;
47 48
48 static SkImage* NewRasterCopy(const Info&, const void* pixels, size_t rowByt es); 49 static SkImage* NewRasterCopy(const Info&, const void* pixels, size_t rowByt es);
49 static SkImage* NewRasterData(const Info&, SkData* pixels, size_t rowBytes); 50 static SkImage* NewRasterData(const Info&, SkData* pixels, size_t rowBytes);
50 51
52 typedef void (*RasterReleaseProc)(const void* pixels, ReleaseContext);
53
54 /**
55 * Return a new Image referencing the specified pixels. These must remain v alid and unchanged
56 * until the specified release-proc is called, indicating that Skia no long er has a reference
57 * to the pixels.
58 *
59 * Returns NULL if the requested Info is unsupported.
60 */
61 static SkImage* NewFromRaster(const Info&, const void* pixels, size_t rowByt es,
62 RasterReleaseProc, ReleaseContext);
63
51 /** 64 /**
52 * Construct a new SkImage based on the given ImageGenerator. 65 * Construct a new SkImage based on the given ImageGenerator.
53 * This function will always take ownership of the passed 66 * This function will always take ownership of the passed
54 * ImageGenerator. Returns NULL on error. 67 * ImageGenerator. Returns NULL on error.
55 */ 68 */
56 static SkImage* NewFromGenerator(SkImageGenerator*); 69 static SkImage* NewFromGenerator(SkImageGenerator*);
57 70
58 /** 71 /**
59 * Construct a new SkImage based on the specified encoded data. Returns NUL L on failure, 72 * Construct a new SkImage based on the specified encoded data. Returns NUL L on failure,
60 * which can mean that the format of the encoded data was not recognized/su pported. 73 * which can mean that the format of the encoded data was not recognized/su pported.
61 * 74 *
62 * Regardless of success or failure, the caller is responsible for managing their ownership 75 * Regardless of success or failure, the caller is responsible for managing their ownership
63 * of the data. 76 * of the data.
64 */ 77 */
65 static SkImage* NewFromData(SkData* data); 78 static SkImage* NewFromData(SkData* data);
66 79
67 /** 80 /**
68 * Create a new image from the specified descriptor. Note - the caller is r esponsible for 81 * Create a new image from the specified descriptor. Note - the caller is r esponsible for
69 * managing the lifetime of the underlying platform texture. 82 * managing the lifetime of the underlying platform texture.
70 * 83 *
71 * Will return NULL if the specified descriptor is unsupported. 84 * Will return NULL if the specified descriptor is unsupported.
72 */ 85 */
73 static SkImage* NewFromTexture(GrContext*, const GrBackendTextureDesc&, 86 static SkImage* NewFromTexture(GrContext* ctx, const GrBackendTextureDesc& d esc) {
74 SkAlphaType = kPremul_SkAlphaType); 87 return NewFromTexture(ctx, desc, kPremul_SkAlphaType, NULL, NULL);
88 }
89
90 static SkImage* NewFromTexture(GrContext* ctx, const GrBackendTextureDesc& d e, SkAlphaType at) {
91 return NewFromTexture(ctx, de, at, NULL, NULL);
92 }
93
94 typedef void (*TextureReleaseProc)(ReleaseContext);
95
96 /**
97 * Create a new image from the specified descriptor. The underlying platfor m texture must stay
98 * valid and unaltered until the specified release-proc is invoked, indicat ing that Skia
99 * nolonger is holding a reference to it.
100 *
101 * Will return NULL if the specified descriptor is unsupported.
102 */
103 static SkImage* NewFromTexture(GrContext*, const GrBackendTextureDesc&, SkAl phaType,
104 TextureReleaseProc, ReleaseContext);
75 105
76 /** 106 /**
77 * Create a new image from the specified descriptor. Note - Skia will delet e or recycle the 107 * Create a new image from the specified descriptor. Note - Skia will delet e or recycle the
78 * texture when the image is released. 108 * texture when the image is released.
79 * 109 *
80 * Will return NULL if the specified descriptor is unsupported. 110 * Will return NULL if the specified descriptor is unsupported.
81 */ 111 */
82 static SkImage* NewFromAdoptedTexture(GrContext*, const GrBackendTextureDesc &, 112 static SkImage* NewFromAdoptedTexture(GrContext*, const GrBackendTextureDesc &,
83 SkAlphaType = kPremul_SkAlphaType); 113 SkAlphaType = kPremul_SkAlphaType);
84 114
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 const int fWidth; 243 const int fWidth;
214 const int fHeight; 244 const int fHeight;
215 const uint32_t fUniqueID; 245 const uint32_t fUniqueID;
216 246
217 static uint32_t NextUniqueID(); 247 static uint32_t NextUniqueID();
218 248
219 typedef SkRefCnt INHERITED; 249 typedef SkRefCnt INHERITED;
220 }; 250 };
221 251
222 #endif 252 #endif
OLDNEW
« no previous file with comments | « no previous file | include/core/SkImageInfo.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698