1 SkBitmap Reference 2 === 3 4 5 <a name='SkBitmap'></a> 6 7 --- 8 9 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 10 class <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> { 11 12 <a href='#SkBitmap_empty_constructor'>SkBitmap()</a>; 13 <a href='#SkBitmap_copy_const_SkBitmap'>SkBitmap</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src); 14 <a href='#SkBitmap_move_SkBitmap'>SkBitmap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src); 15 <a href='#SkBitmap_destructor'>~SkBitmap()</a>; 16 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='#SkBitmap_copy_operator'>operator=</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src); 17 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='#SkBitmap_move_operator'>operator=</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src); 18 void <a href='#SkBitmap_swap'>swap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& other); 19 const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& <a href='#SkBitmap_pixmap'>pixmap()</a> const; 20 const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& <a href='#SkBitmap_info'>info()</a> const; 21 int <a href='#SkBitmap_width'>width()</a> const; 22 int <a href='#SkBitmap_height'>height()</a> const; 23 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkBitmap_colorType'>colorType</a>() const; 24 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkBitmap_alphaType'>alphaType</a>() const; 25 <a href='undocumented#SkColorSpace'>SkColorSpace</a>* <a href='#SkBitmap_colorSpace'>colorSpace</a>() const; 26 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> <a href='#SkBitmap_refColorSpace'>refColorSpace</a>() const; 27 int <a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>() const; 28 int <a href='#SkBitmap_rowBytesAsPixels'>rowBytesAsPixels</a>() const; 29 int <a href='#SkBitmap_shiftPerPixel'>shiftPerPixel</a>() const; 30 bool <a href='#SkBitmap_empty'>empty()</a> const; 31 bool <a href='#SkBitmap_isNull'>isNull</a>() const; 32 bool <a href='#SkBitmap_drawsNothing'>drawsNothing</a>() const; 33 size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>() const; 34 bool <a href='#SkBitmap_setAlphaType'>setAlphaType</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkBitmap_alphaType'>alphaType</a>); 35 void* <a href='#SkBitmap_getPixels'>getPixels</a>() const; 36 size_t <a href='#SkBitmap_computeByteSize'>computeByteSize</a>() const; 37 bool <a href='#SkBitmap_isImmutable'>isImmutable</a>() const; 38 void <a href='#SkBitmap_setImmutable'>setImmutable</a>(); 39 bool <a href='#SkBitmap_isOpaque'>isOpaque</a>() const; 40 bool <a href='#SkBitmap_isVolatile'>isVolatile</a>() const; 41 void <a href='#SkBitmap_setIsVolatile'>setIsVolatile</a>(bool <a href='#SkBitmap_isVolatile'>isVolatile</a>); 42 void <a href='#SkBitmap_reset'>reset()</a>; 43 static bool <a href='#SkBitmap_ComputeIsOpaque'>ComputeIsOpaque</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bm); 44 void <a href='#SkBitmap_getBounds'>getBounds</a>(<a href='SkRect_Reference#SkRect'>SkRect</a>* bounds) const; 45 void <a href='#SkBitmap_getBounds'>getBounds</a>(<a href='SkIRect_Reference#SkIRect'>SkIRect</a>* bounds) const; 46 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkBitmap_bounds'>bounds()</a> const; 47 <a href='undocumented#SkISize'>SkISize</a> <a href='#SkBitmap_dimensions'>dimensions()</a> const; 48 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkBitmap_getSubset'>getSubset</a>() const; 49 bool <a href='#SkBitmap_setInfo'>setInfo</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& imageInfo, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a> = 0); 50 51 enum <a href='#SkBitmap_AllocFlags'>AllocFlags</a> { 52 <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a> = 1 << 0, 53 }; 54 55 bool <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, uint32_t flags); 56 void <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, uint32_t flags); 57 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>); 58 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>); 59 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info); 60 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info); 61 bool <a href='#SkBitmap_tryAllocN32Pixels'>tryAllocN32Pixels</a>(int width, int height, bool <a href='#SkBitmap_isOpaque'>isOpaque</a> = false); 62 void <a href='#SkBitmap_allocN32Pixels'>allocN32Pixels</a>(int width, int height, bool <a href='#SkBitmap_isOpaque'>isOpaque</a> = false); 63 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, void* pixels, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>, 64 void (*releaseProc)(void* addr, void* context), void* context); 65 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, void* pixels, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>); 66 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& <a href='SkPixmap_Reference#Pixmap'>pixmap</a>); 67 void <a href='#SkBitmap_setPixels'>setPixels</a>(void* pixels); 68 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(); 69 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(); 70 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(<a href='#SkBitmap_Allocator'>Allocator</a>* allocator); 71 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(<a href='#SkBitmap_Allocator'>Allocator</a>* allocator); 72 <a href='undocumented#SkPixelRef'>SkPixelRef</a>* <a href='#SkBitmap_pixelRef'>pixelRef</a>() const; 73 <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkBitmap_pixelRefOrigin'>pixelRefOrigin</a>() const; 74 void <a href='#SkBitmap_setPixelRef'>setPixelRef</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkPixelRef'>SkPixelRef</a>> <a href='#SkBitmap_pixelRef'>pixelRef</a>, int dx, int dy); 75 bool <a href='#SkBitmap_readyToDraw'>readyToDraw</a>() const; 76 uint32_t <a href='#SkBitmap_getGenerationID'>getGenerationID</a>() const; 77 void <a href='#SkBitmap_notifyPixelsChanged'>notifyPixelsChanged</a>() const; 78 void <a href='#SkBitmap_eraseColor'>eraseColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c) const; 79 void <a href='#SkBitmap_eraseARGB'>eraseARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b) const; 80 void <a href='#SkBitmap_erase'>erase</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area) const; 81 <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkBitmap_getColor'>getColor</a>(int x, int y) const; 82 float <a href='#SkBitmap_getAlphaf'>getAlphaf</a>(int x, int y) const; 83 void* <a href='#SkBitmap_getAddr'>getAddr</a>(int x, int y) const; 84 uint32_t* <a href='#SkBitmap_getAddr32'>getAddr32</a>(int x, int y) const; 85 uint16_t* <a href='#SkBitmap_getAddr16'>getAddr16</a>(int x, int y) const; 86 uint8_t* <a href='#SkBitmap_getAddr8'>getAddr8</a>(int x, int y) const; 87 bool <a href='#SkBitmap_extractSubset'>extractSubset</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& subset) const; 88 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& dstInfo, void* dstPixels, size_t dstRowBytes, 89 int srcX, int srcY) const; 90 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& dst, int srcX, int srcY) const; 91 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& dst) const; 92 bool <a href='#SkBitmap_writePixels'>writePixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& src, int dstX, int dstY); 93 bool <a href='#SkBitmap_writePixels'>writePixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& src); 94 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst) const; 95 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a>, 96 <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>* offset) const; 97 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a>, <a href='#SkBitmap_Allocator'>Allocator</a>* allocator, 98 <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>* offset) const; 99 bool <a href='#SkBitmap_peekPixels'>peekPixels</a>(<a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>* <a href='SkPixmap_Reference#Pixmap'>pixmap</a>) const; 100 void <a href='#SkBitmap_validate'>validate()</a> const; 101 }; 102 103 </pre> 104 105 <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> describes a two-dimensional raster <a href='undocumented#Pixel'>pixel</a> array. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> is built on 106 <a href='#Image_Info'>Image_Info</a>, containing integer width and height, <a href='#Image_Info_Color_Type'>Color_Type</a> and <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> 107 describing the <a href='undocumented#Pixel'>pixel</a> format, and <a href='#Color_Space'>Color_Space</a> describing the range of colors. 108 <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='SkPoint_Reference#Point'>points</a> to <a href='#Pixel_Ref'>Pixel_Ref</a>, which describes the physical array of pixels. 109 <a href='#Image_Info'>Image_Info</a> bounds may be located anywhere fully inside <a href='#Pixel_Ref'>Pixel_Ref</a> bounds. 110 111 <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> can be drawn using <a href='SkCanvas_Reference#Canvas'>Canvas</a>. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> can be a drawing destination for <a href='SkCanvas_Reference#Canvas'>Canvas</a> 112 draw member functions. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> flexibility as a <a href='undocumented#Pixel'>pixel</a> container limits some 113 optimizations available to the target platform. 114 115 If <a href='undocumented#Pixel'>pixel</a> array is primarily read-only, use <a href='SkImage_Reference#Image'>Image</a> for better performance. 116 If <a href='undocumented#Pixel'>pixel</a> array is primarily written to, use <a href='SkSurface_Reference#Surface'>Surface</a> for better performance. 117 118 Declaring <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> const prevents altering <a href='#Image_Info'>Image_Info</a>: the <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> height, width, 119 and so on cannot change. It does not affect <a href='#Pixel_Ref'>Pixel_Ref</a>: a caller may write its 120 pixels. Declaring <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> const affects <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> configuration, not its contents. 121 122 <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> is not thread safe. Each thread must have its own copy of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> fields, 123 although threads may share the underlying <a href='undocumented#Pixel'>pixel</a> array. 124 125 <a name='Row_Bytes'></a> 126 127 <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> pixels may be contiguous, or may have a gap at the end of each row. 128 <a href='#Bitmap_Row_Bytes'>Row_Bytes</a> is the interval from one row to the next. <a href='#Bitmap_Row_Bytes'>Row_Bytes</a> may be specified; 129 sometimes passing zero will compute the <a href='#Bitmap_Row_Bytes'>Row_Bytes</a> from the row width and the 130 number of bytes in a <a href='undocumented#Pixel'>pixel</a>. <a href='#Bitmap_Row_Bytes'>Row_Bytes</a> may be larger than the row requires. This 131 is useful to position one or more <a href='SkBitmap_Reference#Bitmap'>Bitmaps</a> within a shared <a href='undocumented#Pixel'>pixel</a> array. 132 133 <a name='SkBitmap_Allocator'></a> 134 135 --- 136 137 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 138 class <a href='#SkBitmap_Allocator'>Allocator</a> : public <a href='undocumented#SkRefCnt'>SkRefCnt</a> { 139 140 virtual bool <a href='#SkBitmap_Allocator_allocPixelRef'>allocPixelRef</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>) = 0; 141 }; 142 143 </pre> 144 145 Abstract subclass of <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a>. 146 147 <a name='SkBitmap_Allocator_allocPixelRef'></a> 148 149 --- 150 151 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 152 virtual bool <a href='#SkBitmap_Allocator_allocPixelRef'>allocPixelRef</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>) = 0 153 </pre> 154 155 Allocates the <a href='undocumented#Pixel'>pixel</a> memory for the <a href='#SkBitmap_Allocator_allocPixelRef_bitmap'>bitmap</a>, given its dimensions and 156 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. Returns true on success, where success means either <a href='#SkBitmap_setPixels'>setPixels</a>() 157 or <a href='#SkBitmap_setPixelRef'>setPixelRef</a>() was called. 158 159 ### Parameters 160 161 <table> <tr> <td><a name='SkBitmap_Allocator_allocPixelRef_bitmap'><code><strong>bitmap</strong></code></a></td> 162 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> containing <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> as input, and <a href='undocumented#SkPixelRef'>SkPixelRef</a> as output</td> 163 </tr> 164 </table> 165 166 ### Return Value 167 168 true if <a href='undocumented#SkPixelRef'>SkPixelRef</a> was allocated 169 170 ### See Also 171 172 <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> 173 174 <a name='SkBitmap_HeapAllocator'></a> 175 176 --- 177 178 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 179 class <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> : public <a href='#SkBitmap_Allocator'>Allocator</a> { 180 181 bool <a href='#SkBitmap_HeapAllocator_allocPixelRef'>allocPixelRef</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>) override; 182 }; 183 184 </pre> 185 186 Subclass of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_Allocator'>Allocator</a> that returns a <a href='#Pixel_Ref'>Pixel_Ref</a> that allocates its <a href='undocumented#Pixel'>pixel</a> 187 memory from the heap. This is the default <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_Allocator'>Allocator</a> invoked by 188 <a href='#SkBitmap_allocPixels'>allocPixels</a>. 189 190 <a name='SkBitmap_HeapAllocator_allocPixelRef'></a> 191 192 --- 193 194 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 195 bool <a href='#SkBitmap_HeapAllocator_allocPixelRef'>allocPixelRef</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>) override 196 </pre> 197 198 Allocates the <a href='undocumented#Pixel'>pixel</a> memory for the <a href='#SkBitmap_HeapAllocator_allocPixelRef_bitmap'>bitmap</a>, given its dimensions and 199 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. Returns true on success, where success means either <a href='#SkBitmap_setPixels'>setPixels</a>() 200 or <a href='#SkBitmap_setPixelRef'>setPixelRef</a>() was called. 201 202 ### Parameters 203 204 <table> <tr> <td><a name='SkBitmap_HeapAllocator_allocPixelRef_bitmap'><code><strong>bitmap</strong></code></a></td> 205 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> containing <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> as input, and <a href='undocumented#SkPixelRef'>SkPixelRef</a> as output</td> 206 </tr> 207 </table> 208 209 ### Return Value 210 211 true if pixels are allocated 212 213 ### Example 214 215 <div><fiddle-embed name="fe79a9c1ec350264eb9c7b2509dd3638"> 216 217 #### Example Output 218 219 ~~~~ 220 #Volatile 221 pixel address = (nil) 222 pixel address = 0x560ddd0ac670 223 ~~~~ 224 225 </fiddle-embed></div> 226 227 ### See Also 228 229 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_Allocator'>Allocator</a> <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> 230 231 <a name='SkBitmap_empty_constructor'></a> 232 233 --- 234 235 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 236 <a href='#SkBitmap_empty_constructor'>SkBitmap()</a> 237 </pre> 238 239 Creates an empty <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> without pixels, with <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, 240 <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, and with a width and height of zero. <a href='undocumented#SkPixelRef'>SkPixelRef</a> origin is 241 set to (0, 0). <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> is not volatile. 242 243 Use <a href='#SkBitmap_setInfo'>setInfo</a>() to associate <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, width, and height 244 after <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> has been created. 245 246 ### Return Value 247 248 empty <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> 249 250 ### Example 251 252 <div><fiddle-embed name="6739d14ec0d6a373f2fcadc6b3077fd4"> 253 254 #### Example Output 255 256 ~~~~ 257 width: 0 height: 0 color: kUnknown_SkColorType alpha: kUnknown_SkAlphaType 258 width: 25 height: 35 color: kRGBA_8888_SkColorType alpha: kOpaque_SkAlphaType 259 ~~~~ 260 261 </fiddle-embed></div> 262 263 ### See Also 264 265 <a href='#SkBitmap_setInfo'>setInfo</a> 266 267 <a name='SkBitmap_copy_const_SkBitmap'></a> 268 269 --- 270 271 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 272 <a href='#SkBitmap_copy_const_SkBitmap'>SkBitmap</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src) 273 </pre> 274 275 Copies settings from <a href='#SkBitmap_copy_const_SkBitmap_src'>src</a> to returned <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. Shares pixels if <a href='#SkBitmap_copy_const_SkBitmap_src'>src</a> has pixels 276 allocated, so both <a href='SkBitmap_Reference#Bitmap'>bitmaps</a> reference the same pixels. 277 278 ### Parameters 279 280 <table> <tr> <td><a name='SkBitmap_copy_const_SkBitmap_src'><code><strong>src</strong></code></a></td> 281 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> to copy <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, and share <a href='undocumented#SkPixelRef'>SkPixelRef</a></td> 282 </tr> 283 </table> 284 285 ### Return Value 286 287 copy of <a href='#SkBitmap_copy_const_SkBitmap_src'>src</a> 288 289 ### Example 290 291 <div><fiddle-embed name="bbbae7a181bfd128a4484e8e9f454db1"> 292 293 #### Example Output 294 295 ~~~~ 296 original has pixels before copy: true 297 original has pixels after copy: true 298 copy has pixels: true 299 ~~~~ 300 301 </fiddle-embed></div> 302 303 ### See Also 304 305 <a href='#SkBitmap_setInfo'>setInfo</a> <a href='#SkBitmap_setPixelRef'>setPixelRef</a> <a href='#SkBitmap_setPixels'>setPixels</a> <a href='#SkBitmap_swap'>swap</a> 306 307 <a name='SkBitmap_move_SkBitmap'></a> 308 309 --- 310 311 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 312 <a href='#SkBitmap_move_SkBitmap'>SkBitmap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src) 313 </pre> 314 315 Copies settings from <a href='#SkBitmap_move_SkBitmap_src'>src</a> to returned <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. Moves ownership of <a href='#SkBitmap_move_SkBitmap_src'>src</a> pixels to 316 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. 317 318 ### Parameters 319 320 <table> <tr> <td><a name='SkBitmap_move_SkBitmap_src'><code><strong>src</strong></code></a></td> 321 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> to copy <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, and reassign <a href='undocumented#SkPixelRef'>SkPixelRef</a></td> 322 </tr> 323 </table> 324 325 ### Return Value 326 327 copy of <a href='#SkBitmap_move_SkBitmap_src'>src</a> 328 329 ### Example 330 331 <div><fiddle-embed name="40afd4f1fa69e02d69d92b38252088ef"> 332 333 #### Example Output 334 335 ~~~~ 336 original has pixels before move: true 337 original has pixels after move: false 338 copy has pixels: true 339 ~~~~ 340 341 </fiddle-embed></div> 342 343 ### See Also 344 345 <a href='#SkBitmap_setInfo'>setInfo</a> <a href='#SkBitmap_setPixelRef'>setPixelRef</a> <a href='#SkBitmap_setPixels'>setPixels</a> <a href='#SkBitmap_swap'>swap</a> 346 347 <a name='SkBitmap_destructor'></a> 348 349 --- 350 351 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 352 <a href='#SkBitmap_destructor'>~SkBitmap()</a> 353 </pre> 354 355 Decrements <a href='undocumented#SkPixelRef'>SkPixelRef</a> reference count, if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is not nullptr. 356 357 ### See Also 358 359 <a href='#Pixel_Ref'>Pixel_Ref</a> 360 361 <a name='SkBitmap_copy_operator'></a> 362 363 --- 364 365 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 366 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='#SkBitmap_copy_operator'>operator=</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src) 367 </pre> 368 369 Copies settings from <a href='#SkBitmap_copy_operator_src'>src</a> to returned <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. Shares pixels if <a href='#SkBitmap_copy_operator_src'>src</a> has pixels 370 allocated, so both <a href='SkBitmap_Reference#Bitmap'>bitmaps</a> reference the same pixels. 371 372 ### Parameters 373 374 <table> <tr> <td><a name='SkBitmap_copy_operator_src'><code><strong>src</strong></code></a></td> 375 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> to copy <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, and share <a href='undocumented#SkPixelRef'>SkPixelRef</a></td> 376 </tr> 377 </table> 378 379 ### Return Value 380 381 copy of <a href='#SkBitmap_copy_operator_src'>src</a> 382 383 ### Example 384 385 <div><fiddle-embed name="45279c519ae808f78bd30e9d84bdfdde"> 386 387 #### Example Output 388 389 ~~~~ 390 original has pixels before copy: true 391 original has pixels after copy: true 392 copy has pixels: true 393 ~~~~ 394 395 </fiddle-embed></div> 396 397 ### See Also 398 399 <a href='#SkBitmap_setInfo'>setInfo</a> <a href='#SkBitmap_setPixelRef'>setPixelRef</a> <a href='#SkBitmap_setPixels'>setPixels</a> <a href='#SkBitmap_swap'>swap</a> 400 401 <a name='SkBitmap_move_operator'></a> 402 403 --- 404 405 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 406 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='#SkBitmap_move_operator'>operator=</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src) 407 </pre> 408 409 Copies settings from <a href='#SkBitmap_move_operator_src'>src</a> to returned <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. Moves ownership of <a href='#SkBitmap_move_operator_src'>src</a> pixels to 410 <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. 411 412 ### Parameters 413 414 <table> <tr> <td><a name='SkBitmap_move_operator_src'><code><strong>src</strong></code></a></td> 415 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> to copy <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, and reassign <a href='undocumented#SkPixelRef'>SkPixelRef</a></td> 416 </tr> 417 </table> 418 419 ### Return Value 420 421 copy of <a href='#SkBitmap_move_operator_src'>src</a> 422 423 ### Example 424 425 <div><fiddle-embed name="35ea3fed27d8db22dc00f48670de64de"> 426 427 #### Example Output 428 429 ~~~~ 430 original has pixels before move: true 431 original has pixels after move: false 432 copy has pixels: true 433 ~~~~ 434 435 </fiddle-embed></div> 436 437 ### See Also 438 439 <a href='#SkBitmap_setInfo'>setInfo</a> <a href='#SkBitmap_setPixelRef'>setPixelRef</a> <a href='#SkBitmap_setPixels'>setPixels</a> <a href='#SkBitmap_swap'>swap</a> 440 441 <a name='SkBitmap_swap'></a> 442 443 --- 444 445 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 446 void <a href='#SkBitmap_swap'>swap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& other) 447 </pre> 448 449 Swaps the fields of the two <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>. 450 451 ### Parameters 452 453 <table> <tr> <td><a name='SkBitmap_swap_other'><code><strong>other</strong></code></a></td> 454 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> exchanged with original</td> 455 </tr> 456 </table> 457 458 ### Example 459 460 <div><fiddle-embed name="de9be45255e48fae445c916a41063abc"> 461 462 #### Example Output 463 464 ~~~~ 465 one width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaType 466 two width:2 height:2 colorType:kBGRA_8888_SkColorType alphaType:kPremul_SkAlphaType 467 one width:2 height:2 colorType:kBGRA_8888_SkColorType alphaType:kPremul_SkAlphaType 468 two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaType 469 ~~~~ 470 471 </fiddle-embed></div> 472 473 ### See Also 474 475 <a href='#SkBitmap_move_SkBitmap'>SkBitmap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src) <a href='#SkBitmap_move_operator'>operator=</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>&& src) 476 477 <a name='Property'></a> 478 479 <a name='SkBitmap_pixmap'></a> 480 481 --- 482 483 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 484 const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& <a href='#SkBitmap_pixmap'>pixmap()</a>const 485 </pre> 486 487 Returns a constant reference to the <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a> holding the <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> <a href='undocumented#Pixel'>pixel</a> 488 address, row bytes, and <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>. 489 490 ### Return Value 491 492 reference to <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a> describing this <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> 493 494 ### Example 495 496 <div><fiddle-embed name="7f972d742dd78d2500034d8867e9ef2f"> 497 498 #### Example Output 499 500 ~~~~ 501 ---------- 502 ---xx----- 503 --x--x---- 504 --x------- 505 --xx------ 506 --x-x---x- 507 -x---x--x- 508 -x----xx-- 509 -xx---x--- 510 --xxxx-xx- 511 ---------- 512 ~~~~ 513 514 </fiddle-embed></div> 515 516 ### See Also 517 518 <a href='#SkBitmap_peekPixels'>peekPixels</a> <a href='#SkBitmap_installPixels'>installPixels</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='#SkBitmap_writePixels'>writePixels</a> 519 520 <a name='SkBitmap_info'></a> 521 522 --- 523 524 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 525 const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& <a href='#SkBitmap_info'>info()</a>const 526 </pre> 527 528 Returns width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, and <a href='undocumented#SkColorSpace'>SkColorSpace</a>. 529 530 ### Return Value 531 532 reference to <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 533 534 ### Example 535 536 <div><fiddle-embed name="ec47c4dc23e2925ad565eaba55a91553"> 537 538 #### Example Output 539 540 ~~~~ 541 width: 56 height: 56 color: BGRA_8888 alpha: Opaque 542 ~~~~ 543 544 </fiddle-embed></div> 545 546 ### See Also 547 548 <a href='#Image_Info'>Image_Info</a> 549 550 <a name='SkBitmap_width'></a> 551 552 --- 553 554 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 555 int <a href='#SkBitmap_width'>width()</a>const 556 </pre> 557 558 Returns <a href='undocumented#Pixel'>pixel</a> count in each row. Should be equal or less than 559 <code><a href='#SkBitmap_rowBytes'>rowBytes</a>() / <a href='#SkBitmap_info'>info()</a>.<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>()</code>. 560 561 May be less than <a href='#SkBitmap_pixelRef'>pixelRef</a>().<a href='#SkPixelRef_width'>width()</a>. Will not exceed <a href='#SkBitmap_pixelRef'>pixelRef</a>().<a href='#SkPixelRef_width'>width()</a> less 562 <a href='#SkBitmap_pixelRefOrigin'>pixelRefOrigin</a>().<a href='#SkIPoint_fX'>fX</a>. 563 564 ### Return Value 565 566 <a href='undocumented#Pixel'>pixel</a> width in <a href='#Image_Info'>Image_Info</a> 567 568 ### Example 569 570 <div><fiddle-embed name="d06880c42f8bb3b4c3b67bd988046049"> 571 572 #### Example Output 573 574 ~~~~ 575 bitmap width: 16 info width: 16 576 ~~~~ 577 578 </fiddle-embed></div> 579 580 ### See Also 581 582 <a href='#SkBitmap_height'>height()</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_width'>width()</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_width'>width()</a> 583 584 <a name='SkBitmap_height'></a> 585 586 --- 587 588 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 589 int <a href='#SkBitmap_height'>height()</a>const 590 </pre> 591 592 Returns <a href='undocumented#Pixel'>pixel</a> row count. 593 594 Maybe be less than <a href='#SkBitmap_pixelRef'>pixelRef</a>().<a href='#SkPixelRef_height'>height()</a>. Will not exceed <a href='#SkBitmap_pixelRef'>pixelRef</a>().<a href='#SkPixelRef_height'>height()</a> less 595 <a href='#SkBitmap_pixelRefOrigin'>pixelRefOrigin</a>().<a href='#SkIPoint_fY'>fY</a>. 596 597 ### Return Value 598 599 <a href='undocumented#Pixel'>pixel</a> height in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> 600 601 ### Example 602 603 <div><fiddle-embed name="c79a196278c58b34cd5f551b0124ecc9"> 604 605 #### Example Output 606 607 ~~~~ 608 bitmap height: 32 info height: 32 609 ~~~~ 610 611 </fiddle-embed></div> 612 613 ### See Also 614 615 <a href='#SkBitmap_width'>width()</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_height'>height()</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_height'>height()</a> 616 617 <a name='SkBitmap_colorType'></a> 618 619 --- 620 621 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 622 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='#SkBitmap_colorType'>colorType</a>()const 623 </pre> 624 625 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>, 626 <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>, 627 <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>, 628 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 629 . 630 631 ### Return Value 632 633 <a href='#Image_Info_Color_Type'>Color_Type</a> in <a href='#Image_Info'>Image_Info</a> 634 635 ### Example 636 637 <div><fiddle-embed name="ceb77fab7326b57822a147b04aa0960e"> 638 639 #### Example Output 640 641 ~~~~ 642 color type: kAlpha_8_SkColorType 643 ~~~~ 644 645 </fiddle-embed></div> 646 647 ### See Also 648 649 <a href='#SkBitmap_alphaType'>alphaType</a>() <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_colorType'>colorType</a> 650 651 <a name='SkBitmap_alphaType'></a> 652 653 --- 654 655 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 656 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkBitmap_alphaType'>alphaType</a>()const 657 </pre> 658 659 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>, 660 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 661 . 662 663 ### Return Value 664 665 <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> in <a href='#Image_Info'>Image_Info</a> 666 667 ### Example 668 669 <div><fiddle-embed name="070b1a60232be499eb10c6ea62371804"> 670 671 #### Example Output 672 673 ~~~~ 674 alpha type: kPremul_SkAlphaType 675 ~~~~ 676 677 </fiddle-embed></div> 678 679 ### See Also 680 681 <a href='#SkBitmap_colorType'>colorType</a>() <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_alphaType'>alphaType</a> 682 683 <a name='SkBitmap_colorSpace'></a> 684 685 --- 686 687 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 688 <a href='undocumented#SkColorSpace'>SkColorSpace</a>* <a href='#SkBitmap_colorSpace'>colorSpace</a>()const 689 </pre> 690 691 Returns <a href='undocumented#SkColorSpace'>SkColorSpace</a>, the range of colors, associated with <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>. The 692 reference count of <a href='undocumented#SkColorSpace'>SkColorSpace</a> is unchanged. The returned <a href='undocumented#SkColorSpace'>SkColorSpace</a> is 693 immutable. 694 695 ### Return Value 696 697 <a href='undocumented#SkColorSpace'>SkColorSpace</a> in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, or nullptr 698 699 ### Example 700 701 <div><fiddle-embed name="817f95879fadba44baf87ea60e9b595a"><div><a href='undocumented#SkColorSpace'>SkColorSpace</a>::<a href='#SkColorSpace_MakeSRGBLinear'>MakeSRGBLinear</a> creates <a href='#Color_Space'>Color_Space</a> with linear gamma 702 and an sRGB gamut. This <a href='#Color_Space'>Color_Space</a> gamma is not close to sRGB gamma. 703 </div> 704 705 #### Example Output 706 707 ~~~~ 708 gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false 709 ~~~~ 710 711 </fiddle-embed></div> 712 713 ### See Also 714 715 <a href='#Color_Space'>Color_Space</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_colorSpace'>colorSpace</a> 716 717 <a name='SkBitmap_refColorSpace'></a> 718 719 --- 720 721 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 722 <a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> <a href='#SkBitmap_refColorSpace'>refColorSpace</a>()const 723 </pre> 724 725 Returns smart pointer to <a href='undocumented#SkColorSpace'>SkColorSpace</a>, the range of colors, associated with 726 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>. The smart pointer tracks the number of objects sharing this 727 <a href='undocumented#SkColorSpace'>SkColorSpace</a> reference so the memory is released when the owners destruct. 728 729 The returned <a href='undocumented#SkColorSpace'>SkColorSpace</a> is immutable. 730 731 ### Return Value 732 733 <a href='undocumented#SkColorSpace'>SkColorSpace</a> in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> wrapped in a smart pointer 734 735 ### Example 736 737 <div><fiddle-embed name="cb028b7931da85b949ad0953b9711f9f"> 738 739 #### Example Output 740 741 ~~~~ 742 gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false 743 ~~~~ 744 745 </fiddle-embed></div> 746 747 ### See Also 748 749 <a href='#Color_Space'>Color_Space</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_colorSpace'>colorSpace</a> 750 751 <a name='SkBitmap_bytesPerPixel'></a> 752 753 --- 754 755 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 756 int <a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>()const 757 </pre> 758 759 Returns number of bytes per <a href='undocumented#Pixel'>pixel</a> required by <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 760 Returns zero if <a href='#SkBitmap_colorType'>colorType</a>( is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 761 762 ### Return Value 763 764 bytes in <a href='undocumented#Pixel'>pixel</a> 765 766 ### Example 767 768 <div><fiddle-embed name="2a688e6f0a516c0d44a826381e9d637f"><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>, 769 <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>, 770 <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>, 771 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 772 773 #### Example Output 774 775 ~~~~ 776 color: kUnknown_SkColorType bytesPerPixel: 0 777 color: kAlpha_8_SkColorType bytesPerPixel: 1 778 color: kRGB_565_SkColorType bytesPerPixel: 2 779 color: kARGB_4444_SkColorType bytesPerPixel: 2 780 color: kRGBA_8888_SkColorType bytesPerPixel: 4 781 color: kRGB_888x_SkColorType bytesPerPixel: 4 782 color: kBGRA_8888_SkColorType bytesPerPixel: 4 783 color: kRGBA_1010102_SkColorType bytesPerPixel: 4 784 color: kRGB_101010x_SkColorType bytesPerPixel: 4 785 color: kGray_8_SkColorType bytesPerPixel: 1 786 color: kRGBA_F16_SkColorType bytesPerPixel: 8 787 ~~~~ 788 789 </fiddle-embed></div> 790 791 ### See Also 792 793 <a href='#SkBitmap_rowBytes'>rowBytes</a> <a href='#SkBitmap_rowBytesAsPixels'>rowBytesAsPixels</a> <a href='#SkBitmap_width'>width</a> <a href='#SkBitmap_shiftPerPixel'>shiftPerPixel</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a> 794 795 <a name='SkBitmap_rowBytesAsPixels'></a> 796 797 --- 798 799 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 800 int <a href='#SkBitmap_rowBytesAsPixels'>rowBytesAsPixels</a>()const 801 </pre> 802 803 Returns number of pixels that fit on row. Should be greater than or equal to 804 <a href='#SkBitmap_width'>width()</a>. 805 806 ### Return Value 807 808 maximum pixels per row 809 810 ### Example 811 812 <div><fiddle-embed name="03a9e08082a23a98de17c3e24871d61a"> 813 814 #### Example Output 815 816 ~~~~ 817 rowBytes: 4 rowBytesAsPixels: 1 818 rowBytes: 5 rowBytesAsPixels: 1 819 rowBytes: 6 rowBytesAsPixels: 1 820 rowBytes: 7 rowBytesAsPixels: 1 821 rowBytes: 8 rowBytesAsPixels: 2 822 ~~~~ 823 824 </fiddle-embed></div> 825 826 ### See Also 827 828 <a href='#SkBitmap_rowBytes'>rowBytes</a> <a href='#SkBitmap_shiftPerPixel'>shiftPerPixel</a> <a href='#SkBitmap_width'>width</a> <a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a> 829 830 <a name='SkBitmap_shiftPerPixel'></a> 831 832 --- 833 834 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 835 int <a href='#SkBitmap_shiftPerPixel'>shiftPerPixel</a>()const 836 </pre> 837 838 Returns bit shift converting row bytes to row pixels. 839 Returns zero for <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 840 841 ### Return Value 842 843 one of: 0, 1, 2, 3; left shift to convert pixels to bytes 844 845 ### Example 846 847 <div><fiddle-embed name="56ede4b7d45c15d5936f81ac3d74f070"><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>, 848 <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>, 849 <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>, 850 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 851 852 #### Example Output 853 854 ~~~~ 855 color: kUnknown_SkColorType shiftPerPixel: 0 856 color: kAlpha_8_SkColorType shiftPerPixel: 0 857 color: kRGB_565_SkColorType shiftPerPixel: 1 858 color: kARGB_4444_SkColorType shiftPerPixel: 1 859 color: kRGBA_8888_SkColorType shiftPerPixel: 2 860 color: kRGB_888x_SkColorType shiftPerPixel: 2 861 color: kBGRA_8888_SkColorType shiftPerPixel: 2 862 color: kRGBA_1010102_SkColorType shiftPerPixel: 2 863 color: kRGB_101010x_SkColorType shiftPerPixel: 2 864 color: kGray_8_SkColorType shiftPerPixel: 0 865 color: kRGBA_F16_SkColorType shiftPerPixel: 3 866 ~~~~ 867 868 </fiddle-embed></div> 869 870 ### See Also 871 872 <a href='#SkBitmap_rowBytes'>rowBytes</a> <a href='#SkBitmap_rowBytesAsPixels'>rowBytesAsPixels</a> <a href='#SkBitmap_width'>width</a> <a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a> 873 874 <a name='SkBitmap_empty'></a> 875 876 --- 877 878 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 879 bool <a href='#SkBitmap_empty'>empty()</a>const 880 </pre> 881 882 Returns true if either <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> are zero. 883 884 Does not check if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr; call <a href='#SkBitmap_drawsNothing'>drawsNothing</a>() to check <a href='#SkBitmap_width'>width()</a>, 885 <a href='#SkBitmap_height'>height()</a>, and <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 886 887 ### Return Value 888 889 true if dimensions do not enclose area 890 891 ### Example 892 893 <div><fiddle-embed name="a3762c2722b56ba55e42689c527f146c"> 894 895 #### Example Output 896 897 ~~~~ 898 width: 0 height: 0 empty: true 899 width: 0 height: 2 empty: true 900 width: 2 height: 0 empty: true 901 width: 2 height: 2 empty: false 902 ~~~~ 903 904 </fiddle-embed></div> 905 906 ### See Also 907 908 <a href='#SkBitmap_height'>height()</a> <a href='#SkBitmap_width'>width()</a> <a href='#SkBitmap_drawsNothing'>drawsNothing</a> 909 910 <a name='SkBitmap_isNull'></a> 911 912 --- 913 914 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 915 bool <a href='#SkBitmap_isNull'>isNull</a>()const 916 </pre> 917 918 Returns true if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr. 919 920 Does not check if <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> are zero; call <a href='#SkBitmap_drawsNothing'>drawsNothing</a>() to check 921 <a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a>, and <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 922 923 ### Return Value 924 925 true if no <a href='undocumented#SkPixelRef'>SkPixelRef</a> is associated 926 927 ### Example 928 929 <div><fiddle-embed name="211ec89418011aa6e54aa2cc9567e003"> 930 931 #### Example Output 932 933 ~~~~ 934 empty bitmap does not have pixels 935 bitmap with dimensions does not have pixels 936 allocated bitmap does have pixels 937 ~~~~ 938 939 </fiddle-embed></div> 940 941 ### See Also 942 943 <a href='#SkBitmap_empty'>empty()</a> <a href='#SkBitmap_drawsNothing'>drawsNothing</a> <a href='#SkBitmap_pixelRef'>pixelRef</a> 944 945 <a name='SkBitmap_drawsNothing'></a> 946 947 --- 948 949 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 950 bool <a href='#SkBitmap_drawsNothing'>drawsNothing</a>()const 951 </pre> 952 953 Returns true if <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> are zero, or if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr. 954 If true, <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> has no effect when drawn or drawn into. 955 956 ### Return Value 957 958 true if drawing has no effect 959 960 ### Example 961 962 <div><fiddle-embed name="daacf43394ce4045a362a48b5774deed"> 963 964 #### Example Output 965 966 ~~~~ 967 empty:true isNull:true drawsNothing:true 968 empty:true isNull:false drawsNothing:true 969 empty:false isNull:true drawsNothing:true 970 empty:false isNull:false drawsNothing:false 971 ~~~~ 972 973 </fiddle-embed></div> 974 975 ### See Also 976 977 <a href='#SkBitmap_empty'>empty()</a> <a href='#SkBitmap_isNull'>isNull</a> <a href='#SkBitmap_pixelRef'>pixelRef</a> 978 979 <a name='SkBitmap_rowBytes'></a> 980 981 --- 982 983 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 984 size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>()const 985 </pre> 986 987 Returns row bytes, the interval from one <a href='undocumented#Pixel'>pixel</a> row to the next. Row bytes 988 is at least as large as: <code><a href='#SkBitmap_width'>width()</a> * <a href='#SkBitmap_info'>info()</a>.<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>()</code>. 989 990 Returns zero if <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, or if row bytes supplied to 991 <a href='#SkBitmap_setInfo'>setInfo</a> is not large enough to hold a row of pixels. 992 993 ### Return Value 994 995 byte length of <a href='undocumented#Pixel'>pixel</a> row 996 997 ### Example 998 999 <div><fiddle-embed name="a654fd0b73f424859ae6c95e03f55099"> 1000 1001 #### Example Output 1002 1003 ~~~~ 1004 setInfo returned:false rowBytes:0 1005 setInfo returned:true rowBytes:8 1006 ~~~~ 1007 1008 </fiddle-embed></div> 1009 1010 ### See Also 1011 1012 <a href='#SkBitmap_info'>info()</a> <a href='#SkBitmap_setInfo'>setInfo</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a> 1013 1014 <a name='SkBitmap_setAlphaType'></a> 1015 1016 --- 1017 1018 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1019 bool <a href='#SkBitmap_setAlphaType'>setAlphaType</a>(<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='#SkBitmap_alphaType'>alphaType</a>) 1020 </pre> 1021 1022 Sets <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, if <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is compatible with <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 1023 Returns true unless <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a> and current <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> 1024 is not <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1025 1026 Returns true if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is ignored, and 1027 <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> remains <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1028 1029 Returns true if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a> or <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>. 1030 <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is ignored, and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> remains <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 1031 1032 If <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 1033 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, or <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>: returns true unless 1034 <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a> and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is not <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1035 If <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is ignored. 1036 1037 If <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, returns true unless 1038 <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a> and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is not <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1039 If <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>, <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is ignored. If <a href='#SkBitmap_setAlphaType_alphaType'>alphaType</a> is 1040 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, it is treated as <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>. 1041 1042 This changes <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> in <a href='undocumented#SkPixelRef'>SkPixelRef</a>; all <a href='SkBitmap_Reference#Bitmap'>bitmaps</a> sharing <a href='undocumented#SkPixelRef'>SkPixelRef</a> 1043 are affected. 1044 1045 ### Parameters 1046 1047 <table> <tr> <td><a name='SkBitmap_setAlphaType_alphaType'><code><strong>alphaType</strong></code></a></td> 1048 <td>one of:</td> 1049 </tr> 1050 </table> 1051 1052 <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>, 1053 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1054 1055 ### Return Value 1056 1057 true if <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is set 1058 1059 ### Example 1060 1061 <div><fiddle-embed name="af3adcbea7b58bf90298ca5e0ea93030"><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>, 1062 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a> 1063 <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>, 1064 <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>, 1065 <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>, 1066 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> 1067 </fiddle-embed></div> 1068 1069 ### See Also 1070 1071 <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> <a href='#Image_Info_Color_Type'>Color_Type</a> <a href='#Image_Info'>Image_Info</a> <a href='#SkBitmap_setInfo'>setInfo</a> 1072 1073 <a name='SkBitmap_getPixels'></a> 1074 1075 --- 1076 1077 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1078 void* <a href='#SkBitmap_getPixels'>getPixels</a>()const 1079 </pre> 1080 1081 Returns <a href='undocumented#Pixel'>pixel</a> address, the base address corresponding to the <a href='undocumented#Pixel'>pixel</a> origin. 1082 1083 ### Return Value 1084 1085 <a href='undocumented#Pixel'>pixel</a> address 1086 1087 ### Example 1088 1089 <div><fiddle-embed name="e006bb05cf74ec8d2b3d6adeb5dba11b"> 1090 1091 #### Example Output 1092 1093 ~~~~ 1094 bitmap.getColor(0, 1) == 0x00000000 1095 bitmap.getColor(0, 0) == 0xFFFFFFFF 1096 ~~~~ 1097 1098 </fiddle-embed></div> 1099 1100 ### See Also 1101 1102 <a href='#SkBitmap_isNull'>isNull</a> <a href='#SkBitmap_drawsNothing'>drawsNothing</a> 1103 1104 <a name='SkBitmap_computeByteSize'></a> 1105 1106 --- 1107 1108 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1109 size_t <a href='#SkBitmap_computeByteSize'>computeByteSize</a>()const 1110 </pre> 1111 1112 Returns minimum memory required for <a href='undocumented#Pixel'>pixel</a> storage. 1113 Does not include unused memory on last row when <a href='#SkBitmap_rowBytesAsPixels'>rowBytesAsPixels</a>() exceeds <a href='#SkBitmap_width'>width()</a>. 1114 Returns zero if result does not fit in size_t. 1115 Returns zero if <a href='#SkBitmap_height'>height()</a> or <a href='#SkBitmap_width'>width()</a> is 0. 1116 Returns <a href='#SkBitmap_height'>height()</a> times <a href='#SkBitmap_rowBytes'>rowBytes</a>() if <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 1117 1118 ### Return Value 1119 1120 <a href='undocumented#Size'>size</a> in bytes of <a href='SkImage_Reference#Image'>image</a> buffer 1121 1122 ### Example 1123 1124 <div><fiddle-embed name="165c8f208829fc0908e8a50da60c0076"> 1125 1126 #### Example Output 1127 1128 ~~~~ 1129 width: 1 height: 1 computeByteSize: 4 1130 width: 1 height: 1000 computeByteSize: 4999 1131 width: 1 height: 1000000 computeByteSize: 4999999 1132 width: 1000 height: 1 computeByteSize: 4000 1133 width: 1000 height: 1000 computeByteSize: 4999000 1134 width: 1000 height: 1000000 computeByteSize: 4999999000 1135 width: 1000000 height: 1 computeByteSize: 4000000 1136 width: 1000000 height: 1000 computeByteSize: 4999000000 1137 width: 1000000 height: 1000000 computeByteSize: 4999999000000 1138 ~~~~ 1139 1140 </fiddle-embed></div> 1141 1142 ### See Also 1143 1144 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_computeByteSize'>computeByteSize</a> 1145 1146 <a name='SkBitmap_isImmutable'></a> 1147 1148 --- 1149 1150 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1151 bool <a href='#SkBitmap_isImmutable'>isImmutable</a>()const 1152 </pre> 1153 1154 Returns true if pixels can not change. 1155 1156 Most immutable <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> checks trigger an assert only on debug builds. 1157 1158 ### Return Value 1159 1160 true if pixels are immutable 1161 1162 ### Example 1163 1164 <div><fiddle-embed name="db61fdcd382342ee88ea1b4f27c27b95"> 1165 1166 #### Example Output 1167 1168 ~~~~ 1169 original is immutable 1170 copy is immutable 1171 ~~~~ 1172 1173 </fiddle-embed></div> 1174 1175 ### See Also 1176 1177 <a href='#SkBitmap_setImmutable'>setImmutable</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_isImmutable'>isImmutable</a> <a href='SkImage_Reference#SkImage'>SkImage</a> 1178 1179 <a name='SkBitmap_setImmutable'></a> 1180 1181 --- 1182 1183 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1184 void <a href='#SkBitmap_setImmutable'>setImmutable</a>() 1185 </pre> 1186 1187 Sets internal flag to mark <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> as immutable. Once set, pixels can not change. 1188 Any other <a href='SkBitmap_Reference#Bitmap'>bitmap</a> sharing the same <a href='undocumented#SkPixelRef'>SkPixelRef</a> are also marked as immutable. 1189 Once <a href='undocumented#SkPixelRef'>SkPixelRef</a> is marked immutable, the setting cannot be cleared. 1190 1191 Writing to immutable <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> pixels triggers an assert on debug builds. 1192 1193 ### Example 1194 1195 <div><fiddle-embed name="9210060d1f4ca46e1375496237902ef3"><div>Triggers assert if SK_DEBUG is true, runs fine otherwise. 1196 </div></fiddle-embed></div> 1197 1198 ### See Also 1199 1200 <a href='#SkBitmap_isImmutable'>isImmutable</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>::<a href='#SkPixelRef_setImmutable'>setImmutable</a> <a href='SkImage_Reference#SkImage'>SkImage</a> 1201 1202 <a name='SkBitmap_isOpaque'></a> 1203 1204 --- 1205 1206 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1207 bool <a href='#SkBitmap_isOpaque'>isOpaque</a>()const 1208 </pre> 1209 1210 Returns true if <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is set to hint that all pixels are opaque; their 1211 <a href='SkColor_Reference#Alpha'>alpha</a> value is implicitly or explicitly 1.0. If true, and all pixels are 1212 not opaque, Skia may draw incorrectly. 1213 1214 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 1215 transparency. 1216 1217 ### Return Value 1218 1219 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a> 1220 1221 ### Example 1222 1223 <div><fiddle-embed name="5e76b68bb46d54315eb0c12d83bd6949"><div><a href='#SkBitmap_isOpaque'>isOpaque</a> ignores whether all pixels are opaque or not. 1224 </div> 1225 1226 #### Example Output 1227 1228 ~~~~ 1229 isOpaque: false 1230 isOpaque: false 1231 isOpaque: true 1232 isOpaque: true 1233 ~~~~ 1234 1235 </fiddle-embed></div> 1236 1237 ### See Also 1238 1239 <a href='#SkBitmap_ComputeIsOpaque'>ComputeIsOpaque</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_isOpaque'>isOpaque</a> 1240 1241 <a name='SkBitmap_isVolatile'></a> 1242 1243 --- 1244 1245 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1246 bool <a href='#SkBitmap_isVolatile'>isVolatile</a>()const 1247 </pre> 1248 1249 Provides a hint to caller that pixels should not be cached. Only true if 1250 <a href='#SkBitmap_setIsVolatile'>setIsVolatile</a>() has been called to mark as volatile. 1251 1252 Volatile state is not shared by other <a href='SkBitmap_Reference#Bitmap'>bitmaps</a> sharing the same <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 1253 1254 ### Return Value 1255 1256 true if marked volatile 1257 1258 ### Example 1259 1260 <div><fiddle-embed name="23c4543ac6cdd0e8fe762816a0dc2e03"> 1261 1262 #### Example Output 1263 1264 ~~~~ 1265 original is volatile 1266 copy is not volatile 1267 ~~~~ 1268 1269 </fiddle-embed></div> 1270 1271 ### See Also 1272 1273 <a href='#SkBitmap_setIsVolatile'>setIsVolatile</a> 1274 1275 <a name='SkBitmap_setIsVolatile'></a> 1276 1277 --- 1278 1279 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1280 void <a href='#SkBitmap_setIsVolatile'>setIsVolatile</a>(bool <a href='#SkBitmap_isVolatile'>isVolatile</a>) 1281 </pre> 1282 1283 Sets if pixels should be read from <a href='undocumented#SkPixelRef'>SkPixelRef</a> on every access. <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> are not 1284 volatile by default; a GPU back end may upload <a href='undocumented#Pixel'>pixel</a> values expecting them to be 1285 accessed repeatedly. Marking temporary <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> as volatile provides a hint to 1286 <a href='undocumented#SkBaseDevice'>SkBaseDevice</a> that the <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> pixels should not be cached. This can 1287 improve performance by avoiding overhead and reducing resource 1288 consumption on <a href='undocumented#SkBaseDevice'>SkBaseDevice</a>. 1289 1290 ### Parameters 1291 1292 <table> <tr> <td><a name='SkBitmap_setIsVolatile_isVolatile'><code><strong>isVolatile</strong></code></a></td> 1293 <td>true if backing pixels are temporary</td> 1294 </tr> 1295 </table> 1296 1297 ### Example 1298 1299 <div><fiddle-embed name="e8627a4df659b896402f89a91326618f"></fiddle-embed></div> 1300 1301 ### See Also 1302 1303 <a href='#SkBitmap_setIsVolatile_isVolatile'>isVolatile</a> 1304 1305 <a name='SkBitmap_reset'></a> 1306 1307 --- 1308 1309 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1310 void <a href='#SkBitmap_reset'>reset()</a> 1311 </pre> 1312 1313 Resets to its initial state; all fields are set to zero, as if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> had 1314 been initialized by <a href='#SkBitmap_empty_constructor'>SkBitmap()</a>. 1315 1316 Sets width, height, row bytes to zero; <a href='undocumented#Pixel'>pixel</a> address to nullptr; <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> to 1317 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>; and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> to <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1318 1319 If <a href='undocumented#SkPixelRef'>SkPixelRef</a> is allocated, its reference count is decreased by one, releasing 1320 its memory if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> is the sole owner. 1321 1322 ### Example 1323 1324 <div><fiddle-embed name="52ccaeda67924373c5b55a2b89fe314d"> 1325 1326 #### Example Output 1327 1328 ~~~~ 1329 width:1 height:1 isNull:false 1330 width:0 height:0 isNull:true 1331 ~~~~ 1332 1333 </fiddle-embed></div> 1334 1335 ### See Also 1336 1337 <a href='#SkBitmap_empty_constructor'>SkBitmap()</a> <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> 1338 1339 <a name='SkBitmap_ComputeIsOpaque'></a> 1340 1341 --- 1342 1343 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1344 static bool <a href='#SkBitmap_ComputeIsOpaque'>ComputeIsOpaque</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bm) 1345 </pre> 1346 1347 Returns true if all pixels are opaque. <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> determines how pixels 1348 are encoded, and whether <a href='undocumented#Pixel'>pixel</a> describes <a href='SkColor_Reference#Alpha'>alpha</a>. Returns true for <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> 1349 without <a href='SkColor_Reference#Alpha'>alpha</a> in each <a href='undocumented#Pixel'>pixel</a>; for other <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, returns true if all 1350 pixels have <a href='SkColor_Reference#Alpha'>alpha</a> values equivalent to 1.0 or greater. 1351 1352 For <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a> or <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>: always 1353 returns true. For <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, 1354 <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>: returns true if all <a href='undocumented#Pixel'>pixel</a> <a href='SkColor_Reference#Alpha'>alpha</a> values are 255. 1355 For <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>: returns true if all <a href='undocumented#Pixel'>pixel</a> <a href='SkColor_Reference#Alpha'>alpha</a> values are 15. 1356 For <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>: returns true if all <a href='undocumented#Pixel'>pixel</a> <a href='SkColor_Reference#Alpha'>alpha</a> values are 1.0 or 1357 greater. 1358 1359 Returns false for <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>. 1360 1361 ### Parameters 1362 1363 <table> <tr> <td><a name='SkBitmap_ComputeIsOpaque_bm'><code><strong>bm</strong></code></a></td> 1364 <td><a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> to check</td> 1365 </tr> 1366 </table> 1367 1368 ### Return Value 1369 1370 true if all pixels have opaque values or <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is opaque 1371 1372 ### Example 1373 1374 <div><fiddle-embed name="9df1baa17658fbd0c419780f26fd854f"> 1375 1376 #### Example Output 1377 1378 ~~~~ 1379 computeIsOpaque: false 1380 computeIsOpaque: true 1381 computeIsOpaque: false 1382 computeIsOpaque: true 1383 ~~~~ 1384 1385 </fiddle-embed></div> 1386 1387 ### See Also 1388 1389 <a href='#SkBitmap_isOpaque'>isOpaque</a> <a href='#Image_Info_Color_Type'>Color_Type</a> <a href='SkColor_Reference#Alpha'>Alpha</a> 1390 1391 <a name='SkBitmap_getBounds'></a> 1392 1393 --- 1394 1395 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1396 void <a href='#SkBitmap_getBounds'>getBounds</a>(<a href='SkRect_Reference#SkRect'>SkRect</a>* bounds)const 1397 </pre> 1398 1399 Returns <a href='SkRect_Reference#SkRect'>SkRect</a> { 0, 0, <a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a> }. 1400 1401 ### Parameters 1402 1403 <table> <tr> <td><a name='SkBitmap_getBounds_bounds'><code><strong>bounds</strong></code></a></td> 1404 <td>container for floating <a href='SkPoint_Reference#Point'>point</a> rectangle</td> 1405 </tr> 1406 </table> 1407 1408 ### Example 1409 1410 <div><fiddle-embed name="2431ebc7e7d1e91e6d9daafd0f7a478f"></fiddle-embed></div> 1411 1412 ### See Also 1413 1414 <a href='#SkBitmap_bounds'>bounds()</a> 1415 1416 <a name='SkBitmap_getBounds_2'></a> 1417 1418 --- 1419 1420 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1421 void <a href='#SkBitmap_getBounds'>getBounds</a>(<a href='SkIRect_Reference#SkIRect'>SkIRect</a>* bounds)const 1422 </pre> 1423 1424 Returns <a href='SkIRect_Reference#SkIRect'>SkIRect</a> { 0, 0, <a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a> }. 1425 1426 ### Parameters 1427 1428 <table> <tr> <td><a name='SkBitmap_getBounds_2_bounds'><code><strong>bounds</strong></code></a></td> 1429 <td>container for integral rectangle</td> 1430 </tr> 1431 </table> 1432 1433 ### Example 1434 1435 <div><fiddle-embed name="0c45da35172bc0a529b2faecddae62a2"></fiddle-embed></div> 1436 1437 ### See Also 1438 1439 <a href='#SkBitmap_bounds'>bounds()</a> 1440 1441 <a name='SkBitmap_bounds'></a> 1442 1443 --- 1444 1445 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1446 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkBitmap_bounds'>bounds()</a>const 1447 </pre> 1448 1449 Returns <a href='SkIRect_Reference#SkIRect'>SkIRect</a> { 0, 0, <a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a> }. 1450 1451 ### Return Value 1452 1453 integral rectangle from origin to <a href='#SkBitmap_width'>width()</a> and <a href='#SkBitmap_height'>height()</a> 1454 1455 ### Example 1456 1457 <div><fiddle-embed name="3e9126152ff1cc592aef6facbcb5fc96"></fiddle-embed></div> 1458 1459 ### See Also 1460 1461 <a href='#SkBitmap_getBounds'>getBounds</a> 1462 1463 <a name='SkBitmap_dimensions'></a> 1464 1465 --- 1466 1467 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1468 <a href='undocumented#SkISize'>SkISize</a> <a href='#SkBitmap_dimensions'>dimensions()</a>const 1469 </pre> 1470 1471 Returns <a href='undocumented#SkISize'>SkISize</a> { <a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a> }. 1472 1473 ### Return Value 1474 1475 integral <a href='undocumented#Size'>size</a> of <a href='#SkBitmap_width'>width()</a> and <a href='#SkBitmap_height'>height()</a> 1476 1477 ### Example 1478 1479 <div><fiddle-embed name="647056bcc12c27fb4413f212f33a2898"></fiddle-embed></div> 1480 1481 ### See Also 1482 1483 <a href='#SkBitmap_height'>height</a> <a href='#SkBitmap_width'>width</a> 1484 1485 <a name='SkBitmap_getSubset'></a> 1486 1487 --- 1488 1489 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1490 <a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkBitmap_getSubset'>getSubset</a>()const 1491 </pre> 1492 1493 Returns the bounds of this <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, offset by its <a href='undocumented#SkPixelRef'>SkPixelRef</a> origin. 1494 1495 ### Return Value 1496 1497 bounds within <a href='undocumented#SkPixelRef'>SkPixelRef</a> bounds 1498 1499 ### Example 1500 1501 <div><fiddle-embed name="d6dd0b425aa550f21b938a18c2e1a981"> 1502 1503 #### Example Output 1504 1505 ~~~~ 1506 source: 0, 0, 512, 512 1507 subset: 100, 100, 412, 412 1508 ~~~~ 1509 1510 </fiddle-embed></div> 1511 1512 ### See Also 1513 1514 <a href='#SkBitmap_extractSubset'>extractSubset</a> <a href='#SkBitmap_getBounds'>getBounds</a> 1515 1516 <a name='SkBitmap_setInfo'></a> 1517 1518 --- 1519 1520 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1521 bool <a href='#SkBitmap_setInfo'>setInfo</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& imageInfo, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a> = 0) 1522 </pre> 1523 1524 Sets width, height, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Color_Space'>Color_Space</a>, and optional 1525 <a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a>. Frees pixels, and returns true if successful. 1526 1527 <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() may be altered to a value permitted by <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorSpace'>colorSpace</a>(). 1528 If <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() is 1529 set to <a href='SkImageInfo_Reference#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a>. 1530 If <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a> and <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() is 1531 <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() is replaced by <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>. 1532 If <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a> or <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, 1533 <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() is set to <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 1534 If <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kARGB_4444_SkColorType'>kARGB_4444_SkColorType</a>, <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a>, 1535 <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, or <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>: <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() remains 1536 unchanged. 1537 1538 <a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> must equal or exceed <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(). If <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_colorSpace'>colorSpace</a>() is 1539 <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, <a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> is ignored and treated as zero; for all other 1540 <a href='#Color_Space'>Color_Space</a> values, <a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> of zero is treated as <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(). 1541 1542 Calls <a href='#SkBitmap_reset'>reset()</a> and returns false if: 1543 1544 <table> <tr> 1545 <td><a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> exceeds 31 bits</td> 1546 </tr> <tr> 1547 <td><a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_width'>width()</a> is negative</td> 1548 </tr> <tr> 1549 <td><a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_height'>height()</a> is negative</td> 1550 </tr> <tr> 1551 <td><a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> is positive and less than <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_width'>width()</a> times <a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>()</td> 1552 </tr> 1553 </table> 1554 1555 ### Parameters 1556 1557 <table> <tr> <td><a name='SkBitmap_setInfo_imageInfo'><code><strong>imageInfo</strong></code></a></td> 1558 <td>contains width, height, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Color_Space'>Color_Space</a></td> 1559 </tr> 1560 <tr> <td><a name='SkBitmap_setInfo_rowBytes'><code><strong>rowBytes</strong></code></a></td> 1561 <td><a href='#SkBitmap_setInfo_imageInfo'>imageInfo</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>() or larger; or zero</td> 1562 </tr> 1563 </table> 1564 1565 ### Return Value 1566 1567 true if <a href='#Image_Info'>Image_Info</a> set successfully 1568 1569 ### Example 1570 1571 <div><fiddle-embed name="599ab64d0aea005498176249bbfb64eb"></fiddle-embed></div> 1572 1573 ### See Also 1574 1575 <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> <a href='#Image_Info_Color_Type'>Color_Type</a> <a href='#Color_Space'>Color_Space</a> <a href='#SkBitmap_height'>height</a> <a href='#SkBitmap_setInfo_rowBytes'>rowBytes</a> <a href='#SkBitmap_width'>width</a> 1576 1577 <a name='SkBitmap_AllocFlags'></a> 1578 1579 --- 1580 1581 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1582 enum <a href='#SkBitmap_AllocFlags'>AllocFlags</a> { 1583 <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a> = 1 << 0, 1584 }; 1585 1586 </pre> 1587 1588 <a href='#SkBitmap_AllocFlags'>AllocFlags</a> provides the option to zero <a href='undocumented#Pixel'>pixel</a> memory when allocated. 1589 1590 ### Constants 1591 1592 <table style='border-collapse: collapse; width: 62.5em'> 1593 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 1594 <th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 1595 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 1596 <tr style='background-color: #f0f0f0; '> 1597 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBitmap_kZeroPixels_AllocFlag'><code>SkBitmap::kZeroPixels_AllocFlag</code></a></td> 1598 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 1599 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 1600 Instructs <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> and <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a> to zero <a href='undocumented#Pixel'>pixel</a> memory. 1601 </td> 1602 </tr> 1603 </table> 1604 1605 ### See Also 1606 1607 <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a> <a href='#SkBitmap_erase'>erase</a> <a href='#SkBitmap_eraseColor'>eraseColor</a> 1608 1609 <a name='Allocate'></a> 1610 1611 <a name='SkBitmap_tryAllocPixelsFlags'></a> 1612 1613 --- 1614 1615 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1616 bool <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, uint32_t flags) 1617 </pre> 1618 1619 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_tryAllocPixelsFlags_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1620 memory. If <a href='#SkBitmap_tryAllocPixelsFlags_flags'>flags</a> is <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>, memory is zeroed. 1621 1622 Returns false and calls <a href='#SkBitmap_reset'>reset()</a> if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1623 not be allocated, or memory could not optionally be zeroed. 1624 1625 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1626 not sufficient memory to hold pixels; allocation does not take place 1627 until the pixels are written to. The actual behavior depends on the platform 1628 implementation of malloc(), if <a href='#SkBitmap_tryAllocPixelsFlags_flags'>flags</a> is zero, and calloc(), if <a href='#SkBitmap_tryAllocPixelsFlags_flags'>flags</a> is 1629 <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>. 1630 1631 <a href='#SkBitmap_tryAllocPixelsFlags_flags'>flags</a> set to <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a> offers equal or better performance than 1632 subsequently calling <a href='#SkBitmap_eraseColor'>eraseColor</a>() with <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a>. 1633 1634 ### Parameters 1635 1636 <table> <tr> <td><a name='SkBitmap_tryAllocPixelsFlags_info'><code><strong>info</strong></code></a></td> 1637 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1638 </tr> 1639 <tr> <td><a name='SkBitmap_tryAllocPixelsFlags_flags'><code><strong>flags</strong></code></a></td> 1640 <td><a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>, or zero</td> 1641 </tr> 1642 </table> 1643 1644 ### Return Value 1645 1646 true if pixels allocation is successful 1647 1648 ### Example 1649 1650 <div><fiddle-embed name="f1d1880d38e0aea4cefd3e11745e8a09"> 1651 1652 #### Example Output 1653 1654 ~~~~ 1655 bitmap allocation succeeded! 1656 ~~~~ 1657 1658 </fiddle-embed></div> 1659 1660 ### See Also 1661 1662 <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a> <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeZeroed'>MakeZeroed</a> 1663 1664 <a name='SkBitmap_allocPixelsFlags'></a> 1665 1666 --- 1667 1668 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1669 void <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, uint32_t flags) 1670 </pre> 1671 1672 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_allocPixelsFlags_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1673 memory. If <a href='#SkBitmap_allocPixelsFlags_flags'>flags</a> is <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>, memory is zeroed. 1674 1675 Aborts execution if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1676 not be allocated, or memory could not optionally 1677 be zeroed. Abort steps may be provided by the user at compile time by defining 1678 SK_ABORT. 1679 1680 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1681 not sufficient memory to hold pixels; allocation does not take place 1682 until the pixels are written to. The actual behavior depends on the platform 1683 implementation of malloc(), if <a href='#SkBitmap_allocPixelsFlags_flags'>flags</a> is zero, and calloc(), if <a href='#SkBitmap_allocPixelsFlags_flags'>flags</a> is 1684 <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>. 1685 1686 <a href='#SkBitmap_allocPixelsFlags_flags'>flags</a> set to <a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a> offers equal or better performance than 1687 subsequently calling <a href='#SkBitmap_eraseColor'>eraseColor</a>() with <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a>. 1688 1689 ### Parameters 1690 1691 <table> <tr> <td><a name='SkBitmap_allocPixelsFlags_info'><code><strong>info</strong></code></a></td> 1692 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1693 </tr> 1694 <tr> <td><a name='SkBitmap_allocPixelsFlags_flags'><code><strong>flags</strong></code></a></td> 1695 <td><a href='#SkBitmap_kZeroPixels_AllocFlag'>kZeroPixels_AllocFlag</a>, or zero</td> 1696 </tr> 1697 </table> 1698 1699 ### Example 1700 1701 <div><fiddle-embed name="737e721c7d9e0f367d25521a1b823b9d"><div><a href='undocumented#Text'>Text</a> is drawn on a transparent background; drawing the <a href='SkBitmap_Reference#Bitmap'>bitmap</a> a second time 1702 lets the first draw show through. 1703 </div></fiddle-embed></div> 1704 1705 ### See Also 1706 1707 <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeZeroed'>MakeZeroed</a> 1708 1709 <a name='SkBitmap_tryAllocPixels'></a> 1710 1711 --- 1712 1713 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1714 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>) 1715 </pre> 1716 1717 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_tryAllocPixels_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1718 memory. <a href='#SkBitmap_tryAllocPixels_rowBytes'>rowBytes</a> must equal or exceed <a href='#SkBitmap_tryAllocPixels_info'>info</a>.<a href='#SkImageInfo_width'>width()</a> times <a href='#SkBitmap_tryAllocPixels_info'>info</a>.<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>(), 1719 or equal zero. Pass in zero for <a href='#SkBitmap_tryAllocPixels_rowBytes'>rowBytes</a> to compute the minimum valid value. 1720 1721 Returns false and calls <a href='#SkBitmap_reset'>reset()</a> if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1722 not be allocated. 1723 1724 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1725 not sufficient memory to hold pixels; allocation does not take place 1726 until the pixels are written to. The actual behavior depends on the platform 1727 implementation of malloc(). 1728 1729 ### Parameters 1730 1731 <table> <tr> <td><a name='SkBitmap_tryAllocPixels_info'><code><strong>info</strong></code></a></td> 1732 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1733 </tr> 1734 <tr> <td><a name='SkBitmap_tryAllocPixels_rowBytes'><code><strong>rowBytes</strong></code></a></td> 1735 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger; may be zero</td> 1736 </tr> 1737 </table> 1738 1739 ### Return Value 1740 1741 true if <a href='undocumented#Pixel_Storage'>pixel storage</a> is allocated 1742 1743 ### Example 1744 1745 <div><fiddle-embed name="34479d5aa23ce9f5e334b0786c9edb22"></fiddle-embed></div> 1746 1747 ### See Also 1748 1749 <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1750 1751 <a name='SkBitmap_allocPixels'></a> 1752 1753 --- 1754 1755 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1756 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>) 1757 </pre> 1758 1759 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_allocPixels_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1760 memory. <a href='#SkBitmap_allocPixels_rowBytes'>rowBytes</a> must equal or exceed <a href='#SkBitmap_allocPixels_info'>info</a>.<a href='#SkImageInfo_width'>width()</a> times <a href='#SkBitmap_allocPixels_info'>info</a>.<a href='#SkImageInfo_bytesPerPixel'>bytesPerPixel</a>(), 1761 or equal zero. Pass in zero for <a href='#SkBitmap_allocPixels_rowBytes'>rowBytes</a> to compute the minimum valid value. 1762 1763 Aborts execution if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1764 not be allocated. Abort steps may be provided by 1765 the user at compile time by defining SK_ABORT. 1766 1767 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1768 not sufficient memory to hold pixels; allocation does not take place 1769 until the pixels are written to. The actual behavior depends on the platform 1770 implementation of malloc(). 1771 1772 ### Parameters 1773 1774 <table> <tr> <td><a name='SkBitmap_allocPixels_info'><code><strong>info</strong></code></a></td> 1775 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1776 </tr> 1777 <tr> <td><a name='SkBitmap_allocPixels_rowBytes'><code><strong>rowBytes</strong></code></a></td> 1778 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger; may be zero</td> 1779 </tr> 1780 </table> 1781 1782 ### Example 1783 1784 <div><fiddle-embed name="555c0f62f96602a9dcd459badcd005e0"></fiddle-embed></div> 1785 1786 ### See Also 1787 1788 <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1789 1790 <a name='SkBitmap_tryAllocPixels_2'></a> 1791 1792 --- 1793 1794 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1795 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info) 1796 </pre> 1797 1798 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_tryAllocPixels_2_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1799 memory. 1800 1801 Returns false and calls <a href='#SkBitmap_reset'>reset()</a> if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1802 not be allocated. 1803 1804 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1805 not sufficient memory to hold pixels; allocation does not take place 1806 until the pixels are written to. The actual behavior depends on the platform 1807 implementation of malloc(). 1808 1809 ### Parameters 1810 1811 <table> <tr> <td><a name='SkBitmap_tryAllocPixels_2_info'><code><strong>info</strong></code></a></td> 1812 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1813 </tr> 1814 </table> 1815 1816 ### Return Value 1817 1818 true if <a href='undocumented#Pixel_Storage'>pixel storage</a> is allocated 1819 1820 ### Example 1821 1822 <div><fiddle-embed name="7ef3d043c4c5885649e591dd7dca92ff"></fiddle-embed></div> 1823 1824 ### See Also 1825 1826 <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1827 1828 <a name='SkBitmap_allocPixels_2'></a> 1829 1830 --- 1831 1832 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1833 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info) 1834 </pre> 1835 1836 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_allocPixels_2_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>() and allocates <a href='undocumented#Pixel'>pixel</a> 1837 memory. 1838 1839 Aborts execution if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or memory could 1840 not be allocated. Abort steps may be provided by 1841 the user at compile time by defining SK_ABORT. 1842 1843 On most platforms, allocating <a href='undocumented#Pixel'>pixel</a> memory may succeed even though there is 1844 not sufficient memory to hold pixels; allocation does not take place 1845 until the pixels are written to. The actual behavior depends on the platform 1846 implementation of malloc(). 1847 1848 ### Parameters 1849 1850 <table> <tr> <td><a name='SkBitmap_allocPixels_2_info'><code><strong>info</strong></code></a></td> 1851 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1852 </tr> 1853 </table> 1854 1855 ### Example 1856 1857 <div><fiddle-embed name="91f474a11a2112cd5c88c40a9015048d"></fiddle-embed></div> 1858 1859 ### See Also 1860 1861 <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> <a href='#SkBitmap_allocPixelsFlags'>allocPixelsFlags</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1862 1863 <a name='SkBitmap_tryAllocN32Pixels'></a> 1864 1865 --- 1866 1867 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1868 bool <a href='#SkBitmap_tryAllocN32Pixels'>tryAllocN32Pixels</a>(int width, int height, bool <a href='#SkBitmap_isOpaque'>isOpaque</a> = false) 1869 </pre> 1870 1871 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_tryAllocN32Pixels_width'>width</a>, <a href='#SkBitmap_tryAllocN32Pixels_height'>height</a>, and native <a href='SkImageInfo_Reference#Color_Type'>color type</a>; and allocates 1872 <a href='undocumented#Pixel'>pixel</a> memory. If <a href='#SkBitmap_tryAllocN32Pixels_isOpaque'>isOpaque</a> is true, sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>; 1873 otherwise, sets to <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>. 1874 1875 Calls <a href='#SkBitmap_reset'>reset()</a> and returns false if <a href='#SkBitmap_tryAllocN32Pixels_width'>width</a> exceeds 29 bits or is negative, 1876 or <a href='#SkBitmap_tryAllocN32Pixels_height'>height</a> is negative. 1877 1878 Returns false if allocation fails. 1879 1880 Use to create <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> that matches <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>, the native <a href='undocumented#Pixel'>pixel</a> arrangement on 1881 the platform. <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> drawn to output <a href='undocumented#Device'>device</a> skips converting its <a href='undocumented#Pixel'>pixel</a> format. 1882 1883 ### Parameters 1884 1885 <table> <tr> <td><a name='SkBitmap_tryAllocN32Pixels_width'><code><strong>width</strong></code></a></td> 1886 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1887 </tr> 1888 <tr> <td><a name='SkBitmap_tryAllocN32Pixels_height'><code><strong>height</strong></code></a></td> 1889 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1890 </tr> 1891 <tr> <td><a name='SkBitmap_tryAllocN32Pixels_isOpaque'><code><strong>isOpaque</strong></code></a></td> 1892 <td>true if pixels do not have transparency</td> 1893 </tr> 1894 </table> 1895 1896 ### Return Value 1897 1898 true if <a href='undocumented#Pixel_Storage'>pixel storage</a> is allocated 1899 1900 ### Example 1901 1902 <div><fiddle-embed name="a2b1e0910f37066f15ae56368775a6d8"></fiddle-embed></div> 1903 1904 ### See Also 1905 1906 <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> <a href='#SkBitmap_allocN32Pixels'>allocN32Pixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1907 1908 <a name='SkBitmap_allocN32Pixels'></a> 1909 1910 --- 1911 1912 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1913 void <a href='#SkBitmap_allocN32Pixels'>allocN32Pixels</a>(int width, int height, bool <a href='#SkBitmap_isOpaque'>isOpaque</a> = false) 1914 </pre> 1915 1916 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_allocN32Pixels_width'>width</a>, <a href='#SkBitmap_allocN32Pixels_height'>height</a>, and the native <a href='SkImageInfo_Reference#Color_Type'>color type</a>; and allocates 1917 <a href='undocumented#Pixel'>pixel</a> memory. If <a href='#SkBitmap_allocN32Pixels_isOpaque'>isOpaque</a> is true, sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>; 1918 otherwise, sets to <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>. 1919 1920 Aborts if <a href='#SkBitmap_allocN32Pixels_width'>width</a> exceeds 29 bits or is negative, or <a href='#SkBitmap_allocN32Pixels_height'>height</a> is negative, or 1921 allocation fails. Abort steps may be provided by the user at compile time by 1922 defining SK_ABORT. 1923 1924 Use to create <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> that matches <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>, the native <a href='undocumented#Pixel'>pixel</a> arrangement on 1925 the platform. <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> drawn to output <a href='undocumented#Device'>device</a> skips converting its <a href='undocumented#Pixel'>pixel</a> format. 1926 1927 ### Parameters 1928 1929 <table> <tr> <td><a name='SkBitmap_allocN32Pixels_width'><code><strong>width</strong></code></a></td> 1930 <td><a href='undocumented#Pixel'>pixel</a> column count; must be zero or greater</td> 1931 </tr> 1932 <tr> <td><a name='SkBitmap_allocN32Pixels_height'><code><strong>height</strong></code></a></td> 1933 <td><a href='undocumented#Pixel'>pixel</a> row count; must be zero or greater</td> 1934 </tr> 1935 <tr> <td><a name='SkBitmap_allocN32Pixels_isOpaque'><code><strong>isOpaque</strong></code></a></td> 1936 <td>true if pixels do not have transparency</td> 1937 </tr> 1938 </table> 1939 1940 ### Example 1941 1942 <div><fiddle-embed name="c717491f9251604724c9cbde7088ec20"></fiddle-embed></div> 1943 1944 ### See Also 1945 1946 <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='#SkBitmap_tryAllocN32Pixels'>tryAllocN32Pixels</a> <a href='undocumented#SkMallocPixelRef'>SkMallocPixelRef</a>::<a href='#SkMallocPixelRef_MakeAllocate'>MakeAllocate</a> 1947 1948 <a name='SkBitmap_installPixels'></a> 1949 1950 --- 1951 1952 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1953 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, void* pixels, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>, void (*releaseProc) 1954 (void* addr, void* context) , void* context) 1955 </pre> 1956 1957 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_installPixels_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>(), and creates <a href='undocumented#SkPixelRef'>SkPixelRef</a> 1958 containing <a href='#SkBitmap_installPixels_pixels'>pixels</a> and <a href='#SkBitmap_installPixels_rowBytes'>rowBytes</a>. <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a>, if not nullptr, is called 1959 immediately on failure or when <a href='#SkBitmap_installPixels_pixels'>pixels</a> are no longer referenced. <a href='#SkBitmap_installPixels_context'>context</a> may be 1960 nullptr. 1961 1962 If <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or <a href='#SkBitmap_installPixels_rowBytes'>rowBytes</a> is less than <a href='#SkBitmap_installPixels_info'>info</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(): 1963 calls <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a> if present, calls <a href='#SkBitmap_reset'>reset()</a>, and returns false. 1964 1965 Otherwise, if <a href='#SkBitmap_installPixels_pixels'>pixels</a> equals nullptr: sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, calls <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a> if 1966 present, returns true. 1967 1968 If <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is set, <a href='#SkBitmap_installPixels_pixels'>pixels</a> is not nullptr, and <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a> is not nullptr: 1969 when <a href='#SkBitmap_installPixels_pixels'>pixels</a> are no longer referenced, calls <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a> with <a href='#SkBitmap_installPixels_pixels'>pixels</a> and <a href='#SkBitmap_installPixels_context'>context</a> 1970 as parameters. 1971 1972 ### Parameters 1973 1974 <table> <tr> <td><a name='SkBitmap_installPixels_info'><code><strong>info</strong></code></a></td> 1975 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 1976 </tr> 1977 <tr> <td><a name='SkBitmap_installPixels_pixels'><code><strong>pixels</strong></code></a></td> 1978 <td>address or <a href='undocumented#Pixel_Storage'>pixel storage</a>; may be nullptr</td> 1979 </tr> 1980 <tr> <td><a name='SkBitmap_installPixels_rowBytes'><code><strong>rowBytes</strong></code></a></td> 1981 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger</td> 1982 </tr> 1983 <tr> <td><a name='SkBitmap_installPixels_releaseProc'><code><strong>releaseProc</strong></code></a></td> 1984 <td>function called when <a href='#SkBitmap_installPixels_pixels'>pixels</a> can be deleted; may be nullptr</td> 1985 </tr> 1986 <tr> <td><a name='SkBitmap_installPixels_context'><code><strong>context</strong></code></a></td> 1987 <td>caller state passed to <a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a>; may be nullptr</td> 1988 </tr> 1989 </table> 1990 1991 ### Return Value 1992 1993 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is set to <a href='#SkBitmap_installPixels_info'>info</a> 1994 1995 ### Example 1996 1997 <div><fiddle-embed name="8c4f7bf73fffa1a812ee8e88e44e639c"><div><a href='#SkBitmap_installPixels_releaseProc'>releaseProc</a> is called immediately because <a href='#SkBitmap_installPixels_rowBytes'>rowBytes</a> is too small for <a href='#Pixel_Ref'>Pixel_Ref</a>. 1998 </div> 1999 2000 #### Example Output 2001 2002 ~~~~ 2003 before installPixels 2004 releaseProc called 2005 install not successful 2006 ~~~~ 2007 2008 </fiddle-embed></div> 2009 2010 ### See Also 2011 2012 <a href='#SkBitmap_allocPixels'>allocPixels</a> 2013 2014 <a name='SkBitmap_installPixels_2'></a> 2015 2016 --- 2017 2018 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2019 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, void* pixels, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>) 2020 </pre> 2021 2022 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_installPixels_2_info'>info</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>(), and creates <a href='undocumented#SkPixelRef'>SkPixelRef</a> 2023 containing <a href='#SkBitmap_installPixels_2_pixels'>pixels</a> and <a href='#SkBitmap_installPixels_2_rowBytes'>rowBytes</a>. 2024 2025 If <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or <a href='#SkBitmap_installPixels_2_rowBytes'>rowBytes</a> is less than <a href='#SkBitmap_installPixels_2_info'>info</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(): 2026 calls <a href='#SkBitmap_reset'>reset()</a>, and returns false. 2027 2028 Otherwise, if <a href='#SkBitmap_installPixels_2_pixels'>pixels</a> equals nullptr: sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, returns true. 2029 2030 Caller must ensure that <a href='#SkBitmap_installPixels_2_pixels'>pixels</a> are valid for the lifetime of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> and <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2031 2032 ### Parameters 2033 2034 <table> <tr> <td><a name='SkBitmap_installPixels_2_info'><code><strong>info</strong></code></a></td> 2035 <td>contains width, height, <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a>, <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>, <a href='undocumented#SkColorSpace'>SkColorSpace</a></td> 2036 </tr> 2037 <tr> <td><a name='SkBitmap_installPixels_2_pixels'><code><strong>pixels</strong></code></a></td> 2038 <td>address or <a href='undocumented#Pixel_Storage'>pixel storage</a>; may be nullptr</td> 2039 </tr> 2040 <tr> <td><a name='SkBitmap_installPixels_2_rowBytes'><code><strong>rowBytes</strong></code></a></td> 2041 <td><a href='undocumented#Size'>size</a> of <a href='undocumented#Pixel'>pixel</a> row or larger</td> 2042 </tr> 2043 </table> 2044 2045 ### Return Value 2046 2047 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is set to <a href='#SkBitmap_installPixels_2_info'>info</a> 2048 2049 ### Example 2050 2051 <div><fiddle-embed name="a7e04447b2081010c50d7920e80a6bb2"><div>GPU does not support <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>, does not assert that it does not. 2052 </div></fiddle-embed></div> 2053 2054 ### See Also 2055 2056 <a href='#SkBitmap_allocPixels'>allocPixels</a> 2057 2058 <a name='SkBitmap_installPixels_3'></a> 2059 2060 --- 2061 2062 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2063 bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& <a href='SkPixmap_Reference#Pixmap'>pixmap</a>) 2064 </pre> 2065 2066 Sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_info'>info()</a> following the rules in <a href='#SkBitmap_setInfo'>setInfo</a>(), and creates 2067 <a href='undocumented#SkPixelRef'>SkPixelRef</a> containing <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_addr'>addr()</a> and <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>(). 2068 2069 If <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> could not be set, or <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() is less than 2070 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>(): calls <a href='#SkBitmap_reset'>reset()</a>, and returns false. 2071 2072 Otherwise, if <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_addr'>addr()</a> equals nullptr: sets <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, returns true. 2073 2074 Caller must ensure that <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a> is valid for the lifetime of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> and <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2075 2076 ### Parameters 2077 2078 <table> <tr> <td><a name='SkBitmap_installPixels_3_pixmap'><code><strong>pixmap</strong></code></a></td> 2079 <td><a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>, <a href='undocumented#Pixel'>pixel</a> address, and <a href='#SkBitmap_rowBytes'>rowBytes</a>()</td> 2080 </tr> 2081 </table> 2082 2083 ### Return Value 2084 2085 true if <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> was set to <a href='#SkBitmap_installPixels_3_pixmap'>pixmap</a>.<a href='#SkPixmap_info'>info()</a> 2086 2087 ### Example 2088 2089 <div><fiddle-embed name="6e2a8c9358b34aebd2ec586815fe9d3a"><div>Draw a five by five <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, and draw it again with a center white <a href='undocumented#Pixel'>pixel</a>. 2090 </div></fiddle-embed></div> 2091 2092 ### See Also 2093 2094 <a href='#SkBitmap_allocPixels'>allocPixels</a> 2095 2096 <a name='Pixels'></a> 2097 2098 <a name='SkBitmap_setPixels'></a> 2099 2100 --- 2101 2102 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2103 void <a href='#SkBitmap_setPixels'>setPixels</a>(void* pixels) 2104 </pre> 2105 2106 Replaces <a href='undocumented#SkPixelRef'>SkPixelRef</a> with <a href='#SkBitmap_setPixels_pixels'>pixels</a>, preserving <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> and <a href='#SkBitmap_rowBytes'>rowBytes</a>(). 2107 Sets <a href='undocumented#SkPixelRef'>SkPixelRef</a> origin to (0, 0). 2108 2109 If <a href='#SkBitmap_setPixels_pixels'>pixels</a> is nullptr, or if <a href='#SkBitmap_info'>info()</a>.<a href='#SkImageInfo_colorType'>colorType</a>() equals <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>; 2110 release reference to <a href='undocumented#SkPixelRef'>SkPixelRef</a>, and set <a href='undocumented#SkPixelRef'>SkPixelRef</a> to nullptr. 2111 2112 Caller is responsible for handling ownership <a href='undocumented#Pixel'>pixel</a> memory for the lifetime 2113 of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> and <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2114 2115 ### Parameters 2116 2117 <table> <tr> <td><a name='SkBitmap_setPixels_pixels'><code><strong>pixels</strong></code></a></td> 2118 <td>address of <a href='undocumented#Pixel_Storage'>pixel storage</a>, managed by caller</td> 2119 </tr> 2120 </table> 2121 2122 ### Example 2123 2124 <div><fiddle-embed name="f0db16e06c9a1436917c8179f8c1718f"></fiddle-embed></div> 2125 2126 ### See Also 2127 2128 <a href='#SkBitmap_installPixels'>installPixels</a> <a href='#SkBitmap_allocPixels'>allocPixels</a> 2129 2130 <a name='SkBitmap_tryAllocPixels_3'></a> 2131 2132 --- 2133 2134 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2135 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>() 2136 </pre> 2137 2138 Allocates <a href='undocumented#Pixel'>pixel</a> memory with <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a>, and replaces existing <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2139 The allocation <a href='undocumented#Size'>size</a> is determined by <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> width, height, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 2140 2141 Returns false if <a href='#SkBitmap_info'>info()</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, or allocation fails. 2142 2143 ### Return Value 2144 2145 true if the allocation succeeds 2146 2147 ### Example 2148 2149 <div><fiddle-embed name="720e4c053fae9e929ab6518b47e49370"><div><a href='SkBitmap_Reference#Bitmap'>Bitmap</a> hosts and draws gray values in set1. <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> replaces <a href='#Pixel_Ref'>Pixel_Ref</a> 2150 and erases it to black, but does not alter set1. <a href='#SkBitmap_setPixels'>setPixels</a> replaces black 2151 <a href='#Pixel_Ref'>Pixel_Ref</a> with set1. 2152 </div></fiddle-embed></div> 2153 2154 ### See Also 2155 2156 <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='#SkBitmap_installPixels'>installPixels</a> <a href='#SkBitmap_setPixels'>setPixels</a> 2157 2158 <a name='SkBitmap_allocPixels_3'></a> 2159 2160 --- 2161 2162 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2163 void <a href='#SkBitmap_allocPixels'>allocPixels</a>() 2164 </pre> 2165 2166 Allocates <a href='undocumented#Pixel'>pixel</a> memory with <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a>, and replaces existing <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2167 The allocation <a href='undocumented#Size'>size</a> is determined by <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> width, height, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 2168 2169 Aborts if <a href='#SkBitmap_info'>info()</a>.<a href='#SkImageInfo_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, or allocation fails. 2170 Abort steps may be provided by the user at compile 2171 time by defining SK_ABORT. 2172 2173 ### Example 2174 2175 <div><fiddle-embed name="1219b38c788bf270fb20f8cd2d78cff8"><div><a href='SkBitmap_Reference#Bitmap'>Bitmap</a> hosts and draws gray values in set1. <a href='#SkBitmap_allocPixels'>allocPixels</a> replaces <a href='#Pixel_Ref'>Pixel_Ref</a> 2176 and erases it to black, but does not alter set1. <a href='#SkBitmap_setPixels'>setPixels</a> replaces black 2177 <a href='#Pixel_Ref'>Pixel_Ref</a> with set2. 2178 </div></fiddle-embed></div> 2179 2180 ### See Also 2181 2182 <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a> <a href='#SkBitmap_installPixels'>installPixels</a> <a href='#SkBitmap_setPixels'>setPixels</a> 2183 2184 <a name='SkBitmap_tryAllocPixels_4'></a> 2185 2186 --- 2187 2188 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2189 bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>(<a href='#SkBitmap_Allocator'>Allocator</a>* allocator) 2190 </pre> 2191 2192 Allocates <a href='undocumented#Pixel'>pixel</a> memory with <a href='#SkBitmap_tryAllocPixels_4_allocator'>allocator</a>, and replaces existing <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2193 The allocation <a href='undocumented#Size'>size</a> is determined by <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> width, height, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 2194 If <a href='#SkBitmap_tryAllocPixels_4_allocator'>allocator</a> is nullptr, use <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> instead. 2195 2196 Returns false if <a href='#SkBitmap_Allocator'>Allocator</a>::<a href='#SkBitmap_Allocator_allocPixelRef'>allocPixelRef</a> return false. 2197 2198 ### Parameters 2199 2200 <table> <tr> <td><a name='SkBitmap_tryAllocPixels_4_allocator'><code><strong>allocator</strong></code></a></td> 2201 <td>instance of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_Allocator'>Allocator</a> instantiation</td> 2202 </tr> 2203 </table> 2204 2205 ### Return Value 2206 2207 true if custom <a href='#SkBitmap_tryAllocPixels_4_allocator'>allocator</a> reports success 2208 2209 ### Example 2210 2211 <div><fiddle-embed name="eb6f861ca1839146d26e40d56c2a001c"><div><a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> limits the maximum <a href='undocumented#Size'>size</a> of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> to two gigabytes. Using 2212 a custom <a href='#SkBitmap_tryAllocPixels_4_allocator'>allocator</a>, this limitation may be relaxed. This example can be 2213 modified to allocate an eight gigabyte <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> on a 64-bit platform with 2214 sufficient memory. 2215 </div></fiddle-embed></div> 2216 2217 ### See Also 2218 2219 <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='#SkBitmap_Allocator'>Allocator</a> <a href='#Pixel_Ref'>Pixel_Ref</a> 2220 2221 <a name='SkBitmap_allocPixels_4'></a> 2222 2223 --- 2224 2225 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2226 void <a href='#SkBitmap_allocPixels'>allocPixels</a>(<a href='#SkBitmap_Allocator'>Allocator</a>* allocator) 2227 </pre> 2228 2229 Allocates <a href='undocumented#Pixel'>pixel</a> memory with <a href='#SkBitmap_allocPixels_4_allocator'>allocator</a>, and replaces existing <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2230 The allocation <a href='undocumented#Size'>size</a> is determined by <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> width, height, and <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a>. 2231 If <a href='#SkBitmap_allocPixels_4_allocator'>allocator</a> is nullptr, use <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> instead. 2232 2233 Aborts if <a href='#SkBitmap_Allocator'>Allocator</a>::<a href='#SkBitmap_Allocator_allocPixelRef'>allocPixelRef</a> return false. Abort steps may be provided by 2234 the user at compile time by defining SK_ABORT. 2235 2236 ### Parameters 2237 2238 <table> <tr> <td><a name='SkBitmap_allocPixels_4_allocator'><code><strong>allocator</strong></code></a></td> 2239 <td>instance of <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>::<a href='#SkBitmap_Allocator'>Allocator</a> instantiation</td> 2240 </tr> 2241 </table> 2242 2243 ### Example 2244 2245 <div><fiddle-embed name="1b2800d23c9ea249b45c2c21a34b6d14"></fiddle-embed></div> 2246 2247 ### See Also 2248 2249 <a href='#SkBitmap_allocPixels'>allocPixels</a> <a href='#SkBitmap_Allocator'>Allocator</a> <a href='#Pixel_Ref'>Pixel_Ref</a> 2250 2251 <a name='SkBitmap_pixelRef'></a> 2252 2253 --- 2254 2255 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2256 <a href='undocumented#SkPixelRef'>SkPixelRef</a>* <a href='#SkBitmap_pixelRef'>pixelRef</a>()const 2257 </pre> 2258 2259 Returns <a href='undocumented#SkPixelRef'>SkPixelRef</a>, which contains: <a href='undocumented#Pixel'>pixel</a> base address; its dimensions; and 2260 <a href='#SkBitmap_rowBytes'>rowBytes</a>(), the interval from one row to the next. Does not change <a href='undocumented#SkPixelRef'>SkPixelRef</a> 2261 reference count. <a href='undocumented#SkPixelRef'>SkPixelRef</a> may be shared by multiple <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>. 2262 If <a href='undocumented#SkPixelRef'>SkPixelRef</a> has not been set, returns nullptr. 2263 2264 ### Return Value 2265 2266 <a href='undocumented#SkPixelRef'>SkPixelRef</a>, or nullptr 2267 2268 ### Example 2269 2270 <div><fiddle-embed name="5db2d30870a7cc45f28e22578d1880c3"></fiddle-embed></div> 2271 2272 ### See Also 2273 2274 <a href='#SkBitmap_getPixels'>getPixels</a> <a href='#SkBitmap_getAddr'>getAddr</a> 2275 2276 <a name='SkBitmap_pixelRefOrigin'></a> 2277 2278 --- 2279 2280 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2281 <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkBitmap_pixelRefOrigin'>pixelRefOrigin</a>()const 2282 </pre> 2283 2284 Returns origin of pixels within <a href='undocumented#SkPixelRef'>SkPixelRef</a>. <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> bounds is always contained 2285 by <a href='undocumented#SkPixelRef'>SkPixelRef</a> bounds, which may be the same <a href='undocumented#Size'>size</a> or larger. Multiple <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> 2286 can share the same <a href='undocumented#SkPixelRef'>SkPixelRef</a>, where each <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> has different bounds. 2287 2288 The returned origin added to <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> dimensions equals or is smaller than the 2289 <a href='undocumented#SkPixelRef'>SkPixelRef</a> dimensions. 2290 2291 Returns (0, 0) if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr. 2292 2293 ### Return Value 2294 2295 <a href='undocumented#Pixel'>pixel</a> origin within <a href='undocumented#SkPixelRef'>SkPixelRef</a> 2296 2297 ### Example 2298 2299 <div><fiddle-embed name="6d31686c6c0829c70f284ae716526d6a"> 2300 2301 #### Example Output 2302 2303 ~~~~ 2304 source origin: 0, 0 2305 subset origin: 32, 64 2306 ~~~~ 2307 2308 </fiddle-embed></div> 2309 2310 ### See Also 2311 2312 <a href='undocumented#SkPixelRef'>SkPixelRef</a> <a href='#SkBitmap_getSubset'>getSubset</a> <a href='#SkBitmap_setPixelRef'>setPixelRef</a> 2313 2314 <a name='Set'></a> 2315 2316 <a name='SkBitmap_setPixelRef'></a> 2317 2318 --- 2319 2320 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2321 void <a href='#SkBitmap_setPixelRef'>setPixelRef</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkPixelRef'>SkPixelRef</a>> <a href='#SkBitmap_pixelRef'>pixelRef</a>, int dx, int dy) 2322 </pre> 2323 2324 Replaces <a href='#SkBitmap_setPixelRef_pixelRef'>pixelRef</a> and origin in <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. <a href='#SkBitmap_setPixelRef_dx'>dx</a> and <a href='#SkBitmap_setPixelRef_dy'>dy</a> specify the offset 2325 within the <a href='undocumented#SkPixelRef'>SkPixelRef</a> pixels for the top-left corner of the <a href='SkBitmap_Reference#Bitmap'>bitmap</a>. 2326 2327 Asserts in debug builds if <a href='#SkBitmap_setPixelRef_dx'>dx</a> or <a href='#SkBitmap_setPixelRef_dy'>dy</a> are out of range. Pins <a href='#SkBitmap_setPixelRef_dx'>dx</a> and <a href='#SkBitmap_setPixelRef_dy'>dy</a> 2328 to legal range in release builds. 2329 2330 The caller is responsible for ensuring that the pixels match the 2331 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> and <a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>. 2332 2333 ### Parameters 2334 2335 <table> <tr> <td><a name='SkBitmap_setPixelRef_pixelRef'><code><strong>pixelRef</strong></code></a></td> 2336 <td><a href='undocumented#SkPixelRef'>SkPixelRef</a> describing <a href='undocumented#Pixel'>pixel</a> address and <a href='#SkBitmap_rowBytes'>rowBytes</a>()</td> 2337 </tr> 2338 <tr> <td><a name='SkBitmap_setPixelRef_dx'><code><strong>dx</strong></code></a></td> 2339 <td>column offset in <a href='undocumented#SkPixelRef'>SkPixelRef</a> for <a href='SkBitmap_Reference#Bitmap'>bitmap</a> origin</td> 2340 </tr> 2341 <tr> <td><a name='SkBitmap_setPixelRef_dy'><code><strong>dy</strong></code></a></td> 2342 <td>row offset in <a href='undocumented#SkPixelRef'>SkPixelRef</a> for <a href='SkBitmap_Reference#Bitmap'>bitmap</a> origin</td> 2343 </tr> 2344 </table> 2345 2346 ### Example 2347 2348 <div><fiddle-embed name="f98cc0451c6e77a8833d261c9a484c5f"><div>Treating 32-bit <a href='undocumented#Data'>data</a> as 8-bit <a href='undocumented#Data'>data</a> is unlikely to produce useful results. 2349 </div></fiddle-embed></div> 2350 2351 ### See Also 2352 2353 <a href='#SkBitmap_setInfo'>setInfo</a> 2354 2355 <a name='SkBitmap_readyToDraw'></a> 2356 2357 --- 2358 2359 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2360 bool <a href='#SkBitmap_readyToDraw'>readyToDraw</a>()const 2361 </pre> 2362 2363 Returns true if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> is can be drawn. 2364 2365 ### Return Value 2366 2367 true if <a href='#SkBitmap_getPixels'>getPixels</a>() is not nullptr 2368 2369 ### Example 2370 2371 <div><fiddle-embed name="e89c78ca992e2e789ed50944fe68f920"></fiddle-embed></div> 2372 2373 ### See Also 2374 2375 <a href='#SkBitmap_getPixels'>getPixels</a> <a href='#SkBitmap_drawsNothing'>drawsNothing</a> 2376 2377 <a name='SkBitmap_getGenerationID'></a> 2378 2379 --- 2380 2381 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2382 uint32_t <a href='#SkBitmap_getGenerationID'>getGenerationID</a>()const 2383 </pre> 2384 2385 Returns a unique value corresponding to the pixels in <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 2386 Returns a different value after <a href='#SkBitmap_notifyPixelsChanged'>notifyPixelsChanged</a>() has been called. 2387 Returns zero if <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr. 2388 2389 Determines if pixels have changed since last examined. 2390 2391 ### Return Value 2392 2393 unique value for pixels in <a href='undocumented#SkPixelRef'>SkPixelRef</a> 2394 2395 ### Example 2396 2397 <div><fiddle-embed name="db9dd91e0207c3941c09538555817b4b"> 2398 2399 #### Example Output 2400 2401 ~~~~ 2402 #Volatile 2403 empty id 0 2404 alloc id 4 2405 erase id 6 2406 ~~~~ 2407 2408 </fiddle-embed></div> 2409 2410 ### See Also 2411 2412 <a href='#SkBitmap_notifyPixelsChanged'>notifyPixelsChanged</a> <a href='#Pixel_Ref'>Pixel_Ref</a> 2413 2414 <a name='SkBitmap_notifyPixelsChanged'></a> 2415 2416 --- 2417 2418 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2419 void <a href='#SkBitmap_notifyPixelsChanged'>notifyPixelsChanged</a>()const 2420 </pre> 2421 2422 Marks that pixels in <a href='undocumented#SkPixelRef'>SkPixelRef</a> have changed. Subsequent calls to 2423 <a href='#SkBitmap_getGenerationID'>getGenerationID</a>() return a different value. 2424 2425 ### Example 2426 2427 <div><fiddle-embed name="8f463ed17b0ed4fb9c503a0ec71706f9"></fiddle-embed></div> 2428 2429 ### See Also 2430 2431 <a href='#SkBitmap_getGenerationID'>getGenerationID</a> <a href='#SkBitmap_isVolatile'>isVolatile</a> <a href='#Pixel_Ref'>Pixel_Ref</a> 2432 2433 <a name='Draw'></a> 2434 2435 <a name='SkBitmap_eraseColor'></a> 2436 2437 --- 2438 2439 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2440 void <a href='#SkBitmap_eraseColor'>eraseColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c)const 2441 </pre> 2442 2443 Replaces <a href='undocumented#Pixel'>pixel</a> values with <a href='#SkBitmap_eraseColor_c'>c</a>. All pixels contained by <a href='#SkBitmap_bounds'>bounds()</a> are affected. 2444 If the <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a> or <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, then <a href='SkColor_Reference#Alpha'>alpha</a> 2445 is ignored; RGB is treated as opaque. If <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 2446 then RGB is ignored. 2447 2448 ### Parameters 2449 2450 <table> <tr> <td><a name='SkBitmap_eraseColor_c'><code><strong>c</strong></code></a></td> 2451 <td><a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a></td> 2452 </tr> 2453 </table> 2454 2455 ### Example 2456 2457 <div><fiddle-embed name="418928dbfffa9eb00c8225530f44baf5"></fiddle-embed></div> 2458 2459 ### See Also 2460 2461 <a href='#SkBitmap_eraseARGB'>eraseARGB</a> <a href='#SkBitmap_erase'>erase</a> 2462 2463 <a name='SkBitmap_eraseARGB'></a> 2464 2465 --- 2466 2467 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2468 void <a href='#SkBitmap_eraseARGB'>eraseARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b)const 2469 </pre> 2470 2471 Replaces <a href='undocumented#Pixel'>pixel</a> values with <a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a> built from <a href='#SkBitmap_eraseARGB_a'>a</a>, <a href='#SkBitmap_eraseARGB_r'>r</a>, <a href='#SkBitmap_eraseARGB_g'>g</a>, and <a href='#SkBitmap_eraseARGB_b'>b</a>. 2472 All pixels contained by <a href='#SkBitmap_bounds'>bounds()</a> are affected. 2473 If the <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a> or <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, then <a href='#SkBitmap_eraseARGB_a'>a</a> 2474 is ignored; <a href='#SkBitmap_eraseARGB_r'>r</a>, <a href='#SkBitmap_eraseARGB_g'>g</a>, and <a href='#SkBitmap_eraseARGB_b'>b</a> are treated as opaque. If <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 2475 then <a href='#SkBitmap_eraseARGB_r'>r</a>, <a href='#SkBitmap_eraseARGB_g'>g</a>, and <a href='#SkBitmap_eraseARGB_b'>b</a> are ignored. 2476 2477 ### Parameters 2478 2479 <table> <tr> <td><a name='SkBitmap_eraseARGB_a'><code><strong>a</strong></code></a></td> 2480 <td>amount of <a href='SkColor_Reference#Alpha'>alpha</a>, from fully transparent (0) to fully opaque (255)</td> 2481 </tr> 2482 <tr> <td><a name='SkBitmap_eraseARGB_r'><code><strong>r</strong></code></a></td> 2483 <td>amount of red, from no red (0) to full red (255)</td> 2484 </tr> 2485 <tr> <td><a name='SkBitmap_eraseARGB_g'><code><strong>g</strong></code></a></td> 2486 <td>amount of green, from no green (0) to full green (255)</td> 2487 </tr> 2488 <tr> <td><a name='SkBitmap_eraseARGB_b'><code><strong>b</strong></code></a></td> 2489 <td>amount of blue, from no blue (0) to full blue (255)</td> 2490 </tr> 2491 </table> 2492 2493 ### Example 2494 2495 <div><fiddle-embed name="67277b0a1003f340473a35982533561c"></fiddle-embed></div> 2496 2497 ### See Also 2498 2499 <a href='#SkBitmap_eraseColor'>eraseColor</a> <a href='#SkBitmap_erase'>erase</a> 2500 2501 <a name='SkBitmap_erase'></a> 2502 2503 --- 2504 2505 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2506 void <a href='#SkBitmap_erase'>erase</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area)const 2507 </pre> 2508 2509 Replaces <a href='undocumented#Pixel'>pixel</a> values inside <a href='#SkBitmap_erase_area'>area</a> with <a href='#SkBitmap_erase_c'>c</a>. If <a href='#SkBitmap_erase_area'>area</a> does not intersect <a href='#SkBitmap_bounds'>bounds()</a>, 2510 call has no effect. 2511 2512 If the <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a> or <a href='SkImageInfo_Reference#kRGB_565_SkColorType'>kRGB_565_SkColorType</a>, then <a href='SkColor_Reference#Alpha'>alpha</a> 2513 is ignored; RGB is treated as opaque. If <a href='#SkBitmap_colorType'>colorType</a>() is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, 2514 then RGB is ignored. 2515 2516 ### Parameters 2517 2518 <table> <tr> <td><a name='SkBitmap_erase_c'><code><strong>c</strong></code></a></td> 2519 <td><a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a></td> 2520 </tr> 2521 <tr> <td><a name='SkBitmap_erase_area'><code><strong>area</strong></code></a></td> 2522 <td>rectangle to fill</td> 2523 </tr> 2524 </table> 2525 2526 ### Example 2527 2528 <div><fiddle-embed name="2c5c4230ccd2861a5d15b7cd2764ab6e"></fiddle-embed></div> 2529 2530 ### See Also 2531 2532 <a href='#SkBitmap_eraseColor'>eraseColor</a> <a href='#SkBitmap_eraseARGB'>eraseARGB</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawRect'>drawRect</a> 2533 2534 <a name='SkBitmap_getColor'></a> 2535 2536 --- 2537 2538 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2539 <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkBitmap_getColor'>getColor</a>(int x, int y)const 2540 </pre> 2541 2542 Returns <a href='undocumented#Pixel'>pixel</a> at (<a href='#SkBitmap_getColor_x'>x</a>, <a href='#SkBitmap_getColor_y'>y</a>) as <a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a>. 2543 Returns black with <a href='SkColor_Reference#Alpha'>alpha</a> if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>. 2544 2545 Input is not validated: out of bounds values of <a href='#SkBitmap_getColor_x'>x</a> or <a href='#SkBitmap_getColor_y'>y</a> trigger an assert() if 2546 built with SK_DEBUG defined; and returns undefined values or may crash if 2547 SK_RELEASE is defined. Fails if <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a> or 2548 <a href='undocumented#Pixel'>pixel</a> address is nullptr. 2549 2550 <a href='undocumented#SkColorSpace'>SkColorSpace</a> in <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> is ignored. Some <a href='SkColor_Reference#Color'>color</a> precision may be lost in the 2551 conversion to <a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a>; original <a href='undocumented#Pixel'>pixel</a> <a href='undocumented#Data'>data</a> may have additional 2552 precision. 2553 2554 ### Parameters 2555 2556 <table> <tr> <td><a name='SkBitmap_getColor_x'><code><strong>x</strong></code></a></td> 2557 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2558 </tr> 2559 <tr> <td><a name='SkBitmap_getColor_y'><code><strong>y</strong></code></a></td> 2560 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2561 </tr> 2562 </table> 2563 2564 ### Return Value 2565 2566 <a href='undocumented#Pixel'>pixel</a> converted to <a href='undocumented#Unpremultiply'>unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a> 2567 2568 ### Example 2569 2570 <div><fiddle-embed name="193d1f6d8a43b7a8e9f27ba21de38617"> 2571 2572 #### Example Output 2573 2574 ~~~~ 2575 Premultiplied: 2576 (0, 0) 0x00000000 0x2a0e002a 0x55380055 0x7f7f007f 2577 (0, 1) 0x2a000e2a 0x551c1c55 0x7f542a7f 0xaaaa38aa 2578 (0, 2) 0x55003855 0x7f2a547f 0xaa7171aa 0xd4d48dd4 2579 (0, 3) 0x7f007f7f 0xaa38aaaa 0xd48dd4d4 0xffffffff 2580 Unpremultiplied: 2581 (0, 0) 0x00000000 0x2a5500ff 0x55a800ff 0x7fff00ff 2582 (0, 1) 0x2a0055ff 0x555454ff 0x7fa954ff 0xaaff54ff 2583 (0, 2) 0x5500a8ff 0x7f54a9ff 0xaaaaaaff 0xd4ffaaff 2584 (0, 3) 0x7f00ffff 0xaa54ffff 0xd4aaffff 0xffffffff 2585 ~~~~ 2586 2587 </fiddle-embed></div> 2588 2589 ### See Also 2590 2591 <a href='#SkBitmap_getAlphaf'>getAlphaf</a> <a href='#SkBitmap_getAddr'>getAddr</a> <a href='#SkBitmap_readPixels'>readPixels</a> 2592 2593 <a name='SkBitmap_getAlphaf'></a> 2594 2595 --- 2596 2597 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2598 float <a href='#SkBitmap_getAlphaf'>getAlphaf</a>(int x, int y)const 2599 </pre> 2600 2601 Looks up the <a href='undocumented#Pixel'>pixel</a> at (<a href='#SkBitmap_getAlphaf_x'>x</a>,<a href='#SkBitmap_getAlphaf_y'>y</a>) and return its <a href='SkColor_Reference#Alpha'>alpha</a> component, normalized to [0..1]. 2602 This is roughly equivalent to <code>SkGetColorA(<a href='#SkBitmap_getColor'>getColor</a>())</code>, but can be more efficient 2603 (and more precise if the pixels store more than 8 bits per component). 2604 2605 ### Parameters 2606 2607 <table> <tr> <td><a name='SkBitmap_getAlphaf_x'><code><strong>x</strong></code></a></td> 2608 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2609 </tr> 2610 <tr> <td><a name='SkBitmap_getAlphaf_y'><code><strong>y</strong></code></a></td> 2611 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2612 </tr> 2613 </table> 2614 2615 ### Return Value 2616 2617 <a href='SkColor_Reference#Alpha'>alpha</a> converted to normalized float 2618 2619 ### See Also 2620 2621 <a href='#SkBitmap_getColor'>getColor</a> 2622 2623 <a name='SkBitmap_getAddr'></a> 2624 2625 --- 2626 2627 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2628 void* <a href='#SkBitmap_getAddr'>getAddr</a>(int x, int y)const 2629 </pre> 2630 2631 Returns <a href='undocumented#Pixel'>pixel</a> address at (<a href='#SkBitmap_getAddr_x'>x</a>, <a href='#SkBitmap_getAddr_y'>y</a>). 2632 2633 Input is not validated: out of bounds values of <a href='#SkBitmap_getAddr_x'>x</a> or <a href='#SkBitmap_getAddr_y'>y</a>, or <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, 2634 trigger an assert() if built with SK_DEBUG defined. Returns nullptr if 2635 <a href='SkImageInfo_Reference#SkColorType'>SkColorType</a> is <a href='SkImageInfo_Reference#kUnknown_SkColorType'>kUnknown_SkColorType</a>, or <a href='undocumented#SkPixelRef'>SkPixelRef</a> is nullptr. 2636 2637 Performs a lookup of <a href='undocumented#Pixel'>pixel</a> <a href='undocumented#Size'>size</a>; for better performance, call 2638 one of: <a href='#SkBitmap_getAddr8'>getAddr8</a>(), <a href='#SkBitmap_getAddr16'>getAddr16</a>(), or <a href='#SkBitmap_getAddr32'>getAddr32</a>(). 2639 2640 ### Parameters 2641 2642 <table> <tr> <td><a name='SkBitmap_getAddr_x'><code><strong>x</strong></code></a></td> 2643 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2644 </tr> 2645 <tr> <td><a name='SkBitmap_getAddr_y'><code><strong>y</strong></code></a></td> 2646 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2647 </tr> 2648 </table> 2649 2650 ### Return Value 2651 2652 generic pointer to <a href='undocumented#Pixel'>pixel</a> 2653 2654 ### Example 2655 2656 <div><fiddle-embed name="ffcefb2344cd38c3b99f69cfe6d64a17"> 2657 2658 #### Example Output 2659 2660 ~~~~ 2661 addr interval == rowBytes 2662 ~~~~ 2663 2664 </fiddle-embed></div> 2665 2666 ### See Also 2667 2668 <a href='#SkBitmap_getAddr8'>getAddr8</a> <a href='#SkBitmap_getAddr16'>getAddr16</a> <a href='#SkBitmap_getAddr32'>getAddr32</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_addr'>addr</a> 2669 2670 <a name='SkBitmap_getAddr32'></a> 2671 2672 --- 2673 2674 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2675 uint32_t* <a href='#SkBitmap_getAddr32'>getAddr32</a>(int x, int y)const 2676 </pre> 2677 2678 Returns address at (<a href='#SkBitmap_getAddr32_x'>x</a>, <a href='#SkBitmap_getAddr32_y'>y</a>). 2679 2680 Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: 2681 2682 <table> <tr> 2683 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2684 </tr> <tr> 2685 <td><a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>() is not four</td> 2686 </tr> <tr> 2687 <td><a href='#SkBitmap_getAddr32_x'>x</a> is negative, or not less than <a href='#SkBitmap_width'>width()</a></td> 2688 </tr> <tr> 2689 <td><a href='#SkBitmap_getAddr32_y'>y</a> is negative, or not less than <a href='#SkBitmap_height'>height()</a></td> 2690 </tr> 2691 </table> 2692 2693 ### Parameters 2694 2695 <table> <tr> <td><a name='SkBitmap_getAddr32_x'><code><strong>x</strong></code></a></td> 2696 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2697 </tr> 2698 <tr> <td><a name='SkBitmap_getAddr32_y'><code><strong>y</strong></code></a></td> 2699 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2700 </tr> 2701 </table> 2702 2703 ### Return Value 2704 2705 unsigned 32-bit pointer to <a href='undocumented#Pixel'>pixel</a> at (<a href='#SkBitmap_getAddr32_x'>x</a>, <a href='#SkBitmap_getAddr32_y'>y</a>) 2706 2707 ### Example 2708 2709 <div><fiddle-embed name="837a2bcc9fb9ce617a3420956cefc64a"> 2710 2711 #### Example Output 2712 2713 ~~~~ 2714 addr interval == rowBytes 2715 ~~~~ 2716 2717 </fiddle-embed></div> 2718 2719 ### See Also 2720 2721 <a href='#SkBitmap_getAddr8'>getAddr8</a> <a href='#SkBitmap_getAddr16'>getAddr16</a> <a href='#SkBitmap_getAddr'>getAddr</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_addr32'>addr32</a> 2722 2723 <a name='SkBitmap_getAddr16'></a> 2724 2725 --- 2726 2727 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2728 uint16_t* <a href='#SkBitmap_getAddr16'>getAddr16</a>(int x, int y)const 2729 </pre> 2730 2731 Returns address at (<a href='#SkBitmap_getAddr16_x'>x</a>, <a href='#SkBitmap_getAddr16_y'>y</a>). 2732 2733 Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: 2734 2735 <table> <tr> 2736 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2737 </tr> <tr> 2738 <td><a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>() is not two</td> 2739 </tr> <tr> 2740 <td><a href='#SkBitmap_getAddr16_x'>x</a> is negative, or not less than <a href='#SkBitmap_width'>width()</a></td> 2741 </tr> <tr> 2742 <td><a href='#SkBitmap_getAddr16_y'>y</a> is negative, or not less than <a href='#SkBitmap_height'>height()</a></td> 2743 </tr> 2744 </table> 2745 2746 ### Parameters 2747 2748 <table> <tr> <td><a name='SkBitmap_getAddr16_x'><code><strong>x</strong></code></a></td> 2749 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2750 </tr> 2751 <tr> <td><a name='SkBitmap_getAddr16_y'><code><strong>y</strong></code></a></td> 2752 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2753 </tr> 2754 </table> 2755 2756 ### Return Value 2757 2758 unsigned 16-bit pointer to <a href='undocumented#Pixel'>pixel</a> at (<a href='#SkBitmap_getAddr16_x'>x</a>, <a href='#SkBitmap_getAddr16_y'>y</a>) 2759 2760 ### Example 2761 2762 <div><fiddle-embed name="53e00899ef2e00e2096daf7a07d9b059"> 2763 2764 #### Example Output 2765 2766 ~~~~ 2767 addr interval == rowBytes 2768 ~~~~ 2769 2770 </fiddle-embed></div> 2771 2772 ### See Also 2773 2774 <a href='#SkBitmap_getAddr8'>getAddr8</a> <a href='#SkBitmap_getAddr'>getAddr</a> <a href='#SkBitmap_getAddr32'>getAddr32</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_addr16'>addr16</a> 2775 2776 <a name='SkBitmap_getAddr8'></a> 2777 2778 --- 2779 2780 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2781 uint8_t* <a href='#SkBitmap_getAddr8'>getAddr8</a>(int x, int y)const 2782 </pre> 2783 2784 Returns address at (<a href='#SkBitmap_getAddr8_x'>x</a>, <a href='#SkBitmap_getAddr8_y'>y</a>). 2785 2786 Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: 2787 2788 <table> <tr> 2789 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2790 </tr> <tr> 2791 <td><a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>() is not one</td> 2792 </tr> <tr> 2793 <td><a href='#SkBitmap_getAddr8_x'>x</a> is negative, or not less than <a href='#SkBitmap_width'>width()</a></td> 2794 </tr> <tr> 2795 <td><a href='#SkBitmap_getAddr8_y'>y</a> is negative, or not less than <a href='#SkBitmap_height'>height()</a></td> 2796 </tr> 2797 </table> 2798 2799 ### Parameters 2800 2801 <table> <tr> <td><a name='SkBitmap_getAddr8_x'><code><strong>x</strong></code></a></td> 2802 <td>column index, zero or greater, and less than <a href='#SkBitmap_width'>width()</a></td> 2803 </tr> 2804 <tr> <td><a name='SkBitmap_getAddr8_y'><code><strong>y</strong></code></a></td> 2805 <td>row index, zero or greater, and less than <a href='#SkBitmap_height'>height()</a></td> 2806 </tr> 2807 </table> 2808 2809 ### Return Value 2810 2811 unsigned 8-bit pointer to <a href='undocumented#Pixel'>pixel</a> at (<a href='#SkBitmap_getAddr8_x'>x</a>, <a href='#SkBitmap_getAddr8_y'>y</a>) 2812 2813 ### Example 2814 2815 <div><fiddle-embed name="cb9a08e8ff779b6a1cf8bb54f3883aaf"> 2816 2817 #### Example Output 2818 2819 ~~~~ 2820 &pixels[4][2] == bitmap.getAddr8(2, 4) 2821 ~~~~ 2822 2823 </fiddle-embed></div> 2824 2825 ### See Also 2826 2827 <a href='#SkBitmap_getAddr'>getAddr</a> <a href='#SkBitmap_getAddr16'>getAddr16</a> <a href='#SkBitmap_getAddr32'>getAddr32</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_addr8'>addr8</a> 2828 2829 <a name='SkBitmap_extractSubset'></a> 2830 2831 --- 2832 2833 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2834 bool <a href='#SkBitmap_extractSubset'>extractSubset</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& subset)const 2835 </pre> 2836 2837 Shares <a href='#Pixel_Ref'>Pixel_Ref</a> with <a href='#SkBitmap_extractSubset_dst'>dst</a>. Pixels are not copied; <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> and <a href='#SkBitmap_extractSubset_dst'>dst</a> <a href='SkPoint_Reference#Point'>point</a> 2838 to the same pixels; <a href='#SkBitmap_extractSubset_dst'>dst</a> <a href='#SkBitmap_bounds'>bounds()</a> are set to the intersection of <a href='#SkBitmap_extractSubset_subset'>subset</a> 2839 and the original <a href='#SkBitmap_bounds'>bounds()</a>. 2840 2841 <a href='#SkBitmap_extractSubset_subset'>subset</a> may be larger than <a href='#SkBitmap_bounds'>bounds()</a>. Any area outside of <a href='#SkBitmap_bounds'>bounds()</a> is ignored. 2842 2843 Any contents of <a href='#SkBitmap_extractSubset_dst'>dst</a> are discarded. <a href='#SkBitmap_isVolatile'>isVolatile</a> setting is copied to <a href='#SkBitmap_extractSubset_dst'>dst</a>. 2844 <a href='#SkBitmap_extractSubset_dst'>dst</a> is set to <a href='#SkBitmap_colorType'>colorType</a>, <a href='#SkBitmap_alphaType'>alphaType</a>, and <a href='#SkBitmap_colorSpace'>colorSpace</a>. 2845 2846 Return false if: 2847 2848 <table> <tr> 2849 <td><a href='#SkBitmap_extractSubset_dst'>dst</a> is nullptr</td> 2850 </tr> <tr> 2851 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2852 </tr> <tr> 2853 <td><a href='#SkBitmap_extractSubset_subset'>subset</a> does not intersect <a href='#SkBitmap_bounds'>bounds()</a></td> 2854 </tr> 2855 </table> 2856 2857 ### Parameters 2858 2859 <table> <tr> <td><a name='SkBitmap_extractSubset_dst'><code><strong>dst</strong></code></a></td> 2860 <td><a href='SkBitmap_Reference#Bitmap'>Bitmap</a> set to <a href='#SkBitmap_extractSubset_subset'>subset</a></td> 2861 </tr> 2862 <tr> <td><a name='SkBitmap_extractSubset_subset'><code><strong>subset</strong></code></a></td> 2863 <td>rectangle of pixels to reference</td> 2864 </tr> 2865 </table> 2866 2867 ### Return Value 2868 2869 true if <a href='#SkBitmap_extractSubset_dst'>dst</a> is replaced by <a href='#SkBitmap_extractSubset_subset'>subset</a> 2870 2871 ### Example 2872 2873 <div><fiddle-embed name="304148c50c91490bfd58e9222342419c"> 2874 2875 #### Example Output 2876 2877 ~~~~ 2878 bounds: 0, 0, 512, 512 2879 subset: -100, 100, 0, 200 success; false 2880 subset: -100, 100, 100, 200 success; true subset: 0, 0, 100, 100 2881 subset: -100, 100, 1000, 200 success; true subset: 0, 0, 512, 100 2882 subset: 0, 100, 0, 200 success; false 2883 subset: 0, 100, 100, 200 success; true subset: 0, 0, 100, 100 2884 subset: 0, 100, 1000, 200 success; true subset: 0, 0, 512, 100 2885 subset: 100, 100, 0, 200 success; false 2886 subset: 100, 100, 100, 200 success; false 2887 subset: 100, 100, 1000, 200 success; true subset: 0, 0, 412, 100 2888 subset: 1000, 100, 0, 200 success; false 2889 subset: 1000, 100, 100, 200 success; false 2890 subset: 1000, 100, 1000, 200 success; false 2891 ~~~~ 2892 2893 </fiddle-embed></div> 2894 2895 ### See Also 2896 2897 <a href='#SkBitmap_readPixels'>readPixels</a> <a href='#SkBitmap_writePixels'>writePixels</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawBitmap'>drawBitmap</a> 2898 2899 <a name='SkBitmap_readPixels'></a> 2900 2901 --- 2902 2903 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2904 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY)const 2905 </pre> 2906 2907 Copies a <a href='SkRect_Reference#Rect'>Rect</a> of pixels from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> to <a href='#SkBitmap_readPixels_dstPixels'>dstPixels</a>. Copy starts at (<a href='#SkBitmap_readPixels_srcX'>srcX</a>, <a href='#SkBitmap_readPixels_srcY'>srcY</a>), 2908 and does not exceed <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> (<a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a>). 2909 2910 <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a> specifies width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, and <a href='#Color_Space'>Color_Space</a> of 2911 destination. <a href='#SkBitmap_readPixels_dstRowBytes'>dstRowBytes</a> specifics the gap from one destination row to the next. 2912 Returns true if pixels are copied. Returns false if: 2913 2914 <table> <tr> 2915 <td><a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a> has no address</td> 2916 </tr> <tr> 2917 <td><a href='#SkBitmap_readPixels_dstRowBytes'>dstRowBytes</a> is less than <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()</td> 2918 </tr> <tr> 2919 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2920 </tr> 2921 </table> 2922 2923 Pixels are copied only if <a href='undocumented#Pixel'>pixel</a> conversion is possible. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is 2924 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkImageInfo_colorType'>colorType</a>() must match. 2925 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkImageInfo_colorSpace'>colorSpace</a>() must match. 2926 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkImageInfo_alphaType'>alphaType</a>() must 2927 match. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorSpace'>colorSpace</a> is nullptr, <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkImageInfo_colorSpace'>colorSpace</a>() must match. Returns 2928 false if <a href='undocumented#Pixel'>pixel</a> conversion is not possible. 2929 2930 <a href='#SkBitmap_readPixels_srcX'>srcX</a> and <a href='#SkBitmap_readPixels_srcY'>srcY</a> may be negative to copy only top or left of source. Returns 2931 false if <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> is zero or negative. 2932 Returns false if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_readPixels_srcX'>srcX</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_width'>width()</a></code>, or if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_readPixels_srcY'>srcY</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_height'>height()</a></code>. 2933 2934 ### Parameters 2935 2936 <table> <tr> <td><a name='SkBitmap_readPixels_dstInfo'><code><strong>dstInfo</strong></code></a></td> 2937 <td>destination width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Color_Space'>Color_Space</a></td> 2938 </tr> 2939 <tr> <td><a name='SkBitmap_readPixels_dstPixels'><code><strong>dstPixels</strong></code></a></td> 2940 <td>destination <a href='undocumented#Pixel_Storage'>pixel storage</a></td> 2941 </tr> 2942 <tr> <td><a name='SkBitmap_readPixels_dstRowBytes'><code><strong>dstRowBytes</strong></code></a></td> 2943 <td>destination row length</td> 2944 </tr> 2945 <tr> <td><a name='SkBitmap_readPixels_srcX'><code><strong>srcX</strong></code></a></td> 2946 <td>column index whose absolute value is less than <a href='#SkBitmap_width'>width()</a></td> 2947 </tr> 2948 <tr> <td><a name='SkBitmap_readPixels_srcY'><code><strong>srcY</strong></code></a></td> 2949 <td>row index whose absolute value is less than <a href='#SkBitmap_height'>height()</a></td> 2950 </tr> 2951 </table> 2952 2953 ### Return Value 2954 2955 true if pixels are copied to <a href='#SkBitmap_readPixels_dstPixels'>dstPixels</a> 2956 2957 ### Example 2958 2959 <div><fiddle-embed name="b2cbbbbcffb618865d8aae3bc04b2a62"><div>Transferring the gradient from 8 bits per component to 4 bits per component 2960 creates visible banding. 2961 </div></fiddle-embed></div> 2962 2963 ### See Also 2964 2965 <a href='#SkBitmap_writePixels'>writePixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_readPixels'>readPixels</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_readPixels'>readPixels</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_readPixels'>readPixels</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_readPixels'>readPixels</a> 2966 2967 <a name='SkBitmap_readPixels_2'></a> 2968 2969 --- 2970 2971 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 2972 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& dst, int srcX, int srcY)const 2973 </pre> 2974 2975 Copies a <a href='SkRect_Reference#Rect'>Rect</a> of pixels from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> to <a href='#SkBitmap_readPixels_2_dst'>dst</a>. Copy starts at (<a href='#SkBitmap_readPixels_2_srcX'>srcX</a>, <a href='#SkBitmap_readPixels_2_srcY'>srcY</a>), and 2976 does not exceed <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> (<a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a>). 2977 2978 <a href='#SkBitmap_readPixels_2_dst'>dst</a> specifies width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Color_Space'>Color_Space</a>, <a href='undocumented#Pixel_Storage'>pixel storage</a>, 2979 and <a href='#Row_Bytes'>row bytes</a> of destination. <a href='#SkBitmap_readPixels_2_dst'>dst</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() specifics the gap from one destination 2980 row to the next. Returns true if pixels are copied. Returns false if: 2981 2982 <table> <tr> 2983 <td><a href='#SkBitmap_readPixels_2_dst'>dst</a> <a href='undocumented#Pixel_Storage'>pixel storage</a> equals nullptr</td> 2984 </tr> <tr> 2985 <td><a href='#SkBitmap_readPixels_2_dst'>dst</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() is less than <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()</td> 2986 </tr> <tr> 2987 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 2988 </tr> 2989 </table> 2990 2991 Pixels are copied only if <a href='undocumented#Pixel'>pixel</a> conversion is possible. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is 2992 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_readPixels_2_dst'>dst</a> <a href='#Image_Info_Color_Type'>Color_Type</a> must match. 2993 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_readPixels_2_dst'>dst</a> <a href='#Color_Space'>Color_Space</a> must match. 2994 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='#SkBitmap_readPixels_2_dst'>dst</a> <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> must 2995 match. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorSpace'>colorSpace</a> is nullptr, <a href='#SkBitmap_readPixels_2_dst'>dst</a> <a href='#Color_Space'>Color_Space</a> must match. Returns 2996 false if <a href='undocumented#Pixel'>pixel</a> conversion is not possible. 2997 2998 <a href='#SkBitmap_readPixels_2_srcX'>srcX</a> and <a href='#SkBitmap_readPixels_2_srcY'>srcY</a> may be negative to copy only top or left of source. Returns 2999 false if <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> is zero or negative. 3000 Returns false if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_readPixels_2_srcX'>srcX</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_width'>width()</a></code>, or if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_readPixels_2_srcY'>srcY</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_height'>height()</a></code>. 3001 3002 ### Parameters 3003 3004 <table> <tr> <td><a name='SkBitmap_readPixels_2_dst'><code><strong>dst</strong></code></a></td> 3005 <td>destination <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>: <a href='#Image_Info'>Image_Info</a>, pixels, <a href='#Row_Bytes'>row bytes</a></td> 3006 </tr> 3007 <tr> <td><a name='SkBitmap_readPixels_2_srcX'><code><strong>srcX</strong></code></a></td> 3008 <td>column index whose absolute value is less than <a href='#SkBitmap_width'>width()</a></td> 3009 </tr> 3010 <tr> <td><a name='SkBitmap_readPixels_2_srcY'><code><strong>srcY</strong></code></a></td> 3011 <td>row index whose absolute value is less than <a href='#SkBitmap_height'>height()</a></td> 3012 </tr> 3013 </table> 3014 3015 ### Return Value 3016 3017 true if pixels are copied to <a href='#SkBitmap_readPixels_2_dst'>dst</a> 3018 3019 ### Example 3020 3021 <div><fiddle-embed name="e9f70cbc9827097449a386ec7a8a8188"></fiddle-embed></div> 3022 3023 ### See Also 3024 3025 <a href='#SkBitmap_writePixels'>writePixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_readPixels'>readPixels</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_readPixels'>readPixels</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_readPixels'>readPixels</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_readPixels'>readPixels</a> 3026 3027 <a name='SkBitmap_readPixels_3'></a> 3028 3029 --- 3030 3031 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3032 bool <a href='#SkBitmap_readPixels'>readPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& dst)const 3033 </pre> 3034 3035 Copies a <a href='SkRect_Reference#Rect'>Rect</a> of pixels from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> to <a href='#SkBitmap_readPixels_3_dst'>dst</a>. Copy starts at (0, 0), and 3036 does not exceed <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> (<a href='#SkBitmap_width'>width()</a>, <a href='#SkBitmap_height'>height()</a>). 3037 3038 <a href='#SkBitmap_readPixels_3_dst'>dst</a> specifies width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Color_Space'>Color_Space</a>, <a href='undocumented#Pixel_Storage'>pixel storage</a>, 3039 and <a href='#Row_Bytes'>row bytes</a> of destination. <a href='#SkBitmap_readPixels_3_dst'>dst</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() specifics the gap from one destination 3040 row to the next. Returns true if pixels are copied. Returns false if: 3041 3042 <table> <tr> 3043 <td><a href='#SkBitmap_readPixels_3_dst'>dst</a> <a href='undocumented#Pixel_Storage'>pixel storage</a> equals nullptr</td> 3044 </tr> <tr> 3045 <td><a href='#SkBitmap_readPixels_3_dst'>dst</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() is less than <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()</td> 3046 </tr> <tr> 3047 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 3048 </tr> 3049 </table> 3050 3051 Pixels are copied only if <a href='undocumented#Pixel'>pixel</a> conversion is possible. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is 3052 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_readPixels_3_dst'>dst</a> <a href='#Image_Info_Color_Type'>Color_Type</a> must match. 3053 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_readPixels_3_dst'>dst</a> <a href='#Color_Space'>Color_Space</a> must match. 3054 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='#SkBitmap_readPixels_3_dst'>dst</a> <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> must 3055 match. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorSpace'>colorSpace</a> is nullptr, <a href='#SkBitmap_readPixels_3_dst'>dst</a> <a href='#Color_Space'>Color_Space</a> must match. Returns 3056 false if <a href='undocumented#Pixel'>pixel</a> conversion is not possible. 3057 3058 ### Parameters 3059 3060 <table> <tr> <td><a name='SkBitmap_readPixels_3_dst'><code><strong>dst</strong></code></a></td> 3061 <td>destination <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>: <a href='#Image_Info'>Image_Info</a>, pixels, <a href='#Row_Bytes'>row bytes</a></td> 3062 </tr> 3063 </table> 3064 3065 ### Return Value 3066 3067 true if pixels are copied to <a href='#SkBitmap_readPixels_3_dst'>dst</a> 3068 3069 ### Example 3070 3071 <div><fiddle-embed name="4590fbf052659d6e629fbfd827081ae5"></fiddle-embed></div> 3072 3073 ### See Also 3074 3075 <a href='#SkBitmap_writePixels'>writePixels</a> <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>::<a href='#SkPixmap_readPixels'>readPixels</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_readPixels'>readPixels</a> <a href='SkImage_Reference#SkImage'>SkImage</a>::<a href='#SkImage_readPixels'>readPixels</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_readPixels'>readPixels</a> 3076 3077 <a name='SkBitmap_writePixels'></a> 3078 3079 --- 3080 3081 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3082 bool <a href='#SkBitmap_writePixels'>writePixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& src, int dstX, int dstY) 3083 </pre> 3084 3085 Copies a <a href='SkRect_Reference#Rect'>Rect</a> of pixels from <a href='#SkBitmap_writePixels_src'>src</a>. Copy starts at (<a href='#SkBitmap_writePixels_dstX'>dstX</a>, <a href='#SkBitmap_writePixels_dstY'>dstY</a>), and does not exceed 3086 (<a href='#SkBitmap_writePixels_src'>src</a>.<a href='#SkPixmap_width'>width()</a>, <a href='#SkBitmap_writePixels_src'>src</a>.<a href='#SkPixmap_height'>height()</a>). 3087 3088 <a href='#SkBitmap_writePixels_src'>src</a> specifies width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Color_Space'>Color_Space</a>, <a href='undocumented#Pixel_Storage'>pixel storage</a>, 3089 and <a href='#Row_Bytes'>row bytes</a> of source. <a href='#SkBitmap_writePixels_src'>src</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() specifics the gap from one source 3090 row to the next. Returns true if pixels are copied. Returns false if: 3091 3092 <table> <tr> 3093 <td><a href='#SkBitmap_writePixels_src'>src</a> <a href='undocumented#Pixel_Storage'>pixel storage</a> equals nullptr</td> 3094 </tr> <tr> 3095 <td><a href='#SkBitmap_writePixels_src'>src</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() is less than <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()</td> 3096 </tr> <tr> 3097 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 3098 </tr> 3099 </table> 3100 3101 Pixels are copied only if <a href='undocumented#Pixel'>pixel</a> conversion is possible. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is 3102 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_writePixels_src'>src</a> <a href='#Image_Info_Color_Type'>Color_Type</a> must match. 3103 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_writePixels_src'>src</a> <a href='#Color_Space'>Color_Space</a> must match. 3104 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='#SkBitmap_writePixels_src'>src</a> <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> must 3105 match. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorSpace'>colorSpace</a> is nullptr, <a href='#SkBitmap_writePixels_src'>src</a> <a href='#Color_Space'>Color_Space</a> must match. Returns 3106 false if <a href='undocumented#Pixel'>pixel</a> conversion is not possible. 3107 3108 <a href='#SkBitmap_writePixels_dstX'>dstX</a> and <a href='#SkBitmap_writePixels_dstY'>dstY</a> may be negative to copy only top or left of source. Returns 3109 false if <a href='#SkBitmap_width'>width()</a> or <a href='#SkBitmap_height'>height()</a> is zero or negative. 3110 Returns false if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_writePixels_dstX'>dstX</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_width'>width()</a></code>, or if <code><a href='undocumented#abs()'>abs</a>(<a href='#SkBitmap_writePixels_dstY'>dstY</a>) >= <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_height'>height()</a></code>. 3111 3112 ### Parameters 3113 3114 <table> <tr> <td><a name='SkBitmap_writePixels_src'><code><strong>src</strong></code></a></td> 3115 <td>source <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>: <a href='#Image_Info'>Image_Info</a>, pixels, <a href='#Row_Bytes'>row bytes</a></td> 3116 </tr> 3117 <tr> <td><a name='SkBitmap_writePixels_dstX'><code><strong>dstX</strong></code></a></td> 3118 <td>column index whose absolute value is less than <a href='#SkBitmap_width'>width()</a></td> 3119 </tr> 3120 <tr> <td><a name='SkBitmap_writePixels_dstY'><code><strong>dstY</strong></code></a></td> 3121 <td>row index whose absolute value is less than <a href='#SkBitmap_height'>height()</a></td> 3122 </tr> 3123 </table> 3124 3125 ### Return Value 3126 3127 true if <a href='#SkBitmap_writePixels_src'>src</a> pixels are copied to <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> 3128 3129 ### Example 3130 3131 <div><fiddle-embed name="9b3133a6673d2514d166398adbe1f9f4"></fiddle-embed></div> 3132 3133 ### See Also 3134 3135 <a href='#SkBitmap_readPixels'>readPixels</a> 3136 3137 <a name='SkBitmap_writePixels_2'></a> 3138 3139 --- 3140 3141 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3142 bool <a href='#SkBitmap_writePixels'>writePixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& src) 3143 </pre> 3144 3145 Copies a <a href='SkRect_Reference#Rect'>Rect</a> of pixels from <a href='#SkBitmap_writePixels_2_src'>src</a>. Copy starts at (0, 0), and does not exceed 3146 (<a href='#SkBitmap_writePixels_2_src'>src</a>.<a href='#SkPixmap_width'>width()</a>, <a href='#SkBitmap_writePixels_2_src'>src</a>.<a href='#SkPixmap_height'>height()</a>). 3147 3148 <a href='#SkBitmap_writePixels_2_src'>src</a> specifies width, height, <a href='#Image_Info_Color_Type'>Color_Type</a>, <a href='#Image_Info_Alpha_Type'>Alpha_Type</a>, <a href='#Color_Space'>Color_Space</a>, <a href='undocumented#Pixel_Storage'>pixel storage</a>, 3149 and <a href='#Row_Bytes'>row bytes</a> of source. <a href='#SkBitmap_writePixels_2_src'>src</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() specifics the gap from one source 3150 row to the next. Returns true if pixels are copied. Returns false if: 3151 3152 <table> <tr> 3153 <td><a href='#SkBitmap_writePixels_2_src'>src</a> <a href='undocumented#Pixel_Storage'>pixel storage</a> equals nullptr</td> 3154 </tr> <tr> 3155 <td><a href='#SkBitmap_writePixels_2_src'>src</a>.<a href='#SkPixmap_rowBytes'>rowBytes</a>() is less than <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_minRowBytes'>minRowBytes</a>()</td> 3156 </tr> <tr> 3157 <td><a href='#Pixel_Ref'>Pixel_Ref</a> is nullptr</td> 3158 </tr> 3159 </table> 3160 3161 Pixels are copied only if <a href='undocumented#Pixel'>pixel</a> conversion is possible. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is 3162 <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_writePixels_2_src'>src</a> <a href='#Image_Info_Color_Type'>Color_Type</a> must match. 3163 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_writePixels_2_src'>src</a> <a href='#Color_Space'>Color_Space</a> must match. 3164 If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_alphaType'>alphaType</a> is <a href='SkImageInfo_Reference#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>, <a href='#SkBitmap_writePixels_2_src'>src</a> <a href='#Image_Info_Alpha_Type'>Alpha_Type</a> must 3165 match. If <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorSpace'>colorSpace</a> is nullptr, <a href='#SkBitmap_writePixels_2_src'>src</a> <a href='#Color_Space'>Color_Space</a> must match. Returns 3166 false if <a href='undocumented#Pixel'>pixel</a> conversion is not possible. 3167 3168 ### Parameters 3169 3170 <table> <tr> <td><a name='SkBitmap_writePixels_2_src'><code><strong>src</strong></code></a></td> 3171 <td>source <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>: <a href='#Image_Info'>Image_Info</a>, pixels, <a href='#Row_Bytes'>row bytes</a></td> 3172 </tr> 3173 </table> 3174 3175 ### Return Value 3176 3177 true if <a href='#SkBitmap_writePixels_2_src'>src</a> pixels are copied to <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> 3178 3179 ### Example 3180 3181 <div><fiddle-embed name="faa5dfa466f6e16c07c124d971f32679"></fiddle-embed></div> 3182 3183 ### See Also 3184 3185 <a href='#SkBitmap_readPixels'>readPixels</a> 3186 3187 <a name='SkBitmap_extractAlpha'></a> 3188 3189 --- 3190 3191 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3192 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst)const 3193 </pre> 3194 3195 Sets <a href='#SkBitmap_extractAlpha_dst'>dst</a> to <a href='SkColor_Reference#Alpha'>alpha</a> described by pixels. Returns false if <a href='#SkBitmap_extractAlpha_dst'>dst</a> cannot be written to 3196 or <a href='#SkBitmap_extractAlpha_dst'>dst</a> pixels cannot be allocated. 3197 3198 Uses <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> to reserve memory for <a href='#SkBitmap_extractAlpha_dst'>dst</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a>. 3199 3200 ### Parameters 3201 3202 <table> <tr> <td><a name='SkBitmap_extractAlpha_dst'><code><strong>dst</strong></code></a></td> 3203 <td>holds <a href='undocumented#SkPixelRef'>SkPixelRef</a> to fill with <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a></td> 3204 </tr> 3205 </table> 3206 3207 ### Return Value 3208 3209 true if <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a> was constructed in <a href='#SkBitmap_extractAlpha_dst'>dst</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a> 3210 3211 ### Example 3212 3213 <div><fiddle-embed name="ab6577df079e6c70511cf2bfc6447b44"></fiddle-embed></div> 3214 3215 ### See Also 3216 3217 <a href='#SkBitmap_extractSubset'>extractSubset</a> 3218 3219 <a name='SkBitmap_extractAlpha_2'></a> 3220 3221 --- 3222 3223 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3224 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a>, <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>* offset)const 3225 </pre> 3226 3227 Sets <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> to <a href='SkColor_Reference#Alpha'>alpha</a> described by pixels. Returns false if <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> cannot be written to 3228 or <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> pixels cannot be allocated. 3229 3230 If <a href='#SkBitmap_extractAlpha_2_paint'>paint</a> is not nullptr and contains <a href='undocumented#SkMaskFilter'>SkMaskFilter</a>, <a href='undocumented#SkMaskFilter'>SkMaskFilter</a> 3231 generates <a href='undocumented#Mask_Alpha'>mask alpha</a> from <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. Uses <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a> to reserve memory for <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> 3232 <a href='undocumented#SkPixelRef'>SkPixelRef</a>. Sets <a href='#SkBitmap_extractAlpha_2_offset'>offset</a> to top-left position for <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> for alignment with <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>; 3233 (0, 0) unless <a href='undocumented#SkMaskFilter'>SkMaskFilter</a> generates mask. 3234 3235 ### Parameters 3236 3237 <table> <tr> <td><a name='SkBitmap_extractAlpha_2_dst'><code><strong>dst</strong></code></a></td> 3238 <td>holds <a href='undocumented#SkPixelRef'>SkPixelRef</a> to fill with <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a></td> 3239 </tr> 3240 <tr> <td><a name='SkBitmap_extractAlpha_2_paint'><code><strong>paint</strong></code></a></td> 3241 <td>holds optional <a href='undocumented#SkMaskFilter'>SkMaskFilter</a>; may be nullptr</td> 3242 </tr> 3243 <tr> <td><a name='SkBitmap_extractAlpha_2_offset'><code><strong>offset</strong></code></a></td> 3244 <td>top-left position for <a href='#SkBitmap_extractAlpha_2_dst'>dst</a>; may be nullptr</td> 3245 </tr> 3246 </table> 3247 3248 ### Return Value 3249 3250 true if <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a> was constructed in <a href='#SkBitmap_extractAlpha_2_dst'>dst</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a> 3251 3252 ### Example 3253 3254 <div><fiddle-embed name="092739b4cd5d732a27c07ced8ef45f01"></fiddle-embed></div> 3255 3256 ### See Also 3257 3258 <a href='#SkBitmap_extractSubset'>extractSubset</a> 3259 3260 <a name='SkBitmap_extractAlpha_3'></a> 3261 3262 --- 3263 3264 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3265 bool <a href='#SkBitmap_extractAlpha'>extractAlpha</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* dst, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a>, <a href='#SkBitmap_Allocator'>Allocator</a>* allocator, <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>* offset)const 3266 </pre> 3267 3268 Sets <a href='#SkBitmap_extractAlpha_3_dst'>dst</a> to <a href='SkColor_Reference#Alpha'>alpha</a> described by pixels. Returns false if <a href='#SkBitmap_extractAlpha_3_dst'>dst</a> cannot be written to 3269 or <a href='#SkBitmap_extractAlpha_3_dst'>dst</a> pixels cannot be allocated. 3270 3271 If <a href='#SkBitmap_extractAlpha_3_paint'>paint</a> is not nullptr and contains <a href='undocumented#SkMaskFilter'>SkMaskFilter</a>, <a href='undocumented#SkMaskFilter'>SkMaskFilter</a> 3272 generates <a href='undocumented#Mask_Alpha'>mask alpha</a> from <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. <a href='#SkBitmap_extractAlpha_3_allocator'>allocator</a> may reference a custom allocation 3273 class or be set to nullptr to use <a href='#SkBitmap_HeapAllocator'>HeapAllocator</a>. Sets <a href='#SkBitmap_extractAlpha_3_offset'>offset</a> to top-left 3274 position for <a href='#SkBitmap_extractAlpha_3_dst'>dst</a> for alignment with <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>; (0, 0) unless <a href='undocumented#SkMaskFilter'>SkMaskFilter</a> generates 3275 mask. 3276 3277 ### Parameters 3278 3279 <table> <tr> <td><a name='SkBitmap_extractAlpha_3_dst'><code><strong>dst</strong></code></a></td> 3280 <td>holds <a href='undocumented#SkPixelRef'>SkPixelRef</a> to fill with <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a></td> 3281 </tr> 3282 <tr> <td><a name='SkBitmap_extractAlpha_3_paint'><code><strong>paint</strong></code></a></td> 3283 <td>holds optional <a href='undocumented#SkMaskFilter'>SkMaskFilter</a>; may be nullptr</td> 3284 </tr> 3285 <tr> <td><a name='SkBitmap_extractAlpha_3_allocator'><code><strong>allocator</strong></code></a></td> 3286 <td>function to reserve memory for <a href='undocumented#SkPixelRef'>SkPixelRef</a>; may be nullptr</td> 3287 </tr> 3288 <tr> <td><a name='SkBitmap_extractAlpha_3_offset'><code><strong>offset</strong></code></a></td> 3289 <td>top-left position for <a href='#SkBitmap_extractAlpha_3_dst'>dst</a>; may be nullptr</td> 3290 </tr> 3291 </table> 3292 3293 ### Return Value 3294 3295 true if <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkCanvas_Reference#Layer'>layer</a> was constructed in <a href='#SkBitmap_extractAlpha_3_dst'>dst</a> <a href='undocumented#SkPixelRef'>SkPixelRef</a> 3296 3297 ### Example 3298 3299 <div><fiddle-embed name="cd7543fa8c9f3cede46dc2d72eb8c4bd"></fiddle-embed></div> 3300 3301 ### See Also 3302 3303 <a href='#SkBitmap_extractSubset'>extractSubset</a> 3304 3305 <a name='SkBitmap_peekPixels'></a> 3306 3307 --- 3308 3309 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3310 bool <a href='#SkBitmap_peekPixels'>peekPixels</a>(<a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>* <a href='SkPixmap_Reference#Pixmap'>pixmap</a>)const 3311 </pre> 3312 3313 Copies <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> <a href='undocumented#Pixel'>pixel</a> address, <a href='#Row_Bytes'>row bytes</a>, and <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a> to <a href='#SkBitmap_peekPixels_pixmap'>pixmap</a>, if address 3314 is available, and returns true. If <a href='undocumented#Pixel'>pixel</a> address is not available, return 3315 false and leave <a href='#SkBitmap_peekPixels_pixmap'>pixmap</a> unchanged. 3316 3317 <a href='#SkBitmap_peekPixels_pixmap'>pixmap</a> contents become invalid on any future change to <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>. 3318 3319 ### Parameters 3320 3321 <table> <tr> <td><a name='SkBitmap_peekPixels_pixmap'><code><strong>pixmap</strong></code></a></td> 3322 <td>storage for <a href='undocumented#Pixel'>pixel</a> state if pixels are readable; otherwise, ignored</td> 3323 </tr> 3324 </table> 3325 3326 ### Return Value 3327 3328 true if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> has direct access to pixels 3329 3330 ### Example 3331 3332 <div><fiddle-embed name="0cc2c6a0dffa61a88711534bd3d43b40"> 3333 3334 #### Example Output 3335 3336 ~~~~ 3337 ------ 3338 -xxx-- 3339 x---x- 3340 ----x- 3341 ---x-- 3342 --x--- 3343 --x--- 3344 ------ 3345 --x--- 3346 --x--- 3347 ------ 3348 ~~~~ 3349 3350 </fiddle-embed></div> 3351 3352 ### See Also 3353 3354 <a href='#SkBitmap_peekPixels_pixmap'>pixmap</a> <a href='#SkBitmap_installPixels'>installPixels</a> <a href='#SkBitmap_readPixels'>readPixels</a> <a href='#SkBitmap_writePixels'>writePixels</a> 3355 3356 <a name='Utility'></a> 3357 3358 <a name='SkBitmap_validate'></a> 3359 3360 --- 3361 3362 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 3363 void <a href='#SkBitmap_validate'>validate()</a> const; 3364 </pre> 3365 3366 ### See Also 3367 3368 <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_validate'>validate</a> 3369 3370