Home | History | Annotate | Download | only in api
      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&lt;SkImage&gt; 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&lt;SkImage&gt; MakeRasterData(const Info& info, sk_sp&lt;SkData&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; MakeFromGenerator(std::unique_ptr&lt;SkImageGenerator&gt; 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&lt;SkImage&gt; MakeFromEncoded(sk_sp&lt;SkData&gt; 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&lt;SkImage&gt; MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture,
    423                                       GrSurfaceOrigin origin, SkAlphaType alphaType,
    424                                       sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture,
    455                                       GrSurfaceOrigin origin, SkAlphaType alphaType,
    456                                       sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture,
    493                                       GrSurfaceOrigin origin, SkColorType colorType,
    494                                       SkAlphaType alphaType, sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture,
    542                                       GrSurfaceOrigin origin, SkColorType colorType,
    543                                       SkAlphaType alphaType, sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeCrossContextFromEncoded(GrContext* context, sk_sp&lt;SkData&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; MakeFromAdoptedTexture(GrContext* context,
    705                                              const GrBackendTexture& backendTexture,
    706                                              GrSurfaceOrigin surfaceOrigin,
    707                                              SkAlphaType alphaType = kPremul_SkAlphaType,
    708                                              sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromAdoptedTexture(GrContext* context,
    743                                              const GrBackendTexture& backendTexture,
    744                                              GrSurfaceOrigin surfaceOrigin, SkColorType colorType,
    745                                              SkAlphaType alphaType = kPremul_SkAlphaType,
    746                                              sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace,
    795                                               const GrBackendObject yuvTextureHandles[3],
    796                                               const SkISize yuvSizes[3],
    797                                               GrSurfaceOrigin surfaceOrigin,
    798                                               sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace,
    839                                               const GrBackendTexture yuvTextureHandles[3],
    840                                               const SkISize yuvSizes[3],
    841                                               GrSurfaceOrigin surfaceOrigin,
    842                                               sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace,
    884                                                const GrBackendObject nv12TextureHandles[2],
    885                                                const SkISize nv12Sizes[2],
    886                                                GrSurfaceOrigin surfaceOrigin,
    887                                                sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace,
    930                                                const GrBackendTexture nv12TextureHandles[2],
    931                                                const SkISize nv12Sizes[2],
    932                                                GrSurfaceOrigin surfaceOrigin,
    933                                                sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromPicture(sk_sp&lt;SkPicture&gt; picture, const SkISize& dimensions,
   1002                                       const SkMatrix* matrix, const SkPaint* paint,
   1003                                       BitDepth bitDepth, sk_sp&lt;SkColorSpace&gt; 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&lt;SkImage&gt; MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer,
   1048                                             SkAlphaType alphaType = kPremul_SkAlphaType,
   1049                                             sk_sp&lt;SkColorSpace&gt; 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&lt;SkColorSpace&gt; 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&lt;SkShader&gt; 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&lt;SkShader&gt; 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&lt;SkData&gt; 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&lt;SkData&gt; 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&lt;SkData&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; 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&lt;SkImage&gt; makeColorSpace(sk_sp&lt;SkColorSpace&gt; 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