1 SkImage Reference 2 === 3 4 # <a name="Image"></a> Image 5 6 ## <a name="Overview"></a> Overview 7 8 ## <a name="Subtopics"></a> Subtopics 9 10 | name | description | 11 | --- | --- | 12 | <a href="#Classes_and_Structs">Classes and Structs</a> | embedded struct and class members | 13 | Constants | enum and enum class, const values | 14 | <a href="#Constructors">Constructors</a> | functions that construct <a href="SkImage_Reference#SkImage">SkImage</a> | 15 | <a href="#Member_Functions">Member Functions</a> | static functions and member methods | 16 | <a href="#Related_Functions">Related Functions</a> | similar methods grouped together | 17 18 # <a name="SkImage"></a> Class SkImage 19 <a href="#Image">Image</a> describes a two dimensional array of pixels to draw. The pixels may be 20 unencoded in a <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>, encoded in a <a href="undocumented#Picture">Picture</a> or compressed data stream, 21 or located in GPU memory as a <a href="undocumented#GPU_Texture">GPU Texture</a>. 22 23 <a href="#Image">Image</a> cannot be modified after it is created. <a href="#Image">Image</a> may allocate additional 24 storage as needed; for instance, an encoded <a href="#Image">Image</a> may decode when drawn. 25 26 <a href="#Image">Image</a> width and height are greater than zero. Creating an <a href="#Image">Image</a> with zero width 27 or height returns <a href="#Image">Image</a> equal to nullptr. 28 29 <a href="#Image">Image</a> may be created from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, <a href="SkSurface_Reference#Surface">Surface</a>, <a href="undocumented#Picture">Picture</a>, encoded streams, 30 <a href="undocumented#GPU_Texture">GPU Texture</a>, <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data, or hardware buffer. Encoded streams supported 31 include BMP, GIF, HEIF, ICO, JPEG, PNG, WBMP, WebP. Supported encodings details 32 vary with platform. 33 34 ## <a name="Raster_Image"></a> Raster Image 35 36 <a href="SkImage_Reference#Raster_Image">Raster Image</a> pixels are unencoded in a <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. These pixels may be read 37 directly and in most cases written to, although edited pixels may not be drawn 38 if <a href="#Image">Image</a> has been copied internally. 39 40 ## <a name="Texture_Image"></a> Texture Image 41 42 <a href="#Texture_Image">Texture Image</a> are located on GPU and pixels are not accessible. <a href="#Texture_Image">Texture Image</a> 43 are allocated optimally for best performance. <a href="SkImage_Reference#Raster_Image">Raster Image</a> may 44 be drawn to <a href="undocumented#GPU_Surface">GPU Surface</a>, but pixels are uploaded from CPU to GPU downgrading 45 performance. 46 47 ## <a name="Lazy_Image"></a> Lazy Image 48 49 <a href="#Lazy_Image">Lazy Image</a> defer allocating buffer for <a href="#Image">Image</a> pixels and decoding stream until 50 <a href="#Image">Image</a> is drawn. <a href="#Lazy_Image">Lazy Image</a> caches result if possible to speed up repeated 51 drawing. 52 53 ## <a name="Related_Functions"></a> Related Functions 54 55 | name | description | 56 | --- | --- | 57 | <a href="#Lazy_Image">Lazy Image</a> | deferred pixel buffer | 58 | <a href="SkImage_Reference#Raster_Image">Raster Image</a> | pixels unencoded in <a href="undocumented#Raster_Bitmap">Raster Bitmap</a> | 59 | <a href="#Texture_Image">Texture Image</a> | pixels located on GPU | 60 61 ## <a name="Classes_and_Structs"></a> Classes and Structs 62 63 | name | description | 64 | --- | --- | 65 | <a href="#SkImage_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams</a> | to be deprecated | 66 67 ## <a name="Constructors"></a> Constructors 68 69 | name | description | 70 | --- | --- | 71 | <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | Creates <a href="undocumented#GPU_Texture">GPU Texture</a> from <a href="#Image">Image</a>. | 72 | <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to GPU. | 73 | <a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, and uploads to GPU. | 74 | <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from Android hardware buffer. | 75 | <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed internally. | 76 | <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | Creates <a href="#Image">Image</a> from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, sharing or copying pixels. | 77 | <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | To be deprecated. | 78 | <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data. | 79 | <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | Creates <a href="#Image">Image</a> from a stream of data. | 80 | <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in two planes. | 81 | <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#Picture">Picture</a>. | 82 | <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, with release. | 83 | <a href="#SkImage_MakeFromTexture">MakeFromTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed externally. | 84 | <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in three planes. | 85 | <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copied pixels. | 86 | <a href="#SkImage_MakeRasterData">MakeRasterData</a> | Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a> and shared pixels. | 87 | <a href="#SkImage_makeColorSpace">makeColorSpace</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 88 | <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | Creates <a href="#Image">Image</a> without dependency on <a href="undocumented#GPU_Texture">GPU Texture</a>. | 89 | <a href="#SkImage_makeRasterImage">makeRasterImage</a> | Creates <a href="#Image">Image</a> compatible with <a href="undocumented#Raster_Surface">Raster Surface</a> if possible. | 90 | <a href="#SkImage_makeShader">makeShader</a> | Creates <a href="undocumented#Shader">Shader</a>, <a href="SkPaint_Reference#Paint">Paint</a> element that can tile <a href="#Image">Image</a>. | 91 | <a href="#SkImage_makeSubset">makeSubset</a> | Creates <a href="#Image">Image</a> containing part of original. | 92 | <a href="#SkImage_makeTextureImage">makeTextureImage</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 93 | <a href="#SkImage_makeWithFilter">makeWithFilter</a> | Creates filtered, clipped <a href="#Image">Image</a>. | 94 95 ## <a name="Member_Functions"></a> Member Functions 96 97 | name | description | 98 | --- | --- | 99 | <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | Creates <a href="undocumented#GPU_Texture">GPU Texture</a> from <a href="#Image">Image</a>. | 100 | <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to GPU. | 101 | <a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, and uploads to GPU. | 102 | <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from Android hardware buffer. | 103 | <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed internally. | 104 | <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | Creates <a href="#Image">Image</a> from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, sharing or copying pixels. | 105 | <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | To be deprecated. | 106 | <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data. | 107 | <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | Creates <a href="#Image">Image</a> from a stream of data. | 108 | <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in two planes. | 109 | <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#Picture">Picture</a>. | 110 | <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, with release. | 111 | <a href="#SkImage_MakeFromTexture">MakeFromTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed externally. | 112 | <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in three planes. | 113 | <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copied pixels. | 114 | <a href="#SkImage_MakeRasterData">MakeRasterData</a> | Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a> and shared pixels. | 115 | <a href="#SkImage_alphaType">alphaType</a> | Returns <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>. | 116 | <a href="#SkImage_asLegacyBitmap">asLegacyBitmap</a> | Returns as <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. | 117 | <a href="#SkImage_bounds">bounds</a> | Returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> as Rectangle. | 118 | <a href="#SkImage_colorSpace">colorSpace</a> | Returns <a href="undocumented#Color_Space">Color Space</a>. | 119 | <a href="#SkImage_dimensions">dimensions</a> | Returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a>. | 120 | <a href="#SkImage_encodeToData">encodeToData</a> | Returns encoded <a href="#Image">Image</a> as <a href="undocumented#SkData">SkData</a>. | 121 | <a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a> | To be deprecated. | 122 | <a href="#SkImage_getTexture">getTexture</a> | Deprecated. | 123 | <a href="#SkImage_getTextureHandle">getTextureHandle</a> | Returns GPU reference to <a href="#Image">Image</a> as texture. | 124 | <a href="#SkImage_height">height</a> | Returns pixel row count. | 125 | <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> | Returns if pixels represent a transparency mask. | 126 | <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> | Returns if <a href="#Image">Image</a> is created as needed. | 127 | <a href="#SkImage_isOpaque">isOpaque</a> | Returns if <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>. | 128 | <a href="#SkImage_isTextureBacked">isTextureBacked</a> | Returns if <a href="#Image">Image</a> was created from <a href="undocumented#GPU_Texture">GPU Texture</a>. | 129 | <a href="#SkImage_isValid">isValid</a> | Returns if <a href="#Image">Image</a> can draw to <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Context">GPU Context</a>. | 130 | <a href="#SkImage_makeColorSpace">makeColorSpace</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 131 | <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | Creates <a href="#Image">Image</a> without dependency on <a href="undocumented#GPU_Texture">GPU Texture</a>. | 132 | <a href="#SkImage_makeRasterImage">makeRasterImage</a> | Creates <a href="#Image">Image</a> compatible with <a href="undocumented#Raster_Surface">Raster Surface</a> if possible. | 133 | <a href="#SkImage_makeShader">makeShader</a> | Creates <a href="undocumented#Shader">Shader</a>, <a href="SkPaint_Reference#Paint">Paint</a> element that can tile <a href="#Image">Image</a>. | 134 | <a href="#SkImage_makeSubset">makeSubset</a> | Creates <a href="#Image">Image</a> containing part of original. | 135 | <a href="#SkImage_makeTextureImage">makeTextureImage</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 136 | <a href="#SkImage_makeWithFilter">makeWithFilter</a> | Creates filtered, clipped <a href="#Image">Image</a>. | 137 | <a href="#SkImage_peekPixels">peekPixels</a> | Returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> if possible. | 138 | <a href="#SkImage_readPixels">readPixels</a> | Copies and converts pixels. | 139 | <a href="#SkImage_refColorSpace">refColorSpace</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | 140 | <a href="#SkImage_refEncodedData">refEncodedData</a> | Returns <a href="#Image">Image</a> encoded in <a href="undocumented#SkData">SkData</a> if present. | 141 | <a href="#SkImage_scalePixels">scalePixels</a> | Scales and converts one <a href="#Image">Image</a> to another. | 142 | <a href="#SkImage_toString">toString</a> | Converts <a href="#Image">Image</a> to machine readable form. | 143 | <a href="#SkImage_uniqueID">uniqueID</a> | Identifier for <a href="#Image">Image</a>. | 144 | <a href="#SkImage_width">width</a> | Returns pixel column count. | 145 146 <a name="SkImage_MakeRasterCopy"></a> 147 ## MakeRasterCopy 148 149 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 150 static sk_sp<SkImage> MakeRasterCopy(const SkPixmap& pixmap) 151 </pre> 152 153 Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copy of pixels. Since pixels are copied, <a href="SkPixmap_Reference#Pixmap">Pixmap</a> 154 pixels may be modified or deleted without affecting <a href="#Image">Image</a>. 155 156 <a href="#Image">Image</a> is returned if <a href="SkPixmap_Reference#Pixmap">Pixmap</a> is valid. Valid <a href="SkPixmap_Reference#Pixmap">Pixmap</a> parameters include: 157 dimensions are greater than zero; 158 each dimension fits in 29 bits; 159 <a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 160 row bytes are large enough to hold one row of pixels; 161 pixel address is not nullptr. 162 163 ### Parameters 164 165 <table> <tr> <td><a name="SkImage_MakeRasterCopy_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 166 <a href="#Info">Image Info</a>, pixel address, and row bytes</td> 167 </tr> 168 </table> 169 170 ### Return Value 171 172 copy of <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels, or nullptr 173 174 ### Example 175 176 <div><fiddle-embed name="513afec5795a9504ebf6af5373d16b6b"><div>Draw a five by five bitmap, and draw a copy in an <a href="#Image">Image</a>. Editing the <a href="#SkImage_MakeRasterCopy_pixmap">pixmap</a> 177 alters the bitmap draw, but does not alter the <a href="#Image">Image</a> draw since the <a href="#Image">Image</a> 178 contains a copy of the pixels.</div></fiddle-embed></div> 179 180 ### See Also 181 182 <a href="#SkImage_MakeRasterData">MakeRasterData</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 183 184 --- 185 186 <a name="SkImage_MakeRasterData"></a> 187 ## MakeRasterData 188 189 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 190 static sk_sp<SkImage> MakeRasterData(const Info& info, sk_sp<SkData> pixels, size_t rowBytes) 191 </pre> 192 193 Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a>, sharing <a href="#SkImage_MakeRasterData_pixels">pixels</a>. 194 195 <a href="#Image">Image</a> is returned if <a href="#Info">Image Info</a> is valid. Valid <a href="#Info">Image Info</a> parameters include: 196 dimensions are greater than zero; 197 each dimension fits in 29 bits; 198 <a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 199 <a href="#SkImage_MakeRasterData_rowBytes">rowBytes</a> are large enough to hold one row of <a href="#SkImage_MakeRasterData_pixels">pixels</a>; 200 <a href="#SkImage_MakeRasterData_pixels">pixels</a> is not nullptr, and contains enough data for <a href="#Image">Image</a>. 201 202 ### Parameters 203 204 <table> <tr> <td><a name="SkImage_MakeRasterData_info"> <code><strong>info </strong></code> </a></td> <td> 205 contains width, height, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> 206 </tr> <tr> <td><a name="SkImage_MakeRasterData_pixels"> <code><strong>pixels </strong></code> </a></td> <td> 207 address or pixel storage</td> 208 </tr> <tr> <td><a name="SkImage_MakeRasterData_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> 209 size of pixel row or larger</td> 210 </tr> 211 </table> 212 213 ### Return Value 214 215 <a href="#Image">Image</a> sharing <a href="#SkImage_MakeRasterData_pixels">pixels</a>, or nullptr 216 217 ### Example 218 219 <div><fiddle-embed name="367bdf6ee6ef2482eea95d4a9887c9b0"></fiddle-embed></div> 220 221 ### See Also 222 223 <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 224 225 --- 226 227 Caller data passed to <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a>; may be nullptr. 228 229 ### See Also 230 231 <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a> 232 233 Function called when <a href="#Image">Image</a> no longer shares pixels. <a href="#SkImage_ReleaseContext">ReleaseContext</a> is 234 provided by caller when <a href="#Image">Image</a> is created, and may be nullptr. 235 236 ### See Also 237 238 <a href="#SkImage_ReleaseContext">ReleaseContext</a> <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 239 240 <a name="SkImage_MakeFromRaster"></a> 241 ## MakeFromRaster 242 243 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 244 static sk_sp<SkImage> MakeFromRaster(const SkPixmap& pixmap, RasterReleaseProc rasterReleaseProc, 245 ReleaseContext releaseContext) 246 </pre> 247 248 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a>, sharing <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels. Pixels must remain valid and 249 unchanged until <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is called. <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is passed 250 <a href="#SkImage_MakeFromRaster_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> pixels. 251 252 Pass nullptr for <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> to share <a href="SkPixmap_Reference#Pixmap">Pixmap</a> without requiring a callback 253 when <a href="#Image">Image</a> is released. Pass nullptr for <a href="#SkImage_MakeFromRaster_releaseContext">releaseContext</a> if <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> 254 does not require state. 255 256 <a href="#Image">Image</a> is returned if <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> is valid. Valid <a href="SkPixmap_Reference#Pixmap">Pixmap</a> parameters include: 257 dimensions are greater than zero; 258 each dimension fits in 29 bits; 259 <a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 260 row bytes are large enough to hold one row of pixels; 261 pixel address is not nullptr. 262 263 ### Parameters 264 265 <table> <tr> <td><a name="SkImage_MakeFromRaster_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 266 <a href="#Info">Image Info</a>, pixel address, and row bytes</td> 267 </tr> <tr> <td><a name="SkImage_MakeFromRaster_rasterReleaseProc"> <code><strong>rasterReleaseProc </strong></code> </a></td> <td> 268 function called when pixels can be released; or nullptr</td> 269 </tr> <tr> <td><a name="SkImage_MakeFromRaster_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 270 state passed to <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a>; or nullptr</td> 271 </tr> 272 </table> 273 274 ### Return Value 275 276 <a href="#Image">Image</a> sharing <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> 277 278 ### Example 279 280 <div><fiddle-embed name="275356b65d18c8868f4434137350cddc"> 281 282 #### Example Output 283 284 ~~~~ 285 before reset: 0 286 after reset: 1 287 ~~~~ 288 289 </fiddle-embed></div> 290 291 ### See Also 292 293 <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeRasterData">MakeRasterData</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a> <a href="#SkImage_ReleaseContext">ReleaseContext</a> 294 295 --- 296 297 <a name="SkImage_MakeFromBitmap"></a> 298 ## MakeFromBitmap 299 300 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 301 static sk_sp<SkImage> MakeFromBitmap(const SkBitmap& bitmap) 302 </pre> 303 304 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>, sharing or copying <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> pixels. If the <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> 305 is marked immutable, and its pixel memory is shareable, it may be shared 306 instead of copied. 307 308 <a href="#Image">Image</a> is returned if <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> is valid. Valid <a href="SkBitmap_Reference#Bitmap">Bitmap</a> parameters include: 309 dimensions are greater than zero; 310 each dimension fits in 29 bits; 311 <a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 312 row bytes are large enough to hold one row of pixels; 313 pixel address is not nullptr. 314 315 ### Parameters 316 317 <table> <tr> <td><a name="SkImage_MakeFromBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> 318 <a href="#Info">Image Info</a>, row bytes, and pixels</td> 319 </tr> 320 </table> 321 322 ### Return Value 323 324 created <a href="#Image">Image</a>, or nullptr 325 326 ### Example 327 328 <div><fiddle-embed name="cf2cf53321e4e6a77c2841bfbc0ef707"><div>The first <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is shared; writing to the pixel memory changes the first 329 <a href="#Image">Image</a>. 330 The second <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is marked immutable, and is copied; writing to the pixel 331 memory does not alter the second <a href="#Image">Image</a>.</div></fiddle-embed></div> 332 333 ### See Also 334 335 <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> <a href="#SkImage_MakeRasterData">MakeRasterData</a> 336 337 --- 338 339 <a name="SkImage_MakeFromGenerator"></a> 340 ## MakeFromGenerator 341 342 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 343 static sk_sp<SkImage> MakeFromGenerator(std::unique_ptr<SkImageGenerator> imageGenerator, 344 const SkIRect* subset = nullptr) 345 </pre> 346 347 Creates <a href="#Image">Image</a> from data returned by <a href="#SkImage_MakeFromGenerator_imageGenerator">imageGenerator</a>. Generated data is owned by <a href="#Image">Image</a> and may not 348 be shared or accessed. 349 350 <a href="#SkImage_MakeFromGenerator_subset">subset</a> allows selecting a portion of the full image. Pass nullptr to select the entire image; 351 otherwise, <a href="#SkImage_MakeFromGenerator_subset">subset</a> must be contained by image bounds. 352 353 <a href="#Image">Image</a> is returned if generator data is valid. Valid data parameters vary by type of data 354 and platform. 355 356 <a href="#SkImage_MakeFromGenerator_imageGenerator">imageGenerator</a> may wrap <a href="undocumented#Picture">Picture</a> data, codec data, or custom data. 357 358 ### Parameters 359 360 <table> <tr> <td><a name="SkImage_MakeFromGenerator_imageGenerator"> <code><strong>imageGenerator </strong></code> </a></td> <td> 361 stock or custom routines to retrieve <a href="#Image">Image</a></td> 362 </tr> <tr> <td><a name="SkImage_MakeFromGenerator_subset"> <code><strong>subset </strong></code> </a></td> <td> 363 bounds of returned <a href="#Image">Image</a>; may be nullptr</td> 364 </tr> 365 </table> 366 367 ### Return Value 368 369 created <a href="#Image">Image</a>, or nullptr 370 371 ### Example 372 373 <div><fiddle-embed name="c2fec0746f88ca34d7dce59dd9bdef9e"><div>The generator returning <a href="undocumented#Picture">Picture</a> cannot be shared; std::move transfers ownership to generated <a href="#Image">Image</a>.</div></fiddle-embed></div> 374 375 ### See Also 376 377 <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 378 379 --- 380 381 <a name="SkImage_MakeFromEncoded"></a> 382 ## MakeFromEncoded 383 384 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 385 static sk_sp<SkImage> MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset = nullptr) 386 </pre> 387 388 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data. 389 <a href="#SkImage_MakeFromEncoded_subset">subset</a> allows selecting a portion of the full image. Pass nullptr to select the entire image; 390 otherwise, <a href="#SkImage_MakeFromEncoded_subset">subset</a> must be contained by image bounds. 391 392 <a href="#Image">Image</a> is returned if format of the <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data is recognized and supported. 393 Recognized formats vary by platfrom. 394 395 ### Parameters 396 397 <table> <tr> <td><a name="SkImage_MakeFromEncoded_encoded"> <code><strong>encoded </strong></code> </a></td> <td> 398 data of <a href="#Image">Image</a> to decode</td> 399 </tr> <tr> <td><a name="SkImage_MakeFromEncoded_subset"> <code><strong>subset </strong></code> </a></td> <td> 400 bounds of returned <a href="#Image">Image</a>; may be nullptr</td> 401 </tr> 402 </table> 403 404 ### Return Value 405 406 created <a href="#Image">Image</a>, or nullptr 407 408 ### Example 409 410 <div><fiddle-embed name="894f732ed6409b1f392bc5481421d0e9"></fiddle-embed></div> 411 412 ### See Also 413 414 <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 415 416 --- 417 418 <a name="SkImage_MakeFromTexture"></a> 419 ## MakeFromTexture 420 421 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 422 static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 423 GrSurfaceOrigin origin, SkAlphaType alphaType, 424 sk_sp<SkColorSpace> colorSpace) 425 </pre> 426 427 Deprecated. 428 429 ### Parameters 430 431 <table> <tr> <td><a name="SkImage_MakeFromTexture_context"> <code><strong>context </strong></code> </a></td> <td> 432 <a href="undocumented#GPU_Context">GPU Context</a></td> 433 </tr> <tr> <td><a name="SkImage_MakeFromTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 434 texture residing on GPU</td> 435 </tr> <tr> <td><a name="SkImage_MakeFromTexture_origin"> <code><strong>origin </strong></code> </a></td> <td> 436 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 437 </tr> <tr> <td><a name="SkImage_MakeFromTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 438 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 439 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 440 </tr> <tr> <td><a name="SkImage_MakeFromTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 441 range of colors; may be nullptr</td> 442 </tr> 443 </table> 444 445 ### Return Value 446 447 created <a href="#Image">Image</a>, or nullptr 448 449 --- 450 451 <a name="SkImage_MakeFromTexture_2"></a> 452 453 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 454 static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 455 GrSurfaceOrigin origin, SkAlphaType alphaType, 456 sk_sp<SkColorSpace> colorSpace, 457 TextureReleaseProc textureReleaseProc, 458 ReleaseContext releaseContext) 459 </pre> 460 461 Deprecated. 462 463 ### Parameters 464 465 <table> <tr> <td><a name="SkImage_MakeFromTexture_2_context"> <code><strong>context </strong></code> </a></td> <td> 466 <a href="undocumented#GPU_Context">GPU Context</a></td> 467 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 468 texture residing on GPU</td> 469 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_origin"> <code><strong>origin </strong></code> </a></td> <td> 470 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 471 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 472 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 473 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 474 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 475 range of colors; may be nullptr</td> 476 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_textureReleaseProc"> <code><strong>textureReleaseProc </strong></code> </a></td> <td> 477 function called when texture can be released</td> 478 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 479 state passed to <a href="#SkImage_MakeFromTexture_2_textureReleaseProc">textureReleaseProc</a></td> 480 </tr> 481 </table> 482 483 ### Return Value 484 485 created <a href="#Image">Image</a>, or nullptr 486 487 --- 488 489 <a name="SkImage_MakeFromTexture_3"></a> 490 491 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 492 static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 493 GrSurfaceOrigin origin, SkColorType colorType, 494 SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace) 495 </pre> 496 497 Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_MakeFromTexture_3_context">context</a>. Caller is responsible for 498 managing the lifetime of <a href="undocumented#GPU_Texture">GPU Texture</a>. 499 500 <a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_3_backendTexture">backendTexture</a> is recognized and supported. 501 Recognized formats vary by GPU back-end. 502 503 ### Parameters 504 505 <table> <tr> <td><a name="SkImage_MakeFromTexture_3_context"> <code><strong>context </strong></code> </a></td> <td> 506 <a href="undocumented#GPU_Context">GPU Context</a></td> 507 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 508 texture residing on GPU</td> 509 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_origin"> <code><strong>origin </strong></code> </a></td> <td> 510 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 511 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 512 one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 513 <a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 514 <a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 515 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 516 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 517 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 518 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 519 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 520 range of colors; may be nullptr</td> 521 </tr> 522 </table> 523 524 ### Return Value 525 526 created <a href="#Image">Image</a>, or nullptr 527 528 ### Example 529 530 <div><fiddle-embed name="d5e43961a54548f445eece91d517381c" gpu="true"><div>A back-end texture has been created and uploaded to the GPU outside of this example.</div></fiddle-embed></div> 531 532 ### See Also 533 534 <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a><sup><a href="#SkImage_MakeFromAdoptedTexture_2">[2]</a></sup> <a href="#SkSurface_MakeFromBackendTexture">SkSurface::MakeFromBackendTexture</a><sup><a href="#SkSurface_MakeFromBackendTexture_2">[2]</a></sup> 535 536 --- 537 538 <a name="SkImage_MakeFromTexture_4"></a> 539 540 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 541 static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 542 GrSurfaceOrigin origin, SkColorType colorType, 543 SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace, 544 TextureReleaseProc textureReleaseProc, 545 ReleaseContext releaseContext) 546 </pre> 547 548 Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_MakeFromTexture_4_context">context</a>. <a href="undocumented#GPU_Texture">GPU Texture</a> must stay 549 valid and unchanged until <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a> is called. <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a> is 550 passed <a href="#SkImage_MakeFromTexture_4_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to texture. 551 552 <a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_4_backendTexture">backendTexture</a> is recognized and supported. 553 Recognized formats vary by GPU back-end. 554 555 ### Parameters 556 557 <table> <tr> <td><a name="SkImage_MakeFromTexture_4_context"> <code><strong>context </strong></code> </a></td> <td> 558 <a href="undocumented#GPU_Context">GPU Context</a></td> 559 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 560 texture residing on GPU</td> 561 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_origin"> <code><strong>origin </strong></code> </a></td> <td> 562 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 563 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 564 one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 565 <a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 566 <a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 567 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 568 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 569 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 570 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 571 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 572 range of colors; may be nullptr</td> 573 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_textureReleaseProc"> <code><strong>textureReleaseProc </strong></code> </a></td> <td> 574 function called when texture can be released</td> 575 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 576 state passed to <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a></td> 577 </tr> 578 </table> 579 580 ### Return Value 581 582 created <a href="#Image">Image</a>, or nullptr 583 584 ### Example 585 586 <div><fiddle-embed name="c7be9423f7c2ef819523ba4d607d17b8" gpu="true"></fiddle-embed></div> 587 588 ### See Also 589 590 <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a><sup><a href="#SkImage_MakeFromAdoptedTexture_2">[2]</a></sup> <a href="#SkSurface_MakeFromBackendTexture">SkSurface::MakeFromBackendTexture</a><sup><a href="#SkSurface_MakeFromBackendTexture_2">[2]</a></sup> 591 592 --- 593 594 <a name="SkImage_MakeCrossContextFromEncoded"></a> 595 ## MakeCrossContextFromEncoded 596 597 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 598 static sk_sp<SkImage> MakeCrossContextFromEncoded(GrContext* context, sk_sp<SkData> data, 599 bool buildMips, SkColorSpace* dstColorSpace) 600 </pre> 601 602 Creates <a href="#Image">Image</a> from encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a>. 603 604 Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread 605 boundaries. All contexts must be in the same GPU_Share_Group, or otherwise 606 share resources. 607 608 When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> releases texture memory 609 asynchronously. 610 611 <a href="undocumented#Texture">Texture</a> decoded from <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> is uploaded to match <a href="SkSurface_Reference#Surface">Surface</a> created with 612 <a href="#SkImage_MakeCrossContextFromEncoded_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. 613 614 <a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> 615 supports moving resources. Recognized formats vary by platform and GPU back-end. 616 617 <a href="#Image">Image</a> is returned using <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> is nullptr or does not support 618 moving resources between contexts. 619 620 ### Parameters 621 622 <table> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_context"> <code><strong>context </strong></code> </a></td> <td> 623 <a href="undocumented#GPU_Context">GPU Context</a></td> 624 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_data"> <code><strong>data </strong></code> </a></td> <td> 625 <a href="#Image">Image</a> to decode</td> 626 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td> 627 create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td> 628 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 629 range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 630 </tr> 631 </table> 632 633 ### Return Value 634 635 created <a href="#Image">Image</a>, or nullptr 636 637 ### Example 638 639 <div><fiddle-embed name="069c7b116479e3ca46f953f07dcbdd36"></fiddle-embed></div> 640 641 ### See Also 642 643 <a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> 644 645 --- 646 647 <a name="SkImage_MakeCrossContextFromPixmap"></a> 648 ## MakeCrossContextFromPixmap 649 650 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 651 static sk_sp<SkImage> MakeCrossContextFromPixmap(GrContext* context, const SkPixmap& pixmap, 652 bool buildMips, SkColorSpace* dstColorSpace) 653 </pre> 654 655 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a>. 656 657 Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread 658 boundaries. All contexts must be in the same GPU_Share_Group, or otherwise 659 share resources. 660 661 When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> releases texture memory 662 asynchronously. 663 664 <a href="undocumented#Texture">Texture</a> created from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> is uploaded to match <a href="SkSurface_Reference#Surface">Surface</a> created with 665 <a href="#SkImage_MakeCrossContextFromPixmap_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>.<a href="#SkImage_colorSpace">colorSpace</a>. 666 667 <a href="#Image">Image</a> is returned referring to GPU back-end if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> is not nullptr, 668 format of data is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> supports moving 669 resources between contexts. Otherwise, <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> pixel data is copied and <a href="#Image">Image</a> 670 as returned in raster format if possible; nullptr may be returned. 671 Recognized GPU formats vary by platform and GPU back-end. 672 673 ### Parameters 674 675 <table> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_context"> <code><strong>context </strong></code> </a></td> <td> 676 <a href="undocumented#GPU_Context">GPU Context</a></td> 677 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 678 <a href="#Info">Image Info</a>, pixel address, and row bytes</td> 679 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td> 680 create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td> 681 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 682 range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 683 </tr> 684 </table> 685 686 ### Return Value 687 688 created <a href="#Image">Image</a>, or nullptr 689 690 ### Example 691 692 <div><fiddle-embed name="45bca8747b8f49b5be34b520897ef048"></fiddle-embed></div> 693 694 ### See Also 695 696 <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> 697 698 --- 699 700 <a name="SkImage_MakeFromAdoptedTexture"></a> 701 ## MakeFromAdoptedTexture 702 703 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 704 static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context, 705 const GrBackendTexture& backendTexture, 706 GrSurfaceOrigin surfaceOrigin, 707 SkAlphaType alphaType = kPremul_SkAlphaType, 708 sk_sp<SkColorSpace> colorSpace = nullptr) 709 </pre> 710 711 Deprecated. 712 713 ### Parameters 714 715 <table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_context"> <code><strong>context </strong></code> </a></td> <td> 716 <a href="undocumented#GPU_Context">GPU Context</a></td> 717 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 718 texture residing on GPU</td> 719 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 720 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 721 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 722 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 723 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 724 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 725 range of colors; may be nullptr</td> 726 </tr> 727 </table> 728 729 ### Return Value 730 731 created <a href="#Image">Image</a>, or nullptr 732 733 ### See Also 734 735 <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 736 737 --- 738 739 <a name="SkImage_MakeFromAdoptedTexture_2"></a> 740 741 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 742 static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context, 743 const GrBackendTexture& backendTexture, 744 GrSurfaceOrigin surfaceOrigin, SkColorType colorType, 745 SkAlphaType alphaType = kPremul_SkAlphaType, 746 sk_sp<SkColorSpace> colorSpace = nullptr) 747 </pre> 748 749 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> associated with <a href="#SkImage_MakeFromAdoptedTexture_2_context">context</a>. <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> and 750 returned <a href="#Image">Image</a> are managed internally, and are released when no longer needed. 751 752 <a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> is recognized and supported. 753 Recognized formats vary by GPU back-end. 754 755 ### Parameters 756 757 <table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_context"> <code><strong>context </strong></code> </a></td> <td> 758 <a href="undocumented#GPU_Context">GPU Context</a></td> 759 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 760 texture residing on GPU</td> 761 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 762 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 763 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 764 one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 765 <a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 766 <a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 767 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 768 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 769 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 770 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 771 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 772 range of colors; may be nullptr</td> 773 </tr> 774 </table> 775 776 ### Return Value 777 778 created <a href="#Image">Image</a>, or nullptr 779 780 ### Example 781 782 <div><fiddle-embed name="b07964ec9c5c8a6febba805f1cf4d071" gpu="true"></fiddle-embed></div> 783 784 ### See Also 785 786 <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 787 788 --- 789 790 <a name="SkImage_MakeFromYUVTexturesCopy"></a> 791 ## MakeFromYUVTexturesCopy 792 793 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 794 static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 795 const GrBackendObject yuvTextureHandles[3], 796 const SkISize yuvSizes[3], 797 GrSurfaceOrigin surfaceOrigin, 798 sk_sp<SkColorSpace> colorSpace = nullptr) 799 </pre> 800 801 Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU. 802 <a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>. 803 <a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 804 zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 805 <a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 806 807 ### Parameters 808 809 <table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> 810 <a href="undocumented#GPU_Context">GPU Context</a></td> 811 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 812 one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 813 <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 814 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td> 815 array of YUV textures on GPU</td> 816 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td> 817 dimensions of YUV textures</td> 818 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 819 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 820 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 821 range of colors; may be nullptr</td> 822 </tr> 823 </table> 824 825 ### Return Value 826 827 created <a href="#Image">Image</a>, or nullptr 828 829 ### See Also 830 831 <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a><sup><a href="#SkImage_MakeFromNV12TexturesCopy_2">[2]</a></sup> 832 833 --- 834 835 <a name="SkImage_MakeFromYUVTexturesCopy_2"></a> 836 837 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 838 static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 839 const GrBackendTexture yuvTextureHandles[3], 840 const SkISize yuvSizes[3], 841 GrSurfaceOrigin surfaceOrigin, 842 sk_sp<SkColorSpace> colorSpace = nullptr) 843 </pre> 844 845 Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU. 846 <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>. 847 <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 848 zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 849 <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 850 851 ### Parameters 852 853 <table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td> 854 <a href="undocumented#GPU_Context">GPU Context</a></td> 855 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 856 one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 857 <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 858 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td> 859 array of YUV textures on GPU</td> 860 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td> 861 dimensions of YUV textures</td> 862 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 863 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 864 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 865 range of colors; may be nullptr</td> 866 </tr> 867 </table> 868 869 ### Return Value 870 871 created <a href="#Image">Image</a>, or nullptr 872 873 ### See Also 874 875 <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a><sup><a href="#SkImage_MakeFromNV12TexturesCopy_2">[2]</a></sup> 876 877 --- 878 879 <a name="SkImage_MakeFromNV12TexturesCopy"></a> 880 ## MakeFromNV12TexturesCopy 881 882 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 883 static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 884 const GrBackendObject nv12TextureHandles[2], 885 const SkISize nv12Sizes[2], 886 GrSurfaceOrigin surfaceOrigin, 887 sk_sp<SkColorSpace> colorSpace = nullptr) 888 </pre> 889 890 Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU. 891 <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane. 892 <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane, 893 followed by pixels for YUV_Component_V plane. 894 <a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 895 zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 896 <a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 897 898 ### Parameters 899 900 <table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> 901 <a href="undocumented#GPU_Context">GPU Context</a></td> 902 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 903 one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 904 <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 905 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td> 906 array of YUV textures on GPU</td> 907 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td> 908 dimensions of YUV textures</td> 909 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 910 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 911 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 912 range of colors; may be nullptr</td> 913 </tr> 914 </table> 915 916 ### Return Value 917 918 created <a href="#Image">Image</a>, or nullptr 919 920 ### See Also 921 922 <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 923 924 --- 925 926 <a name="SkImage_MakeFromNV12TexturesCopy_2"></a> 927 928 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 929 static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 930 const GrBackendTexture nv12TextureHandles[2], 931 const SkISize nv12Sizes[2], 932 GrSurfaceOrigin surfaceOrigin, 933 sk_sp<SkColorSpace> colorSpace = nullptr) 934 </pre> 935 936 Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU. 937 <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane. 938 <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane, 939 followed by pixels for YUV_Component_V plane. 940 <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 941 zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 942 <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 943 944 ### Parameters 945 946 <table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td> 947 <a href="undocumented#GPU_Context">GPU Context</a></td> 948 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 949 one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 950 <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 951 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td> 952 array of YUV textures on GPU</td> 953 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td> 954 dimensions of YUV textures</td> 955 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 956 one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 957 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 958 range of colors; may be nullptr</td> 959 </tr> 960 </table> 961 962 ### Return Value 963 964 created <a href="#Image">Image</a>, or nullptr 965 966 ### See Also 967 968 <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 969 970 --- 971 972 ## <a name="SkImage_BitDepth"></a> Enum SkImage::BitDepth 973 974 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 975 enum class <a href="#SkImage_BitDepth">BitDepth</a> { 976 <a href="#SkImage_kU8">kU8</a>, 977 <a href="#SkImage_kF16">kF16</a>, 978 };</pre> 979 980 ### Constants 981 982 <table> 983 <tr> 984 <td><a name="SkImage_kU8"> <code><strong>SkImage::kU8 </strong></code> </a></td><td>0</td><td>Use 8 bits per <a href="#ARGB">Color ARGB</a> component using unsigned integer format.</td> 985 </tr> 986 <tr> 987 <td><a name="SkImage_kF16"> <code><strong>SkImage::kF16 </strong></code> </a></td><td>1</td><td>Use 16 bits per <a href="#ARGB">Color ARGB</a> component using half-precision floating point format.</td> 988 </tr> 989 </table> 990 991 ### See Also 992 993 <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> 994 995 996 997 <a name="SkImage_MakeFromPicture"></a> 998 ## MakeFromPicture 999 1000 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1001 static sk_sp<SkImage> MakeFromPicture(sk_sp<SkPicture> picture, const SkISize& dimensions, 1002 const SkMatrix* matrix, const SkPaint* paint, 1003 BitDepth bitDepth, sk_sp<SkColorSpace> colorSpace) 1004 </pre> 1005 1006 Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromPicture_picture">picture</a>. Returned <a href="#Image">Image</a> width and height are set by dimensions. 1007 <a href="#Image">Image</a> draws <a href="#SkImage_MakeFromPicture_picture">picture</a> with <a href="#SkImage_MakeFromPicture_matrix">matrix</a> and <a href="#SkImage_MakeFromPicture_paint">paint</a>, set to <a href="#SkImage_MakeFromPicture_bitDepth">bitDepth</a> and <a href="#SkImage_colorSpace">colorSpace</a>. 1008 1009 If <a href="#SkImage_MakeFromPicture_matrix">matrix</a> is nullptr, draws with identity <a href="SkMatrix_Reference#Matrix">Matrix</a>. If <a href="#SkImage_MakeFromPicture_paint">paint</a> is nullptr, draws 1010 with default <a href="SkPaint_Reference#Paint">Paint</a>. <a href="#SkImage_colorSpace">colorSpace</a> may be nullptr. 1011 1012 ### Parameters 1013 1014 <table> <tr> <td><a name="SkImage_MakeFromPicture_picture"> <code><strong>picture </strong></code> </a></td> <td> 1015 stream of drawing commands</td> 1016 </tr> <tr> <td><a name="SkImage_MakeFromPicture_dimensions"> <code><strong>dimensions </strong></code> </a></td> <td> 1017 width and height</td> 1018 </tr> <tr> <td><a name="SkImage_MakeFromPicture_matrix"> <code><strong>matrix </strong></code> </a></td> <td> 1019 <a href="SkMatrix_Reference#Matrix">Matrix</a> to rotate, scale, translate, and so on; may be nullptr</td> 1020 </tr> <tr> <td><a name="SkImage_MakeFromPicture_paint"> <code><strong>paint </strong></code> </a></td> <td> 1021 <a href="SkPaint_Reference#Paint">Paint</a> to apply transparency, filtering, and so on; may be nullptr</td> 1022 </tr> <tr> <td><a name="SkImage_MakeFromPicture_bitDepth"> <code><strong>bitDepth </strong></code> </a></td> <td> 1023 8 bit integer or 16 bit float: per component</td> 1024 </tr> <tr> <td><a name="SkImage_MakeFromPicture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 1025 range of colors; may be nullptr</td> 1026 </tr> 1027 </table> 1028 1029 ### Return Value 1030 1031 created <a href="#Image">Image</a>, or nullptr 1032 1033 ### Example 1034 1035 <div><fiddle-embed name="4aa2879b9e44dfd6648995326d2c4dcf"></fiddle-embed></div> 1036 1037 ### See Also 1038 1039 <a href="#SkCanvas_drawPicture">SkCanvas::drawPicture</a><sup><a href="#SkCanvas_drawPicture_2">[2]</a></sup><sup><a href="#SkCanvas_drawPicture_3">[3]</a></sup><sup><a href="#SkCanvas_drawPicture_4">[4]</a></sup> 1040 1041 --- 1042 1043 <a name="SkImage_MakeFromAHardwareBuffer"></a> 1044 ## MakeFromAHardwareBuffer 1045 1046 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1047 static sk_sp<SkImage> MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer, 1048 SkAlphaType alphaType = kPremul_SkAlphaType, 1049 sk_sp<SkColorSpace> colorSpace = nullptr) 1050 </pre> 1051 1052 Creates <a href="#Image">Image</a> from Android hardware buffer. 1053 Returned <a href="#Image">Image</a> takes a reference on the buffer. 1054 1055 Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. 1056 1057 ### Parameters 1058 1059 <table> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_hardwareBuffer"> <code><strong>hardwareBuffer </strong></code> </a></td> <td> 1060 AHardwareBuffer Android hardware buffer</td> 1061 </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 1062 one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 1063 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 1064 </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 1065 range of colors; may be nullptr</td> 1066 </tr> 1067 </table> 1068 1069 ### Return Value 1070 1071 created <a href="#Image">Image</a>, or nullptr 1072 1073 ### See Also 1074 1075 <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 1076 1077 --- 1078 1079 <a name="SkImage_width"></a> 1080 ## width 1081 1082 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1083 int width() const 1084 </pre> 1085 1086 Returns pixel count in each row. 1087 1088 ### Return Value 1089 1090 pixel width in <a href="#Image">Image</a> 1091 1092 ### Example 1093 1094 <div><fiddle-embed name="39a6d0bbeac6d957c2338e0bff865cf8"></fiddle-embed></div> 1095 1096 ### See Also 1097 1098 <a href="#SkImage_dimensions">dimensions</a> <a href="#SkImage_height">height</a> 1099 1100 --- 1101 1102 <a name="SkImage_height"></a> 1103 ## height 1104 1105 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1106 int height() const 1107 </pre> 1108 1109 Returns pixel row count. 1110 1111 ### Return Value 1112 1113 pixel height in <a href="#Image">Image</a> 1114 1115 ### Example 1116 1117 <div><fiddle-embed name="6e563cb8351d34bd8af555a51bcd7a96"></fiddle-embed></div> 1118 1119 ### See Also 1120 1121 <a href="#SkImage_dimensions">dimensions</a> <a href="#SkImage_width">width</a> 1122 1123 --- 1124 1125 <a name="SkImage_dimensions"></a> 1126 ## dimensions 1127 1128 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1129 SkISize dimensions() const 1130 </pre> 1131 1132 Returns <a href="undocumented#ISize">ISize</a> { <a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a> }. 1133 1134 ### Return Value 1135 1136 integral size of <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> 1137 1138 ### Example 1139 1140 <div><fiddle-embed name="96b4bc43b3667df9ba9e2dafb770d33c"></fiddle-embed></div> 1141 1142 ### See Also 1143 1144 <a href="#SkImage_height">height</a> <a href="#SkImage_width">width</a> <a href="#SkImage_bounds">bounds</a> 1145 1146 --- 1147 1148 <a name="SkImage_bounds"></a> 1149 ## bounds 1150 1151 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1152 SkIRect bounds() const 1153 </pre> 1154 1155 Returns <a href="SkIRect_Reference#IRect">IRect</a> { 0, 0, <a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a> }. 1156 1157 ### Return Value 1158 1159 integral rectangle from origin to <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> 1160 1161 ### Example 1162 1163 <div><fiddle-embed name="c204b38b3fc08914b0a634aa4eaec894"></fiddle-embed></div> 1164 1165 ### See Also 1166 1167 <a href="#SkImage_dimensions">dimensions</a> 1168 1169 --- 1170 1171 <a name="SkImage_uniqueID"></a> 1172 ## uniqueID 1173 1174 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1175 uint32_t uniqueID() const 1176 </pre> 1177 1178 Returns value unique to image. <a href="#Image">Image</a> contents cannot change after <a href="#Image">Image</a> is 1179 created. Any operation to create a new <a href="#Image">Image</a> will receive generate a new 1180 unique number. 1181 1182 ### Return Value 1183 1184 unique identifier 1185 1186 ### Example 1187 1188 <div><fiddle-embed name="d70194c9c51e700335f95de91846d023"></fiddle-embed></div> 1189 1190 ### See Also 1191 1192 <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> 1193 1194 --- 1195 1196 <a name="SkImage_alphaType"></a> 1197 ## alphaType 1198 1199 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1200 SkAlphaType alphaType() const 1201 </pre> 1202 1203 Returns <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 1204 <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a>. 1205 1206 <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> returned was a parameter to an <a href="#Image">Image</a> constructor, 1207 or was parsed from encoded data. 1208 1209 ### Return Value 1210 1211 <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> in <a href="#Image">Image</a> 1212 1213 ### Example 1214 1215 <div><fiddle-embed name="dac1403132a42459d6881585efbfe74b"></fiddle-embed></div> 1216 1217 ### See Also 1218 1219 <a href="#SkImageInfo_alphaType">SkImageInfo::alphaType</a> 1220 1221 --- 1222 1223 <a name="SkImage_colorSpace"></a> 1224 ## colorSpace 1225 1226 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1227 SkColorSpace* colorSpace() const 1228 </pre> 1229 1230 Returns <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with <a href="#Image">Image</a>. The 1231 reference count of <a href="undocumented#Color_Space">Color Space</a> is unchanged. The returned <a href="undocumented#Color_Space">Color Space</a> is 1232 immutable. 1233 1234 <a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor, 1235 or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a> 1236 is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing. 1237 1238 ### Return Value 1239 1240 <a href="undocumented#Color_Space">Color Space</a> in <a href="#Image">Image</a>, or nullptr 1241 1242 ### Example 1243 1244 <div><fiddle-embed name="4468d573f42af6f5e234be10a5453bb2"></fiddle-embed></div> 1245 1246 ### See Also 1247 1248 <a href="#SkImage_refColorSpace">refColorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a> 1249 1250 --- 1251 1252 <a name="SkImage_refColorSpace"></a> 1253 ## refColorSpace 1254 1255 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1256 sk_sp<SkColorSpace> refColorSpace() const 1257 </pre> 1258 1259 Returns a smart pointer to <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with 1260 <a href="#Image">Image</a>. The smart pointer tracks the number of objects sharing this 1261 <a href="undocumented#SkColorSpace">SkColorSpace</a> reference so the memory is released when the owners destruct. 1262 1263 The returned <a href="undocumented#SkColorSpace">SkColorSpace</a> is immutable. 1264 1265 <a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor, 1266 or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a> 1267 is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing. 1268 1269 ### Return Value 1270 1271 <a href="undocumented#Color_Space">Color Space</a> in <a href="#Image">Image</a>, or nullptr, wrapped in a smart pointer 1272 1273 ### Example 1274 1275 <div><fiddle-embed name="59b2078ebfbda8736a57c0486ae33332"></fiddle-embed></div> 1276 1277 ### See Also 1278 1279 <a href="#SkImage_colorSpace">colorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a> 1280 1281 --- 1282 1283 <a name="SkImage_isAlphaOnly"></a> 1284 ## isAlphaOnly 1285 1286 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1287 bool isAlphaOnly() const 1288 </pre> 1289 1290 Returns true if <a href="#Image">Image</a> pixels represent transparency only. If true, each pixel 1291 is packed in 8 bits as defined by <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>. 1292 1293 ### Return Value 1294 1295 true if pixels represent a transparency mask 1296 1297 ### Example 1298 1299 <div><fiddle-embed name="50762c73b8ea91959c5a7b68fbf1062d"> 1300 1301 #### Example Output 1302 1303 ~~~~ 1304 alphaOnly = true 1305 ~~~~ 1306 1307 </fiddle-embed></div> 1308 1309 ### See Also 1310 1311 <a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isOpaque">isOpaque</a> 1312 1313 --- 1314 1315 <a name="SkImage_isOpaque"></a> 1316 ## isOpaque 1317 1318 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1319 bool isOpaque() const 1320 </pre> 1321 1322 Returns true if pixels ignore their <a href="#Alpha">Alpha</a> value and are treated as fully opaque. 1323 1324 ### Return Value 1325 1326 true if <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a> 1327 1328 ### Example 1329 1330 <div><fiddle-embed name="e3340460003b74ee286d625e68589d65"> 1331 1332 #### Example Output 1333 1334 ~~~~ 1335 isOpaque = false 1336 isOpaque = true 1337 ~~~~ 1338 1339 </fiddle-embed></div> 1340 1341 ### See Also 1342 1343 <a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> 1344 1345 --- 1346 1347 <a name="SkImage_makeShader"></a> 1348 ## makeShader 1349 1350 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1351 sk_sp<SkShader> makeShader(SkShader::TileMode tileMode1, SkShader::TileMode tileMode2, 1352 const SkMatrix* localMatrix = nullptr) const 1353 </pre> 1354 1355 Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> dimensions are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses 1356 <a href="#SkShader_TileMode">SkShader::TileMode</a> rules to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_localMatrix">localMatrix</a> permits 1357 transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied. 1358 1359 ### Parameters 1360 1361 <table> <tr> <td><a name="SkImage_makeShader_tileMode1"> <code><strong>tileMode1 </strong></code> </a></td> <td> 1362 tiling in x, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>, 1363 <a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td> 1364 </tr> <tr> <td><a name="SkImage_makeShader_tileMode2"> <code><strong>tileMode2 </strong></code> </a></td> <td> 1365 tiling in y, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>, 1366 <a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td> 1367 </tr> <tr> <td><a name="SkImage_makeShader_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> 1368 <a href="#Image">Image</a> transformation, or nullptr</td> 1369 </tr> 1370 </table> 1371 1372 ### Return Value 1373 1374 <a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a> 1375 1376 ### Example 1377 1378 <div><fiddle-embed name="1c6de6fe72b00b5be970f5f718363449"></fiddle-embed></div> 1379 1380 ### See Also 1381 1382 <a href="#SkImage_scalePixels">scalePixels</a> 1383 1384 --- 1385 1386 <a name="SkImage_makeShader_2"></a> 1387 1388 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1389 sk_sp<SkShader> makeShader(const SkMatrix* localMatrix = nullptr) const 1390 </pre> 1391 1392 Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> dimensions are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses 1393 <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_2_localMatrix">localMatrix</a> permits 1394 transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied. 1395 1396 ### Parameters 1397 1398 <table> <tr> <td><a name="SkImage_makeShader_2_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> 1399 <a href="#Image">Image</a> transformation, or nullptr</td> 1400 </tr> 1401 </table> 1402 1403 ### Return Value 1404 1405 <a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a> 1406 1407 ### Example 1408 1409 <div><fiddle-embed name="10172fca71b9dbdcade772513ffeb27e"></fiddle-embed></div> 1410 1411 ### See Also 1412 1413 <a href="#SkImage_scalePixels">scalePixels</a> 1414 1415 --- 1416 1417 <a name="SkImage_peekPixels"></a> 1418 ## peekPixels 1419 1420 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1421 bool peekPixels(SkPixmap* pixmap) const 1422 </pre> 1423 1424 Copies <a href="#Image">Image</a> pixel address, row bytes, and <a href="#Info">Image Info</a> to <a href="#SkImage_peekPixels_pixmap">pixmap</a>, if address 1425 is available, and returns true. If pixel address is not available, return 1426 false and leave <a href="#SkImage_peekPixels_pixmap">pixmap</a> unchanged. 1427 1428 ### Parameters 1429 1430 <table> <tr> <td><a name="SkImage_peekPixels_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 1431 storage for pixel state if pixels are readable; otherwise, ignored</td> 1432 </tr> 1433 </table> 1434 1435 ### Return Value 1436 1437 true if <a href="#Image">Image</a> has direct access to pixels 1438 1439 ### Example 1440 1441 <div><fiddle-embed name="900c0eab8dfdecd8301ed5be95887f8e"> 1442 1443 #### Example Output 1444 1445 ~~~~ 1446 ------------ 1447 --xx----x--- 1448 -x--x--x---- 1449 -x--x--x---- 1450 -x--x-x----- 1451 --xx-xx-xx-- 1452 -----x-x--x- 1453 ----x--x--x- 1454 ----x--x--x- 1455 ---x----xx-- 1456 ------------ 1457 ~~~~ 1458 1459 </fiddle-embed></div> 1460 1461 ### See Also 1462 1463 <a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> 1464 1465 --- 1466 1467 <a name="SkImage_getTexture"></a> 1468 ## getTexture 1469 1470 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1471 GrTexture* getTexture() const 1472 </pre> 1473 1474 Deprecated. 1475 1476 --- 1477 1478 <a name="SkImage_isTextureBacked"></a> 1479 ## isTextureBacked 1480 1481 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1482 bool isTextureBacked() const 1483 </pre> 1484 1485 Returns true the contents of <a href="#Image">Image</a> was created on or uploaded to GPU memory, 1486 and is available as a <a href="undocumented#GPU_Texture">GPU Texture</a>. 1487 1488 ### Return Value 1489 1490 true if <a href="#Image">Image</a> is a <a href="undocumented#GPU_Texture">GPU Texture</a> 1491 1492 ### Example 1493 1494 <div><fiddle-embed name="96fd92d399778486a51c5d828ef99322" gpu="true"></fiddle-embed></div> 1495 1496 ### See Also 1497 1498 <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_isValid">isValid</a> 1499 1500 --- 1501 1502 <a name="SkImage_isValid"></a> 1503 ## isValid 1504 1505 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1506 bool isValid(GrContext* context) const 1507 </pre> 1508 1509 Returns true if <a href="#Image">Image</a> can be drawn on either <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Surface">GPU Surface</a>. 1510 If <a href="#SkImage_isValid_context">context</a> is nullptr, tests if <a href="#Image">Image</a> draws on <a href="undocumented#Raster_Surface">Raster Surface</a>; 1511 otherwise, tests if <a href="#Image">Image</a> draws on <a href="undocumented#GPU_Surface">GPU Surface</a> associated with <a href="#SkImage_isValid_context">context</a>. 1512 1513 <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> may become invalid if associated <a href="undocumented#GrContext">GrContext</a> is 1514 invalid. <a href="#Lazy_Image">Lazy Image</a> may be invalid and may not draw to <a href="undocumented#Raster_Surface">Raster Surface</a> or 1515 <a href="undocumented#GPU_Surface">GPU Surface</a> or both. 1516 1517 ### Parameters 1518 1519 <table> <tr> <td><a name="SkImage_isValid_context"> <code><strong>context </strong></code> </a></td> <td> 1520 <a href="undocumented#GPU_Context">GPU Context</a></td> 1521 </tr> 1522 </table> 1523 1524 ### Return Value 1525 1526 true if <a href="#Image">Image</a> can be drawn 1527 1528 ### Example 1529 1530 <div><fiddle-embed name="daf1507ab3a5f7cb0f90058cbc028402" gpu="true"></fiddle-embed></div> 1531 1532 ### See Also 1533 1534 <a href="#SkImage_isTextureBacked">isTextureBacked</a> <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> 1535 1536 --- 1537 1538 <a name="SkImage_getTextureHandle"></a> 1539 ## getTextureHandle 1540 1541 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1542 GrBackendObject getTextureHandle(bool flushPendingGrContextIO, GrSurfaceOrigin* origin = nullptr) const 1543 </pre> 1544 1545 Retrieves the back-end API handle of texture. If <a href="#SkImage_getTextureHandle_flushPendingGrContextIO">flushPendingGrContextIO</a> is true, 1546 complete deferred I/O operations. 1547 1548 If <a href="#SkImage_getTextureHandle_origin">origin</a> in not nullptr, copies location of content drawn into <a href="#Image">Image</a>. 1549 1550 ### Parameters 1551 1552 <table> <tr> <td><a name="SkImage_getTextureHandle_flushPendingGrContextIO"> <code><strong>flushPendingGrContextIO </strong></code> </a></td> <td> 1553 flag to flush outstanding requests</td> 1554 </tr> <tr> <td><a name="SkImage_getTextureHandle_origin"> <code><strong>origin </strong></code> </a></td> <td> 1555 storage for one of: <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a>, 1556 <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>; or nullptr</td> 1557 </tr> 1558 </table> 1559 1560 ### Return Value 1561 1562 back-end API texture handle, or nullptr 1563 1564 ### Example 1565 1566 <div><fiddle-embed name="f8943191063bfcc69f29f2b149df5c6d" gpu="true"></fiddle-embed></div> 1567 1568 ### Example 1569 1570 <div><fiddle-embed name="a86c580638fcf83f782047b95c60f43f" gpu="true"></fiddle-embed></div> 1571 1572 ### See Also 1573 1574 <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_isTextureBacked">isTextureBacked</a> 1575 1576 --- 1577 1578 ## <a name="SkImage_CachingHint"></a> Enum SkImage::CachingHint 1579 1580 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1581 enum <a href="#SkImage_CachingHint">CachingHint</a> { 1582 <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, 1583 <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, 1584 };</pre> 1585 1586 <a href="#SkImage_CachingHint">CachingHint</a> selects whether Skia may internally cache <a href="#Bitmap">Bitmaps</a> generated by 1587 decoding <a href="#Image">Image</a>, or by copying <a href="#Image">Image</a> from GPU to CPU. The default behavior 1588 allows caching <a href="#Bitmap">Bitmaps</a>. 1589 1590 Choose <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a> if <a href="#Image">Image</a> pixels are to be used only once, or 1591 if <a href="#Image">Image</a> pixels reside in a cache outside of Skia, or to reduce memory pressure. 1592 1593 Choosing <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a> does not ensure that pixels will be cached. 1594 <a href="#Image">Image</a> pixels may not be cached if memory requirements are too large or 1595 pixels are not accessible. 1596 1597 ### Constants 1598 1599 <table> 1600 <tr> 1601 <td><a name="SkImage_kAllow_CachingHint"> <code><strong>SkImage::kAllow_CachingHint </strong></code> </a></td><td>0</td><td>Allows Skia to internally cache decoded and copied pixels.</td> 1602 </tr> 1603 <tr> 1604 <td><a name="SkImage_kDisallow_CachingHint"> <code><strong>SkImage::kDisallow_CachingHint </strong></code> </a></td><td>1</td><td>Disallows Skia from internally caching decoded and copied pixels.</td> 1605 </tr> 1606 </table> 1607 1608 ### See Also 1609 1610 <a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> <a href="#SkImage_scalePixels">scalePixels</a> 1611 1612 1613 1614 <a name="SkImage_readPixels"></a> 1615 ## readPixels 1616 1617 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1618 bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY, 1619 CachingHint cachingHint = kAllow_CachingHint) const 1620 </pre> 1621 1622 Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Image">Image</a> to <a href="#SkImage_readPixels_dstPixels">dstPixels</a>. Copy starts at offset (<a href="#SkImage_readPixels_srcX">srcX</a>, <a href="#SkImage_readPixels_srcY">srcY</a>), 1623 and does not exceed <a href="#Image">Image</a> (<a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a>). 1624 1625 <a href="#SkImage_readPixels_dstInfo">dstInfo</a> specifies width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of 1626 destination. <a href="#SkImage_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination row to the next. 1627 Returns true if pixels are copied. Returns false if: 1628 1629 <table> <tr> 1630 <td><a href="#SkImage_readPixels_dstInfo">dstInfo</a>.addr() equals nullptr</td> </tr> <tr> 1631 <td><a href="#SkImage_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">minRowBytes</a></td> </tr> <tr> 1632 <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> 1633 </table> 1634 1635 Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1636 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">colorType</a> must match. 1637 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1638 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_alphaType">alphaType</a> must 1639 match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1640 false if pixel conversion is not possible. 1641 1642 <a href="#SkImage_readPixels_srcX">srcX</a> and <a href="#SkImage_readPixels_srcY">srcY</a> may be negative to copy only top or left of source. Returns 1643 false if <a href="#SkImage_width">width</a> or <a href="#SkImage_height">height</a> is zero or negative. 1644 Returns false ifabs(srcX) >= <a href="#Image">Image</a> <a href="#SkImage_width">width</a>, 1645 or ifabs(srcY) >= <a href="#Image">Image</a> <a href="#SkImage_height">height</a>. 1646 1647 If <a href="#SkImage_readPixels_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1648 If <a href="#SkImage_readPixels_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1649 1650 ### Parameters 1651 1652 <table> <tr> <td><a name="SkImage_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> 1653 destination width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> 1654 </tr> <tr> <td><a name="SkImage_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> 1655 destination pixel storage</td> 1656 </tr> <tr> <td><a name="SkImage_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> 1657 destination row length</td> 1658 </tr> <tr> <td><a name="SkImage_readPixels_srcX"> <code><strong>srcX </strong></code> </a></td> <td> 1659 column index whose absolute value is less than <a href="#SkImage_width">width</a></td> 1660 </tr> <tr> <td><a name="SkImage_readPixels_srcY"> <code><strong>srcY </strong></code> </a></td> <td> 1661 row index whose absolute value is less than <a href="#SkImage_height">height</a></td> 1662 </tr> <tr> <td><a name="SkImage_readPixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1663 one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1664 </tr> 1665 </table> 1666 1667 ### Return Value 1668 1669 true if pixels are copied to <a href="#SkImage_readPixels_dstPixels">dstPixels</a> 1670 1671 ### Example 1672 1673 <div><fiddle-embed name="8aa8ca63dff4641dfc6ea8a3c555d59c"></fiddle-embed></div> 1674 1675 ### See Also 1676 1677 <a href="#SkImage_scalePixels">scalePixels</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a><sup><a href="#SkBitmap_readPixels_2">[2]</a></sup><sup><a href="#SkBitmap_readPixels_3">[3]</a></sup><sup><a href="#SkBitmap_readPixels_4">[4]</a></sup> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a><sup><a href="#SkPixmap_readPixels_2">[2]</a></sup><sup><a href="#SkPixmap_readPixels_3">[3]</a></sup><sup><a href="#SkPixmap_readPixels_4">[4]</a></sup><sup><a href="#SkPixmap_readPixels_5">[5]</a></sup> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a><sup><a href="#SkCanvas_readPixels_2">[2]</a></sup><sup><a href="#SkCanvas_readPixels_3">[3]</a></sup> <a href="#SkSurface_readPixels">SkSurface::readPixels</a><sup><a href="#SkSurface_readPixels_2">[2]</a></sup><sup><a href="#SkSurface_readPixels_3">[3]</a></sup> 1678 1679 --- 1680 1681 <a name="SkImage_readPixels_2"></a> 1682 1683 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1684 bool readPixels(const SkPixmap& dst, int srcX, int srcY, CachingHint cachingHint = kAllow_CachingHint) const 1685 </pre> 1686 1687 Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Image">Image</a> to <a href="#SkImage_readPixels_2_dst">dst</a>. Copy starts at (<a href="#SkImage_readPixels_2_srcX">srcX</a>, <a href="#SkImage_readPixels_2_srcY">srcY</a>), and 1688 does not exceed <a href="#Image">Image</a> (<a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a>). 1689 1690 <a href="#SkImage_readPixels_2_dst">dst</a> specifies width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, 1691 and row bytes of destination. <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> specifics the gap from one destination 1692 row to the next. Returns true if pixels are copied. Returns false if: 1693 1694 <table> <tr> 1695 <td><a href="#SkImage_readPixels_2_dst">dst</a> pixel storage equals nullptr</td> </tr> <tr> 1696 <td><a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> 1697 <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> 1698 </table> 1699 1700 Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1701 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match. 1702 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1703 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must 1704 match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1705 false if pixel conversion is not possible. 1706 <a href="#SkImage_readPixels_2_srcX">srcX</a> and <a href="#SkImage_readPixels_2_srcY">srcY</a> may be negative to copy only top or left of source. Returns 1707 false if <a href="#SkImage_width">width</a> or <a href="#SkImage_height">height</a> is zero or negative. 1708 Returns false ifabs(srcX) >= <a href="#Image">Image</a> <a href="#SkImage_width">width</a>, 1709 or ifabs(srcY) >= <a href="#Image">Image</a> <a href="#SkImage_height">height</a>. 1710 1711 If <a href="#SkImage_readPixels_2_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1712 If <a href="#SkImage_readPixels_2_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1713 1714 ### Parameters 1715 1716 <table> <tr> <td><a name="SkImage_readPixels_2_dst"> <code><strong>dst </strong></code> </a></td> <td> 1717 destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> 1718 </tr> <tr> <td><a name="SkImage_readPixels_2_srcX"> <code><strong>srcX </strong></code> </a></td> <td> 1719 column index whose absolute value is less than <a href="#SkImage_width">width</a></td> 1720 </tr> <tr> <td><a name="SkImage_readPixels_2_srcY"> <code><strong>srcY </strong></code> </a></td> <td> 1721 row index whose absolute value is less than <a href="#SkImage_height">height</a></td> 1722 </tr> <tr> <td><a name="SkImage_readPixels_2_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1723 one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1724 </tr> 1725 </table> 1726 1727 ### Return Value 1728 1729 true if pixels are copied to <a href="#SkImage_readPixels_2_dst">dst</a> 1730 1731 ### Example 1732 1733 <div><fiddle-embed name="b77a73c4baa63a4a8e2a4fdd96144d0b"></fiddle-embed></div> 1734 1735 ### See Also 1736 1737 <a href="#SkImage_scalePixels">scalePixels</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a><sup><a href="#SkBitmap_readPixels_2">[2]</a></sup><sup><a href="#SkBitmap_readPixels_3">[3]</a></sup><sup><a href="#SkBitmap_readPixels_4">[4]</a></sup> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a><sup><a href="#SkPixmap_readPixels_2">[2]</a></sup><sup><a href="#SkPixmap_readPixels_3">[3]</a></sup><sup><a href="#SkPixmap_readPixels_4">[4]</a></sup><sup><a href="#SkPixmap_readPixels_5">[5]</a></sup> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a><sup><a href="#SkCanvas_readPixels_2">[2]</a></sup><sup><a href="#SkCanvas_readPixels_3">[3]</a></sup> <a href="#SkSurface_readPixels">SkSurface::readPixels</a><sup><a href="#SkSurface_readPixels_2">[2]</a></sup><sup><a href="#SkSurface_readPixels_3">[3]</a></sup> 1738 1739 --- 1740 1741 <a name="SkImage_scalePixels"></a> 1742 ## scalePixels 1743 1744 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1745 bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality, 1746 CachingHint cachingHint = kAllow_CachingHint) const 1747 </pre> 1748 1749 Copies <a href="#Image">Image</a> to <a href="#SkImage_scalePixels_dst">dst</a>, scaling pixels to fit <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_width">width</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_height">height</a>, and 1750 converting pixels to match <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a>. Returns true if 1751 pixels are copied. Returns false if <a href="#SkImage_scalePixels_dst">dst</a>.addr() is nullptr, or <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> is 1752 less than <a href="#SkImage_scalePixels_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>. 1753 1754 Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1755 <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match. 1756 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1757 If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must 1758 match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1759 false if pixel conversion is not possible. 1760 1761 Scales the image, with <a href="#SkImage_scalePixels_filterQuality">filterQuality</a>, to match <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_width">width</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_height">height</a>. 1762 <a href="#SkImage_scalePixels_filterQuality">filterQuality</a> <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a> is fastest, typically implemented with 1763 <a href="undocumented#Filter_Quality_Nearest_Neighbor">Filter Quality Nearest Neighbor</a>. <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a> is typically implemented with 1764 <a href="undocumented#Filter_Quality_Bilerp">Filter Quality Bilerp</a>. <a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a> is typically implemented with 1765 <a href="undocumented#Filter_Quality_Bilerp">Filter Quality Bilerp</a>, and <a href="undocumented#Filter_Quality_MipMap">Filter Quality MipMap</a> when size is reduced. 1766 <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a> is slowest, typically implemented with <a href="undocumented#Filter_Quality_BiCubic">Filter Quality BiCubic</a>. 1767 1768 If <a href="#SkImage_scalePixels_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1769 If <a href="#SkImage_scalePixels_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1770 1771 ### Parameters 1772 1773 <table> <tr> <td><a name="SkImage_scalePixels_dst"> <code><strong>dst </strong></code> </a></td> <td> 1774 destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> 1775 </tr> <tr> <td><a name="SkImage_scalePixels_filterQuality"> <code><strong>filterQuality </strong></code> </a></td> <td> 1776 one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>, 1777 <a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a></td> 1778 </tr> <tr> <td><a name="SkImage_scalePixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1779 one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1780 </tr> 1781 </table> 1782 1783 ### Return Value 1784 1785 true if pixels are scaled to fit <a href="#SkImage_scalePixels_dst">dst</a> 1786 1787 ### Example 1788 1789 <div><fiddle-embed name="5949c9a63610cae30019e5b1899ee38f"></fiddle-embed></div> 1790 1791 ### See Also 1792 1793 <a href="#SkCanvas_drawImage">SkCanvas::drawImage</a><sup><a href="#SkCanvas_drawImage_2">[2]</a></sup> <a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> <a href="#SkPixmap_scalePixels">SkPixmap::scalePixels</a> 1794 1795 --- 1796 1797 <a name="SkImage_encodeToData"></a> 1798 ## encodeToData 1799 1800 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1801 sk_sp<SkData> encodeToData(SkEncodedImageFormat encodedImageFormat, int quality) const 1802 </pre> 1803 1804 Encodes <a href="#Image">Image</a> pixels, returning result as <a href="undocumented#SkData">SkData</a>. 1805 1806 Returns nullptr if encoding fails, or if <a href="#SkImage_encodeToData_encodedImageFormat">encodedImageFormat</a> is not supported. 1807 1808 <a href="#Image">Image</a> encoding in a format requires both building with one or more of: 1809 SK_HAS_JPEG_LIBRARY, SK_HAS_PNG_LIBRARY, SK_HAS_WEBP_LIBRARY; and platform support 1810 for the encoded format. 1811 1812 If SK_BUILD_FOR_MAC or SK_BUILD_FOR_IOS is defined, <a href="#SkImage_encodeToData_encodedImageFormat">encodedImageFormat</a> can 1813 additionally be one of: <a href="#SkEncodedImageFormat_kICO">SkEncodedImageFormat::kICO</a>, <a href="#SkEncodedImageFormat_kBMP">SkEncodedImageFormat::kBMP</a>, 1814 <a href="#SkEncodedImageFormat_kGIF">SkEncodedImageFormat::kGIF</a>. 1815 1816 <a href="#SkImage_encodeToData_quality">quality</a> is a platform and format specific metric trading off size and encoding 1817 error. When used, <a href="#SkImage_encodeToData_quality">quality</a> equaling 100 encodes with the least error. <a href="#SkImage_encodeToData_quality">quality</a> may 1818 be ignored by the encoder. 1819 1820 ### Parameters 1821 1822 <table> <tr> <td><a name="SkImage_encodeToData_encodedImageFormat"> <code><strong>encodedImageFormat </strong></code> </a></td> <td> 1823 one of: <a href="#SkEncodedImageFormat_kJPEG">SkEncodedImageFormat::kJPEG</a>, <a href="#SkEncodedImageFormat_kPNG">SkEncodedImageFormat::kPNG</a>, 1824 <a href="#SkEncodedImageFormat_kWEBP">SkEncodedImageFormat::kWEBP</a></td> 1825 </tr> <tr> <td><a name="SkImage_encodeToData_quality"> <code><strong>quality </strong></code> </a></td> <td> 1826 encoder specific metric with 100 equaling best</td> 1827 </tr> 1828 </table> 1829 1830 ### Return Value 1831 1832 encoded <a href="#Image">Image</a>, or nullptr 1833 1834 ### Example 1835 1836 <div><fiddle-embed name="7a3bf8851bb7160e4e49c48f8c09639d"></fiddle-embed></div> 1837 1838 ### See Also 1839 1840 <a href="#SkImage_refEncodedData">refEncodedData</a> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1841 1842 --- 1843 1844 <a name="SkImage_encodeToData_2"></a> 1845 1846 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1847 sk_sp<SkData> encodeToData() const 1848 </pre> 1849 1850 Encodes <a href="#Image">Image</a> pixels, returning result as <a href="undocumented#SkData">SkData</a>. Returns existing encoded data 1851 if present; otherwise, <a href="#Image">Image</a> is encoded with <a href="#SkEncodedImageFormat_kPNG">SkEncodedImageFormat::kPNG</a>. Skia 1852 must be built with SK_HAS_PNG_LIBRARY to encode <a href="#Image">Image</a>. 1853 1854 Returns nullptr if existing encoded data is missing or invalid, and 1855 encoding fails. 1856 1857 ### Return Value 1858 1859 encoded <a href="#Image">Image</a>, or nullptr 1860 1861 ### Example 1862 1863 <div><fiddle-embed name="30cee813f6aa476b0a9c8a24283e53a3"></fiddle-embed></div> 1864 1865 ### See Also 1866 1867 <a href="#SkImage_refEncodedData">refEncodedData</a> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1868 1869 --- 1870 1871 <a name="SkImage_refEncodedData"></a> 1872 ## refEncodedData 1873 1874 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1875 sk_sp<SkData> refEncodedData() const 1876 </pre> 1877 1878 Returns encoded <a href="#Image">Image</a> pixels as <a href="undocumented#SkData">SkData</a>, if <a href="#Image">Image</a> was created from supported 1879 encoded stream format. Platform support for formats vary and may require building 1880 with one or more of: SK_HAS_JPEG_LIBRARY, SK_HAS_PNG_LIBRARY, SK_HAS_WEBP_LIBRARY. 1881 1882 Returns nullptr if <a href="#Image">Image</a> contents are not encoded. 1883 1884 ### Return Value 1885 1886 encoded <a href="#Image">Image</a>, or nullptr 1887 1888 ### Example 1889 1890 <div><fiddle-embed name="91866923b37edd673c18232fdf3eabd8" gpu="true"></fiddle-embed></div> 1891 1892 ### See Also 1893 1894 <a href="#SkImage_encodeToData">encodeToData</a><sup><a href="#SkImage_encodeToData_2">[2]</a></sup> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1895 1896 --- 1897 1898 <a name="SkImage_toString"></a> 1899 ## toString 1900 1901 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1902 const char* toString(SkString* string) const 1903 </pre> 1904 1905 Appends <a href="#Image">Image</a> description to <a href="#SkImage_toString_string">string</a>, including unique ID, width, height, and 1906 whether the image is opaque. 1907 1908 ### Parameters 1909 1910 <table> <tr> <td><a name="SkImage_toString_string"> <code><strong>string </strong></code> </a></td> <td> 1911 storage for description; existing content is preserved</td> 1912 </tr> 1913 </table> 1914 1915 ### Return Value 1916 1917 <a href="#SkImage_toString_string">string</a> appended with <a href="#Image">Image</a> description 1918 1919 ### Example 1920 1921 <div><fiddle-embed name="e5eae6d362434154730e3bacff165ebd"></fiddle-embed></div> 1922 1923 ### See Also 1924 1925 <a href="#SkPaint_toString">SkPaint::toString</a> 1926 1927 --- 1928 1929 <a name="SkImage_makeSubset"></a> 1930 ## makeSubset 1931 1932 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1933 sk_sp<SkImage> makeSubset(const SkIRect& subset) const 1934 </pre> 1935 1936 Returns <a href="#SkImage_makeSubset_subset">subset</a> of <a href="#Image">Image</a>. <a href="#SkImage_makeSubset_subset">subset</a> must be fully contained by <a href="#Image">Image</a> <a href="#SkImage_dimensions">dimensions</a>. 1937 The implementation may share pixels, or may copy them. 1938 1939 Returns nullptr if <a href="#SkImage_makeSubset_subset">subset</a> is empty, or <a href="#SkImage_makeSubset_subset">subset</a> is not contained by bounds, or 1940 pixels in <a href="#Image">Image</a> could not be read or copied. 1941 1942 ### Parameters 1943 1944 <table> <tr> <td><a name="SkImage_makeSubset_subset"> <code><strong>subset </strong></code> </a></td> <td> 1945 bounds of returned <a href="#Image">Image</a></td> 1946 </tr> 1947 </table> 1948 1949 ### Return Value 1950 1951 partial or full <a href="#Image">Image</a>, or nullptr 1952 1953 ### Example 1954 1955 <div><fiddle-embed name="93669037c9eb9d142e7776b9f936fa96"></fiddle-embed></div> 1956 1957 ### See Also 1958 1959 <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1960 1961 --- 1962 1963 <a name="SkImage_makeTextureImage"></a> 1964 ## makeTextureImage 1965 1966 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1967 sk_sp<SkImage> makeTextureImage(GrContext* context, SkColorSpace* dstColorSpace) const 1968 </pre> 1969 1970 Returns <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_makeTextureImage_context">context</a>. Returned <a href="#Image">Image</a> is 1971 compatible with <a href="SkSurface_Reference#Surface">Surface</a> created with <a href="#SkImage_makeTextureImage_dstColorSpace">dstColorSpace</a>. Returns original 1972 <a href="#Image">Image</a> if <a href="#SkImage_makeTextureImage_context">context</a> and <a href="#SkImage_makeTextureImage_dstColorSpace">dstColorSpace</a> match. 1973 1974 Returns nullptr if <a href="#SkImage_makeTextureImage_context">context</a> is nullptr, or if <a href="#Image">Image</a> was created with another 1975 <a href="undocumented#GrContext">GrContext</a>. 1976 1977 ### Parameters 1978 1979 <table> <tr> <td><a name="SkImage_makeTextureImage_context"> <code><strong>context </strong></code> </a></td> <td> 1980 <a href="undocumented#GPU_Context">GPU Context</a></td> 1981 </tr> <tr> <td><a name="SkImage_makeTextureImage_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 1982 range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 1983 </tr> 1984 </table> 1985 1986 ### Return Value 1987 1988 created <a href="#Image">Image</a>, or nullptr 1989 1990 ### Example 1991 1992 <div><fiddle-embed name="7d060e137662b233960200b7b2597ba6" gpu="true"></fiddle-embed></div> 1993 1994 ### See Also 1995 1996 <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> 1997 1998 --- 1999 2000 <a name="SkImage_makeNonTextureImage"></a> 2001 ## makeNonTextureImage 2002 2003 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2004 sk_sp<SkImage> makeNonTextureImage() const 2005 </pre> 2006 2007 Returns <a href="SkImage_Reference#Raster_Image">Raster Image</a> or <a href="#Lazy_Image">Lazy Image</a>. Copies <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> into 2008 CPU memory if needed. Returns original <a href="#Image">Image</a> if unencoded in <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>, 2009 or if encoded in a stream. 2010 2011 Returns nullptr if backed by <a href="undocumented#GPU_Texture">GPU Texture</a> and copy fails. 2012 2013 ### Return Value 2014 2015 <a href="SkImage_Reference#Raster_Image">Raster Image</a>, <a href="#Lazy_Image">Lazy Image</a>, or nullptr 2016 2017 ### Example 2018 2019 <div><fiddle-embed name="220d369551a553f8ba4cd1c21b97a793" gpu="true"></fiddle-embed></div> 2020 2021 ### See Also 2022 2023 incomplete 2024 2025 --- 2026 2027 <a name="SkImage_makeRasterImage"></a> 2028 ## makeRasterImage 2029 2030 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2031 sk_sp<SkImage> makeRasterImage() const 2032 </pre> 2033 2034 Returns <a href="SkImage_Reference#Raster_Image">Raster Image</a>. Copies <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> into CPU memory, 2035 or decodes <a href="#Image">Image</a> from <a href="#Lazy_Image">Lazy Image</a>. Returns original <a href="#Image">Image</a> if unencoded in 2036 <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. 2037 2038 Returns nullptr if copy, decode, or pixel read fails. 2039 2040 ### Return Value 2041 2042 <a href="SkImage_Reference#Raster_Image">Raster Image</a>, or nullptr 2043 2044 ### Example 2045 2046 <div><fiddle-embed name="d821b8e345df9ff0c8cbb6d91c588c02" gpu="true"></fiddle-embed></div> 2047 2048 ### See Also 2049 2050 <a href="#SkImage_isTextureBacked">isTextureBacked</a> <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 2051 2052 --- 2053 2054 <a name="SkImage_makeWithFilter"></a> 2055 ## makeWithFilter 2056 2057 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2058 sk_sp<SkImage> makeWithFilter(const SkImageFilter* filter, const SkIRect& subset, 2059 const SkIRect& clipBounds, SkIRect* outSubset, SkIPoint* offset) const 2060 </pre> 2061 2062 Creates filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_filter">filter</a> processes original <a href="#Image">Image</a>, potentially changing 2063 color, position, and size. <a href="#SkImage_makeWithFilter_subset">subset</a> is the bounds of original <a href="#Image">Image</a> processed 2064 by <a href="#SkImage_makeWithFilter_filter">filter</a>. <a href="#SkImage_makeWithFilter_clipBounds">clipBounds</a> is the expected bounds of the filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> 2065 is required storage for the actual bounds of the filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_offset">offset</a> is 2066 required storage for translation of returned <a href="#Image">Image</a>. 2067 2068 Returns nullptr if <a href="#Image">Image</a> could not be created. If nullptr is returned, <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> 2069 and <a href="#SkImage_makeWithFilter_offset">offset</a> are undefined. 2070 2071 <a href="#SkImage_makeWithFilter">makeWithFilter</a> is optimized to support <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> drawn in an 2072 animation with <a href="undocumented#SkImageFilter">SkImageFilter</a> that vary in size from one frame to the next. The 2073 created <a href="#Image">Image</a> is drawn at an increased size so that <a href="undocumented#GPU_Texture">GPU Texture</a> can be reused 2074 with different sized effects. <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> describes the valid bounds of <a href="undocumented#GPU_Texture">GPU Texture</a> 2075 returned. The returned <a href="#Image">Image</a> may be much larger than required for the <a href="#SkImage_makeWithFilter_filter">filter</a>. 2076 <a href="#SkImage_makeWithFilter_offset">offset</a> translates the returned <a href="#Image">Image</a> to keep subsequent animation frames 2077 aligned with respect to each other. 2078 2079 ### Parameters 2080 2081 <table> <tr> <td><a name="SkImage_makeWithFilter_filter"> <code><strong>filter </strong></code> </a></td> <td> 2082 how <a href="#Image">Image</a> is sampled when transformed</td> 2083 </tr> <tr> <td><a name="SkImage_makeWithFilter_subset"> <code><strong>subset </strong></code> </a></td> <td> 2084 incomplete</td> 2085 </tr> <tr> <td><a name="SkImage_makeWithFilter_clipBounds"> <code><strong>clipBounds </strong></code> </a></td> <td> 2086 incomplete</td> 2087 </tr> <tr> <td><a name="SkImage_makeWithFilter_outSubset"> <code><strong>outSubset </strong></code> </a></td> <td> 2088 incomplete</td> 2089 </tr> <tr> <td><a name="SkImage_makeWithFilter_offset"> <code><strong>offset </strong></code> </a></td> <td> 2090 incomplete</td> 2091 </tr> 2092 </table> 2093 2094 ### Return Value 2095 2096 filtered <a href="#Image">Image</a>, or nullptr 2097 2098 ### Example 2099 2100 <div><fiddle-embed name="eabb12543886ace5e1212af220a19c6d" gpu="true"><div>In each frame of the animation, filtered <a href="#Image">Image</a> is drawn in a different location. 2101 By translating canvas by returned <a href="#SkImage_makeWithFilter_offset">offset</a>, <a href="#Image">Image</a> appears stationary.</div></fiddle-embed></div> 2102 2103 ### See Also 2104 2105 <a href="#SkPaint_setImageFilter">SkPaint::setImageFilter</a> 2106 2107 --- 2108 2109 # <a name="SkImage_DeferredTextureImageUsageParams"></a> Struct SkImage::DeferredTextureImageUsageParams 2110 Used only by Chrome; to be deprecated. 2111 2112 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2113 struct <a href="#SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams</a> { 2114 <a href="#SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams(const SkMatrix matrix, const SkFilterQuality quality, 2115 int preScaleMipLevel)</a>; 2116 <a href="SkMatrix_Reference#SkMatrix">SkMatrix</a> <a href="#SkImage_DeferredTextureImageUsageParams_fMatrix">fMatrix</a>; 2117 <a href="undocumented#SkFilterQuality">SkFilterQuality</a> <a href="#SkImage_DeferredTextureImageUsageParams_fQuality">fQuality</a>; 2118 int <a href="#SkImage_DeferredTextureImageUsageParams_fPreScaleMipLevel">fPreScaleMipLevel</a>; 2119 };</pre> 2120 2121 <a name="SkImage_DeferredTextureImageUsageParams_fMatrix"> <code><strong>SkMatrix fMatrix</strong></code> </a> 2122 2123 <a name="SkImage_DeferredTextureImageUsageParams_fQuality"> <code><strong>SkFilterQuality fQuality</strong></code> </a> 2124 2125 <a name="SkImage_DeferredTextureImageUsageParams_fPreScaleMipLevel"> <code><strong>int fPreScaleMipLevel</strong></code> </a> 2126 2127 <a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams"></a> 2128 ## DeferredTextureImageUsageParams 2129 2130 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2131 DeferredTextureImageUsageParams(const SkMatrix matrix, const SkFilterQuality quality, 2132 int preScaleMipLevel) 2133 </pre> 2134 2135 ### Parameters 2136 2137 <table> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_matrix"> <code><strong>matrix </strong></code> </a></td> <td> 2138 incomplete</td> 2139 </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_quality"> <code><strong>quality </strong></code> </a></td> <td> 2140 incomplete</td> 2141 </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_preScaleMipLevel"> <code><strong>preScaleMipLevel </strong></code> </a></td> <td> 2142 incomplete</td> 2143 </tr> 2144 </table> 2145 2146 ### Return Value 2147 2148 incomplete 2149 2150 ### Example 2151 2152 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2153 2154 ### See Also 2155 2156 incomplete 2157 2158 --- 2159 2160 ### Example 2161 2162 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2163 2164 ### See Also 2165 2166 incomplete 2167 2168 <a name="SkImage_getDeferredTextureImageData"></a> 2169 ## getDeferredTextureImageData 2170 2171 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2172 size_t getDeferredTextureImageData(const GrContextThreadSafeProxy& contextThreadSafeProxy, 2173 const DeferredTextureImageUsageParams deferredTextureImageUsageParams[], 2174 int paramCnt, void* buffer, SkColorSpace* dstColorSpace = nullptr, 2175 SkColorType dstColorType = kN32_SkColorType) const 2176 </pre> 2177 2178 Used only by Chrome; to be deprecated. 2179 2180 This method allows clients to capture the data necessary to turn a <a href="#SkImage">SkImage</a> into a texture- 2181 backed image. If the original image is codec-backed this will decode into a format optimized 2182 for the context represented by the proxy. This method is thread safe with respect to the 2183 <a href="undocumented#GrContext">GrContext</a> whence the proxy came. Clients allocate and manage the storage of the deferred 2184 texture data and control its lifetime. No cleanup is required, thus it is safe to simply free 2185 the memory out from under the data. 2186 2187 The same method is used both for getting the size necessary for pre-uploaded texture data 2188 and for retrieving the data. The params array represents the set of draws over which to 2189 optimize the pre-upload data. 2190 2191 When called with a null <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> this returns the size that the client must allocate in order 2192 to create deferred texture data for this image (or zero if this is an inappropriate 2193 candidate). The <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> allocated by the client should be 8 byte aligned. 2194 2195 When <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is not null this fills in the deferred texture data for this image in the 2196 provided <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> (assuming this is an appropriate candidate image and the <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is 2197 appropriately aligned). Upon success the size written is returned, otherwise 0. 2198 2199 <a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> is the <a href="undocumented#Color_Space">Color Space</a> of the surface where this texture will ultimately be used. 2200 If the method determines that mip-maps are needed, this helps determine the correct strategy 2201 for building them (gamma-correct or not). 2202 2203 <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> is the color type of the surface where this texture will ultimately be used. 2204 This determines the format with which the image will be uploaded to the GPU. If <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> 2205 does not support <a href="undocumented#Color_Space">Color Space</a> (low bit depth types such as <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>), 2206 then <a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> must be null. 2207 2208 ### Parameters 2209 2210 <table> <tr> <td><a name="SkImage_getDeferredTextureImageData_contextThreadSafeProxy"> <code><strong>contextThreadSafeProxy </strong></code> </a></td> <td> 2211 thread safe GPU context</td> 2212 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams"> <code><strong>deferredTextureImageUsageParams </strong></code> </a></td> <td> 2213 array of <a href="#Image">Image</a> transformations</td> 2214 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_paramCnt"> <code><strong>paramCnt </strong></code> </a></td> <td> 2215 entries in <a href="#SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams">deferredTextureImageUsageParams</a> array</td> 2216 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_buffer"> <code><strong>buffer </strong></code> </a></td> <td> 2217 storage for <a href="undocumented#GPU_Texture">GPU Texture</a> data, or nullptr</td> 2218 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 2219 <a href="SkSurface_Reference#Surface">Surface</a> <a href="undocumented#Color_Space">Color Space</a>, or nullptr</td> 2220 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorType"> <code><strong>dstColorType </strong></code> </a></td> <td> 2221 <a href="SkSurface_Reference#Surface">Surface</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a></td> 2222 </tr> 2223 </table> 2224 2225 ### Return Value 2226 2227 size of storage for <a href="undocumented#GPU_Texture">GPU Texture</a> data 2228 2229 ### Example 2230 2231 <div><fiddle-embed name="31d224ac4d22ba60221c565f9a12ad50" gpu="true"></fiddle-embed></div> 2232 2233 ### See Also 2234 2235 <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> 2236 2237 --- 2238 2239 <a name="SkImage_MakeFromDeferredTextureImageData"></a> 2240 ## MakeFromDeferredTextureImageData 2241 2242 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2243 static sk_sp<SkImage> MakeFromDeferredTextureImageData(GrContext* context, const void* data, 2244 SkBudgeted budgeted) 2245 </pre> 2246 2247 Used only by Chrome; to be deprecated. 2248 2249 Returns a texture-backed image from <a href="#SkImage_MakeFromDeferredTextureImageData_data">data</a> produced in <a href="#SkImage_getDeferredTextureImageData">SkImage::getDeferredTextureImageData</a>. 2250 The <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> must be the <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> that provided the proxy passed to 2251 <a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a>. 2252 2253 ### Parameters 2254 2255 <table> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_context"> <code><strong>context </strong></code> </a></td> <td> 2256 <a href="undocumented#GPU_Context">GPU Context</a></td> 2257 </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_data"> <code><strong>data </strong></code> </a></td> <td> 2258 incomplete</td> 2259 </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> 2260 incomplete</td> 2261 </tr> 2262 </table> 2263 2264 ### Return Value 2265 2266 incomplete 2267 2268 ### Example 2269 2270 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2271 2272 ### See Also 2273 2274 incomplete 2275 2276 --- 2277 2278 <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> 2279 2280 <a name="SkImage_MakeBackendTextureFromSkImage"></a> 2281 ## MakeBackendTextureFromSkImage 2282 2283 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2284 static bool MakeBackendTextureFromSkImage(GrContext* context, sk_sp<SkImage> image, 2285 GrBackendTexture* backendTexture, 2286 BackendTextureReleaseProc* backendTextureReleaseProc) 2287 </pre> 2288 2289 Creates a <a href="undocumented#GrBackendTexture">GrBackendTexture</a> from the provided <a href="#SkImage">SkImage</a>. Returns true on success. The 2290 <a href="undocumented#GrBackendTexture">GrBackendTexture</a> and <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> are populated on success. It is the callers 2291 responsibility to call the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> once they have deleted the texture. 2292 Note that the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> allows Skia to clean up auxiliary data related 2293 to the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>, and is not a substitute for the client deleting the <a href="undocumented#GrBackendTexture">GrBackendTexture</a> 2294 themselves. 2295 2296 If <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is both texture backed and singly referenced; that is, its only 2297 reference was transferred using std::move(): <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is returned in <a href="#SkImage_MakeBackendTextureFromSkImage_backendTexture">backendTexture</a> 2298 without conversion or making a copy. 2299 2300 If the <a href="#SkImage">SkImage</a> is not texture backed, this function will generate a texture with the <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a>'s 2301 contents and return that. 2302 2303 ### Parameters 2304 2305 <table> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_context"> <code><strong>context </strong></code> </a></td> <td> 2306 <a href="undocumented#GPU_Context">GPU Context</a></td> 2307 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_image"> <code><strong>image </strong></code> </a></td> <td> 2308 incomplete</td> 2309 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 2310 incomplete</td> 2311 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTextureReleaseProc"> <code><strong>backendTextureReleaseProc </strong></code> </a></td> <td> 2312 incomplete</td> 2313 </tr> 2314 </table> 2315 2316 ### Return Value 2317 2318 incomplete 2319 2320 ### Example 2321 2322 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2323 2324 ### See Also 2325 2326 incomplete 2327 2328 --- 2329 2330 ## <a name="SkImage_LegacyBitmapMode"></a> Enum SkImage::LegacyBitmapMode 2331 2332 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2333 enum <a href="#SkImage_LegacyBitmapMode">LegacyBitmapMode</a> { 2334 <a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, 2335 <a href="#SkImage_kRW_LegacyBitmapMode">kRW LegacyBitmapMode</a>, 2336 };</pre> 2337 2338 Helper functions to convert to <a href="SkBitmap_Reference#SkBitmap">SkBitmap</a> 2339 2340 ### Constants 2341 2342 <table> 2343 <tr> 2344 <td><a name="SkImage_kRO_LegacyBitmapMode"> <code><strong>SkImage::kRO_LegacyBitmapMode </strong></code> </a></td><td>0</td><td></td> 2345 </tr> 2346 <tr> 2347 <td><a name="SkImage_kRW_LegacyBitmapMode"> <code><strong>SkImage::kRW_LegacyBitmapMode </strong></code> </a></td><td>1</td><td></td> 2348 </tr> 2349 </table> 2350 2351 ### Example 2352 2353 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2354 2355 ### See Also 2356 2357 incomplete 2358 2359 2360 2361 <a name="SkImage_asLegacyBitmap"></a> 2362 ## asLegacyBitmap 2363 2364 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2365 bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode) const 2366 </pre> 2367 2368 Creates raster <a href="SkBitmap_Reference#Bitmap">Bitmap</a> with same pixels as <a href="#Image">Image</a>. If <a href="#SkImage_asLegacyBitmap_legacyBitmapMode">legacyBitmapMode</a> is 2369 <a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, returned <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> is read-only and immutable. 2370 Returns true if <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is stored in <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a>. Returns false and resets <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> if 2371 <a href="SkBitmap_Reference#Bitmap">Bitmap</a> write did not succeed. 2372 2373 ### Parameters 2374 2375 <table> <tr> <td><a name="SkImage_asLegacyBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> 2376 storage for legacy <a href="SkBitmap_Reference#Bitmap">Bitmap</a></td> 2377 </tr> <tr> <td><a name="SkImage_asLegacyBitmap_legacyBitmapMode"> <code><strong>legacyBitmapMode </strong></code> </a></td> <td> 2378 one of: <a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, <a href="#SkImage_kRW_LegacyBitmapMode">kRW LegacyBitmapMode</a></td> 2379 </tr> 2380 </table> 2381 2382 ### Return Value 2383 2384 true if <a href="SkBitmap_Reference#Bitmap">Bitmap</a> was created 2385 2386 ### Example 2387 2388 <div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2389 2390 ### See Also 2391 2392 incomplete 2393 2394 --- 2395 2396 <a name="SkImage_isLazyGenerated"></a> 2397 ## isLazyGenerated 2398 2399 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2400 bool isLazyGenerated() const 2401 </pre> 2402 2403 Returns true if <a href="#Image">Image</a> is backed by an image-generator or other service that creates 2404 and caches its pixels or texture on-demand. 2405 2406 ### Return Value 2407 2408 true if <a href="#Image">Image</a> is created as needed 2409 2410 ### Example 2411 2412 <div><fiddle-embed name="a8b8bd4bfe968e2c63085f867665227f"></fiddle-embed></div> 2413 2414 ### Example 2415 2416 <div><fiddle-embed name="070dd0405890b84c07827d93fa01c331" gpu="true"></fiddle-embed></div> 2417 2418 ### See Also 2419 2420 <a href="#SkImage_isTextureBacked">isTextureBacked</a> MakeNonTextureImage 2421 2422 --- 2423 2424 <a name="SkImage_makeColorSpace"></a> 2425 ## makeColorSpace 2426 2427 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2428 sk_sp<SkImage> makeColorSpace(sk_sp<SkColorSpace> target, SkTransferFunctionBehavior premulBehavior) const 2429 </pre> 2430 2431 Creates <a href="#Image">Image</a> in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2432 Returns nullptr if <a href="#Image">Image</a> could not be created. 2433 2434 Returns original <a href="#Image">Image</a> if it is in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2435 Otherwise, converts pixels from <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> to <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2436 If <a href="#Image">Image</a> <a href="#SkImage_colorSpace">colorSpace</a> returns nullptr, <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is assumed to be sRGB. 2437 2438 <a href="undocumented#SkTransferFunctionBehavior">SkTransferFunctionBehavior</a> is to be deprecated. 2439 2440 Set <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> to <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a> to convert <a href="#Image">Image</a> 2441 pixels to a linear space, before converting to destination <a href="SkImageInfo_Reference#Color_Type">Color Type</a> 2442 and <a href="undocumented#Color_Space">Color Space</a>. 2443 2444 Set <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> to <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a> to treat <a href="#Image">Image</a> 2445 pixels as linear, when converting to destination <a href="SkImageInfo_Reference#Color_Type">Color Type</a> 2446 and <a href="undocumented#Color_Space">Color Space</a>, ignoring pixel encoding. 2447 2448 ### Parameters 2449 2450 <table> <tr> <td><a name="SkImage_makeColorSpace_target"> <code><strong>target </strong></code> </a></td> <td> 2451 <a href="undocumented#Color_Space">Color Space</a> describing color range of returned <a href="#Image">Image</a></td> 2452 </tr> <tr> <td><a name="SkImage_makeColorSpace_premulBehavior"> <code><strong>premulBehavior </strong></code> </a></td> <td> 2453 one of: <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>, 2454 <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a></td> 2455 </tr> 2456 </table> 2457 2458 ### Return Value 2459 2460 created <a href="#Image">Image</a> in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a> 2461 2462 ### Example 2463 2464 <div><fiddle-embed name="ab8bcb9acecbee444019a724d2b0503c"></fiddle-embed></div> 2465 2466 ### See Also 2467 2468 MakeFromPixture <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> 2469 2470 --- 2471 2472