1 SkImageInfo Reference 2 === 3 4 5 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 6 enum <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> { 7 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, 8 <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, 9 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 10 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, 11 <a href='SkImageInfo_Reference#kLastEnum_SkAlphaType'>kLastEnum_SkAlphaType</a> = <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, 12 }; 13 14 static bool <a href='SkImageInfo_Reference#SkAlphaTypeIsOpaque'>SkAlphaTypeIsOpaque</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at); 15 ; 16 17 enum <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> { 18 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, 19 <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 20 <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 21 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, 22 <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 23 <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 24 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 25 <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, 26 <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 27 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, 28 <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>, 29 <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, 30 <a href='SkImageInfo_Reference#kLastEnum_SkColorType'>kLastEnum_SkColorType</a> = <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, 31 <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> = <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 32 <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> = <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 33 }; 34 35 int <a href='SkImageInfo_Reference#SkColorTypeBytesPerPixel'>SkColorTypeBytesPerPixel</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct); 36 ; 37 38 bool <a href='SkImageInfo_Reference#SkColorTypeIsAlwaysOpaque'>SkColorTypeIsAlwaysOpaque</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct); 39 ; 40 41 bool <a href='SkImageInfo_Reference#SkColorTypeValidateAlphaType'>SkColorTypeValidateAlphaType</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkImage_colorType'>colorType</a>, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImage_alphaType'>alphaType</a>, 42 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>* canonical = nullptr); 43 ; 44 45 enum <a href='SkImageInfo_Reference#SkYUVColorSpace'>SkYUVColorSpace</a> { 46 <a href='SkImageInfo_Reference#kJPEG_SkYUVColorSpace'>kJPEG_SkYUVColorSpace</a>, 47 <a href='SkImageInfo_Reference#kRec601_SkYUVColorSpace'>kRec601_SkYUVColorSpace</a>, 48 <a href='SkImageInfo_Reference#kRec709_SkYUVColorSpace'>kRec709_SkYUVColorSpace</a>, 49 <a href='SkImageInfo_Reference#kLastEnum_SkYUVColorSpace'>kLastEnum_SkYUVColorSpace</a> = <a href='SkImageInfo_Reference#kRec709_SkYUVColorSpace'>kRec709_SkYUVColorSpace</a>, 50 }; 51 52 struct <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> { 53 // <i><a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> interface</i> 54 }; 55 </pre> 56 57 <a href='#Image_Info'>Image_Info</a> specifies the dimensions and encoding of the pixels in a <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>. 58 The dimensions are integral width and height. The encoding is how <a href='undocumented#Pixel'>pixel</a> 59 bits describe <a href='#Color_Alpha'>Color_Alpha</a>, transparency; <a href='SkColor_Reference#Color'>Color</a> components red, blue, 60 and green; and <a href='#Color_Space'>Color_Space</a>, the range and linearity of colors. 61 62 <a href='#Image_Info'>Image_Info</a> describes an uncompressed raster pixels. In contrast, <a href='SkImage_Reference#Image'>Image</a> 63 additionally describes compressed pixels like PNG, and <a href='SkSurface_Reference#Surface'>Surface</a> describes 64 destinations on the GPU. <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a> may be specified by <a href='#Image_Info'>Image_Info</a>, 65 but <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a> may not contain <a href='#Image_Info'>Image_Info</a>. 66 67 <a name='Alpha_Type'></a> 68 69 <a name='SkAlphaType'></a> 70 71 --- 72 73 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 74 enum <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> { 75 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, 76 <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, 77 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 78 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, 79 <a href='SkImageInfo_Reference#kLastEnum_SkAlphaType'>kLastEnum_SkAlphaType</a> = <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, 80 }; 81 82 </pre> 83 84 Describes how to interpret the <a href='SkColor_Reference#Alpha'>alpha</a> component of a <a href='undocumented#Pixel'>pixel</a>. A <a href='undocumented#Pixel'>pixel</a> may 85 be opaque, or <a href='#Color_Alpha'>Color_Alpha</a>, describing multiple levels of transparency. 86 87 In simple blending, <a href='#Color_Alpha'>Color_Alpha</a> <a href='SkPath_Reference#Conic_Weight'>weights</a> the draw <a href='SkColor_Reference#Color'>color</a> and the destination 88 <a href='SkColor_Reference#Color'>color</a> to create a new <a href='SkColor_Reference#Color'>color</a>. If <a href='SkColor_Reference#Alpha'>alpha</a> describes a weight from zero to one, 89 new <a href='SkColor_Reference#Color'>color</a> is set to: <code>draw <a href='SkColor_Reference#Color'>color</a> * <a href='SkColor_Reference#Alpha'>alpha</a> + destination <a href='SkColor_Reference#Color'>color</a> * (1 - <a href='SkColor_Reference#Alpha'>alpha</a>)</code>. 90 91 In practice <a href='SkColor_Reference#Alpha'>alpha</a> is encoded in two or more bits, where 1.0 equals all bits set. 92 93 RGB may have <a href='#Color_Alpha'>Color_Alpha</a> included in each component value; the stored 94 value is the original RGB multiplied by <a href='#Color_Alpha'>Color_Alpha</a>. <a href='undocumented#Premultiply'>Premultiplied</a> <a href='SkColor_Reference#Color'>color</a> 95 components improve performance. 96 97 ### Constants 98 99 <table style='border-collapse: collapse; width: 62.5em'> 100 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 101 <th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 102 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Details</th> 103 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 104 <tr style='background-color: #f0f0f0; '> 105 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kUnknown_SkAlphaType'><code>kUnknown_SkAlphaType</code></a></td> 106 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> 107 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> 108 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 109 <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> is uninitialized. 110 </td> 111 </tr> 112 <tr> 113 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kOpaque_SkAlphaType'><code>kOpaque_SkAlphaType</code></a></td> 114 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 115 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Opaque'>Opaque</a> </td> 116 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 117 Pixels are opaque. The <a href='#Image_Info_Color_Type'>Color_Type</a> must have no explicit <a href='SkColor_Reference#Alpha'>alpha</a> 118 component, or all <a href='SkColor_Reference#Alpha'>alpha</a> components must be set to their maximum value. 119 </td> 120 </tr> 121 <tr style='background-color: #f0f0f0; '> 122 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kPremul_SkAlphaType'><code>kPremul_SkAlphaType</code></a></td> 123 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 124 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Premul'>Premul</a> </td> 125 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 126 Pixels have <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='undocumented#Premultiply'>Premultiplied</a> into <a href='SkColor_Reference#Color'>color</a> components. 127 <a href='SkSurface_Reference#Surface'>Surface</a> pixels must be <a href='undocumented#Premultiply'>Premultiplied</a>. 128 </td> 129 </tr> 130 <tr> 131 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kUnpremul_SkAlphaType'><code>kUnpremul_SkAlphaType</code></a></td> 132 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> 133 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Unpremul'>Unpremul</a> </td> 134 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 135 <a href='undocumented#Pixel'>Pixel</a> <a href='SkColor_Reference#Color'>color</a> component values are independent of <a href='SkColor_Reference#Alpha'>alpha</a> value. 136 Images generated from encoded <a href='undocumented#Data'>data</a> like PNG do not <a href='undocumented#Premultiply'>Premultiply</a> <a href='undocumented#Pixel'>pixel</a> <a href='SkColor_Reference#Color'>color</a> 137 components. <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> is supported for <a href='SkImage_Reference#Image'>Image</a> pixels, but not for 138 <a href='SkSurface_Reference#Surface'>Surface</a> pixels. 139 </td> 140 </tr> 141 <tr style='background-color: #f0f0f0; '> 142 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kLastEnum_SkAlphaType'><code>kLastEnum_SkAlphaType</code></a></td> 143 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> 144 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> 145 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 146 Used by tests to iterate through all valid values. 147 </td> 148 </tr> 149 </table> 150 151 ### See Also 152 153 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a> 154 155 <a name='Alpha_Type_Opaque'></a> 156 157 --- 158 159 Use <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> as a hint to optimize drawing when <a href='SkColor_Reference#Alpha'>Alpha</a> component 160 of all <a href='undocumented#Pixel'>pixel</a> is set to its maximum value of 1.0; all <a href='SkColor_Reference#Alpha'>alpha</a> component bits are set. 161 If <a href='#Image_Info'>Image_Info</a> is set to <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> but all <a href='SkColor_Reference#Alpha'>alpha</a> values are not 1.0, 162 results are undefined. 163 164 ### Example 165 166 <div><fiddle-embed name="79146a1a41d58d22582fdc567c6ffe4e"><div><a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a> parameter a is set to 255, its maximum value, and is interpreted 167 as <a href='#Color_Alpha'>Color_Alpha</a> of 1.0. <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> may be set to improve performance. 168 If <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a> parameter a is set to a value smaller than 255, 169 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a> must be used instead to avoid undefined results. 170 The four displayed values are the original component values, though not necessarily 171 in the same order. 172 </div></fiddle-embed></div> 173 174 <a name='Alpha_Type_Premul'></a> 175 176 --- 177 178 Use <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a> when stored <a href='SkColor_Reference#Color'>color</a> components are the original <a href='SkColor_Reference#Color'>color</a> 179 multiplied by the <a href='SkColor_Reference#Alpha'>alpha</a> component. The <a href='SkColor_Reference#Alpha'>alpha</a> component range of 0.0 to 1.0 is 180 achieved by dividing the integer bit value by the maximum bit value. 181 182 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 183 stored <a href='SkColor_Reference#Color'>color</a> = original <a href='SkColor_Reference#Color'>color</a> * <a href='SkColor_Reference#Alpha'>alpha</a> / max <a href='SkColor_Reference#Alpha'>alpha </a> 184 </pre> 185 186 The <a href='SkColor_Reference#Color'>color</a> component must be equal to or smaller than the <a href='SkColor_Reference#Alpha'>alpha</a> component, 187 or the results are undefined. 188 189 ### Example 190 191 <div><fiddle-embed name="ad696b39c915803d566e96896ec3a36c"><div><a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a> parameter a is set to 150, less than its maximum value, and is 192 interpreted as <a href='#Color_Alpha'>Color_Alpha</a> of about 0.6. <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a> must be set, since 193 <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a> parameter a is set to a value smaller than 255, 194 to avoid undefined results. 195 The four displayed values reflect that the <a href='SkColor_Reference#Alpha'>alpha</a> component has been multiplied 196 by the original <a href='SkColor_Reference#Color'>color</a>. 197 </div></fiddle-embed></div> 198 199 <a name='Alpha_Type_Unpremul'></a> 200 201 --- 202 203 Use <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> if stored <a href='SkColor_Reference#Color'>color</a> components are not divided by the 204 <a href='SkColor_Reference#Alpha'>alpha</a> component. Some drawing destinations may not support 205 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>. 206 207 ### Example 208 209 <div><fiddle-embed name="b8216a9e5ff5bc61a0e46eba7d36307b"><div><a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a> parameter a is set to 150, less than its maximum value, and is 210 interpreted as <a href='#Color_Alpha'>Color_Alpha</a> of about 0.6. <a href='SkColor_Reference#Color'>color</a> is not <a href='undocumented#Premultiply'>Premultiplied</a>; 211 <a href='SkColor_Reference#Color'>color</a> components may have values greater than <a href='SkColor_Reference#Color'>color alpha</a>. 212 The four displayed values are the original component values, though not necessarily 213 in the same order. 214 </div></fiddle-embed></div> 215 216 <a name='SkAlphaTypeIsOpaque'></a> 217 218 --- 219 220 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 221 static bool <a href='SkImageInfo_Reference#SkAlphaTypeIsOpaque'>SkAlphaTypeIsOpaque</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at) 222 </pre> 223 224 Returns true if <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> equals <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> is a 225 hint that the <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is opaque, or that all <a href='SkColor_Reference#Alpha'>alpha</a> values are set to 226 their 1.0 equivalent. If <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is not 227 opaque, then the result of drawing any <a href='undocumented#Pixel'>pixel</a> with a <a href='SkColor_Reference#Alpha'>alpha</a> value less than 228 1.0 is undefined. 229 230 ### Parameters 231 232 <table> <tr> <td><a name='SkAlphaTypeIsOpaque_at'><code><strong>at</strong></code></a></td> 233 <td>one of:</td> 234 </tr> 235 </table> 236 237 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 238 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 239 240 ### Return Value 241 242 true if <a href='#SkAlphaTypeIsOpaque_at'>at</a> equals <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> 243 244 <a name='Color_Type'></a> 245 246 <a name='SkColorType'></a> 247 248 --- 249 250 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 251 enum <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> { 252 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, 253 <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 254 <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 255 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, 256 <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 257 <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 258 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 259 <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, 260 <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 261 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, 262 <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>, 263 <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, 264 <a href='SkImageInfo_Reference#kLastEnum_SkColorType'>kLastEnum_SkColorType</a> = <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, 265 <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> = <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 266 <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> = <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 267 }; 268 269 </pre> 270 271 Describes how <a href='undocumented#Pixel'>pixel</a> bits encode <a href='SkColor_Reference#Color'>color</a>. A <a href='undocumented#Pixel'>pixel</a> may be an <a href='SkColor_Reference#Alpha'>alpha</a> mask, a 272 grayscale, RGB, or ARGB. 273 274 <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> selects the native 32-bit ARGB format. On <a href='#Little_Endian'>Little_Endian</a> 275 processors, pixels containing 8-bit ARGB components pack into 32-bit 276 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>. On <a href='#Big_Endian'>Big_Endian</a> processors, pixels pack into 32-bit 277 <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>. 278 279 ### Constants 280 281 <table style='border-collapse: collapse; width: 62.5em'> 282 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 283 <th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 284 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Details</th> 285 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 286 <tr style='background-color: #f0f0f0; '> 287 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kUnknown_SkColorType'><code>kUnknown_SkColorType</code></a></td> 288 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> 289 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> 290 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 291 <a href='#Image_Info_Color_Type'>Color_Type</a> is set to <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a> by default. If set, 292 encoding format and <a href='undocumented#Size'>size</a> is unknown. 293 </td> 294 </tr> 295 <tr> 296 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kAlpha_8_SkColorType'><code>kAlpha_8_SkColorType</code></a></td> 297 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 298 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_8'>Alpha 8</a> </td> 299 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 300 Stores 8-bit byte <a href='undocumented#Pixel'>pixel</a> encoding that represents transparency. Value of zero 301 is completely transparent; a value of 255 is completely opaque. 302 </td> 303 </tr> 304 <tr style='background-color: #f0f0f0; '> 305 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_565_SkColorType'><code>kRGB_565_SkColorType</code></a></td> 306 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 307 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_565'>RGB 565</a> </td> 308 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 309 Stores 16-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains five bits of blue, 310 six bits of green, and five bits of red. 311 </td> 312 </tr> 313 <tr> 314 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kARGB_4444_SkColorType'><code>kARGB_4444_SkColorType</code></a></td> 315 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> 316 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#ARGB_4444'>ARGB 4444</a> </td> 317 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 318 Stores 16-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains four bits of <a href='SkColor_Reference#Alpha'>alpha</a>, 319 four bits of blue, four bits of green, and four bits of red. 320 </td> 321 </tr> 322 <tr style='background-color: #f0f0f0; '> 323 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_8888_SkColorType'><code>kRGBA_8888_SkColorType</code></a></td> 324 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td> 325 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_8888'>RGBA 8888</a> </td> 326 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 327 Stores 32-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains eight bits of red, 328 eight bits of green, eight bits of blue, and eight bits of <a href='SkColor_Reference#Alpha'>alpha</a>. 329 </td> 330 </tr> 331 <tr> 332 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_888x_SkColorType'><code>kRGB_888x_SkColorType</code></a></td> 333 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td> 334 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_888'>RGB 888</a> </td> 335 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 336 Stores 32-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains eight bits of red, 337 eight bits of green, eight bits of blue, and eight unused bits. 338 </td> 339 </tr> 340 <tr style='background-color: #f0f0f0; '> 341 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kBGRA_8888_SkColorType'><code>kBGRA_8888_SkColorType</code></a></td> 342 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td> 343 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#BGRA_8888'>BGRA 8888</a> </td> 344 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 345 Stores 32-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains eight bits of blue, 346 eight bits of green, eight bits of red, and eight bits of <a href='SkColor_Reference#Alpha'>alpha</a>. 347 </td> 348 </tr> 349 <tr> 350 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_1010102_SkColorType'><code>kRGBA_1010102_SkColorType</code></a></td> 351 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td> 352 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_1010102'>RGBA 1010102</a> </td> 353 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 354 Stores 32-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains ten bits of red, 355 ten bits of green, ten bits of blue, and two bits of <a href='SkColor_Reference#Alpha'>alpha</a>. 356 </td> 357 </tr> 358 <tr style='background-color: #f0f0f0; '> 359 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_101010x_SkColorType'><code>kRGB_101010x_SkColorType</code></a></td> 360 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td> 361 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_101010'>RGB 101010</a> </td> 362 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 363 Stores 32-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains ten bits of red, 364 ten bits of green, ten bits of blue, and two unused bits. 365 </td> 366 </tr> 367 <tr> 368 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kGray_8_SkColorType'><code>kGray_8_SkColorType</code></a></td> 369 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td> 370 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Gray_8'>Gray 8</a> </td> 371 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 372 Stores 8-bit byte <a href='undocumented#Pixel'>pixel</a> encoding that equivalent to equal values for red, 373 blue, and green, representing colors from black to white. 374 </td> 375 </tr> 376 <tr style='background-color: #f0f0f0; '> 377 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_F16_SkColorType'><code>kRGBA_F16_SkColorType</code></a></td> 378 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td> 379 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_F16'>RGBA F16</a> </td> 380 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 381 Stores 64-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains 16 bits of blue, 382 16 bits of green, 16 bits of red, and 16 bits of <a href='SkColor_Reference#Alpha'>alpha</a>. Each component 383 is encoded as a half float. 384 </td> 385 </tr> 386 <tr> 387 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_F32_SkColorType'><code>kRGBA_F32_SkColorType</code></a></td> 388 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td> 389 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_F32'>RGBA F32</a> </td> 390 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 391 Stores 128-bit word <a href='undocumented#Pixel'>pixel</a> encoding that contains 32 bits of blue, 392 32 bits of green, 32 bits of red, and 32 bits of <a href='SkColor_Reference#Alpha'>alpha</a>. Each component 393 is encoded as a single precision float. 394 </td> 395 </tr> 396 <tr style='background-color: #f0f0f0; '> 397 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kLastEnum_SkColorType'><code>kLastEnum_SkColorType</code></a></td> 398 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td> 399 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> 400 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 401 Used by tests to iterate through all valid values. 402 </td> 403 </tr> 404 <tr> 405 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kN32_SkColorType'><code>kN32_SkColorType</code></a></td> 406 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4 or 6</td> 407 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> 408 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 409 Encodes ARGB as either <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a> or 410 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, whichever is native to the platform. 411 </td> 412 </tr> 413 </table> 414 415 ### See Also 416 417 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a> 418 419 <a name='Color_Type_Alpha_8'></a> 420 421 --- 422 423 <a href='SkColor_Reference#Alpha'>Alpha</a> pixels encode transparency without <a href='SkColor_Reference#Color'>color</a> information. Value of zero is 424 completely transparent; a value of 255 is completely opaque. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> 425 pixels do not visibly draw, because its pixels have no <a href='SkColor_Reference#Color'>color</a> information. 426 When <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is set to <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, the paired <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is 427 ignored. 428 429 ### Example 430 431 <div><fiddle-embed name="21ae21e4ce53d2018e042dd457997300"><div><a href='SkColor_Reference#Alpha'>Alpha</a> pixels can modify another draw. orangePaint fills the bounds of <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, 432 with its transparency set to alpha8 <a href='undocumented#Pixel'>pixel</a> value. 433 </div></fiddle-embed></div> 434 435 ### See Also 436 437 <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='#Image_Info_Color_Type_Gray_8'>Gray_8</a> 438 439 <a name='Color_Type_RGB_565'></a> 440 441 --- 442 443 <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a> encodes RGB to fit in a 16-bit word. Red and blue 444 components use five bits describing 32 levels. Green components, more sensitive 445 to the eye, use six bits describing 64 levels. <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a> has no 446 bits for <a href='SkColor_Reference#Alpha'>Alpha</a>. 447 Pixels are fully opaque as if its <a href='#Color_Alpha'>Color_Alpha</a> was set to one, and should 448 always be paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 449 450  451 452 ### Example 453 454 <div><fiddle-embed name="7e7c46bb4572e21e13529ff364eb0a9c"></fiddle-embed></div> 455 456 ### See Also 457 458 <a href='#Image_Info_Color_Type_ARGB_4444'>ARGB_4444</a> <a href='#Image_Info_Color_Type_RGBA_8888'>RGBA_8888</a> 459 460 <a name='Color_Type_ARGB_4444'></a> 461 462 --- 463 464 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a> encodes ARGB to fit in 16-bit word. Each 465 component: <a href='SkColor_Reference#Alpha'>alpha</a>, blue, green, and red; use four bits, describing 16 levels. 466 Note that <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a> is misnamed; the acronym does not 467 describe the actual component order. 468 469  470 471 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: blue, green, and red components are 472 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If blue, green, or red is greater than <a href='SkColor_Reference#Alpha'>alpha</a>, 473 the drawn result is undefined. 474 475 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: <a href='SkColor_Reference#Alpha'>alpha</a>, blue, green, and red components 476 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 477 pixels. 478 479 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 480 blue, green, and red components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 481 less than 15, the drawn result is undefined. 482 483 ### Example 484 485 <div><fiddle-embed name="33a360c3404ac21db801943336843d8e"></fiddle-embed></div> 486 487 ### See Also 488 489 <a href='#Image_Info_Color_Type_RGBA_8888'>RGBA_8888</a> 490 491 <a name='Color_Type_RGBA_8888'></a> 492 493 --- 494 495 <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a> encodes ARGB into a 32-bit word. Each component: 496 red, green, blue, <a href='SkColor_Reference#Alpha'>alpha</a>; use eight bits, describing 256 levels. 497 498  499 500 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: red, green, and blue components are 501 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If red, green, or blue is greater than <a href='SkColor_Reference#Alpha'>alpha</a>, 502 the drawn result is undefined. 503 504 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: <a href='SkColor_Reference#Alpha'>alpha</a>, red, green, and blue components 505 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 506 pixels. 507 508 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 509 red, green, and blue components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 510 less than 255, the drawn result is undefined. 511 512 On <a href='#Big_Endian'>Big_Endian</a> platforms, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a> is the native <a href='#Image_Info_Color_Type'>Color_Type</a>, and 513 will have the best performance. Use <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> to choose the best 514 <a href='#Image_Info_Color_Type'>Color_Type</a> for the platform at compile time. 515 516 ### Example 517 518 <div><fiddle-embed name="947922a19d59893fe7f9d9ee1954379b"></fiddle-embed></div> 519 520 ### See Also 521 522 <a href='#Image_Info_Color_Type_RGB_888'>RGB_888</a> <a href='#Image_Info_Color_Type_BGRA_8888'>BGRA_8888</a> 523 524 <a name='Color_Type_RGB_888'></a> 525 526 --- 527 528 <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a> encodes RGB into a 32-bit word. Each component: 529 red, green, blue; use eight bits, describing 256 levels. Eight bits are 530 unused. Pixels described by <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a> are fully opaque as if 531 their <a href='#Color_Alpha'>Color_Alpha</a> was set to one, and should always be paired with 532 <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 533 534  535 536 ### Example 537 538 <div><fiddle-embed name="4260d6cc15db2c60c07f6fdc8d9ae425"></fiddle-embed></div> 539 540 ### See Also 541 542 <a href='#Image_Info_Color_Type_RGBA_8888'>RGBA_8888</a> <a href='#Image_Info_Color_Type_BGRA_8888'>BGRA_8888</a> 543 544 <a name='Color_Type_BGRA_8888'></a> 545 546 --- 547 548 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> encodes ARGB into a 32-bit word. Each component: 549 blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a>; use eight bits, describing 256 levels. 550 551  552 553 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: blue, green, and red components are 554 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If blue, green, or red is greater than <a href='SkColor_Reference#Alpha'>alpha</a>, 555 the drawn result is undefined. 556 557 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a> components 558 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 559 pixels. 560 561 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 562 blue, green, and red components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 563 less than 255, the drawn result is undefined. 564 565 On <a href='#Little_Endian'>Little_Endian</a> platforms, <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> is the native <a href='#Image_Info_Color_Type'>Color_Type</a>, 566 and will have the best performance. Use <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> to choose the best 567 <a href='#Image_Info_Color_Type'>Color_Type</a> for the platform at compile time. 568 569 ### Example 570 571 <div><fiddle-embed name="945ce5344fce5470f8604b2e06e9f9ae"></fiddle-embed></div> 572 573 ### See Also 574 575 <a href='#Image_Info_Color_Type_RGBA_8888'>RGBA_8888</a> 576 577 <a name='Color_Type_RGBA_1010102'></a> 578 579 --- 580 581 <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a> encodes ARGB into a 32-bit word. Each 582 <a href='SkColor_Reference#Color'>Color</a> component: red, green, and blue; use ten bits, describing 1024 levels. 583 Two bits contain <a href='SkColor_Reference#Alpha'>alpha</a>, describing four levels. Possible <a href='SkColor_Reference#Alpha'>alpha</a> 584 values are zero: fully transparent; one: 33% opaque; two: 67% opaque; 585 three: fully opaque. 586 587 At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision to 588 draw all colors possible to a <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a> <a href='SkSurface_Reference#Surface'>Surface</a>. 589 590  591 592 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: red, green, and blue components are 593 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If red, green, or blue is greater than the 594 <a href='SkColor_Reference#Alpha'>alpha</a> replicated to ten bits, the drawn result is undefined. 595 596 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: <a href='SkColor_Reference#Alpha'>alpha</a>, red, green, and blue components 597 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 598 pixels. 599 600 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 601 red, green, and blue components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 602 less than three, the drawn result is undefined. 603 604 ### Example 605 606 <div><fiddle-embed name="1282dc1127ce1b0061544619ae4de0f0"></fiddle-embed></div> 607 608 ### See Also 609 610 <a href='#Image_Info_Color_Type_RGB_101010'>RGB_101010</a> <a href='#Image_Info_Color_Type_RGBA_8888'>RGBA_8888</a> 611 612 <a name='Color_Type_RGB_101010'></a> 613 614 --- 615 616 <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a> encodes RGB into a 32-bit word. Each 617 <a href='SkColor_Reference#Color'>Color</a> component: red, green, and blue; use ten bits, describing 1024 levels. 618 Two bits are unused. Pixels described by <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a> are fully 619 opaque as if its <a href='#Color_Alpha'>Color_Alpha</a> was set to one, and should always be paired 620 with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 621 622 At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision to 623 draw all colors possible to a <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a> <a href='SkSurface_Reference#Surface'>Surface</a>. 624 625  626 627 ### Example 628 629 <div><fiddle-embed name="92f81aa0459230459600a01e79ccff29"></fiddle-embed></div> 630 631 ### See Also 632 633 <a href='#Image_Info_Color_Type_RGBA_1010102'>RGBA_1010102</a> 634 635 <a name='Color_Type_Gray_8'></a> 636 637 --- 638 639 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a> encodes grayscale level in eight bits that is equivalent 640 to equal values for red, blue, and green, representing colors from black to 641 white. Pixels described by <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a> are fully 642 opaque as if its <a href='#Color_Alpha'>Color_Alpha</a> was set to one, and should always be paired with 643 <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 644 645 ### Example 646 647 <div><fiddle-embed name="93da0eb0b6722a4f33dc7dae094abf0b"></fiddle-embed></div> 648 649 ### See Also 650 651 <a href='#Image_Info_Color_Type_Alpha_8'>Alpha_8</a> 652 653 <a name='Color_Type_RGBA_F16'></a> 654 655 --- 656 657 <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> encodes ARGB into a 64-bit word. Each component: 658 blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a>; use 16 bits, describing a floating <a href='SkPoint_Reference#Point'>point</a> value, 659 from -65500 to 65000 with 3.31 decimal digits of precision. 660 661 At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision or range to 662 draw all colors possible to a <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> <a href='SkSurface_Reference#Surface'>Surface</a>. 663 664 Each component encodes a floating <a href='SkPoint_Reference#Point'>point</a> value using 665 <a href='https://www.khronos.org/opengl/wiki/Small_Float_Formats'>Half floats</a></a>. Meaningful colors are represented by the range 0.0 to 1.0, although smaller 666 and larger values may be useful when used in combination with <a href='#Transfer_Mode'>Transfer_Mode</a>. 667 668  669 670 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: blue, green, and red components are 671 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If blue, green, or red is greater than <a href='SkColor_Reference#Alpha'>alpha</a>, 672 the drawn result is undefined. 673 674 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a> components 675 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 676 pixels. 677 678 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 679 blue, green, and red components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 680 less than one, the drawn result is undefined. 681 682 ### Example 683 684 <div><fiddle-embed name="dd81527bbdf5eaae7dd21ac04ab84f9e"></fiddle-embed></div> 685 686 ### See Also 687 688 <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> 689 690 <a name='Color_Type_RGBA_F32'></a> 691 692 --- 693 694 <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a> encodes ARGB into a 128-bit word. Each component: 695 blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a>; use 32 bits, describing a floating <a href='SkPoint_Reference#Point'>point</a> value, 696 from -3.402823e+38 to 3.402823e+38 with 7.225 decimal digits of precision. 697 698 At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision or range to 699 draw all colors possible to a <a href='SkImageInfo_Reference#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a> <a href='SkSurface_Reference#Surface'>Surface</a>. 700 701 Each component encodes a floating <a href='SkPoint_Reference#Point'>point</a> value using 702 <a href='https://en.wikipedia.org/wiki/Single-precision_floating-point_format'>single-precision floats</a></a>. Meaningful colors are represented by the range 0.0 to 1.0, although smaller 703 and larger values may be useful when used in combination with <a href='#Transfer_Mode'>Transfer_Mode</a>. 704 705  706 707 If paired with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: blue, green, and red components are 708 <a href='undocumented#Premultiply'>Premultiplied</a> by the <a href='SkColor_Reference#Alpha'>alpha</a> value. If blue, green, or red is greater than <a href='SkColor_Reference#Alpha'>alpha</a>, 709 the drawn result is undefined. 710 711 If paired with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: blue, green, red, and <a href='SkColor_Reference#Alpha'>alpha</a> components 712 may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 713 pixels. 714 715 If paired with <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all <a href='SkColor_Reference#Alpha'>alpha</a> component values are at the maximum; 716 blue, green, and red components are fully opaque. If any <a href='SkColor_Reference#Alpha'>alpha</a> component is 717 less than one, the drawn result is undefined. 718 719 ### See Also 720 721 <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> 722 723 <a name='SkColorTypeBytesPerPixel'></a> 724 725 --- 726 727 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 728 int <a href='SkImageInfo_Reference#SkColorTypeBytesPerPixel'>SkColorTypeBytesPerPixel</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct) 729 </pre> 730 731 Returns the number of bytes required to store a <a href='undocumented#Pixel'>pixel</a>, including unused padding. 732 Returns zero if <a href='#SkColorTypeBytesPerPixel_ct'>ct</a> is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a> or invalid. 733 734 ### Parameters 735 736 <table> <tr> <td><a name='SkColorTypeBytesPerPixel_ct'><code><strong>ct</strong></code></a></td> 737 <td>one of:</td> 738 </tr> 739 </table> 740 741 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 742 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 743 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 744 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 745 746 ### Return Value 747 748 bytes per <a href='undocumented#Pixel'>pixel</a> 749 750 ### Example 751 752 <div><fiddle-embed name="09ef49d07cb7005ba3e34d5ea53896f5"><a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 753 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 754 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 755 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 756 </fiddle-embed></div> 757 758 ### See Also 759 760 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a> 761 762 <a name='SkColorTypeIsAlwaysOpaque'></a> 763 764 --- 765 766 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 767 bool <a href='SkImageInfo_Reference#SkColorTypeIsAlwaysOpaque'>SkColorTypeIsAlwaysOpaque</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct) 768 </pre> 769 770 Returns true if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> always decodes <a href='SkColor_Reference#Alpha'>alpha</a> to 1.0, making the <a href='undocumented#Pixel'>pixel</a> 771 fully opaque. If true, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> does not reserve bits to encode <a href='SkColor_Reference#Alpha'>alpha</a>. 772 773 ### Parameters 774 775 <table> <tr> <td><a name='SkColorTypeIsAlwaysOpaque_ct'><code><strong>ct</strong></code></a></td> 776 <td>one of:</td> 777 </tr> 778 </table> 779 780 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 781 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 782 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 783 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 784 785 ### Return Value 786 787 true if <a href='SkColor_Reference#Alpha'>alpha</a> is always set to 1.0 788 789 ### Example 790 791 <div><fiddle-embed name="9b3eb5aaa0dfea9feee54e7650fa5446"><a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 792 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 793 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 794 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 795 </fiddle-embed></div> 796 797 ### See Also 798 799 <a href='SkImageInfo_Reference#SkColorTypeValidateAlphaType'>SkColorTypeValidateAlphaType</a> 800 801 <a name='SkColorTypeValidateAlphaType'></a> 802 803 --- 804 805 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 806 bool <a href='SkImageInfo_Reference#SkColorTypeValidateAlphaType'>SkColorTypeValidateAlphaType</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> colorType, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> alphaType, 807 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>* canonical = nullptr) 808 </pre> 809 810 Returns true if <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> can be set to a valid <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> for <a href='#SkColorTypeValidateAlphaType_colorType'>colorType</a>. If 811 there is more than one valid <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, set to <a href='#SkColorTypeValidateAlphaType_alphaType'>alphaType</a>, if valid. 812 If true is returned and <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> is not nullptr, store valid <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>. 813 814 Returns false only if <a href='#SkColorTypeValidateAlphaType_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#Color_Type'>color type</a> is not 815 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is not always opaque. If false is returned, 816 <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> is ignored. 817 818 For <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>: set <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> to <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a> and return true. 819 For <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>: set <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> to <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a> or 820 <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> and return true if <a href='#SkColorTypeValidateAlphaType_alphaType'>alphaType</a> is not <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 821 For <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, and 822 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>: set <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> to <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> and return true. 823 For <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 824 <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, and <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>: set <a href='#SkColorTypeValidateAlphaType_canonical'>canonical</a> to <a href='#SkColorTypeValidateAlphaType_alphaType'>alphaType</a> 825 and return true if <a href='#SkColorTypeValidateAlphaType_alphaType'>alphaType</a> is not <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 826 827 ### Parameters 828 829 <table> <tr> <td><a name='SkColorTypeValidateAlphaType_colorType'><code><strong>colorType</strong></code></a></td> 830 <td>one of:</td> 831 </tr> 832 </table> 833 834 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 835 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 836 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 837 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 838 839 ### Parameters 840 841 <table> <tr> <td><a name='SkColorTypeValidateAlphaType_alphaType'><code><strong>alphaType</strong></code></a></td> 842 <td>one of:</td> 843 </tr> 844 </table> 845 846 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 847 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 848 849 ### Parameters 850 851 <table> <tr> <td><a name='SkColorTypeValidateAlphaType_canonical'><code><strong>canonical</strong></code></a></td> 852 <td>storage for <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a></td> 853 </tr> 854 </table> 855 856 ### Return Value 857 858 true if valid <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> can be associated with <a href='#SkColorTypeValidateAlphaType_colorType'>colorType</a> 859 860 ### Example 861 862 <div><fiddle-embed name="befac1c29ed21507d367e4d824383a04"><a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 863 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 864 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 865 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 866 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 867 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 868 </fiddle-embed></div> 869 870 ### See Also 871 872 <a href='SkImageInfo_Reference#SkColorTypeIsAlwaysOpaque'>SkColorTypeIsAlwaysOpaque</a> 873 874 <a name='YUV_ColorSpace'></a> 875 876 <a name='SkYUVColorSpace'></a> 877 878 --- 879 880 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 881 enum <a href='SkImageInfo_Reference#SkYUVColorSpace'>SkYUVColorSpace</a> { 882 <a href='SkImageInfo_Reference#kJPEG_SkYUVColorSpace'>kJPEG_SkYUVColorSpace</a>, 883 <a href='SkImageInfo_Reference#kRec601_SkYUVColorSpace'>kRec601_SkYUVColorSpace</a>, 884 <a href='SkImageInfo_Reference#kRec709_SkYUVColorSpace'>kRec709_SkYUVColorSpace</a>, 885 <a href='SkImageInfo_Reference#kLastEnum_SkYUVColorSpace'>kLastEnum_SkYUVColorSpace</a> = <a href='SkImageInfo_Reference#kRec709_SkYUVColorSpace'>kRec709_SkYUVColorSpace</a>, 886 }; 887 888 </pre> 889 890 Describes <a href='SkColor_Reference#Color'>color</a> range of YUV pixels. The <a href='SkColor_Reference#Color'>color</a> mapping from YUV to RGB varies 891 depending on the source. YUV pixels may be generated by JPEG images, standard 892 video streams, or high definition video streams. Each has its own mapping from 893 YUV and RGB. 894 895 JPEG YUV values encode the full range of 0 to 255 for all three components. 896 Video YUV values range from 16 to 235 for all three components. Details of 897 encoding and conversion to RGB are described in 898 <a href='https://en.wikipedia.org/wiki/YCbCr'>YCbCr color space</a></a> . 899 900 ### Constants 901 902 <table style='border-collapse: collapse; width: 62.5em'> 903 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 904 <th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 905 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 906 <tr style='background-color: #f0f0f0; '> 907 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kJPEG_SkYUVColorSpace'><code>kJPEG_SkYUVColorSpace</code></a></td> 908 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> 909 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 910 Describes standard JPEG <a href='undocumented#Color_Space'>color space</a>; 911 <a href='https://en.wikipedia.org/wiki/Rec._601'>CCIR 601</a></a> with full range of 0 to 255 for components. 912 </td> 913 </tr> 914 <tr> 915 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRec601_SkYUVColorSpace'><code>kRec601_SkYUVColorSpace</code></a></td> 916 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 917 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 918 Describes standard used by standard definition television; 919 <a href='https://en.wikipedia.org/wiki/Rec._601'>CCIR 601</a></a> with studio range of 16 to 235 range for components. 920 </td> 921 </tr> 922 <tr style='background-color: #f0f0f0; '> 923 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRec709_SkYUVColorSpace'><code>kRec709_SkYUVColorSpace</code></a></td> 924 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 925 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 926 Describes standard used by high definition television; 927 <a href='https://en.wikipedia.org/wiki/Rec._709'>Rec. 709</a></a> with studio range of 16 to 235 range for components. 928 </td> 929 </tr> 930 <tr> 931 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kLastEnum_SkYUVColorSpace'><code>kLastEnum_SkYUVColorSpace</code></a></td> 932 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 933 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 934 Used by tests to iterate through all valid values. 935 </td> 936 </tr> 937 </table> 938 939 ### See Also 940 941 <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_MakeFromYUVTexturesCopy'>MakeFromYUVTexturesCopy</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_MakeFromNV12TexturesCopy'>MakeFromNV12TexturesCopy</a> 942 943 <a name='SkImageInfo'></a> 944 945 --- 946 947 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 948 struct <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> { 949 950 <a href='#SkImageInfo_empty_constructor'>SkImageInfo()</a>; 951 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_Make'>Make</a>(int width, int height, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at, 952 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr); 953 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a>(int width, int height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at, 954 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr); 955 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a>(int width, int height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at); 956 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a>(int width, int height, <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr); 957 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a>(const <a href='undocumented#SkISize'>SkISize</a>& <a href='undocumented#Size'>size</a>); 958 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a>(int width, int height); 959 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeUnknown'>MakeUnknown</a>(int width, int height); 960 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeUnknown'>MakeUnknown</a>(); 961 int <a href='#SkImageInfo_width'>width()</a> const; 962 int <a href='#SkImageInfo_height'>height()</a> const; 963 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkImageInfo_colorType'>colorType</a>() const; 964 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImageInfo_alphaType'>alphaType</a>() const; 965 <a href='undocumented#SkColorSpace'>SkColorSpace</a>* <a href='#SkImageInfo_colorSpace'>colorSpace</a>() const; 966 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> <a href='#SkImageInfo_refColorSpace'>refColorSpace</a>() const; 967 bool <a href='#SkImageInfo_isEmpty'>isEmpty</a>() const; 968 bool <a href='#SkImageInfo_isOpaque'>isOpaque</a>() const; 969 <a href='undocumented#SkISize'>SkISize</a> <a href='#SkImageInfo_dimensions'>dimensions()</a> const; 970 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkImageInfo_bounds'>bounds()</a> const; 971 bool <a href='#SkImageInfo_gammaCloseToSRGB'>gammaCloseToSRGB</a>() const; 972 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeWH'>makeWH</a>(int newWidth, int newHeight) const; 973 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeAlphaType'>makeAlphaType</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> newAlphaType) const; 974 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeColorType'>makeColorType</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> newColorType) const; 975 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs) const; 976 int <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>() const; 977 int <a href='#SkImageInfo_shiftPerPixel'>shiftPerPixel</a>() const; 978 uint64_t <a href='#SkImageInfo_minRowBytes64'>minRowBytes64</a>() const; 979 size_t <a href='#SkImageInfo_minRowBytes'>minRowBytes</a>() const; 980 size_t <a href='#SkImageInfo_computeOffset'>computeOffset</a>(int x, int y, size_t rowBytes) const; 981 bool <a href='#SkImageInfo_equal1_operator'>operator==</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& other) const; 982 bool <a href='#SkImageInfo_notequal1_operator'>operator!=</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& other) const; 983 size_t <a href='#SkImageInfo_computeByteSize'>computeByteSize</a>(size_t rowBytes) const; 984 size_t <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a>() const; 985 static bool <a href='#SkImageInfo_ByteSizeOverflowed'>ByteSizeOverflowed</a>(size_t byteSize); 986 bool <a href='#SkImageInfo_validRowBytes'>validRowBytes</a>(size_t rowBytes) const; 987 void <a href='#SkImageInfo_reset'>reset()</a>; 988 void <a href='#SkImageInfo_validate'>validate()</a> const; 989 }; 990 991 </pre> 992 993 Describes <a href='undocumented#Pixel'>pixel</a> dimensions and encoding. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>, <a href='SkImage_Reference#Image'>Image</a>, <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>, and <a href='SkSurface_Reference#Surface'>Surface</a> 994 can be created from <a href='#Image_Info'>Image_Info</a>. <a href='#Image_Info'>Image_Info</a> can be retrieved from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> and 995 <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>, but not from <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a>. For example, <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a> 996 implementations may defer <a href='undocumented#Pixel'>pixel</a> depth, so may not completely specify <a href='#Image_Info'>Image_Info</a>. 997 998 <a href='#Image_Info'>Image_Info</a> contains dimensions, the <a href='undocumented#Pixel'>pixel</a> integral width and height. It encodes 999 how <a href='undocumented#Pixel'>pixel</a> bits describe <a href='#Color_Alpha'>Color_Alpha</a>, transparency; <a href='SkColor_Reference#Color'>Color</a> components red, blue, 1000 and green; and <a href='#Color_Space'>Color_Space</a>, the range and linearity of colors. 1001 1002 <a name='SkImageInfo_empty_constructor'></a> 1003 1004 --- 1005 1006 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1007 <a href='#SkImageInfo_empty_constructor'>SkImageInfo()</a> 1008 </pre> 1009 1010 Creates an empty <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, 1011 a width and height of zero, and no <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1012 1013 ### Return Value 1014 1015 empty <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1016 1017 ### Example 1018 1019 <div><fiddle-embed name="f206f698e7a8db3d84334c26b1a702dc"><div>An empty <a href='#Image_Info'>Image_Info</a> may be passed to <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_accessTopLayerPixels'>accessTopLayerPixels</a> as storage 1020 for the <a href='SkCanvas_Reference#Canvas'>Canvas</a> actual <a href='#Image_Info'>Image_Info</a>. 1021 </div></fiddle-embed></div> 1022 1023 ### See Also 1024 1025 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> 1026 1027 <a name='SkImageInfo_Make'></a> 1028 1029 --- 1030 1031 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1032 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_Make'>Make</a>(int width, int height, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> ct, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at, 1033 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr) 1034 </pre> 1035 1036 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_Make_width'>width</a> and <a href='#SkImageInfo_Make_height'>height</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkImageInfo_Make_ct'>ct</a>, 1037 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImageInfo_Make_at'>at</a>, and optionally <a href='undocumented#SkColorSpace'>SkColorSpace</a> <a href='#SkImageInfo_Make_cs'>cs</a>. 1038 1039 If <a href='undocumented#SkColorSpace'>SkColorSpace</a> <a href='#SkImageInfo_Make_cs'>cs</a> is nullptr and <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is part of drawing source: <a href='undocumented#SkColorSpace'>SkColorSpace</a> 1040 defaults to sRGB, mapping into <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1041 1042 Parameters are not validated to see if their values are legal, or that the 1043 combination is supported. 1044 1045 ### Parameters 1046 1047 <table> <tr> <td><a name='SkImageInfo_Make_width'><code><strong>width</strong></code></a></td> 1048 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1049 </tr> 1050 <tr> <td><a name='SkImageInfo_Make_height'><code><strong>height</strong></code></a></td> 1051 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1052 </tr> 1053 <tr> <td><a name='SkImageInfo_Make_ct'><code><strong>ct</strong></code></a></td> 1054 <td>one of:</td> 1055 </tr> 1056 </table> 1057 1058 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 1059 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 1060 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 1061 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1062 1063 ### Parameters 1064 1065 <table> <tr> <td><a name='SkImageInfo_Make_at'><code><strong>at</strong></code></a></td> 1066 <td>one of:</td> 1067 </tr> 1068 </table> 1069 1070 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 1071 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1072 1073 ### Parameters 1074 1075 <table> <tr> <td><a name='SkImageInfo_Make_cs'><code><strong>cs</strong></code></a></td> 1076 <td>range of colors; may be nullptr</td> 1077 </tr> 1078 </table> 1079 1080 ### Return Value 1081 1082 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1083 1084 ### Example 1085 1086 <div><fiddle-embed name="9f47f9c2a99473f5b1113db48096d586"></fiddle-embed></div> 1087 1088 ### See Also 1089 1090 <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> 1091 1092 <a name='SkImageInfo_MakeN32'></a> 1093 1094 --- 1095 1096 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1097 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a>(int width, int height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at, <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr) 1098 </pre> 1099 1100 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_MakeN32_width'>width</a> and <a href='#SkImageInfo_MakeN32_height'>height</a>, <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>, 1101 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImageInfo_MakeN32_at'>at</a>, and optionally <a href='undocumented#SkColorSpace'>SkColorSpace</a> <a href='#SkImageInfo_MakeN32_cs'>cs</a>. <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a> will equal either 1102 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> or <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, whichever is optimal. 1103 1104 If <a href='undocumented#SkColorSpace'>SkColorSpace</a> <a href='#SkImageInfo_MakeN32_cs'>cs</a> is nullptr and <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is part of drawing source: <a href='undocumented#SkColorSpace'>SkColorSpace</a> 1105 defaults to sRGB, mapping into <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1106 1107 Parameters are not validated to see if their values are legal, or that the 1108 combination is supported. 1109 1110 ### Parameters 1111 1112 <table> <tr> <td><a name='SkImageInfo_MakeN32_width'><code><strong>width</strong></code></a></td> 1113 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1114 </tr> 1115 <tr> <td><a name='SkImageInfo_MakeN32_height'><code><strong>height</strong></code></a></td> 1116 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1117 </tr> 1118 <tr> <td><a name='SkImageInfo_MakeN32_at'><code><strong>at</strong></code></a></td> 1119 <td>one of:</td> 1120 </tr> 1121 </table> 1122 1123 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 1124 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1125 1126 ### Parameters 1127 1128 <table> <tr> <td><a name='SkImageInfo_MakeN32_cs'><code><strong>cs</strong></code></a></td> 1129 <td>range of colors; may be nullptr</td> 1130 </tr> 1131 </table> 1132 1133 ### Return Value 1134 1135 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1136 1137 ### Example 1138 1139 <div><fiddle-embed name="78cea0c4cac205b61ad6f6c982cbd888"></fiddle-embed></div> 1140 1141 ### See Also 1142 1143 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> 1144 1145 <a name='SkImageInfo_MakeS32'></a> 1146 1147 --- 1148 1149 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1150 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a>(int width, int height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> at) 1151 </pre> 1152 1153 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_MakeS32_width'>width</a> and <a href='#SkImageInfo_MakeS32_height'>height</a>, <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>, 1154 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImageInfo_MakeS32_at'>at</a>, with sRGB <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1155 1156 Parameters are not validated to see if their values are legal, or that the 1157 combination is supported. 1158 1159 ### Parameters 1160 1161 <table> <tr> <td><a name='SkImageInfo_MakeS32_width'><code><strong>width</strong></code></a></td> 1162 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1163 </tr> 1164 <tr> <td><a name='SkImageInfo_MakeS32_height'><code><strong>height</strong></code></a></td> 1165 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1166 </tr> 1167 <tr> <td><a name='SkImageInfo_MakeS32_at'><code><strong>at</strong></code></a></td> 1168 <td>one of:</td> 1169 </tr> 1170 </table> 1171 1172 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 1173 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1174 1175 ### Return Value 1176 1177 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1178 1179 ### Example 1180 1181 <div><fiddle-embed name="de418ccb42471d1589508ef3955f8c53"><div>Top gradient is drawn to offScreen without <a href='#Color_Space'>Color_Space</a>. It is darker than middle 1182 gradient, drawn to offScreen with sRGB <a href='#Color_Space'>Color_Space</a>. Bottom gradient shares bits 1183 with middle, but does not specify the <a href='#Color_Space'>Color_Space</a> in noColorSpaceBitmap. A source 1184 without <a href='#Color_Space'>Color_Space</a> is treated as sRGB; the bottom gradient is identical to the 1185 middle gradient. 1186 </div></fiddle-embed></div> 1187 1188 ### See Also 1189 1190 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> 1191 1192 <a name='SkImageInfo_MakeN32Premul'></a> 1193 1194 --- 1195 1196 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1197 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a>(int width, int height, <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs = nullptr) 1198 </pre> 1199 1200 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_MakeN32Premul_width'>width</a> and <a href='#SkImageInfo_MakeN32Premul_height'>height</a>, <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>, 1201 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, with optional <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1202 1203 If <a href='undocumented#SkColorSpace'>SkColorSpace</a> <a href='#SkImageInfo_MakeN32Premul_cs'>cs</a> is nullptr and <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is part of drawing source: <a href='undocumented#SkColorSpace'>SkColorSpace</a> 1204 defaults to sRGB, mapping into <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1205 1206 Parameters are not validated to see if their values are legal, or that the 1207 combination is supported. 1208 1209 ### Parameters 1210 1211 <table> <tr> <td><a name='SkImageInfo_MakeN32Premul_width'><code><strong>width</strong></code></a></td> 1212 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1213 </tr> 1214 <tr> <td><a name='SkImageInfo_MakeN32Premul_height'><code><strong>height</strong></code></a></td> 1215 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1216 </tr> 1217 <tr> <td><a name='SkImageInfo_MakeN32Premul_cs'><code><strong>cs</strong></code></a></td> 1218 <td>range of colors; may be nullptr</td> 1219 </tr> 1220 </table> 1221 1222 ### Return Value 1223 1224 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1225 1226 ### Example 1227 1228 <div><fiddle-embed name="525650a67e19fdd8ca9f72b7eda65174"></fiddle-embed></div> 1229 1230 ### See Also 1231 1232 <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> <a href='#SkImageInfo_Make'>Make</a> 1233 1234 <a name='SkImageInfo_MakeN32Premul_2'></a> 1235 1236 --- 1237 1238 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1239 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeN32Premul'>MakeN32Premul</a>(const <a href='undocumented#SkISize'>SkISize</a>& <a href='undocumented#Size'>size</a>) 1240 </pre> 1241 1242 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions width and height, <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>, 1243 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, with <a href='undocumented#SkColorSpace'>SkColorSpace</a> set to nullptr. 1244 1245 If <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is part of drawing source: <a href='undocumented#SkColorSpace'>SkColorSpace</a> defaults to sRGB, mapping 1246 into <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 1247 1248 Parameters are not validated to see if their values are legal, or that the 1249 combination is supported. 1250 1251 ### Parameters 1252 1253 <table> <tr> <td><a name='SkImageInfo_MakeN32Premul_2_size'><code><strong>size</strong></code></a></td> 1254 <td>width and height, each must be zero or greater</td> 1255 </tr> 1256 </table> 1257 1258 ### Return Value 1259 1260 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1261 1262 ### Example 1263 1264 <div><fiddle-embed name="b9026d7f39029756bd7cab9542c64f4e"></fiddle-embed></div> 1265 1266 ### See Also 1267 1268 <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> <a href='#SkImageInfo_Make'>Make</a> 1269 1270 <a name='SkImageInfo_MakeA8'></a> 1271 1272 --- 1273 1274 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1275 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a>(int width, int height) 1276 </pre> 1277 1278 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_MakeA8_width'>width</a> and <a href='#SkImageInfo_MakeA8_height'>height</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 1279 <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, with <a href='undocumented#SkColorSpace'>SkColorSpace</a> set to nullptr. 1280 1281 ### Parameters 1282 1283 <table> <tr> <td><a name='SkImageInfo_MakeA8_width'><code><strong>width</strong></code></a></td> 1284 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1285 </tr> 1286 <tr> <td><a name='SkImageInfo_MakeA8_height'><code><strong>height</strong></code></a></td> 1287 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1288 </tr> 1289 </table> 1290 1291 ### Return Value 1292 1293 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1294 1295 ### Example 1296 1297 <div><fiddle-embed name="547388991687b8e10d482d8b1c82777d"></fiddle-embed></div> 1298 1299 ### See Also 1300 1301 <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_Make'>Make</a> 1302 1303 <a name='SkImageInfo_MakeUnknown'></a> 1304 1305 --- 1306 1307 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1308 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeUnknown'>MakeUnknown</a>(int width, int height) 1309 </pre> 1310 1311 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions <a href='#SkImageInfo_MakeUnknown_width'>width</a> and <a href='#SkImageInfo_MakeUnknown_height'>height</a>, <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, 1312 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, with <a href='undocumented#SkColorSpace'>SkColorSpace</a> set to nullptr. 1313 1314 Returned <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> as part of source does not draw, and as part of destination 1315 can not be drawn to. 1316 1317 ### Parameters 1318 1319 <table> <tr> <td><a name='SkImageInfo_MakeUnknown_width'><code><strong>width</strong></code></a></td> 1320 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1321 </tr> 1322 <tr> <td><a name='SkImageInfo_MakeUnknown_height'><code><strong>height</strong></code></a></td> 1323 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1324 </tr> 1325 </table> 1326 1327 ### Return Value 1328 1329 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1330 1331 ### Example 1332 1333 <div><fiddle-embed name="75f13a78b28b08c72baf32b7d868de1c"></fiddle-embed></div> 1334 1335 ### See Also 1336 1337 <a href='#SkImageInfo_empty_constructor'>SkImageInfo()</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_Make'>Make</a> 1338 1339 <a name='SkImageInfo_MakeUnknown_2'></a> 1340 1341 --- 1342 1343 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1344 static <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_MakeUnknown'>MakeUnknown</a>() 1345 </pre> 1346 1347 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> from integral dimensions width and height set to zero, 1348 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, with <a href='undocumented#SkColorSpace'>SkColorSpace</a> set to nullptr. 1349 1350 Returned <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> as part of source does not draw, and as part of destination 1351 can not be drawn to. 1352 1353 ### Return Value 1354 1355 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1356 1357 ### Example 1358 1359 <div><fiddle-embed name="a1af7696ae0cdd6f379546dd1f211b7a"></fiddle-embed></div> 1360 1361 ### See Also 1362 1363 <a href='#SkImageInfo_empty_constructor'>SkImageInfo()</a> <a href='#SkImageInfo_MakeN32'>MakeN32</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_Make'>Make</a> 1364 1365 <a name='Property'></a> 1366 1367 <a name='SkImageInfo_width'></a> 1368 1369 --- 1370 1371 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1372 int <a href='#SkImageInfo_width'>width()</a>const 1373 </pre> 1374 1375 Returns <a href='undocumented#Pixel'>pixel</a> count in each row. 1376 1377 ### Return Value 1378 1379 <a href='undocumented#Pixel'>pixel</a> width 1380 1381 ### Example 1382 1383 <div><fiddle-embed name="e2491817695290d0218be77f091b8460"></fiddle-embed></div> 1384 1385 ### See Also 1386 1387 <a href='#SkImageInfo_height'>height</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_width'>width</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_width'>width</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_width'>width</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_width'>width</a> 1388 1389 <a name='SkImageInfo_height'></a> 1390 1391 --- 1392 1393 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1394 int <a href='#SkImageInfo_height'>height()</a>const 1395 </pre> 1396 1397 Returns <a href='undocumented#Pixel'>pixel</a> row count. 1398 1399 ### Return Value 1400 1401 <a href='undocumented#Pixel'>pixel</a> height 1402 1403 ### Example 1404 1405 <div><fiddle-embed name="72c35baaeddca1d912edf93d19429c8e"></fiddle-embed></div> 1406 1407 ### See Also 1408 1409 <a href='#SkImageInfo_width'>width</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_height'>height</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_height'>height</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_height'>height</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_height'>height</a> 1410 1411 <a name='SkImageInfo_colorType'></a> 1412 1413 --- 1414 1415 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1416 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkImageInfo_colorType'>colorType</a>()const 1417 </pre> 1418 1419 Returns <a href='#Image_Info_Color_Type'>Color_Type</a>, one of: <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 1420 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 1421 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 1422 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1423 . 1424 1425 ### Return Value 1426 1427 <a href='#Image_Info_Color_Type'>Color_Type</a> 1428 1429 ### Example 1430 1431 <div><fiddle-embed name="06ecc3ce7f35cc7f930cbc2a662e3105"> 1432 1433 #### Example Output 1434 1435 ~~~~ 1436 color type: kAlpha_8_SkColorType 1437 ~~~~ 1438 1439 </fiddle-embed></div> 1440 1441 ### See Also 1442 1443 <a href='#SkImageInfo_alphaType'>alphaType</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_colorType'>colorType</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_colorType'>colorType</a> 1444 1445 <a name='SkImageInfo_alphaType'></a> 1446 1447 --- 1448 1449 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1450 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkImageInfo_alphaType'>alphaType</a>()const 1451 </pre> 1452 1453 Returns <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, one of: <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 1454 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1455 . 1456 1457 ### Return Value 1458 1459 <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> 1460 1461 ### Example 1462 1463 <div><fiddle-embed name="5c1d2499a4056b6cff38c1cf924158a1"> 1464 1465 #### Example Output 1466 1467 ~~~~ 1468 alpha type: kPremul_SkAlphaType 1469 ~~~~ 1470 1471 </fiddle-embed></div> 1472 1473 ### See Also 1474 1475 <a href='#SkImageInfo_colorType'>colorType</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_alphaType'>alphaType</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_alphaType'>alphaType</a> 1476 1477 <a name='SkImageInfo_colorSpace'></a> 1478 1479 --- 1480 1481 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1482 <a href='undocumented#SkColorSpace'>SkColorSpace</a>* <a href='#SkImageInfo_colorSpace'>colorSpace</a>()const 1483 </pre> 1484 1485 Returns <a href='undocumented#SkColorSpace'>SkColorSpace</a>, the range of colors. The reference count of 1486 <a href='undocumented#SkColorSpace'>SkColorSpace</a> is unchanged. The returned <a href='undocumented#SkColorSpace'>SkColorSpace</a> is immutable. 1487 1488 ### Return Value 1489 1490 <a href='undocumented#SkColorSpace'>SkColorSpace</a>, or nullptr 1491 1492 ### Example 1493 1494 <div><fiddle-embed name="5602b816d7cf75e3851274ef36a4c10f"><div><a href='undocumented#SkColorSpace'>SkColorSpace</a>::<a href='#SkColorSpace_MakeSRGBLinear'>MakeSRGBLinear</a> creates <a href='#Color_Space'>Color_Space</a> with linear gamma 1495 and an sRGB gamut. This <a href='#Color_Space'>Color_Space</a> gamma is not close to sRGB gamma. 1496 </div> 1497 1498 #### Example Output 1499 1500 ~~~~ 1501 gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false 1502 ~~~~ 1503 1504 </fiddle-embed></div> 1505 1506 ### See Also 1507 1508 <a href='#Color_Space'>Color_Space</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_colorSpace'>colorSpace</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_colorSpace'>colorSpace</a> 1509 1510 <a name='SkImageInfo_refColorSpace'></a> 1511 1512 --- 1513 1514 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1515 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> <a href='#SkImageInfo_refColorSpace'>refColorSpace</a>()const 1516 </pre> 1517 1518 Returns smart pointer to <a href='undocumented#SkColorSpace'>SkColorSpace</a>, the range of colors. The smart pointer 1519 tracks the number of objects sharing this <a href='undocumented#SkColorSpace'>SkColorSpace</a> reference so the memory 1520 is released when the owners destruct. 1521 1522 The returned <a href='undocumented#SkColorSpace'>SkColorSpace</a> is immutable. 1523 1524 ### Return Value 1525 1526 <a href='undocumented#SkColorSpace'>SkColorSpace</a> wrapped in a smart pointer 1527 1528 ### Example 1529 1530 <div><fiddle-embed name="33f65524736736fd91802b4198ba6fa8"></fiddle-embed></div> 1531 1532 ### See Also 1533 1534 <a href='#Color_Space'>Color_Space</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_refColorSpace'>refColorSpace</a> 1535 1536 <a name='SkImageInfo_isEmpty'></a> 1537 1538 --- 1539 1540 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1541 bool <a href='#SkImageInfo_isEmpty'>isEmpty</a>()const 1542 </pre> 1543 1544 Returns if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> describes an empty area of pixels by checking if either 1545 width or height is zero or smaller. 1546 1547 ### Return Value 1548 1549 true if either dimension is zero or smaller 1550 1551 ### Example 1552 1553 <div><fiddle-embed name="b8757200da5be0b43763cf79feb681a7"> 1554 1555 #### Example Output 1556 1557 ~~~~ 1558 width: 0 height: 0 empty: true 1559 width: 0 height: 2 empty: true 1560 width: 2 height: 0 empty: true 1561 width: 2 height: 2 empty: false 1562 ~~~~ 1563 1564 </fiddle-embed></div> 1565 1566 ### See Also 1567 1568 <a href='#SkImageInfo_dimensions'>dimensions</a> <a href='#SkImageInfo_bounds'>bounds</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_empty'>empty</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_bounds'>bounds</a> 1569 1570 <a name='SkImageInfo_isOpaque'></a> 1571 1572 --- 1573 1574 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1575 bool <a href='#SkImageInfo_isOpaque'>isOpaque</a>()const 1576 </pre> 1577 1578 Returns true if <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is set to hint that all pixels are opaque; their 1579 <a href='SkColor_Reference#Alpha'>alpha</a> value is implicitly or explicitly 1.0. If true, and all pixels are 1580 not opaque, Skia may draw incorrectly. 1581 1582 Does not check if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> allows <a href='SkColor_Reference#Alpha'>alpha</a>, or if any <a href='undocumented#Pixel'>pixel</a> value has 1583 transparency. 1584 1585 ### Return Value 1586 1587 true if <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> 1588 1589 ### Example 1590 1591 <div><fiddle-embed name="e9bd4f02b6cfb3ac864cb7fee7d7299c"> 1592 1593 #### Example Output 1594 1595 ~~~~ 1596 isOpaque: false 1597 isOpaque: false 1598 isOpaque: true 1599 isOpaque: true 1600 ~~~~ 1601 1602 </fiddle-embed></div> 1603 1604 ### See Also 1605 1606 <a href='#Color_Alpha'>Color_Alpha</a> <a href='SkImageInfo_Reference#SkColorTypeValidateAlphaType'>SkColorTypeValidateAlphaType</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_isOpaque'>isOpaque</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_isOpaque'>isOpaque</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_isOpaque'>isOpaque</a> 1607 1608 <a name='SkImageInfo_dimensions'></a> 1609 1610 --- 1611 1612 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1613 <a href='undocumented#SkISize'>SkISize</a> <a href='#SkImageInfo_dimensions'>dimensions()</a>const 1614 </pre> 1615 1616 Returns <a href='undocumented#SkISize'>SkISize</a> { <a href='#SkImageInfo_width'>width()</a>, <a href='#SkImageInfo_height'>height()</a> }. 1617 1618 ### Return Value 1619 1620 integral <a href='undocumented#Size'>size</a> of <a href='#SkImageInfo_width'>width()</a> and <a href='#SkImageInfo_height'>height()</a> 1621 1622 ### Example 1623 1624 <div><fiddle-embed name="d5547cd2b302822aa85b7b0ae3f48458"> 1625 1626 #### Example Output 1627 1628 ~~~~ 1629 dimensionsAsBounds == bounds 1630 ~~~~ 1631 1632 </fiddle-embed></div> 1633 1634 ### See Also 1635 1636 <a href='#SkImageInfo_width'>width</a> <a href='#SkImageInfo_height'>height</a> <a href='#SkImageInfo_bounds'>bounds</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_dimensions'>dimensions</a> 1637 1638 <a name='SkImageInfo_bounds'></a> 1639 1640 --- 1641 1642 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1643 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkImageInfo_bounds'>bounds()</a>const 1644 </pre> 1645 1646 Returns <a href='SkIRect_Reference#SkIRect'>SkIRect</a> { 0, 0, <a href='#SkImageInfo_width'>width()</a>, <a href='#SkImageInfo_height'>height()</a> }. 1647 1648 ### Return Value 1649 1650 integral rectangle from origin to <a href='#SkImageInfo_width'>width()</a> and <a href='#SkImageInfo_height'>height()</a> 1651 1652 ### Example 1653 1654 <div><fiddle-embed name="a818be8945cd0c18f99ffe53e90afa48"></fiddle-embed></div> 1655 1656 ### See Also 1657 1658 <a href='#SkImageInfo_width'>width</a> <a href='#SkImageInfo_height'>height</a> <a href='#SkImageInfo_dimensions'>dimensions</a> 1659 1660 <a name='SkImageInfo_gammaCloseToSRGB'></a> 1661 1662 --- 1663 1664 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1665 bool <a href='#SkImageInfo_gammaCloseToSRGB'>gammaCloseToSRGB</a>()const 1666 </pre> 1667 1668 Returns true if associated <a href='#Color_Space'>Color_Space</a> is not nullptr, and <a href='#Color_Space'>Color_Space</a> gamma 1669 is approximately the same as sRGB. 1670 This includes the 1671 <a href='https://en.wikipedia.org/wiki/SRGB#The_sRGB_transfer_function_(%22gamma%22)'>sRGB transfer function</a></a> as well as a gamma <a href='undocumented#Curve'>curve</a> described by a 2.2 exponent. 1672 1673 ### Return Value 1674 1675 true if <a href='#Color_Space'>Color_Space</a> gamma is approximately the same as sRGB 1676 1677 ### Example 1678 1679 <div><fiddle-embed name="22df72732e898a11773fbfe07388a546"></fiddle-embed></div> 1680 1681 ### See Also 1682 1683 <a href='undocumented#SkColorSpace'>SkColorSpace</a>::<a href='#SkColorSpace_gammaCloseToSRGB'>gammaCloseToSRGB</a> 1684 1685 <a name='SkImageInfo_makeWH'></a> 1686 1687 --- 1688 1689 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1690 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeWH'>makeWH</a>(int newWidth, int newHeight)const 1691 </pre> 1692 1693 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with the same <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a>, and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, 1694 with dimensions set to width and height. 1695 1696 ### Parameters 1697 1698 <table> <tr> <td><a name='SkImageInfo_makeWH_newWidth'><code><strong>newWidth</strong></code></a></td> 1699 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1700 </tr> 1701 <tr> <td><a name='SkImageInfo_makeWH_newHeight'><code><strong>newHeight</strong></code></a></td> 1702 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1703 </tr> 1704 </table> 1705 1706 ### Return Value 1707 1708 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1709 1710 ### Example 1711 1712 <div><fiddle-embed name="cd203a3f9c5fb68272f21f302dd54fbc"></fiddle-embed></div> 1713 1714 ### See Also 1715 1716 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_makeAlphaType'>makeAlphaType</a> <a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a> <a href='#SkImageInfo_makeColorType'>makeColorType</a> 1717 1718 <a name='SkImageInfo_makeAlphaType'></a> 1719 1720 --- 1721 1722 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1723 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeAlphaType'>makeAlphaType</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> newAlphaType)const 1724 </pre> 1725 1726 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with same <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a>, width, and height, 1727 with <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> set to <a href='#SkImageInfo_makeAlphaType_newAlphaType'>newAlphaType</a>. 1728 1729 Created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> contains <a href='#SkImageInfo_makeAlphaType_newAlphaType'>newAlphaType</a> even if it is incompatible with 1730 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, in which case <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is ignored. 1731 1732 ### Parameters 1733 1734 <table> <tr> <td><a name='SkImageInfo_makeAlphaType_newAlphaType'><code><strong>newAlphaType</strong></code></a></td> 1735 <td>one of:</td> 1736 </tr> 1737 </table> 1738 1739 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>, 1740 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1741 1742 ### Return Value 1743 1744 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1745 1746 ### Example 1747 1748 <div><fiddle-embed name="e72db006f1bea26feceaef8727ff9818"></fiddle-embed></div> 1749 1750 ### See Also 1751 1752 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_MakeA8'>MakeA8</a> <a href='#SkImageInfo_makeColorType'>makeColorType</a> <a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a> 1753 1754 <a name='SkImageInfo_makeColorType'></a> 1755 1756 --- 1757 1758 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1759 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeColorType'>makeColorType</a>(<a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> newColorType)const 1760 </pre> 1761 1762 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with same <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a>, width, and height, 1763 with <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> set to <a href='#SkImageInfo_makeColorType_newColorType'>newColorType</a>. 1764 1765 ### Parameters 1766 1767 <table> <tr> <td><a name='SkImageInfo_makeColorType_newColorType'><code><strong>newColorType</strong></code></a></td> 1768 <td>one of:</td> 1769 </tr> 1770 </table> 1771 1772 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 1773 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 1774 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, 1775 <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1776 1777 ### Return Value 1778 1779 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1780 1781 ### Example 1782 1783 <div><fiddle-embed name="3ac267b08b12dc83c95f91d8dd5d70ee"></fiddle-embed></div> 1784 1785 ### See Also 1786 1787 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_makeAlphaType'>makeAlphaType</a> <a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a> 1788 1789 <a name='SkImageInfo_makeColorSpace'></a> 1790 1791 --- 1792 1793 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1794 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> cs)const 1795 </pre> 1796 1797 Creates <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with same <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, width, and height, 1798 with <a href='undocumented#SkColorSpace'>SkColorSpace</a> set to <a href='#SkImageInfo_makeColorSpace_cs'>cs</a>. 1799 1800 ### Parameters 1801 1802 <table> <tr> <td><a name='SkImageInfo_makeColorSpace_cs'><code><strong>cs</strong></code></a></td> 1803 <td>range of colors; may be nullptr</td> 1804 </tr> 1805 </table> 1806 1807 ### Return Value 1808 1809 created <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 1810 1811 ### Example 1812 1813 <div><fiddle-embed name="fe3c5a755d3dde29bba058a583f18901"></fiddle-embed></div> 1814 1815 ### See Also 1816 1817 <a href='#SkImageInfo_Make'>Make</a> <a href='#SkImageInfo_MakeS32'>MakeS32</a> <a href='#SkImageInfo_makeAlphaType'>makeAlphaType</a> <a href='#SkImageInfo_makeColorType'>makeColorType</a> 1818 1819 <a name='SkImageInfo_bytesPerPixel'></a> 1820 1821 --- 1822 1823 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1824 int <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>()const 1825 </pre> 1826 1827 Returns number of bytes per <a href='undocumented#Pixel'>pixel</a> required by <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 1828 Returns zero if <a href='#SkImageInfo_colorType'>colorType</a>( is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 1829 1830 ### Return Value 1831 1832 bytes in <a href='undocumented#Pixel'>pixel</a> 1833 1834 ### Example 1835 1836 <div><fiddle-embed name="9b6de4a07b2316228e9340e5a3b82134"><a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 1837 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 1838 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 1839 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1840 1841 #### Example Output 1842 1843 ~~~~ 1844 color: kUnknown_SkColorType bytesPerPixel: 0 1845 color: kAlpha_8_SkColorType bytesPerPixel: 1 1846 color: kRGB_565_SkColorType bytesPerPixel: 2 1847 color: kARGB_4444_SkColorType bytesPerPixel: 2 1848 color: kRGBA_8888_SkColorType bytesPerPixel: 4 1849 color: kRGB_888x_SkColorType bytesPerPixel: 4 1850 color: kBGRA_8888_SkColorType bytesPerPixel: 4 1851 color: kRGBA_1010102_SkColorType bytesPerPixel: 4 1852 color: kRGB_101010x_SkColorType bytesPerPixel: 4 1853 color: kGray_8_SkColorType bytesPerPixel: 1 1854 color: kRGBA_F16_SkColorType bytesPerPixel: 8 1855 ~~~~ 1856 1857 </fiddle-embed></div> 1858 1859 ### See Also 1860 1861 <a href='#SkImageInfo_width'>width</a> <a href='#SkImageInfo_shiftPerPixel'>shiftPerPixel</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a> 1862 1863 <a name='SkImageInfo_shiftPerPixel'></a> 1864 1865 --- 1866 1867 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1868 int <a href='#SkImageInfo_shiftPerPixel'>shiftPerPixel</a>()const 1869 </pre> 1870 1871 Returns bit shift converting row bytes to row pixels. 1872 Returns zero for <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 1873 1874 ### Return Value 1875 1876 one of: 0, 1, 2, 3; left shift to convert pixels to bytes 1877 1878 ### Example 1879 1880 <div><fiddle-embed name="e47b911f94fc629f756a829e523a2a89"><a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, 1881 <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a>, 1882 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_1010102_SkColorType'>kRGBA_1010102_SkColorType</a>, <a href='SkImageInfo_Reference#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, 1883 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1884 1885 #### Example Output 1886 1887 ~~~~ 1888 color: kUnknown_SkColorType shiftPerPixel: 0 1889 color: kAlpha_8_SkColorType shiftPerPixel: 0 1890 color: kRGB_565_SkColorType shiftPerPixel: 1 1891 color: kARGB_4444_SkColorType shiftPerPixel: 1 1892 color: kRGBA_8888_SkColorType shiftPerPixel: 2 1893 color: kRGB_888x_SkColorType shiftPerPixel: 2 1894 color: kBGRA_8888_SkColorType shiftPerPixel: 2 1895 color: kRGBA_1010102_SkColorType shiftPerPixel: 2 1896 color: kRGB_101010x_SkColorType shiftPerPixel: 2 1897 color: kGray_8_SkColorType shiftPerPixel: 0 1898 color: kRGBA_F16_SkColorType shiftPerPixel: 3 1899 ~~~~ 1900 1901 </fiddle-embed></div> 1902 1903 ### See Also 1904 1905 <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a> <a href='#SkImageInfo_minRowBytes'>minRowBytes</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_shiftPerPixel'>shiftPerPixel</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_shiftPerPixel'>shiftPerPixel</a> 1906 1907 <a name='SkImageInfo_minRowBytes64'></a> 1908 1909 --- 1910 1911 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1912 uint64_t <a href='#SkImageInfo_minRowBytes64'>minRowBytes64</a>()const 1913 </pre> 1914 1915 Returns minimum bytes per row, computed from <a href='undocumented#Pixel'>pixel</a> <a href='#SkImageInfo_width'>width()</a> and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, which 1916 specifies <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>(). <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> maximum value for row bytes must fit 1917 in 31 bits. 1918 1919 ### Return Value 1920 1921 <a href='#SkImageInfo_width'>width()</a> times <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>() as unsigned 64-bit integer 1922 1923 ### Example 1924 1925 <div><fiddle-embed name="4b5d3904476726a39f1c3e276d6b6ba7"> 1926 1927 #### Example Output 1928 1929 ~~~~ 1930 RGBA_F16 width 16777216 (0x01000000) OK 1931 RGBA_F16 width 33554432 (0x02000000) OK 1932 RGBA_F16 width 67108864 (0x04000000) OK 1933 RGBA_F16 width 134217728 (0x08000000) OK 1934 RGBA_F16 width 268435456 (0x10000000) too large 1935 RGBA_F16 width 536870912 (0x20000000) too large 1936 RGBA_F16 width 1073741824 (0x40000000) too large 1937 RGBA_F16 width -2147483648 (0x80000000) too large 1938 ~~~~ 1939 1940 </fiddle-embed></div> 1941 1942 ### See Also 1943 1944 <a href='#SkImageInfo_minRowBytes'>minRowBytes</a> <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a> <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> 1945 1946 <a name='SkImageInfo_minRowBytes'></a> 1947 1948 --- 1949 1950 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1951 size_t <a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()const 1952 </pre> 1953 1954 Returns minimum bytes per row, computed from <a href='undocumented#Pixel'>pixel</a> <a href='#SkImageInfo_width'>width()</a> and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, which 1955 specifies <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>(). <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> maximum value for row bytes must fit 1956 in 31 bits. 1957 1958 ### Return Value 1959 1960 <a href='#SkImageInfo_width'>width()</a> times <a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>() as signed 32-bit integer 1961 1962 ### Example 1963 1964 <div><fiddle-embed name="897230ecfb36095486beca324fd369f9"> 1965 1966 #### Example Output 1967 1968 ~~~~ 1969 RGBA_F16 width 16777216 (0x01000000) OK 1970 RGBA_F16 width 33554432 (0x02000000) OK 1971 RGBA_F16 width 67108864 (0x04000000) OK 1972 RGBA_F16 width 134217728 (0x08000000) OK 1973 RGBA_F16 width 268435456 (0x10000000) too large 1974 RGBA_F16 width 536870912 (0x20000000) too large 1975 RGBA_F16 width 1073741824 (0x40000000) too large 1976 RGBA_F16 width -2147483648 (0x80000000) too large 1977 ~~~~ 1978 1979 </fiddle-embed></div> 1980 1981 ### See Also 1982 1983 <a href='#SkImageInfo_minRowBytes64'>minRowBytes64</a> <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a> <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> 1984 1985 <a name='SkImageInfo_computeOffset'></a> 1986 1987 --- 1988 1989 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1990 size_t <a href='#SkImageInfo_computeOffset'>computeOffset</a>(int x, int y, size_t rowBytes)const 1991 </pre> 1992 1993 Returns byte offset of <a href='undocumented#Pixel'>pixel</a> from <a href='undocumented#Pixel'>pixel</a> base address. 1994 1995 Asserts in debug build if <a href='#SkImageInfo_computeOffset_x'>x</a> or <a href='#SkImageInfo_computeOffset_y'>y</a> is outside of bounds. Does not assert if 1996 <a href='#SkImageInfo_computeOffset_rowBytes'>rowBytes</a> is smaller than <a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(), even though result may be incorrect. 1997 1998 ### Parameters 1999 2000 <table> <tr> <td><a name='SkImageInfo_computeOffset_x'><code><strong>x</strong></code></a></td> 2001 <td>column index, zero or greater, and less than <a href='#SkImageInfo_width'>width()</a></td> 2002 </tr> 2003 <tr> <td><a name='SkImageInfo_computeOffset_y'><code><strong>y</strong></code></a></td> 2004 <td>row index, zero or greater, and less than <a href='#SkImageInfo_height'>height()</a></td> 2005 </tr> 2006 <tr> <td><a name='SkImageInfo_computeOffset_rowBytes'><code><strong>rowBytes</strong></code></a></td> 2007 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger</td> 2008 </tr> 2009 </table> 2010 2011 ### Return Value 2012 2013 offset within <a href='undocumented#Pixel'>pixel</a> array 2014 2015 ### Example 2016 2017 <div><fiddle-embed name="818e4e1191e39d2a642902cbf253b399"></fiddle-embed></div> 2018 2019 ### See Also 2020 2021 <a href='#SkImageInfo_height'>height</a> <a href='#SkImageInfo_width'>width</a> <a href='#SkImageInfo_minRowBytes'>minRowBytes</a> <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> 2022 2023 <a name='SkImageInfo_equal1_operator'></a> 2024 2025 --- 2026 2027 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2028 bool operator==(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& other)const 2029 </pre> 2030 2031 Compares <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with <a href='#SkImageInfo_equal1_operator_other'>other</a>, and returns true if width, height, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, 2032 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, and <a href='undocumented#SkColorSpace'>SkColorSpace</a> are equivalent. 2033 2034 ### Parameters 2035 2036 <table> <tr> <td><a name='SkImageInfo_equal1_operator_other'><code><strong>other</strong></code></a></td> 2037 <td><a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to compare</td> 2038 </tr> 2039 </table> 2040 2041 ### Return Value 2042 2043 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> equals <a href='#SkImageInfo_equal1_operator_other'>other</a> 2044 2045 ### Example 2046 2047 <div><fiddle-embed name="53c212c4f2449df0b0eedbc6227b6ab7"> 2048 2049 #### Example Output 2050 2051 ~~~~ 2052 info1 != info2 2053 info1 != info2 2054 info1 != info2 2055 info1 == info2 2056 ~~~~ 2057 2058 </fiddle-embed></div> 2059 2060 ### See Also 2061 2062 <a href='#SkImageInfo_notequal1_operator'>operator!=</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& <a href='#SkImageInfo_equal1_operator_other'>other</a>) const <a href='undocumented#SkColorSpace'>SkColorSpace</a>::<a href='#SkColorSpace_Equals'>Equals</a> 2063 2064 <a name='SkImageInfo_notequal1_operator'></a> 2065 2066 --- 2067 2068 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2069 bool operator!=(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& other)const 2070 </pre> 2071 2072 Compares <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with <a href='#SkImageInfo_notequal1_operator_other'>other</a>, and returns true if width, height, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, 2073 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, and <a href='undocumented#SkColorSpace'>SkColorSpace</a> are not equivalent. 2074 2075 ### Parameters 2076 2077 <table> <tr> <td><a name='SkImageInfo_notequal1_operator_other'><code><strong>other</strong></code></a></td> 2078 <td><a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to compare</td> 2079 </tr> 2080 </table> 2081 2082 ### Return Value 2083 2084 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is not equal to <a href='#SkImageInfo_notequal1_operator_other'>other</a> 2085 2086 ### Example 2087 2088 <div><fiddle-embed name="8c039fde0a476ac1aa62bf9de5d61c77"> 2089 2090 #### Example Output 2091 2092 ~~~~ 2093 info1 != info2 2094 info1 != info2 2095 info1 != info2 2096 info1 == info2 2097 ~~~~ 2098 2099 </fiddle-embed></div> 2100 2101 ### See Also 2102 2103 <a href='#SkImageInfo_equal1_operator'>operator==</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& <a href='#SkImageInfo_notequal1_operator_other'>other</a>) const <a href='undocumented#SkColorSpace'>SkColorSpace</a>::<a href='#SkColorSpace_Equals'>Equals</a> 2104 2105 <a name='SkImageInfo_computeByteSize'></a> 2106 2107 --- 2108 2109 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2110 size_t <a href='#SkImageInfo_computeByteSize'>computeByteSize</a>(size_t rowBytes)const 2111 </pre> 2112 2113 Returns storage required by <a href='undocumented#Pixel'>pixel</a> array, given <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> dimensions, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, 2114 and <a href='#SkImageInfo_computeByteSize_rowBytes'>rowBytes</a>. <a href='#SkImageInfo_computeByteSize_rowBytes'>rowBytes</a> is assumed to be at least as large as <a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(). 2115 2116 Returns zero if height is zero. 2117 Returns SIZE_MAX if answer exceeds the range of size_t. 2118 2119 ### Parameters 2120 2121 <table> <tr> <td><a name='SkImageInfo_computeByteSize_rowBytes'><code><strong>rowBytes</strong></code></a></td> 2122 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger</td> 2123 </tr> 2124 </table> 2125 2126 ### Return Value 2127 2128 memory required by <a href='undocumented#Pixel'>pixel</a> buffer 2129 2130 ### Example 2131 2132 <div><fiddle-embed name="9def507d2295f7051effd0c83bb04436"></fiddle-embed></div> 2133 2134 ### See Also 2135 2136 <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a> <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> 2137 2138 <a name='SkImageInfo_computeMinByteSize'></a> 2139 2140 --- 2141 2142 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2143 size_t <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a>()const 2144 </pre> 2145 2146 Returns storage required by <a href='undocumented#Pixel'>pixel</a> array, given <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> dimensions, and 2147 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. Uses <a href='#SkImageInfo_minRowBytes'>minRowBytes</a>() to compute bytes for <a href='undocumented#Pixel'>pixel</a> row. 2148 2149 Returns zero if height is zero. 2150 Returns SIZE_MAX if answer exceeds the range of size_t. 2151 2152 ### Return Value 2153 2154 least memory required by <a href='undocumented#Pixel'>pixel</a> buffer 2155 2156 ### Example 2157 2158 <div><fiddle-embed name="fc18640fdde437cb35338aed7c68d399"></fiddle-embed></div> 2159 2160 ### See Also 2161 2162 <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> 2163 2164 <a name='SkImageInfo_ByteSizeOverflowed'></a> 2165 2166 --- 2167 2168 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2169 static bool <a href='#SkImageInfo_ByteSizeOverflowed'>ByteSizeOverflowed</a>(size_t byteSize) 2170 </pre> 2171 2172 Returns true if <a href='#SkImageInfo_ByteSizeOverflowed_byteSize'>byteSize</a> equals SIZE_MAX. <a href='#SkImageInfo_computeByteSize'>computeByteSize</a>() and 2173 <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a>() return SIZE_MAX if size_t can not hold buffer <a href='undocumented#Size'>size</a>. 2174 2175 ### Parameters 2176 2177 <table> <tr> <td><a name='SkImageInfo_ByteSizeOverflowed_byteSize'><code><strong>byteSize</strong></code></a></td> 2178 <td>result of <a href='#SkImageInfo_computeByteSize'>computeByteSize</a>() or <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a>()</td> 2179 </tr> 2180 </table> 2181 2182 ### Return Value 2183 2184 true if <a href='#SkImageInfo_computeByteSize'>computeByteSize</a>() or <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a>() result exceeds size_t 2185 2186 ### Example 2187 2188 <div><fiddle-embed name="6a63dfdd62ab77ff57783af8c33d7b78"> 2189 2190 #### Example Output 2191 2192 ~~~~ 2193 rowBytes:100000000 size:99999999900000008 overflowed:false 2194 rowBytes:1000000000 size:999999999000000008 overflowed:false 2195 rowBytes:10000000000 size:9999999990000000008 overflowed:false 2196 rowBytes:100000000000 size:18446744073709551615 overflowed:true 2197 rowBytes:1000000000000 size:18446744073709551615 overflowed:true 2198 ~~~~ 2199 2200 </fiddle-embed></div> 2201 2202 ### See Also 2203 2204 <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a> <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> 2205 2206 <a name='SkImageInfo_validRowBytes'></a> 2207 2208 --- 2209 2210 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2211 bool <a href='#SkImageInfo_validRowBytes'>validRowBytes</a>(size_t rowBytes)const 2212 </pre> 2213 2214 Returns true if <a href='#SkImageInfo_validRowBytes_rowBytes'>rowBytes</a> is smaller than width times <a href='undocumented#Pixel'>pixel</a> <a href='undocumented#Size'>size</a>. 2215 2216 ### Parameters 2217 2218 <table> <tr> <td><a name='SkImageInfo_validRowBytes_rowBytes'><code><strong>rowBytes</strong></code></a></td> 2219 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger</td> 2220 </tr> 2221 </table> 2222 2223 ### Return Value 2224 2225 true if <a href='#SkImageInfo_validRowBytes_rowBytes'>rowBytes</a> is large enough to contain <a href='undocumented#Pixel'>pixel</a> row 2226 2227 ### Example 2228 2229 <div><fiddle-embed name="c6b0f6a3f493cb08d9abcdefe12de245"> 2230 2231 #### Example Output 2232 2233 ~~~~ 2234 validRowBytes(60): false 2235 validRowBytes(64): true 2236 validRowBytes(68): true 2237 ~~~~ 2238 2239 </fiddle-embed></div> 2240 2241 ### See Also 2242 2243 <a href='#SkImageInfo_ByteSizeOverflowed'>ByteSizeOverflowed</a> <a href='#SkImageInfo_computeByteSize'>computeByteSize</a> <a href='#SkImageInfo_computeMinByteSize'>computeMinByteSize</a> 2244 2245 <a name='SkImageInfo_reset'></a> 2246 2247 --- 2248 2249 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2250 void <a href='#SkImageInfo_reset'>reset()</a> 2251 </pre> 2252 2253 Creates an empty <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> with <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, 2254 a width and height of zero, and no <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 2255 2256 ### Example 2257 2258 <div><fiddle-embed name="ab7e73786805c936de386b6c1ebe1f13"> 2259 2260 #### Example Output 2261 2262 ~~~~ 2263 info == copy 2264 info != reset copy 2265 SkImageInfo() == reset copy 2266 ~~~~ 2267 2268 </fiddle-embed></div> 2269 2270 ### See Also 2271 2272 <a href='#SkImageInfo_empty_constructor'>SkImageInfo()</a> 2273 2274 <a name='Utility'></a> 2275 2276 <a name='SkImageInfo_validate'></a> 2277 2278 --- 2279 2280 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2281 void <a href='#SkImageInfo_validate'>validate()</a>const 2282 </pre> 2283 2284 ### See Also 2285 2286 <a href='#SkImageInfo_validRowBytes'>validRowBytes</a> <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_validate'>validate</a> 2287 2288