diff options
author | Cary Clark <caryclark@skia.org> | 2017-10-04 14:31:33 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-04 18:50:33 +0000 |
commit | bc5697d3b13b082ade1e8397952265dd604664d1 (patch) | |
tree | e70354fb728f051f119c4f042191f446e13fa00b /site | |
parent | 0078e912718c9c3013e4db08951d4f3fd584bc57 (diff) |
starting next gaggle of docs
starting next gaggle of docs
Docs-Preview: https://skia.org/?cl=50264
Bug: skia:6898
Change-Id: I639795b55c0c96b2efccac13cb67592f055a75a2
Reviewed-on: https://skia-review.googlesource.com/50264
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'site')
-rw-r--r-- | site/user/api/SkBitmap_Reference.md | 3632 | ||||
-rw-r--r-- | site/user/api/SkCanvas_Reference.md | 421 | ||||
-rw-r--r-- | site/user/api/SkPaint_Reference.md | 95 | ||||
-rw-r--r-- | site/user/api/SkPath_Reference.md | 112 | ||||
-rw-r--r-- | site/user/api/SkPixmap_Reference.md | 148 | ||||
-rw-r--r-- | site/user/api/undocumented.md | 282 |
6 files changed, 4211 insertions, 479 deletions
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md new file mode 100644 index 0000000000..076cebac50 --- /dev/null +++ b/site/user/api/SkBitmap_Reference.md @@ -0,0 +1,3632 @@ +SkBitmap Reference +=== + +# <a name="Bitmap"></a> Bitmap + +# <a name="SkBitmap"></a> Class SkBitmap +<a href="#Bitmap">Bitmap</a> describes a two-dimensional raster pixel array. <a href="#Bitmap">Bitmap</a> is built on +<a href="#Info">Image Info</a>, containing integer <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a> and <a href="undocumented#Alpha_Type">Alpha Type</a> +describing the pixel format, and <a href="undocumented#Color_Space">Color Space</a> describing the range of colors. +<a href="#Bitmap">Bitmap</a> points to <a href="undocumented#Pixel_Ref">Pixel Ref</a>, which describes the physical array of pixels. +<a href="#Info">Image Info</a> <a href="#SkBitmap_bounds">bounds</a> may be located anywhere fully inside <a href="undocumented#Pixel_Ref">Pixel Ref</a> <a href="#SkBitmap_bounds">bounds</a>. + +<a href="#Bitmap">Bitmap</a> can be drawn using <a href="SkCanvas_Reference#Canvas">Canvas</a>. <a href="#Bitmap">Bitmap</a> can be a drawing destination for <a href="SkCanvas_Reference#Canvas">Canvas</a> +draw methods. <a href="#Bitmap">Bitmap</a> flexibility as a pixel container limits some optimizations +available to the target platform. + +If pixel array is primarily read-only, use <a href="undocumented#Image">Image</a> for better performance. +If pixel array is primarily written to, use <a href="undocumented#Surface">Surface</a> for better performance. + +Declaring <a href="#SkBitmap">SkBitmap</a> const prevents altering <a href="#Info">Image Info</a>: the <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_height">height</a>, <a href="#SkBitmap_width">width</a>, +and so on cannot change. It does not affect <a href="undocumented#Pixel_Ref">Pixel Ref</a>: a caller may write its +pixels. Declaring <a href="#SkBitmap">SkBitmap</a> const affects <a href="#Bitmap">Bitmap</a> configuration, not its contents. + +<a href="#Bitmap">Bitmap</a> is not thread safe. Each thread must have its own copy if <a href="#Bitmap">Bitmap</a> fields, +although threads may share the underlying pixel array. + +# <a name="Row_Bytes"></a> Row Bytes +<a href="#Bitmap">Bitmap</a> pixels may be contiguous, or may have a gap at the end of each row. +<a href="#Row_Bytes">Row Bytes</a> is the interval from one row to the next. <a href="#Row_Bytes">Row Bytes</a> may be specified; +sometimes passing zero will compute the <a href="#Row_Bytes">Row Bytes</a> from the row <a href="#SkBitmap_width">width</a> and the +number of bytes in a pixel. <a href="#Row_Bytes">Row Bytes</a> may be larger than the row requires. This +is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared pixel array. + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Structs"></a> Structs + +| description | struct | +| --- | --- | +| <a href="#SkBitmap_Allocator">Allocator</a> | | +| <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> | | + +## <a name="Constructors"></a> Constructors + +| description | function | +| --- | --- | +| <a href="#SkBitmap_empty_constructor">SkBitmap()</a> | Constructs with default values. | +| <a href="#SkBitmap_move_SkBitmap">SkBitmap(SkBitmap&& src)</a> | Takes ownership of pixels. | +| <a href="#SkBitmap_copy_const_SkBitmap">SkBitmap(const SkBitmap& src)</a> | Shares ownership of pixels. | +| | Releases ownership of pixels. | + +## <a name="Operators"></a> Operators + +| description | function | +| --- | --- | +| <a href="#SkBitmap">SkBitmap</a>& <a href="#SkBitmap_move_assignment_operator">operator=(SkBitmap&& src)</a> | Takes ownership of pixels. | +| <a href="#SkBitmap">SkBitmap</a>& <a href="#SkBitmap_copy_assignment_operator">operator=(const SkBitmap& src)</a> | Shares ownership of pixels. | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkBitmap_ComputeIsOpaque">ComputeIsOpaque</a> | Returns true if all pixels are opaque. | +| <a href="#SkBitmap_allocN32Pixels">allocN32Pixels</a> | Allocates compatible <a href="#ARGB">Color ARGB</a> pixels, or aborts. | +| <a href="#SkBitmap_allocPixels">allocPixels</a> | Allocates pixels from <a href="#Info">Image Info</a>, or aborts. | +| <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> | Allocates pixels from <a href="#Info">Image Info</a> with options, or aborts. | +| <a href="#SkBitmap_alphaType">alphaType</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Alpha_Type">Alpha Type</a>. | +| <a href="#SkBitmap_bounds">bounds</a> | Returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> as Rectangle. | +| <a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> | Returns number of bytes in pixel based on <a href="undocumented#Color_Type">Color Type</a>. | +| <a href="#SkBitmap_colorSpace">colorSpace</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | +| <a href="#SkBitmap_colorType">colorType</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Type">Color Type</a>. | +| <a href="#SkBitmap_computeSafeSize64">computeSafeSize64</a> | Returns minimum size required for pixels in 64 bits. | +| <a href="#SkBitmap_computeSize64">computeSize64</a> | Returns conservative size required for pixels. | +| <a href="#SkBitmap_dimensions">dimensions</a> | Returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a>. | +| <a href="#SkBitmap_drawsNothing">drawsNothing</a> | Returns true if no <a href="#SkBitmap_width">width</a>, no <a href="#SkBitmap_height">height</a>, or no <a href="undocumented#Pixel_Ref">Pixel Ref</a>. | +| <a href="#SkBitmap_empty">empty</a> | Returns true if <a href="#Info">Image Info</a> has zero <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a>. | +| <a href="#SkBitmap_erase">erase</a> | Writes <a href="undocumented#Color">Color</a> to rectangle of pixels. | +| <a href="#SkBitmap_eraseARGB">eraseARGB</a> | Writes <a href="undocumented#Color">Color</a> to pixels. | +| <a href="#SkBitmap_eraseArea">eraseArea</a> | Deprecated | +| <a href="#SkBitmap_eraseColor">eraseColor</a> | Writes <a href="undocumented#Color">Color</a> to pixels. | +| <a href="#SkBitmap_eraseRGB">eraseRGB</a> | Writes opaque <a href="undocumented#Color">Color</a> to pixels. | +| <a href="#SkBitmap_extractAlpha">extractAlpha</a> | Creates <a href="#Bitmap">Bitmap</a> containing <a href="#Alpha">Alpha</a> of pixels. | +| <a href="#SkBitmap_extractSubset">extractSubset</a> | Creates <a href="#Bitmap">Bitmap</a>, sharing pixels if possible. | +| <a href="#SkBitmap_getAddr">getAddr</a> | Returns readable pixel address as void pointer. | +| <a href="#SkBitmap_getAddr16">getAddr16</a> | Returns readable pixel address as 16-bit pointer. | +| <a href="#SkBitmap_getAddr32">getAddr32</a> | Returns readable pixel address as 32-bit pointer. | +| <a href="#SkBitmap_getAddr8">getAddr8</a> | Returns readable pixel address as 8-bit pointer. | +| <a href="#SkBitmap_getBounds">getBounds</a> | Returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> as Rectangle. | +| <a href="#SkBitmap_getColor">getColor</a> | Returns one pixel as <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>. | +| <a href="#SkBitmap_getGenerationID">getGenerationID</a> | Returns unique ID. | +| <a href="#SkBitmap_getPixels">getPixels</a> | Returns address of pixels. | +| <a href="#SkBitmap_getSafeSize">getSafeSize</a> | Returns minimum size required for pixels in 32 bits. | +| <a href="#SkBitmap_getSize">getSize</a> | Returns conservative size required for pixels in 32 bits. | +| <a href="#SkBitmap_getSubset">getSubset</a> | Returns <a href="#SkBitmap_bounds">bounds</a> offset by origin. | +| <a href="#SkBitmap_hasHardwareMipMap">hasHardwareMipMap</a> | Returns <a href="undocumented#Mip_Map">Mip Map</a> support present; <a href="undocumented#Android">Android</a> only. | +| <a href="#SkBitmap_height">height</a> | Returns pixel row count. | +| <a href="#SkBitmap_info">info</a> | Returns <a href="#Info">Image Info</a>. | +| <a href="#SkBitmap_installMaskPixels">installMaskPixels</a> | Creates <a href="undocumented#Pixel_Ref">Pixel Ref</a> from <a href="undocumented#Mask">Mask</a>. | +| <a href="#SkBitmap_installPixels">installPixels</a> | Creates <a href="undocumented#Pixel_Ref">Pixel Ref</a>, with optional release function. | +| <a href="#SkBitmap_isImmutable">isImmutable</a> | Returns true if pixels will not change. | +| <a href="#SkBitmap_isNull">isNull</a> | Returns true if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. | +| <a href="#SkBitmap_isOpaque">isOpaque</a> | Returns true if <a href="#Info">Image Info</a> describes opaque pixels. | +| <a href="#SkBitmap_isVolatile">isVolatile</a> | Returns true if pixels should not be cached. | +| <a href="#SkBitmap_notifyPixelsChanged">notifyPixelsChanged</a> | Marks pixels as changed, altering the unique ID. | +| <a href="#SkBitmap_peekPixels">peekPixels</a> | Returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> if possible. | +| <a href="#SkBitmap_pixelRef">pixelRef</a> | Returns <a href="undocumented#Pixel_Ref">Pixel Ref</a>, or nullptr. | +| <a href="#SkBitmap_pixelRefOrigin">pixelRefOrigin</a> | Returns offset within <a href="undocumented#Pixel_Ref">Pixel Ref</a>. | +| <a href="#SkBitmap_readPixels">readPixels</a> | Copies and converts pixels. | +| <a href="#SkBitmap_readyToDraw">readyToDraw</a> | Returns true if address of pixels is not nullptr. | +| <a href="#SkBitmap_refColorSpace">refColorSpace</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | +| <a href="#SkBitmap_reset">reset</a> | Sets to default values, releases pixel ownership. | +| <a href="#SkBitmap_rowBytes">rowBytes</a> | Returns interval between rows in bytes. | +| <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> | Returns interval between rows in pixels. | +| <a href="#SkBitmap_setAlphaType">setAlphaType</a> | Sets <a href="undocumented#Alpha_Type">Alpha Type</a> of shared pixels. | +| <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> | Sets <a href="undocumented#Mip_Map">Mip Map</a> support present; <a href="undocumented#Android">Android</a> only. | +| <a href="#SkBitmap_setImmutable">setImmutable</a> | Marks that pixels will not change. | +| <a href="#SkBitmap_setInfo">setInfo</a> | Sets <a href="#SkBitmap_height">height</a>, <a href="#SkBitmap_width">width</a>, <a href="undocumented#Color_Type">Color Type</a>, and so on, releasing pixels. | +| <a href="#SkBitmap_setIsVolatile">setIsVolatile</a> | Marks if pixels should not be cached. | +| <a href="#SkBitmap_setPixelRef">setPixelRef</a> | Sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> and offset. | +| <a href="#SkBitmap_setPixels">setPixels</a> | Sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> without an offset. | +| <a href="#SkBitmap_shiftPerPixel">shiftPerPixel</a> | Returns bit shift from pixels to bytes. | +| <a href="#SkBitmap_swap">swap</a> | Exchanges <a href="#Bitmap">Bitmap</a> pair. | +| <a href="#SkBitmap_toString">toString</a> | Converts <a href="#Bitmap">Bitmap</a> to machine readable form. | +| <a href="#SkBitmap_tryAllocN32Pixels">tryAllocN32Pixels</a> | Allocates compatible <a href="#ARGB">Color ARGB</a> pixels if possible. | +| <a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> | Allocates pixels from <a href="#Info">Image Info</a> if possible. | +| <a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> | Allocates pixels from <a href="#Info">Image Info</a> with options if possible. | +| <a href="#SkBitmap_width">width</a> | Returns pixel column count. | +| <a href="#SkBitmap_writePixels">writePixels</a> | Copies and converts pixels. | + +# <a name="SkBitmap::Allocator"></a> Class SkBitmap::Allocator + +<pre style="padding: 1em 1em 1em 1em;width: 44em; background-color: #f0f0f0"> +class <a href="#SkBitmap_Allocator">Allocator</a> : public <a href="undocumented#SkRefCnt">SkRefCnt</a> { +public: +virtual bool <a href="#SkBitmap_Allocator_allocPixelRef">allocPixelRef(SkBitmap* bitmap)</a> = 0; +};</pre> + +Abstract subclass of <a href="#SkBitmap_HeapAllocator">HeapAllocator</a>. + +<a name="SkBitmap_Allocator_allocPixelRef"></a> +## allocPixelRef + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +virtual bool allocPixelRef(SkBitmap* bitmap) = 0 +</pre> + +Allocates the pixel memory for the <a href="#SkBitmap_Allocator_allocPixelRef_bitmap">bitmap</a>, given its <a href="#SkBitmap_dimensions">dimensions</a> and +<a href="undocumented#Color_Type">Color Type</a>. Returns true on success, where success means either <a href="#SkBitmap_setPixels">setPixels</a> +or <a href="#SkBitmap_setPixelRef">setPixelRef</a> was called. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_Allocator_allocPixelRef_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> containing <a href="#Info">Image Info</a> as input, and <a href="undocumented#Pixel_Ref">Pixel Ref</a> as output</td> + </tr> +</table> + +### Return Value + +true if <a href="undocumented#Pixel_Ref">Pixel Ref</a> was allocated + +### See Also + +<a href="#SkBitmap_HeapAllocator">HeapAllocator</a> + +--- + +# <a name="SkBitmap::HeapAllocator"></a> Class SkBitmap::HeapAllocator + +<pre style="padding: 1em 1em 1em 1em;width: 44em; background-color: #f0f0f0"> +class <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> : public <a href="#SkBitmap_Allocator">Allocator</a> { +public: +bool <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef(SkBitmap* bitmap)</a> override; +};</pre> + +Subclass of <a href="#SkBitmap_Allocator">Allocator</a> that returns a <a href="undocumented#Pixel_Ref">Pixel Ref</a> that allocates its pixel +memory from the heap. This is the default <a href="#SkBitmap_Allocator">Allocator</a> invoked by +<a href="#SkBitmap_allocPixels">allocPixels</a>. + +<a name="SkBitmap_HeapAllocator_allocPixelRef"></a> +## allocPixelRef + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool allocPixelRef(SkBitmap* bitmap) override +</pre> + +Allocates the pixel memory for the <a href="#SkBitmap_HeapAllocator_allocPixelRef_bitmap">bitmap</a>, given its <a href="#SkBitmap_dimensions">dimensions</a> and +<a href="undocumented#Color_Type">Color Type</a>. Returns true on success, where success means either <a href="#SkBitmap_setPixels">setPixels</a> +or <a href="#SkBitmap_setPixelRef">setPixelRef</a> was called. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_HeapAllocator_allocPixelRef_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> containing <a href="#Info">Image Info</a> as input, and <a href="undocumented#Pixel_Ref">Pixel Ref</a> as output</td> + </tr> +</table> + +### Return Value + +true if pixels are allocated + +### Example + +<div><fiddle-embed name="fe79a9c1ec350264eb9c7b2509dd3638"> + +#### Example Output + +~~~~ +pixel address = (nil) +pixel address = 0x560ddd0ac670 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_Allocator">Allocator</a> <a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> + +--- + +<a name="SkBitmap_empty_constructor"></a> +## SkBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkBitmap() +</pre> + +Creates an <a href="#SkBitmap_empty">empty</a> <a href="#Bitmap">Bitmap</a> without pixels, with <a href="undocumented#SkColorType">kUnknown SkColorType</a>, +<a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, and with a <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> of zero. <a href="undocumented#Pixel_Ref">Pixel Ref</a> origin is +set to (0, 0). <a href="#Bitmap">Bitmap</a> is not volatile. + +Use <a href="#SkBitmap_setInfo">setInfo</a> to associate <a href="undocumented#SkColorType">SkColorType</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, <a href="#SkBitmap_width">width</a>, and <a href="#SkBitmap_height">height</a> +after <a href="#Bitmap">Bitmap</a> has been created. + +### Return Value + +<a href="#SkBitmap_empty">empty</a> <a href="#Bitmap">Bitmap</a> + +### Example + +<div><fiddle-embed name="8bf225da00df80970271722cd3d1ced4"> + +#### Example Output + +~~~~ +width: 0 height: 0 color: kUnknown_SkColorType alpha: kUnknown_SkAlphaType +width: 25 height: 35 color: kRGBA_8888_SkColorType alpha: kOpaque_SkAlphaType +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> + +--- + +<a name="SkBitmap_copy_const_SkBitmap"></a> +## SkBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkBitmap(const SkBitmap& src) +</pre> + +Copies settings from <a href="#SkBitmap_copy_const_SkBitmap_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Shares pixels if <a href="#SkBitmap_copy_const_SkBitmap_src">src</a> has pixels +allocated, so both bitmaps reference the same pixels. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_copy_const_SkBitmap_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="#Info">Image Info</a>, and share <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> + </tr> +</table> + +### Return Value + +copy of <a href="#SkBitmap_copy_const_SkBitmap_src">src</a> + +### Example + +<div><fiddle-embed name="dbf46a0b60324ec611cc18d86772e7b9"> + +#### Example Output + +~~~~ +original has pixels before copy: true +original has pixels after copy: true +copy has pixels: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> <a href="#SkBitmap_setPixelRef">setPixelRef</a> <a href="#SkBitmap_setPixels">setPixels</a> <a href="#SkBitmap_swap">swap</a> + +--- + +<a name="SkBitmap_move_SkBitmap"></a> +## SkBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkBitmap(SkBitmap&& src) +</pre> + +Copies settings from <a href="#SkBitmap_move_SkBitmap_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Moves ownership of <a href="#SkBitmap_move_SkBitmap_src">src</a> pixels to +<a href="#Bitmap">Bitmap</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_move_SkBitmap_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="#Info">Image Info</a>, and reassign <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> + </tr> +</table> + +### Return Value + +copy of <a href="#SkBitmap_move_SkBitmap_src">src</a> + +### Example + +<div><fiddle-embed name="8172a14e66cb763b7133f70dc4ff601e"> + +#### Example Output + +~~~~ +original has pixels before move: true +original has pixels after move: false +copy has pixels: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> <a href="#SkBitmap_setPixelRef">setPixelRef</a> <a href="#SkBitmap_setPixels">setPixels</a> <a href="#SkBitmap_swap">swap</a> + +--- + +<a name="SkBitmap_destructor"></a> +## ~SkBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +~SkBitmap() +</pre> + +Decrements <a href="undocumented#Pixel_Ref">Pixel Ref</a> reference count, if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is not nullptr. + +### See Also + +<a href="undocumented#Pixel_Ref">Pixel Ref</a> + +--- + +<a name="SkBitmap_copy_assignment_operator"></a> +## operator= + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkBitmap& operator=(const SkBitmap& src) +</pre> + +Copies settings from <a href="#SkBitmap_copy_assignment_operator_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Shares pixels if <a href="#SkBitmap_copy_assignment_operator_src">src</a> has pixels +allocated, so both bitmaps reference the same pixels. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_copy_assignment_operator_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="#Info">Image Info</a>, and share <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> + </tr> +</table> + +### Return Value + +copy of <a href="#SkBitmap_copy_assignment_operator_src">src</a> + +### Example + +<div><fiddle-embed name="6366fa1b1b3df1bebbfa3ed1c5a43457"> + +#### Example Output + +~~~~ +original has pixels before copy: true +original has pixels after copy: true +copy has pixels: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> <a href="#SkBitmap_setPixelRef">setPixelRef</a> <a href="#SkBitmap_setPixels">setPixels</a> <a href="#SkBitmap_swap">swap</a> + +--- + +<a name="SkBitmap_move_assignment_operator"></a> +## operator= + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkBitmap& operator=(SkBitmap&& src) +</pre> + +Copies settings from <a href="#SkBitmap_move_assignment_operator_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Moves ownership of <a href="#SkBitmap_move_assignment_operator_src">src</a> pixels to +<a href="#Bitmap">Bitmap</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_move_assignment_operator_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="#Info">Image Info</a>, and reassign <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> + </tr> +</table> + +### Return Value + +copy of <a href="#SkBitmap_move_assignment_operator_src">src</a> + +### Example + +<div><fiddle-embed name="5066583054077df5098bb1d2aa402149"> + +#### Example Output + +~~~~ +original has pixels before move: true +original has pixels after move: false +copy has pixels: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> <a href="#SkBitmap_setPixelRef">setPixelRef</a> <a href="#SkBitmap_setPixels">setPixels</a> <a href="#SkBitmap_swap">swap</a> + +--- + +<a name="SkBitmap_swap"></a> +## swap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void swap(SkBitmap& other) +</pre> + +Swaps the fields of the two bitmaps. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_swap_other"> <code><strong>other </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> exchanged with original</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="aaf9157531f4969b4ec048e9edcdb069"> + +#### Example Output + +~~~~ +one width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaType +two width:2 height:2 colorType:kBGRA_8888_SkColorType alphaType:kPremul_SkAlphaType +one width:2 height:2 colorType:kBGRA_8888_SkColorType alphaType:kPremul_SkAlphaType +two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaType +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_move_SkBitmap">SkBitmap(SkBitmap&& src)</a> <a href="#SkBitmap_move_assignment_operator">operator=(SkBitmap&& src)</a> + +--- + +<a name="SkBitmap_info"></a> +## info + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +const SkImageInfo& info() const +</pre> + +Returns <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, and <a href="undocumented#Color_Space">Color Space</a>. + +### Return Value + +reference to <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="2932fccfb074cf52b17cec238f70d888"> + +#### Example Output + +~~~~ +width: 56 height: 56 color: BGRA_8888 alpha: Opaque +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#Info">Image Info</a> + +--- + +<a name="SkBitmap_width"></a> +## width + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int width() const +</pre> + +Returns pixel count in each pixel row. Should be equal or less than: +<a href="#SkBitmap_rowBytes">rowBytes</a> / <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>. + +Maybe be less than <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_width">width</a>. Will not exceed <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_width">width</a> less +<a href="#SkBitmap_pixelRefOrigin">pixelRefOrigin</a>.fX. + +### Return Value + +pixel <a href="#SkBitmap_width">width</a> in <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="d06880c42f8bb3b4c3b67bd988046049"> + +#### Example Output + +~~~~ +bitmap width: 16 info width: 16 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_height">height</a> <a href="#SkPixelRef_width">SkPixelRef::width()</a> <a href="#SkImageInfo_width">SkImageInfo::width()</a> + +--- + +<a name="SkBitmap_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int height() const +</pre> + +Returns pixel row count. + +Maybe be less than <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_height">height</a>. Will not exceed <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_height">height</a> less +<a href="#SkBitmap_pixelRefOrigin">pixelRefOrigin</a>.fY. + +### Return Value + +pixel <a href="#SkBitmap_height">height</a> in <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="c79a196278c58b34cd5f551b0124ecc9"> + +#### Example Output + +~~~~ +bitmap height: 32 info height: 32 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_width">width</a> <a href="#SkPixelRef_height">SkPixelRef::height()</a> <a href="#SkImageInfo_height">SkImageInfo::height()</a> + +--- + +<a name="SkBitmap_colorType"></a> +## colorType + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkColorType colorType() const +</pre> + +Returns <a href="undocumented#Color_Type">Color Type</a>, one of: <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, +<a href="undocumented#SkColorType">kRGB 565 SkColorType</a>, <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a>, +<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a>. + +### Return Value + +<a href="undocumented#Color_Type">Color Type</a> in <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="8aa2ab0565091082a874c23886ddb0c5"> + +#### Example Output + +~~~~ +color type: kAlpha_SkColorType +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_alphaType">alphaType</a> <a href="#SkImageInfo_colorType">SkImageInfo::colorType</a> + +--- + +<a name="SkBitmap_alphaType"></a> +## alphaType + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkAlphaType alphaType() const +</pre> + +Returns <a href="undocumented#Alpha_Type">Alpha Type</a>, one of: <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, +<a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>, <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>. + +### Return Value + +<a href="undocumented#Alpha_Type">Alpha Type</a> in <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="070b1a60232be499eb10c6ea62371804"> + +#### Example Output + +~~~~ +alpha type: kPremul_SkAlphaType +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_colorType">colorType</a> <a href="#SkImageInfo_alphaType">SkImageInfo::alphaType</a> + +--- + +<a name="SkBitmap_colorSpace"></a> +## colorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkColorSpace* colorSpace() const +</pre> + +Returns <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with <a href="#Info">Image Info</a>. The +reference count of <a href="undocumented#Color_Space">Color Space</a> is unchanged. The returned <a href="undocumented#Color_Space">Color Space</a> is +immutable. + +### Return Value + +<a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a> + +### Example + +<div><fiddle-embed name="7ade8a1a21ea5197e565c86740b47b73"><div><a href="#SkColorSpace_MakeSRGBLinear">SkColorSpace::MakeSRGBLinear</a> creates <a href="undocumented#Color_Space">Color Space</a> with linear gamma +and an sRGB gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to sRGB gamma.</div> + +#### Example Output + +~~~~ +gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="undocumented#Color_Space">Color Space</a> <a href="#SkImageInfo_colorSpace">SkImageInfo::colorSpace</a> + +--- + +<a name="SkBitmap_refColorSpace"></a> +## refColorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +sk_sp<SkColorSpace> refColorSpace() const +</pre> + +Returns a smart pointer to <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with +<a href="#Info">Image Info</a>. The smart pointer tracks the number of objects sharing this +<a href="undocumented#Color_Space">Color Space</a> reference so the memory is released when the owners destruct. + +The returned <a href="undocumented#Color_Space">Color Space</a> is immutable. + +### Return Value + +<a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a> wrapped in a smart pointer + +### Example + +<div><fiddle-embed name="972e9bb22c1ce94bb97b2d106168280e"> + +#### Example Output + +~~~~ +gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="undocumented#Color_Space">Color Space</a> <a href="#SkImageInfo_colorSpace">SkImageInfo::colorSpace</a> + +--- + +<a name="SkBitmap_bytesPerPixel"></a> +## bytesPerPixel + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int bytesPerPixel() const +</pre> + +Returns number of bytes per pixel required by <a href="undocumented#Color_Type">Color Type</a>. +Returns zero if <a href="#SkBitmap_colorType">colorType</a>( is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +### Return Value + +bytes in pixel + +### Example + +<div><fiddle-embed name="f09e181f3210d427e4b3d2ae6667ae6a"> + +#### Example Output + +~~~~ +color: kUnknown_SkColorType bytesPerPixel: 0 +color: kAlpha_SkColorType bytesPerPixel: 1 +color: kRGB_565_SkColorType bytesPerPixel: 2 +color: kARGB_4444_SkColorType bytesPerPixel: 2 +color: kRGBA_8888_SkColorType bytesPerPixel: 4 +color: kBGRA_8888_SkColorType bytesPerPixel: 4 +color: kGray_8_SkColorType bytesPerPixel: 1 +color: kRGBA_F16_SkColorType bytesPerPixel: 8 +~~~~ + +</fiddle-embed></div> + +### See Also + +<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 name="SkBitmap_rowBytesAsPixels"></a> +## rowBytesAsPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int rowBytesAsPixels() const +</pre> + +Returns number of pixels that fit on row. Should be greater than or equal to +<a href="#SkBitmap_width">width</a>. + +### Return Value + +maximum pixels per row + +### Example + +<div><fiddle-embed name="03a9e08082a23a98de17c3e24871d61a"> + +#### Example Output + +~~~~ +rowBytes: 4 rowBytesAsPixels: 1 +rowBytes: 5 rowBytesAsPixels: 1 +rowBytes: 6 rowBytesAsPixels: 1 +rowBytes: 7 rowBytesAsPixels: 1 +rowBytes: 8 rowBytesAsPixels: 2 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_shiftPerPixel">shiftPerPixel</a> <a href="#SkBitmap_width">width</a> <a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> + +--- + +<a name="SkBitmap_shiftPerPixel"></a> +## shiftPerPixel + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int shiftPerPixel() const +</pre> + +Returns bit shift converting row bytes to row pixels. +Returns zero for <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +### Return Value + +one of: 0, 1, 2, 3; left shift to convert pixels to bytes + +### Example + +<div><fiddle-embed name="8fa214f2b9a655d7b492181d2143538c"> + +#### Example Output + +~~~~ +color: kUnknown_SkColorType shiftPerPixel: 0 +color: kAlpha_SkColorType shiftPerPixel: 0 +color: kRGB_565_SkColorType shiftPerPixel: 1 +color: kARGB_4444_SkColorType shiftPerPixel: 1 +color: kRGBA_8888_SkColorType shiftPerPixel: 2 +color: kBGRA_8888_SkColorType shiftPerPixel: 2 +color: kGray_8_SkColorType shiftPerPixel: 0 +color: kRGBA_F16_SkColorType shiftPerPixel: 3 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> <a href="#SkBitmap_width">width</a> <a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> + +--- + +<a name="SkBitmap_empty"></a> +## empty + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool empty() const +</pre> + +Returns true if either <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> are zero. + +Does not check if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr; call <a href="#SkBitmap_drawsNothing">drawsNothing</a> to check <a href="#SkBitmap_width">width</a>, +<a href="#SkBitmap_height">height</a>, and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Return Value + +true if <a href="#SkBitmap_dimensions">dimensions</a> do not enclose area + +### Example + +<div><fiddle-embed name="a3762c2722b56ba55e42689c527f146c"> + +#### Example Output + +~~~~ +width: 0 height: 0 empty: true +width: 0 height: 2 empty: true +width: 2 height: 0 empty: true +width: 2 height: 2 empty: false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_height">height</a> <a href="#SkBitmap_width">width</a> <a href="#SkBitmap_drawsNothing">drawsNothing</a> + +--- + +<a name="SkBitmap_isNull"></a> +## isNull + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isNull() const +</pre> + +Return true if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. + +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 +<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Return Value + +true if no <a href="undocumented#Pixel_Ref">Pixel Ref</a> is associated + +### Example + +<div><fiddle-embed name="211ec89418011aa6e54aa2cc9567e003"> + +#### Example Output + +~~~~ +empty bitmap does not have pixels +bitmap with dimensions does not have pixels +allocated bitmap does have pixels +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_empty">empty</a> <a href="#SkBitmap_drawsNothing">drawsNothing</a> <a href="#SkBitmap_pixelRef">pixelRef</a> + +--- + +<a name="SkBitmap_drawsNothing"></a> +## drawsNothing + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool drawsNothing() const +</pre> + +Return true if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> are zero, or if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. +If true, <a href="#Bitmap">Bitmap</a> has no effect when drawn or drawn into. + +### Return Value + +true if drawing has no effect + +### Example + +<div><fiddle-embed name="daacf43394ce4045a362a48b5774deed"> + +#### Example Output + +~~~~ +empty:true isNull:true drawsNothing:true +empty:true isNull:false drawsNothing:true +empty:false isNull:true drawsNothing:true +empty:false isNull:false drawsNothing:false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_empty">empty</a> <a href="#SkBitmap_isNull">isNull</a> <a href="#SkBitmap_pixelRef">pixelRef</a> + +--- + +<a name="SkBitmap_rowBytes"></a> +## rowBytes + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t rowBytes() const +</pre> + +Returns row bytes, the interval from one pixel row to the next. Row bytes +is at least as large as<a href="#SkBitmap_width">width</a> * <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>. + +Returns zero if <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or if row bytes supplied to +<a href="#SkBitmap_setInfo">setInfo</a> is not large enough to hold a row of pixels. + +### Return Value + +byte length of pixel row + +### Example + +<div><fiddle-embed name="a654fd0b73f424859ae6c95e03f55099"> + +#### Example Output + +~~~~ +setInfo returned:false rowBytes:0 +setInfo returned:true rowBytes:8 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_info">info</a> <a href="#SkBitmap_setInfo">setInfo</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a> + +--- + +<a name="SkBitmap_setAlphaType"></a> +## setAlphaType + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool setAlphaType(SkAlphaType alphaType) +</pre> + +Sets <a href="undocumented#Alpha_Type">Alpha Type</a>, if <a href="#SkBitmap_alphaType">alphaType</a> is compatible with <a href="undocumented#Color_Type">Color Type</a>. +Returns true unless <a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a> and current <a href="undocumented#Alpha_Type">Alpha Type</a> +is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. + +Returns true if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. <a href="#SkBitmap_alphaType">alphaType</a> is ignored, and +<a href="undocumented#Alpha_Type">Alpha Type</a> remains <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. + +Returns true if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>. +<a href="#SkBitmap_alphaType">alphaType</a> is ignored, and <a href="undocumented#Alpha_Type">Alpha Type</a> remains <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. + +If <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a>, +<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, or <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a>: returns true unless +<a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a> and <a href="undocumented#Alpha_Type">Alpha Type</a> is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. +If <a href="undocumented#Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="#SkBitmap_alphaType">alphaType</a> is ignored. + +If <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, returns true unless +<a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a> and <a href="undocumented#Alpha_Type">Alpha Type</a> is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. +If <a href="undocumented#Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="#SkBitmap_alphaType">alphaType</a> is ignored. If <a href="#SkBitmap_alphaType">alphaType</a> is +<a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, it is treated as <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. + +This changes <a href="undocumented#Alpha_Type">Alpha Type</a> in <a href="undocumented#Pixel_Ref">Pixel Ref</a>; all bitmaps sharing <a href="undocumented#Pixel_Ref">Pixel Ref</a> +are affected. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setAlphaType_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +one of: <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, +<a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>, <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a></td> + </tr> +</table> + +### Return Value + +true if <a href="undocumented#Alpha_Type">Alpha Type</a> is set + +### Example + +<div><fiddle-embed name="786005ff582d0369c83e7d686d94138d"></fiddle-embed></div> + +### See Also + +<a href="undocumented#Alpha_Type">Alpha Type</a> <a href="undocumented#Color_Type">Color Type</a> <a href="#Info">Image Info</a> <a href="#SkBitmap_setInfo">setInfo</a> + +--- + +<a name="SkBitmap_getPixels"></a> +## getPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void* getPixels() const +</pre> + +Returns pixel address, the base address corresponding to the pixel origin. + +### Return Value + +pixel address + +### Example + +<div><fiddle-embed name="e006bb05cf74ec8d2b3d6adeb5dba11b"> + +#### Example Output + +~~~~ +bitmap.getColor(0, 1) == 0x00000000 +bitmap.getColor(0, 0) == 0xFFFFFFFF +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_isNull">isNull</a> <a href="#SkBitmap_drawsNothing">drawsNothing</a> + +--- + +<a name="SkBitmap_computeByteSize"></a> +## computeByteSize + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t computeByteSize() const +</pre> + +Returns minimum memory required for pixel storage. +Does not include unused memory on last row when <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkBitmap_width">width</a>. +Returns zero if result does not fit in size_t. +Returns zero if <a href="#SkBitmap_height">height</a> or <a href="#SkBitmap_width">width</a> is 0. +Returns <a href="#SkBitmap_height">height</a> times <a href="#SkBitmap_rowBytes">rowBytes</a> if <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +### Return Value + +size in bytes of image buffer + +### Example + +<div><fiddle-embed name="165c8f208829fc0908e8a50da60c0076"> + +#### Example Output + +~~~~ +width: 1 height: 1 computeByteSize: 4 +width: 1 height: 1000 computeByteSize: 4999 +width: 1 height: 1000000 computeByteSize: 4999999 +width: 1000 height: 1 computeByteSize: 4000 +width: 1000 height: 1000 computeByteSize: 4999000 +width: 1000 height: 1000000 computeByteSize: 4999999000 +width: 1000000 height: 1 computeByteSize: 4000000 +width: 1000000 height: 1000 computeByteSize: 4999000000 +width: 1000000 height: 1000000 computeByteSize: 4999999000000 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkImageInfo_computeByteSize">SkImageInfo::computeByteSize</a> + +--- + +<a name="SkBitmap_getSize"></a> +## getSize + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t getSize() const +</pre> + +Returns conservative memory required for pixel storage. +Includes unused memory on last row when <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkBitmap_width">width</a>. + +Does not check to see if result fits in 32 bits. Use getSize64() if the +result may exceed 32 bits. + +### Return Value + +<a href="#SkBitmap_height">height</a> times <a href="#SkBitmap_rowBytes">rowBytes</a> + +### Example + +<div><fiddle-embed name="798d5f259dbd1ead4f3b1eac955c2cde"><div><a href="#SkBitmap_getSize">getSize</a> results are not useful when <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> are large.</div> + +#### Example Output + +~~~~ +width: 1 height: 1 getSize: 5 +width: 1 height: 1000 getSize: 5000 +width: 1 height: 1000000 getSize: 5000000 +width: 1000 height: 1 getSize: 5000 +width: 1000 height: 1000 getSize: 5000000 +width: 1000 height: 1000000 getSize: 705032704 +width: 1000000 height: 1 getSize: 5000000 +width: 1000000 height: 1000 getSize: 705032704 +width: 1000000 height: 1000000 getSize: 658067456 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getSafeSize">getSafeSize</a> <a href="#SkBitmap_computeSize64">computeSize64</a> <a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_width">width</a> + +--- + +<a name="SkBitmap_getSafeSize"></a> +## getSafeSize + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t getSafeSize() const +</pre> + +Returns minimum memory required for pixel storage. +Does not include unused memory on last row when <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkBitmap_width">width</a>. + +Returns zero if size does not fit in 32 bits. Use <a href="#SkBitmap_computeSafeSize64">computeSafeSize64</a> if the +result may exceed 32 bits. + +The pixel storage visible may be a subset of the <a href="undocumented#Pixel_Ref">Pixel Ref</a>. Accessing memory +beyond the result may generate an exception. + +### Return Value + +exact pixel storage size + +### Example + +<div><fiddle-embed name="47a93c44326c86371dbf42d2544e76be"><div><a href="#SkBitmap_getSafeSize">getSafeSize</a> results are not useful when <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> are large.</div> + +#### Example Output + +~~~~ +width: 1 height: 1 getSafeSize: 4 +width: 1 height: 1000 getSafeSize: 4999 +width: 1 height: 1000000 getSafeSize: 4999999 +width: 1000 height: 1 getSafeSize: 4000 +width: 1000 height: 1000 getSafeSize: 4999000 +width: 1000 height: 1000000 getSafeSize: 0 +width: 1000000 height: 1 getSafeSize: 4000000 +width: 1000000 height: 1000 getSafeSize: 0 +width: 1000000 height: 1000000 getSafeSize: 0 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getSize">getSize</a> <a href="#SkBitmap_computeSafeSize64">computeSafeSize64</a> <a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_width">width</a> + +--- + +<a name="SkBitmap_computeSize64"></a> +## computeSize64 + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int64_t computeSize64() const +</pre> + +Returns conservative memory required for pixel storage. +Includes unused memory on last row when <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkBitmap_width">width</a>. + +### Return Value + +conservative pixel storage size + +### Example + +<div><fiddle-embed name="e7deb420416751aa68c1bd7956596833"> + +#### Example Output + +~~~~ +width: 1 height: 1 computeSize64: 5 +width: 1 height: 1000 computeSize64: 5000 +width: 1 height: 1000000 computeSize64: 5000000 +width: 1000 height: 1 computeSize64: 5000 +width: 1000 height: 1000 computeSize64: 5000000 +width: 1000 height: 1000000 computeSize64: 5000000000 +width: 1000000 height: 1 computeSize64: 5000000 +width: 1000000 height: 1000 computeSize64: 5000000000 +width: 1000000 height: 1000000 computeSize64: 5000000000000 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getSize">getSize</a> <a href="#SkBitmap_computeSafeSize64">computeSafeSize64</a> <a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_width">width</a> + +--- + +<a name="SkBitmap_computeSafeSize64"></a> +## computeSafeSize64 + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int64_t computeSafeSize64() const +</pre> + +Returns minimum memory required for pixel storage. +Does not include unused memory on last row when <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkBitmap_width">width</a>. + +### Return Value + +exact pixel storage size + +### Example + +<div><fiddle-embed name="ff12ff8354c1add9ea00797412f6342c"> + +#### Example Output + +~~~~ +width: 1 height: 1 computeSafeSize64: 4 +width: 1 height: 1000 computeSafeSize64: 4999 +width: 1 height: 1000000 computeSafeSize64: 4999999 +width: 1000 height: 1 computeSafeSize64: 4000 +width: 1000 height: 1000 computeSafeSize64: 4999000 +width: 1000 height: 1000000 computeSafeSize64: 4999999000 +width: 1000000 height: 1 computeSafeSize64: 4000000 +width: 1000000 height: 1000 computeSafeSize64: 4999000000 +width: 1000000 height: 1000000 computeSafeSize64: 4999999000000 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getSafeSize">getSafeSize</a> <a href="#SkBitmap_computeSize64">computeSize64</a> <a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_width">width</a> + +--- + +<a name="SkBitmap_isImmutable"></a> +## isImmutable + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isImmutable() const +</pre> + +Returns true if pixels can not change. + +Most immutable <a href="#Bitmap">Bitmap</a> checks trigger an assert only on debug builds. + +### Return Value + +true if pixels are immutable + +### Example + +<div><fiddle-embed name="cca4f94232e5e1fcee9a841b13df9d9c"> + +#### Example Output + +~~~~ +original is immutable +copy is immutable +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setImmutable">setImmutable</a> <a href="#SkPixelRef_isImmutable">SkPixelRef::isImmutable</a> <a href="undocumented#SkImage">SkImage</a> + +--- + +<a name="SkBitmap_setImmutable"></a> +## setImmutable + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setImmutable() +</pre> + +Once set, pixels can not change. Any other bitmap sharing the same <a href="undocumented#Pixel_Ref">Pixel Ref</a> +are also marked as immutable. Once <a href="undocumented#Pixel_Ref">Pixel Ref</a> is marked immutable, the setting +cannot be cleared. + +Writing to immutable <a href="#Bitmap">Bitmap</a> pixels triggers an assert on debug builds. + +### Example + +<div><fiddle-embed name="9210060d1f4ca46e1375496237902ef3"><div>Triggers assert if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is true, runs fine otherwise.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_isImmutable">isImmutable</a> <a href="#SkPixelRef_setImmutable">SkPixelRef::setImmutable</a> <a href="undocumented#SkImage">SkImage</a> + +--- + +<a name="SkBitmap_isOpaque"></a> +## isOpaque + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isOpaque() const +</pre> + +Returns true if <a href="undocumented#Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. +Does not check if <a href="undocumented#Color_Type">Color Type</a> allows <a href="#Alpha">Alpha</a>, or if any pixel value has +transparency. + +### Return Value + +true if <a href="#Info">Image Info</a> describes opaque <a href="#Alpha">Alpha</a> + +### Example + +<div><fiddle-embed name="5e76b68bb46d54315eb0c12d83bd6949"><div><a href="#SkBitmap_isOpaque">isOpaque</a> ignores whether all pixels are opaque or not.</div> + +#### Example Output + +~~~~ +isOpaque: false +isOpaque: false +isOpaque: true +isOpaque: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_ComputeIsOpaque">ComputeIsOpaque</a> <a href="#SkImageInfo_isOpaque">SkImageInfo::isOpaque</a> + +--- + +<a name="SkBitmap_isVolatile"></a> +## isVolatile + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isVolatile() const +</pre> + +If true, provides a hint to caller that pixels should not +be cached. Only true if <a href="#SkBitmap_setIsVolatile">setIsVolatile</a> has been called to mark as volatile. + +Volatile state is not shared by other bitmaps sharing the same <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Return Value + +true if marked volatile + +### Example + +<div><fiddle-embed name="4f3e4d39cf34ea52fcd933dbafc46dfa"> + +#### Example Output + +~~~~ +original is volatile +copy is not volatile +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setIsVolatile">setIsVolatile</a> + +--- + +<a name="SkBitmap_setIsVolatile"></a> +## setIsVolatile + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setIsVolatile(bool isVolatile) +</pre> + +Sets if pixels should be read from <a href="undocumented#Pixel_Ref">Pixel Ref</a> on every access. <a href="#Bitmap">Bitmaps</a> are not +volatile by default; a <a href="undocumented#GPU">GPU</a> back end may upload pixel values expecting them to be +accessed repeatedly. Marking temporary <a href="#Bitmap">Bitmaps</a> as volatile provides a hint to +<a href="undocumented#Device">Device</a> that the <a href="#Bitmap">Bitmap</a> pixels should not be cached. This can +improve performance by avoiding overhead and reducing resource +consumption on <a href="undocumented#Device">Device</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setIsVolatile_isVolatile"> <code><strong>isVolatile </strong></code> </a></td> <td> +true if backing pixels are temporary</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="9443ada07e6123fc895be4c958244218"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_isVolatile">isVolatile</a> + +--- + +<a name="SkBitmap_reset"></a> +## reset + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void reset() +</pre> + +Resets to its initial state; all fields are set to zero, as if <a href="#Bitmap">Bitmap</a> had +been initialized by <a href="#SkBitmap_empty_constructor">SkBitmap()</a>. + +Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, row bytes to zero; pixel address to nullptr; <a href="undocumented#SkColorType">SkColorType</a> to +<a href="undocumented#SkColorType">kUnknown SkColorType</a>; and <a href="undocumented#SkAlphaType">SkAlphaType</a> to <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. + +If <a href="undocumented#Pixel_Ref">Pixel Ref</a> is allocated, its reference count is decreased by one, releasing +its memory if <a href="#Bitmap">Bitmap</a> is the sole owner. + +### Example + +<div><fiddle-embed name="458f838acf38302abec477cec3102f0f"> + +#### Example Output + +~~~~ +width:1 height:1 isNull:false +width:0 height:0 isNull:true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_empty_constructor">SkBitmap()</a> <a href="undocumented#SkAlphaType">SkAlphaType</a> <a href="undocumented#SkColorType">SkColorType</a> + +--- + +<a name="SkBitmap_ComputeIsOpaque"></a> +## ComputeIsOpaque + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +static bool ComputeIsOpaque(const SkBitmap& bm) +</pre> + +Returns true if all pixels are opaque. <a href="undocumented#Color_Type">Color Type</a> determines how pixels +are encoded, and whether pixel describes <a href="#Alpha">Alpha</a>. Returns true for <a href="undocumented#Color_Type">Color Types</a> +without alpha in each pixel; for other <a href="undocumented#Color_Type">Color Types</a>, returns true if all +pixels have alpha values equivalent to 1.0 or greater. + +For <a href="undocumented#Color_Type">Color Types</a> <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>: always +returns true. For <a href="undocumented#Color_Type">Color Types</a> <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, +<a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a>: returns true if all pixel <a href="#Alpha">Alpha</a> values are 255. +For <a href="undocumented#Color_Type">Color Type</a> <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>: returns true if all pixel <a href="#Alpha">Alpha</a> values are 15. +For <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a>: returns true if all pixel <a href="#Alpha">Alpha</a> values are 1.0 or +greater. + +Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_ComputeIsOpaque_bm"> <code><strong>bm </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to check</td> + </tr> +</table> + +### Return Value + +true if all pixels have opaque values or <a href="undocumented#Color_Type">Color Type</a> is opaque + +### Example + +<div><fiddle-embed name="9df1baa17658fbd0c419780f26fd854f"> + +#### Example Output + +~~~~ +computeIsOpaque: false +computeIsOpaque: true +computeIsOpaque: false +computeIsOpaque: true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_isOpaque">isOpaque</a> <a href="undocumented#Color_Type">Color Type</a> <a href="#Alpha">Alpha</a> + +--- + +<a name="SkBitmap_getBounds"></a> +## getBounds + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void getBounds(SkRect* bounds) const +</pre> + +Returns <a href="SkRect_Reference#Rect">Rect</a> { 0, 0, <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a> }. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getBounds_bounds"> <code><strong>bounds </strong></code> </a></td> <td> +container for floating point rectangle</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="2431ebc7e7d1e91e6d9daafd0f7a478f"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_bounds">bounds</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void getBounds(SkIRect* bounds) const +</pre> + +Returns <a href="SkIRect_Reference#IRect">IRect</a> { 0, 0, <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a> }. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getBounds_2_bounds"> <code><strong>bounds </strong></code> </a></td> <td> +container for integral rectangle</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="0c45da35172bc0a529b2faecddae62a2"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_bounds">bounds</a> + +--- + +<a name="SkBitmap_bounds"></a> +## bounds + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkIRect bounds() const +</pre> + +Returns <a href="SkIRect_Reference#IRect">IRect</a> { 0, 0, <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a> }. + +### Return Value + +integral rectangle from origin to <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> + +### Example + +<div><fiddle-embed name="977dd8a850f89a610505e3f4f260d540"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getBounds">getBounds</a> + +--- + +<a name="SkBitmap_dimensions"></a> +## dimensions + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkISize dimensions() const +</pre> + +Returns <a href="#Size">ISize</a> { <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a> }. + +### Return Value + +integral size of <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> + +### Example + +<div><fiddle-embed name="647056bcc12c27fb4413f212f33a2898"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_height">height</a> <a href="#SkBitmap_width">width</a> + +--- + +<a name="SkBitmap_getSubset"></a> +## getSubset + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkIRect getSubset() const +</pre> + +Returns the <a href="#SkBitmap_bounds">bounds</a> of this bitmap, offset by its <a href="undocumented#Pixel_Ref">Pixel Ref</a> origin. + +### Return Value + +<a href="#SkBitmap_bounds">bounds</a> within <a href="undocumented#Pixel_Ref">Pixel Ref</a> <a href="#SkBitmap_bounds">bounds</a> + +### Example + +<div><fiddle-embed name="d6dd0b425aa550f21b938a18c2e1a981"> + +#### Example Output + +~~~~ +source: 0, 0, 512, 512 +subset: 100, 100, 412, 412 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_extractSubset">extractSubset</a> <a href="#SkBitmap_getBounds">getBounds</a> + +--- + +<a name="SkBitmap_setInfo"></a> +## setInfo + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool setInfo(const SkImageInfo& imageInfo, size_t rowBytes = 0) +</pre> + +Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a>, and optional +<a href="#SkBitmap_rowBytes">rowBytes</a>. Frees pixels, and returns true if successful. + +<a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> may be altered to a value permitted by <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a>. +If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is +set to <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. +If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> and <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is +<a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is replaced by <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. +If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, +<a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is set to <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. +If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a>, +<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, or <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a>: <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> remains +unchanged. + +<a href="#SkBitmap_rowBytes">rowBytes</a> must equal or exceed <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>. If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> is +<a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="#SkBitmap_rowBytes">rowBytes</a> is ignored and treated as zero; for all other +<a href="undocumented#Color_Space">Color Space</a> values, <a href="#SkBitmap_rowBytes">rowBytes</a> of zero is treated as <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>. + +Calls <a href="#SkBitmap_reset">reset</a> and returns false if: + +<table> <tr> + <td><a href="#SkBitmap_rowBytes">rowBytes</a> exceeds 31 bits</td> </tr> <tr> + <td><a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_width">width</a> times <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> exceeds 31 bits</td> </tr> <tr> + <td><a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_width">width</a> is negative</td> </tr> <tr> + <td><a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_height">height</a> is negative</td> </tr> <tr> + <td><a href="#SkBitmap_rowBytes">rowBytes</a> is positive and less than <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_width">width</a> times <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a></td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setInfo_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_setInfo_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +<a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a> or larger; or zero</td> + </tr> +</table> + +### Return Value + +true if <a href="#Info">Image Info</a> set successfully + +### Example + +<div><fiddle-embed name="599ab64d0aea005498176249bbfb64eb"></fiddle-embed></div> + +### See Also + +<a href="undocumented#Alpha_Type">Alpha Type</a> <a href="undocumented#Color_Type">Color Type</a> <a href="undocumented#Color_Space">Color Space</a> <a href="#SkBitmap_height">height</a> <a href="#SkBitmap_rowBytes">rowBytes</a> <a href="#SkBitmap_width">width</a> + +--- + +## <a name="SkBitmap_AllocFlags"></a> Enum SkBitmap::AllocFlags + +<pre style="padding: 1em 1em 1em 1em;width: 44em; background-color: #f0f0f0"> +enum <a href="#SkBitmap_AllocFlags">AllocFlags</a> { +<a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> = 1 << 0, +};</pre> + +<a href="#SkBitmap_AllocFlags">AllocFlags</a> provides the option to zero pixel memory when allocated. + +### Constants + +<table> + <tr> + <td><a name="SkBitmap_kZeroPixels_AllocFlag"> <code><strong>SkBitmap::kZeroPixels_AllocFlag </strong></code> </a></td><td>1</td><td>Instructs <a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> and <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> to zero pixel memory.</td> + </tr> +</table> + +### See Also + +<a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> <a href="#SkBitmap_erase">erase</a> <a href="#SkBitmap_eraseColor">eraseColor</a> + + + +<a name="SkBitmap_tryAllocPixelsFlags"></a> +## tryAllocPixelsFlags + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocPixelsFlags(const SkImageInfo& info, + uint32_t flags) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. If <a href="#SkBitmap_tryAllocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed. + +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated, or memory size exceeds 31 bits, or memory could not optionally +be zeroed. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(), if <a href="#SkBitmap_tryAllocPixelsFlags_flags">flags</a> is zero, and calloc(), if <a href="#SkBitmap_tryAllocPixelsFlags_flags">flags</a> is +<a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>. + +Passing <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> is usually faster than separately calling + +### Parameters + +<table> <tr> <td><a name="SkBitmap_tryAllocPixelsFlags_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_tryAllocPixelsFlags_flags"> <code><strong>flags </strong></code> </a></td> <td> +<a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, or zero</td> + </tr> +</table> + +### Return Value + +true if pixels allocation is successful + +### Example + +<div><fiddle-embed name="01e11c52fe4a3dc7ee800ce8e925b973"><div>For <a href="#SkBitmap_width">width</a> of 100,000, <a href="#SkBitmap_height">height</a> of 100,000, and 4 bytes per pixel, <a href="undocumented#Pixel_Ref">Pixel Ref</a> +requires 40,000,000,000 bytes of storage. <a href="#SkBitmap_Allocator">Allocator</a> implemented +internally by <a href="#SkMallocPixelRef_MakeZeroed">SkMallocPixelRef::MakeZeroed</a> limits the maximum memory allowed; +the allocation must fit in 31 bits.</div> + +#### Example Output + +~~~~ +attempt 1 +failed! +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> <a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> <a href="#SkMallocPixelRef_MakeZeroed">SkMallocPixelRef::MakeZeroed</a> + +--- + +<a name="SkBitmap_allocPixelsFlags"></a> +## allocPixelsFlags + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocPixelsFlags(const SkImageInfo& info, uint32_t flags) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. If <a href="#SkBitmap_allocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed. + +Aborts execution if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated, or memory size exceeds 31 bits, or memory could not optionally +be zeroed. Abort steps may be provided by the user at compile time by defining +<a href="undocumented#SK_ABORT">SK ABORT</a>. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(), if <a href="#SkBitmap_allocPixelsFlags_flags">flags</a> is zero, and calloc(), if <a href="#SkBitmap_allocPixelsFlags_flags">flags</a> is +<a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>. + +Passing <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> is usually faster than separately calling + +### Parameters + +<table> <tr> <td><a name="SkBitmap_allocPixelsFlags_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_allocPixelsFlags_flags"> <code><strong>flags </strong></code> </a></td> <td> +<a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, or zero</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="f21b8965a88c94a32393a8890c4672af"><div><a href="undocumented#Text">Text</a> is drawn on a transparent background; drawing the bitmap a second time +lets the first draw show through.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> <a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkMallocPixelRef_MakeZeroed">SkMallocPixelRef::MakeZeroed</a> + +--- + +<a name="SkBitmap_tryAllocPixels"></a> +## tryAllocPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocPixels(const SkImageInfo& info, + size_t rowBytes) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. <a href="#SkBitmap_rowBytes">rowBytes</a> must equal or exceed <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_width">width</a> times <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>, +or equal zero. Pass in zero for <a href="#SkBitmap_rowBytes">rowBytes</a> to compute the minimum valid value. + +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(). + +### Parameters + +<table> <tr> <td><a name="SkBitmap_tryAllocPixels_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_tryAllocPixels_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +size of pixel row or larger; may be zero</td> + </tr> +</table> + +### Return Value + +true if pixel storage is allocated + +### Example + +<div><fiddle-embed name="34479d5aa23ce9f5e334b0786c9edb22"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> <a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<a name="SkBitmap_allocPixels"></a> +## allocPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocPixels(const SkImageInfo& info, size_t rowBytes) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. <a href="#SkBitmap_rowBytes">rowBytes</a> must equal or exceed <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_width">width</a> times <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>, +or equal zero. Pass in zero for <a href="#SkBitmap_rowBytes">rowBytes</a> to compute the minimum valid value. + +Aborts execution if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated, or memory size exceeds 31 bits. Abort steps may be provided by +the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(). + +### Parameters + +<table> <tr> <td><a name="SkBitmap_allocPixels_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_allocPixels_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +size of pixel row or larger; may be zero</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="555c0f62f96602a9dcd459badcd005e0"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocPixels(const SkImageInfo& info) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. + +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(). + +### Parameters + +<table> <tr> <td><a name="SkBitmap_tryAllocPixels_2_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> +</table> + +### Return Value + +true if pixel storage is allocated + +### Example + +<div><fiddle-embed name="7ef3d043c4c5885649e591dd7dca92ff"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> <a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocPixels(const SkImageInfo& info) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel +memory. + +Aborts execution if <a href="#Info">Image Info</a> could not be set, or memory could +not be allocated, or memory size exceeds 31 bits. Abort steps may be provided by +the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>. + +On most platforms, allocating pixel memory may succeed even though there is +not sufficient memory to hold pixels; allocation does not take place +until the pixels are written to. The actual behavior depends on the platform +implementation of malloc(). + +### Parameters + +<table> <tr> <td><a name="SkBitmap_allocPixels_2_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="91f474a11a2112cd5c88c40a9015048d"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<a name="SkBitmap_tryAllocN32Pixels"></a> +## tryAllocN32Pixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocN32Pixels(int width, int height, + bool isOpaque = false) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and the native <a href="undocumented#Color_Type">Color Type</a>; and allocates +pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="#Info">Image Info</a> to <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>; +otherwise, sets to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. + +Calls <a href="#SkBitmap_reset">reset</a> and returns false if <a href="#SkBitmap_width">width</a> exceeds 29 bits or is negative, +or <a href="#SkBitmap_height">height</a> is negative. + +Returns false if allocation fails. + +Use to create <a href="#Bitmap">Bitmap</a> that matches native pixel arrangement on the platform, +to draw without converting its pixel format. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_tryAllocN32Pixels_width"> <code><strong>width </strong></code> </a></td> <td> +pixel column count; must be zero or greater</td> + </tr> <tr> <td><a name="SkBitmap_tryAllocN32Pixels_height"> <code><strong>height </strong></code> </a></td> <td> +pixel row count; must be zero or greater</td> + </tr> <tr> <td><a name="SkBitmap_tryAllocN32Pixels_isOpaque"> <code><strong>isOpaque </strong></code> </a></td> <td> +true if pixels do not have transparency</td> + </tr> +</table> + +### Return Value + +true if pixel storage is allocated + +### Example + +<div><fiddle-embed name="a2b1e0910f37066f15ae56368775a6d8"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> <a href="#SkBitmap_allocN32Pixels">allocN32Pixels</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<a name="SkBitmap_allocN32Pixels"></a> +## allocN32Pixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocN32Pixels(int width, int height, bool isOpaque = false) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and the native <a href="undocumented#Color_Type">Color Type</a>; and allocates +pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="#Info">Image Info</a> to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>; +otherwise, sets to <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. + +Aborts if <a href="#SkBitmap_width">width</a> exceeds 29 bits or is negative, or <a href="#SkBitmap_height">height</a> is negative, or +allocation fails. Abort steps may be provided by the user at compile time by +defining <a href="undocumented#SK_ABORT">SK ABORT</a>. + +Use to create <a href="#Bitmap">Bitmap</a> that matches native pixel arrangement on the platform, +to draw without converting its pixel format. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_allocN32Pixels_width"> <code><strong>width </strong></code> </a></td> <td> +pixel column count; must be zero or greater</td> + </tr> <tr> <td><a name="SkBitmap_allocN32Pixels_height"> <code><strong>height </strong></code> </a></td> <td> +pixel row count; must be zero or greater</td> + </tr> <tr> <td><a name="SkBitmap_allocN32Pixels_isOpaque"> <code><strong>isOpaque </strong></code> </a></td> <td> +true if pixels do not have transparency</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="c717491f9251604724c9cbde7088ec20"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkBitmap_tryAllocN32Pixels">tryAllocN32Pixels</a> <a href="#SkMallocPixelRef_MakeAllocate">SkMallocPixelRef::MakeAllocate</a> + +--- + +<a name="SkBitmap_installPixels"></a> +## installPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, + void (*releaseProc) (void* addr, void* context) , void* context) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a>, and creates <a href="undocumented#Pixel_Ref">Pixel Ref</a> +containing <a href="#SkBitmap_installPixels_pixels">pixels</a> and <a href="#SkBitmap_rowBytes">rowBytes</a>. <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a>, if not nullptr, is called +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 +nullptr. + +If <a href="#Info">Image Info</a> could not be set, or <a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkBitmap_info">info</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>: +calls <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a> if present, calls <a href="#SkBitmap_reset">reset</a>, and returns false. + +Otherwise, if <a href="#SkBitmap_installPixels_pixels">pixels</a> equals nullptr: sets <a href="#Info">Image Info</a>, calls <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a> if +present, returns true. + +If <a href="#Info">Image Info</a> is set, <a href="#SkBitmap_installPixels_pixels">pixels</a> is not nullptr, and <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a> is not nullptr: +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> +as parameters. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_installPixels_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_installPixels_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +address or pixel storage; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_installPixels_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +size of pixel row or larger</td> + </tr> <tr> <td><a name="SkBitmap_installPixels_releaseProc"> <code><strong>releaseProc </strong></code> </a></td> <td> +function called when <a href="#SkBitmap_installPixels_pixels">pixels</a> can be deleted; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_installPixels_context"> <code><strong>context </strong></code> </a></td> <td> +caller state passed to <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a>; may be nullptr</td> + </tr> +</table> + +### Return Value + +true if <a href="#Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> + +### Example + +<div><fiddle-embed name="ff5b5c349efb5d929ff5dff07b7727e6"><div><a href="#SkBitmap_installPixels_releaseProc">releaseProc</a> is called immediately because <a href="#SkBitmap_rowBytes">rowBytes</a> is too small for <a href="undocumented#Pixel_Ref">Pixel Ref</a>.</div> + +#### Example Output + +~~~~ +before installPixels +releaseProc called +install not successful +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a>, and creates <a href="undocumented#Pixel_Ref">Pixel Ref</a> +containing <a href="#SkBitmap_installPixels_2_pixels">pixels</a> and <a href="#SkBitmap_rowBytes">rowBytes</a>. + +If <a href="#Info">Image Info</a> could not be set, or <a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkBitmap_info">info</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>: +calls <a href="#SkBitmap_reset">reset</a>, and returns false. + +Otherwise, if <a href="#SkBitmap_installPixels_2_pixels">pixels</a> equals nullptr: sets <a href="#Info">Image Info</a>, returns true. + +Caller must ensure that <a href="#SkBitmap_installPixels_2_pixels">pixels</a> are valid for the lifetime of <a href="#Bitmap">Bitmap</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_installPixels_2_info"> <code><strong>info </strong></code> </a></td> <td> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_installPixels_2_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +address or pixel storage; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_installPixels_2_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +size of pixel row or larger</td> + </tr> +</table> + +### Return Value + +true if <a href="#Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> + +### Example + +<div><fiddle-embed name="a7e04447b2081010c50d7920e80a6bb2"><div><a href="undocumented#GPU">GPU</a> does not support <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, does not assert that it does not.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool installPixels(const SkPixmap& pixmap) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.<a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a>, and creates +<a href="undocumented#Pixel_Ref">Pixel Ref</a> containing <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.addr() and <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.<a href="#SkBitmap_rowBytes">rowBytes</a>. + +If <a href="#Info">Image Info</a> could not be set, or <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than +<a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>: calls <a href="#SkBitmap_reset">reset</a>, and returns false. + +Otherwise, if <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.addr() equals nullptr: sets <a href="#Info">Image Info</a>, returns true. + +Caller must ensure that <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a> is valid for the lifetime of <a href="#Bitmap">Bitmap</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_installPixels_3_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> +<a href="#Info">Image Info</a>, pixel address, and <a href="#SkBitmap_rowBytes">rowBytes</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#Info">Image Info</a> was set to <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.<a href="#SkBitmap_info">info</a> + +### Example + +<div><fiddle-embed name="6e2a8c9358b34aebd2ec586815fe9d3a"><div>Draw a five by five bitmap, and draw it again with a center white pixel.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> + +--- + +<a name="SkBitmap_installMaskPixels"></a> +## installMaskPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool installMaskPixels(const SkMask& mask) +</pre> + +Sets <a href="#Info">Image Info</a> to <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_height">height</a>, <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, and +<a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. Sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> to <a href="#SkBitmap_installMaskPixels_mask">mask</a> image and <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_rowBytes">rowBytes</a>. + +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="#SkBitmap_installMaskPixels_mask">mask</a> format is not <a href="#SkMask_kA8_Format">SkMask::kA8 Format</a>, +or if <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_height">height</a> is negative, or if <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_rowBytes">rowBytes</a> is less +than <a href="#SkBitmap_installMaskPixels_mask">mask</a> <a href="#SkBitmap_width">width</a>. + +Caller must ensure that <a href="#SkBitmap_installMaskPixels_mask">mask</a> is valid for the lifetime of <a href="#Bitmap">Bitmap</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_installMaskPixels_mask"> <code><strong>mask </strong></code> </a></td> <td> +<a href="#Alpha">Alpha</a> 8-bit bitmap</td> + </tr> +</table> + +### Return Value + +true if <a href="#Info">Image Info</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a> refer to <a href="#SkBitmap_installMaskPixels_mask">mask</a> + +### Example + +<div><fiddle-embed name="b0456fc063ca467ccecf2105160a3d1d"><div>Draw a five by five bitmap, and draw it again with a center white pixel.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_installPixels">installPixels</a> <a href="#SkBitmap_allocPixels">allocPixels</a> + +--- + +<a name="SkBitmap_setPixels"></a> +## setPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setPixels(void* pixels) +</pre> + +Replaces <a href="undocumented#Pixel_Ref">Pixel Ref</a> with <a href="#SkBitmap_setPixels_pixels">pixels</a>, preserving <a href="#Info">Image Info</a> and <a href="#SkBitmap_rowBytes">rowBytes</a>. +Sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> origin to (0, 0). + +If <a href="#SkBitmap_setPixels_pixels">pixels</a> is nullptr, or if <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_colorType">colorType</a> equals <a href="undocumented#SkColorType">kUnknown SkColorType</a>; +release reference to <a href="undocumented#Pixel_Ref">Pixel Ref</a>, and set <a href="undocumented#Pixel_Ref">Pixel Ref</a> to nullptr. + +Caller is responsible for handling ownership pixel memory for the lifetime +of <a href="#Bitmap">Bitmap</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setPixels_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +address of pixel storage, managed by caller</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="f0db16e06c9a1436917c8179f8c1718f"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_installPixels">installPixels</a> <a href="#SkBitmap_allocPixels">allocPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocPixels() +</pre> + +Allocates pixel memory with <a href="#SkBitmap_HeapAllocator">HeapAllocator</a>, and replaces existing <a href="undocumented#Pixel_Ref">Pixel Ref</a>. +The allocation size is determined by <a href="#Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Color_Type">Color Type</a>. + +Returns false if <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or allocation exceeds +31 bits, or allocation fails. + +### Return Value + +true if the allocation succeeds + +### Example + +<div><fiddle-embed name="720e4c053fae9e929ab6518b47e49370"><div><a href="#Bitmap">Bitmap</a> hosts and draws gray values in set1. <a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> replaces <a href="undocumented#Pixel_Ref">Pixel Ref</a> +and erases it to black, but does not alter set1. <a href="#SkBitmap_setPixels">setPixels</a> replaces black +<a href="undocumented#Pixel_Ref">Pixel Ref</a> with set1.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkBitmap_installPixels">installPixels</a> <a href="#SkBitmap_setPixels">setPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocPixels() +</pre> + +Allocates pixel memory with <a href="#SkBitmap_HeapAllocator">HeapAllocator</a>, and replaces existing <a href="undocumented#Pixel_Ref">Pixel Ref</a>. +The allocation size is determined by <a href="#Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Color_Type">Color Type</a>. + +Aborts if <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or allocation exceeds +31 bits, or allocation fails. Abort steps may be provided by the user at compile +time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>. + +### Example + +<div><fiddle-embed name="1219b38c788bf270fb20f8cd2d78cff8"><div><a href="#Bitmap">Bitmap</a> hosts and draws gray values in set1. <a href="#SkBitmap_allocPixels">allocPixels</a> replaces <a href="undocumented#Pixel_Ref">Pixel Ref</a> +and erases it to black, but does not alter set1. <a href="#SkBitmap_setPixels">setPixels</a> replaces black +<a href="undocumented#Pixel_Ref">Pixel Ref</a> with set2.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> <a href="#SkBitmap_installPixels">installPixels</a> <a href="#SkBitmap_setPixels">setPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT tryAllocPixels(Allocator* allocator) +</pre> + +Allocates pixel memory with <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a>, and replaces existing <a href="undocumented#Pixel_Ref">Pixel Ref</a>. +The allocation size is determined by <a href="#Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Color_Type">Color Type</a>. +If <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a> is nullptr, use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> instead. + +Returns false if <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a> <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef</a> return false. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_tryAllocPixels_4_allocator"> <code><strong>allocator </strong></code> </a></td> <td> +instance of <a href="#SkBitmap_Allocator">SkBitmap::Allocator</a> instantiation</td> + </tr> +</table> + +### Return Value + +true if custom <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a> reports success + +### Example + +<div><fiddle-embed name="eb6f861ca1839146d26e40d56c2a001c"><div><a href="#SkBitmap_HeapAllocator">HeapAllocator</a> limits the maximum size of <a href="#Bitmap">Bitmap</a> to two gigabytes. Using +a custom <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a>, this limitation may be relaxed. This example can be +modified to allocate an eight gigabyte <a href="#Bitmap">Bitmap</a> on a 64 bit platform with +sufficient memory.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkBitmap_Allocator">Allocator</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void allocPixels(Allocator* allocator) +</pre> + +Allocates pixel memory with <a href="#SkBitmap_allocPixels_4_allocator">allocator</a>, and replaces existing <a href="undocumented#Pixel_Ref">Pixel Ref</a>. +The allocation size is determined by <a href="#Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Color_Type">Color Type</a>. +If <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> is nullptr, use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> instead. + +Aborts if <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef</a> return false. Abort steps may be provided by +the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_allocPixels_4_allocator"> <code><strong>allocator </strong></code> </a></td> <td> +instance of <a href="#SkBitmap_Allocator">SkBitmap::Allocator</a> instantiation</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="1b2800d23c9ea249b45c2c21a34b6d14"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_allocPixels">allocPixels</a> <a href="#SkBitmap_Allocator">Allocator</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +--- + +<a name="SkBitmap_pixelRef"></a> +## pixelRef + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkPixelRef* pixelRef() const +</pre> + +Returns <a href="undocumented#Pixel_Ref">Pixel Ref</a>, which contains: pixel base address; its <a href="#SkBitmap_dimensions">dimensions</a>; and +<a href="#SkBitmap_rowBytes">rowBytes</a>, the interval from one row to the next. Does not change <a href="undocumented#Pixel_Ref">Pixel Ref</a> +reference count. <a href="undocumented#Pixel_Ref">Pixel Ref</a> may be shared by multiple bitmaps. +If <a href="undocumented#Pixel_Ref">Pixel Ref</a> has not been set, returns nullptr. + +### Return Value + +<a href="undocumented#Pixel_Ref">Pixel Ref</a>, or nullptr + +### Example + +<div><fiddle-embed name="5db2d30870a7cc45f28e22578d1880c3"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getPixels">getPixels</a> <a href="#SkBitmap_getAddr">getAddr</a> + +--- + +<a name="SkBitmap_pixelRefOrigin"></a> +## pixelRefOrigin + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkIPoint pixelRefOrigin() const +</pre> + +Returns origin of pixels within <a href="undocumented#Pixel_Ref">Pixel Ref</a>. <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_bounds">bounds</a> is always contained +by <a href="undocumented#Pixel_Ref">Pixel Ref</a> <a href="#SkBitmap_bounds">bounds</a>, which may be the same size or larger. Multiple <a href="#Bitmap">Bitmaps</a> +can share the same <a href="undocumented#Pixel_Ref">Pixel Ref</a>, where each <a href="#Bitmap">Bitmap</a> has different <a href="#SkBitmap_bounds">bounds</a>. + +The returned origin added to <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_dimensions">dimensions</a> equals or is smaller than the +<a href="undocumented#Pixel_Ref">Pixel Ref</a> <a href="#SkBitmap_dimensions">dimensions</a>. + +Returns (0, 0) if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. + +### Return Value + +pixel origin within <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +### Example + +<div><fiddle-embed name="6d31686c6c0829c70f284ae716526d6a"> + +#### Example Output + +~~~~ +source origin: 0, 0 +subset origin: 32, 64 +~~~~ + +</fiddle-embed></div> + +--- + +<a name="SkBitmap_setPixelRef"></a> +## setPixelRef + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setPixelRef(sk_sp<SkPixelRef> pixelRef, int dx, int dy) +</pre> + +Replaces <a href="#SkBitmap_pixelRef">pixelRef</a> and origin in <a href="#Bitmap">Bitmap</a>. <a href="#SkBitmap_setPixelRef_dx">dx</a> and <a href="#SkBitmap_setPixelRef_dy">dy</a> specify the offset +within the <a href="undocumented#Pixel_Ref">Pixel Ref</a> pixels for the top-left corner of the bitmap. + +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> +to legal range in release builds. + +The caller is responsible for ensuring that the pixels match the +<a href="undocumented#Color_Type">Color Type</a> and <a href="undocumented#Alpha_Type">Alpha Type</a> in <a href="#Info">Image Info</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setPixelRef_pixelRef"> <code><strong>pixelRef </strong></code> </a></td> <td> +<a href="undocumented#Pixel_Ref">Pixel Ref</a> describing pixel address and <a href="#SkBitmap_rowBytes">rowBytes</a></td> + </tr> <tr> <td><a name="SkBitmap_setPixelRef_dx"> <code><strong>dx </strong></code> </a></td> <td> +column offset in <a href="undocumented#Pixel_Ref">Pixel Ref</a> for bitmap origin</td> + </tr> <tr> <td><a name="SkBitmap_setPixelRef_dy"> <code><strong>dy </strong></code> </a></td> <td> +row offset in <a href="undocumented#Pixel_Ref">Pixel Ref</a> for bitmap origin</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="13df9e5b1adcec33d11e4b0f8a91ecb8"><div>Treating 32 bit data as 8 bit data is unlikely to produce useful results.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_setInfo">setInfo</a> + +--- + +<a name="SkBitmap_readyToDraw"></a> +## readyToDraw + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool readyToDraw() const +</pre> + +Returns true if <a href="#Bitmap">Bitmap</a> is can be drawn. + +### Return Value + +true if <a href="#SkBitmap_getPixels">getPixels</a> is not nullptr + +### Example + +<div><fiddle-embed name="e89c78ca992e2e789ed50944fe68f920"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getPixels">getPixels</a> <a href="#SkBitmap_drawsNothing">drawsNothing</a> + +--- + +<a name="SkBitmap_getGenerationID"></a> +## getGenerationID + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +uint32_t getGenerationID() const +</pre> + +Returns a unique value corresponding to the pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a>. +Returns a different value after <a href="#SkBitmap_notifyPixelsChanged">notifyPixelsChanged</a> has been called. +Returns zero if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. + +Determines if pixels have changed since last examined. + +### Return Value + +unique value for pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +### Example + +<div><fiddle-embed name="db9dd91e0207c3941c09538555817b4b"> + +#### Example Output + +~~~~ +#Volatile +empty id 0 +alloc id 4 +erase id 6 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_notifyPixelsChanged">notifyPixelsChanged</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +--- + +<a name="SkBitmap_notifyPixelsChanged"></a> +## notifyPixelsChanged + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void notifyPixelsChanged() const +</pre> + +Marks that pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> have changed. Subsequent calls to +<a href="#SkBitmap_getGenerationID">getGenerationID</a> return a different value. + +### Example + +<div><fiddle-embed name="706e6409c8364e7786d6c69db7242c76"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getGenerationID">getGenerationID</a> <a href="#SkBitmap_isVolatile">isVolatile</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +--- + +<a name="SkBitmap_eraseColor"></a> +## eraseColor + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void eraseColor(SkColor c) const +</pre> + +Replaces pixel values with <a href="#SkBitmap_eraseColor_c">c</a>. All pixels contained by <a href="#SkBitmap_bounds">bounds</a> are affected. +If the <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a> or k565_SkColorType, then <a href="#Alpha">Color Alpha</a> +is ignored; <a href="#RGB">Color RGB</a> is treated as opaque. If <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, +then <a href="#RGB">Color RGB</a> is ignored. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_eraseColor_c"> <code><strong>c </strong></code> </a></td> <td> +<a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="22804faa423192f96a29578b1d396ace"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_eraseARGB">eraseARGB</a> <a href="#SkBitmap_eraseRGB">eraseRGB</a> <a href="#SkBitmap_erase">erase</a> + +--- + +<a name="SkBitmap_eraseARGB"></a> +## eraseARGB + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) const +</pre> + +Replaces pixel values with <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#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>. +All pixels contained by <a href="#SkBitmap_bounds">bounds</a> are affected. +If the <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a> or k565_SkColorType, then <a href="#SkBitmap_eraseARGB_a">a</a> +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="undocumented#SkColorType">kAlpha 8 SkColorType</a>, +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. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_eraseARGB_a"> <code><strong>a </strong></code> </a></td> <td> +amount of <a href="#Alpha">Color Alpha</a>, from fully transparent (0) to fully opaque (255)</td> + </tr> <tr> <td><a name="SkBitmap_eraseARGB_r"> <code><strong>r </strong></code> </a></td> <td> +amount of <a href="#RGB_Red">Color RGB Red</a>, from no red (0) to full red (255)</td> + </tr> <tr> <td><a name="SkBitmap_eraseARGB_g"> <code><strong>g </strong></code> </a></td> <td> +amount of <a href="#RGB_Green">Color RGB Green</a>, from no green (0) to full green (255)</td> + </tr> <tr> <td><a name="SkBitmap_eraseARGB_b"> <code><strong>b </strong></code> </a></td> <td> +amount of <a href="#RGB_Blue">Color RGB Blue</a>, from no blue (0) to full blue (255)</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="ebaa436565ce9c0f883bef871d099654"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_eraseColor">eraseColor</a> <a href="#SkBitmap_eraseRGB">eraseRGB</a> <a href="#SkBitmap_erase">erase</a> + +--- + +<a name="SkBitmap_eraseRGB"></a> +## eraseRGB + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void eraseRGB(U8CPU r, U8CPU g, U8CPU b) const +</pre> + +Replaces pixel values with <a href="undocumented#Color">Color</a> built from <a href="#SkBitmap_eraseRGB_r">r</a>, <a href="#SkBitmap_eraseRGB_g">g</a>, and <a href="#SkBitmap_eraseRGB_b">b</a> with <a href="#Alpha">Color Alpha</a> set +to 255. All pixels contained by <a href="#SkBitmap_bounds">bounds</a> are affected. +If <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, all pixels are set to 255. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_eraseRGB_r"> <code><strong>r </strong></code> </a></td> <td> +amount of <a href="#RGB_Red">Color RGB Red</a>, from no red (0) to full red (255)</td> + </tr> <tr> <td><a name="SkBitmap_eraseRGB_g"> <code><strong>g </strong></code> </a></td> <td> +amount of <a href="#RGB_Green">Color RGB Green</a>, from no green (0) to full green (255)</td> + </tr> <tr> <td><a name="SkBitmap_eraseRGB_b"> <code><strong>b </strong></code> </a></td> <td> +amount of <a href="#RGB_Blue">Color RGB Blue</a>, from no blue (0) to full blue (255)</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="3088f4d6cf8a01644ffd41bfddad5e03"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_eraseColor">eraseColor</a> <a href="#SkBitmap_eraseARGB">eraseARGB</a> <a href="#SkBitmap_erase">erase</a> + +--- + +<a name="SkBitmap_erase"></a> +## erase + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void erase(SkColor c, const SkIRect& area) const +</pre> + +Replaces pixel 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>, +call has no effect. + +If the <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a> or k565_SkColorType, then <a href="#Alpha">Color Alpha</a> +is ignored; <a href="#RGB">Color RGB</a> is treated as opaque. If <a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, +then <a href="#RGB">Color RGB</a> is ignored. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_erase_c"> <code><strong>c </strong></code> </a></td> <td> +<a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a></td> + </tr> <tr> <td><a name="SkBitmap_erase_area"> <code><strong>area </strong></code> </a></td> <td> +rectangle to fill</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="116baaa35348b5c0a353fb6d4917d574"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_eraseColor">eraseColor</a> <a href="#SkBitmap_eraseARGB">eraseARGB</a> <a href="#SkBitmap_eraseRGB">eraseRGB</a> <a href="#SkCanvas_drawRect">SkCanvas::drawRect</a> + +--- + +<a name="SkBitmap_eraseArea"></a> +## eraseArea + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void eraseArea(const SkIRect& area, SkColor c) const +</pre> + +Legacy call to be deprecated. + +--- + +<a name="SkBitmap_getColor"></a> +## getColor + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkColor getColor(int x, int y) const +</pre> + +Returns pixel at (<a href="#SkBitmap_getColor_x">x</a>, <a href="#SkBitmap_getColor_y">y</a>) as <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>. +Returns black with <a href="#Alpha">Alpha</a> if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>. + +Input is not validated: out of <a href="#SkBitmap_bounds">bounds</a> values of <a href="#SkBitmap_getColor_x">x</a> or <a href="#SkBitmap_getColor_y">y</a> trigger an assert() if +built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined; and returns undefined values or may crash if +<a href="undocumented#SK_RELEASE">SK RELEASE</a> is defined. Fails if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a> or +pixel address is nullptr. + +<a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a> is ignored. Some <a href="undocumented#Color">Color</a> precision may be lost in the +conversion to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>; original pixel data may have additional +precision. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getColor_x"> <code><strong>x </strong></code> </a></td> <td> +column index, zero or greater, and less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_getColor_y"> <code><strong>y </strong></code> </a></td> <td> +row index, zero or greater, and less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +pixel converted to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a> + +### Example + +<div><fiddle-embed name="2e49fa71dd4be95470248ea6eb35468b"> + +#### Example Output + +~~~~ +Premultiplied: +(0, 0) 0x00000000 0x2a0e002a 0x55380055 0x7f7f007f +(0, 1) 0x2a000e2a 0x551c1c55 0x7f542a7f 0xaaaa38aa +(0, 2) 0x55003855 0x7f2a547f 0xaa7171aa 0xd4d48dd4 +(0, 3) 0x7f007f7f 0xaa38aaaa 0xd48dd4d4 0xffffffff +Unpremultiplied: +(0, 0) 0x00000000 0x2a5500ff 0x55a800ff 0x7fff00ff +(0, 1) 0x2a0055ff 0x555454ff 0x7fa954ff 0xaaff54ff +(0, 2) 0x5500a8ff 0x7f54a9ff 0xaaaaaaff 0xd4ffaaff +(0, 3) 0x7f00ffff 0xaa54ffff 0xd4aaffff 0xffffffff +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_getAddr">getAddr</a> <a href="#SkBitmap_readPixels">readPixels</a> + +--- + +<a name="SkBitmap_getAddr"></a> +## getAddr + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void* getAddr(int x, int y) const +</pre> + +Returns pixel address at (<a href="#SkBitmap_getAddr_x">x</a>, <a href="#SkBitmap_getAddr_y">y</a>). + +Input is not validated: out of <a href="#SkBitmap_bounds">bounds</a> values of <a href="#SkBitmap_getAddr_x">x</a> or <a href="#SkBitmap_getAddr_y">y</a>, or <a href="undocumented#SkColorType">kUnknown SkColorType</a>, +trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns nullptr if +<a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. + +Performs a lookup of pixel size; for better performance, call +one of: <a href="#SkBitmap_getAddr8">getAddr8</a>, <a href="#SkBitmap_getAddr16">getAddr16</a>, or <a href="#SkBitmap_getAddr32">getAddr32</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getAddr_x"> <code><strong>x </strong></code> </a></td> <td> +column index, zero or greater, and less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_getAddr_y"> <code><strong>y </strong></code> </a></td> <td> +row index, zero or greater, and less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +generic pointer to pixel + +### Example + +<div><fiddle-embed name="bd0e0adb48b16d75129092649eab1617"> + +#### Example Output + +~~~~ +addr interval == rowBytes +~~~~ + +</fiddle-embed></div> + +### See Also + +<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_addr">SkPixmap::addr</a> + +--- + +<a name="SkBitmap_getAddr32"></a> +## getAddr32 + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +inline uint32_t* getAddr32(int x, int y) const +</pre> + +Returns address at (<a href="#SkBitmap_getAddr32_x">x</a>, <a href="#SkBitmap_getAddr32_y">y</a>). + +Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and: + +<table> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> is not four</td> </tr> <tr> + <td><a href="#SkBitmap_getAddr32_x">x</a> is negative, or not less than <a href="#SkBitmap_width">width</a></td> </tr> <tr> + <td><a href="#SkBitmap_getAddr32_y">y</a> is negative, or not less than <a href="#SkBitmap_height">height</a></td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getAddr32_x"> <code><strong>x </strong></code> </a></td> <td> +column index, zero or greater, and less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_getAddr32_y"> <code><strong>y </strong></code> </a></td> <td> +row index, zero or greater, and less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +unsigned 32-bit pointer to pixel at (<a href="#SkBitmap_getAddr32_x">x</a>, <a href="#SkBitmap_getAddr32_y">y</a>) + +### Example + +<div><fiddle-embed name="837a2bcc9fb9ce617a3420956cefc64a"> + +#### Example Output + +~~~~ +addr interval == rowBytes +~~~~ + +</fiddle-embed></div> + +### See Also + +<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_addr32">SkPixmap::addr32</a> + +--- + +<a name="SkBitmap_getAddr16"></a> +## getAddr16 + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +inline uint16_t* getAddr16(int x, int y) const +</pre> + +Returns address at (<a href="#SkBitmap_getAddr16_x">x</a>, <a href="#SkBitmap_getAddr16_y">y</a>). + +Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and: + +<table> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> is not two</td> </tr> <tr> + <td><a href="#SkBitmap_getAddr16_x">x</a> is negative, or not less than <a href="#SkBitmap_width">width</a></td> </tr> <tr> + <td><a href="#SkBitmap_getAddr16_y">y</a> is negative, or not less than <a href="#SkBitmap_height">height</a></td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getAddr16_x"> <code><strong>x </strong></code> </a></td> <td> +column index, zero or greater, and less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_getAddr16_y"> <code><strong>y </strong></code> </a></td> <td> +row index, zero or greater, and less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +unsigned 16-bit pointer to pixel at (<a href="#SkBitmap_getAddr16_x">x</a>, <a href="#SkBitmap_getAddr16_y">y</a>) + +### Example + +<div><fiddle-embed name="3d7e49d428c9a4812558b39cf505baa6"> + +#### Example Output + +~~~~ +addr interval == rowBytes +~~~~ + +</fiddle-embed></div> + +### See Also + +<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_addr16">SkPixmap::addr16</a> + +--- + +<a name="SkBitmap_getAddr8"></a> +## getAddr8 + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +inline uint8_t* getAddr8(int x, int y) const +</pre> + +Returns address at (<a href="#SkBitmap_getAddr8_x">x</a>, <a href="#SkBitmap_getAddr8_y">y</a>). + +Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and: + +<table> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> is not one</td> </tr> <tr> + <td><a href="#SkBitmap_getAddr8_x">x</a> is negative, or not less than <a href="#SkBitmap_width">width</a></td> </tr> <tr> + <td><a href="#SkBitmap_getAddr8_y">y</a> is negative, or not less than <a href="#SkBitmap_height">height</a></td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_getAddr8_x"> <code><strong>x </strong></code> </a></td> <td> +column index, zero or greater, and less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_getAddr8_y"> <code><strong>y </strong></code> </a></td> <td> +row index, zero or greater, and less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +unsigned 8-bit pointer to pixel at (<a href="#SkBitmap_getAddr8_x">x</a>, <a href="#SkBitmap_getAddr8_y">y</a>) + +### Example + +<div><fiddle-embed name="cb9a08e8ff779b6a1cf8bb54f3883aaf"> + +#### Example Output + +~~~~ +&pixels[4][2] == bitmap.getAddr8(2, 4) +~~~~ + +</fiddle-embed></div> + +### See Also + +<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_addr8">SkPixmap::addr8</a> + +--- + +<a name="SkBitmap_extractSubset"></a> +## extractSubset + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool extractSubset(SkBitmap* dst, const SkIRect& subset) const +</pre> + +Shares <a href="undocumented#Pixel_Ref">Pixel Ref</a> with <a href="#SkBitmap_extractSubset_dst">dst</a>. Pixels are not copied; <a href="#Bitmap">Bitmap</a> and <a href="#SkBitmap_extractSubset_dst">dst</a> point +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> +and the original <a href="#SkBitmap_bounds">bounds</a>. + +<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. + +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>. +<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>. + +Return false if: + +<table> <tr> + <td><a href="#SkBitmap_extractSubset_dst">dst</a> is nullptr</td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_extractSubset_subset">subset</a> does not intersect <a href="#SkBitmap_bounds">bounds</a></td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_extractSubset_dst"> <code><strong>dst </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> set to <a href="#SkBitmap_extractSubset_subset">subset</a></td> + </tr> <tr> <td><a name="SkBitmap_extractSubset_subset"> <code><strong>subset </strong></code> </a></td> <td> +rectangle of pixels to reference</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkBitmap_extractSubset_dst">dst</a> is replaced by <a href="#SkBitmap_extractSubset_subset">subset</a> + +### Example + +<div><fiddle-embed name="3ad80d8fcb13344612f361812658b696"> + +#### Example Output + +~~~~ +bounds: 0, 0, 512, 512 +subset: -100, 100, 0, 200 success; false +subset: -100, 100, 100, 200 success; true subset: 0, 0, 100, 100 +subset: -100, 100, 1000, 200 success; true subset: 0, 0, 512, 100 +subset: 0, 100, 0, 200 success; false +subset: 0, 100, 100, 200 success; true subset: 0, 0, 100, 100 +subset: 0, 100, 1000, 200 success; true subset: 0, 0, 512, 100 +subset: 100, 100, 0, 200 success; false +subset: 100, 100, 100, 200 success; false +subset: 100, 100, 1000, 200 success; true subset: 0, 0, 412, 100 +subset: 1000, 100, 0, 200 success; false +subset: 1000, 100, 100, 200 success; false +subset: 1000, 100, 1000, 200 success; false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_readPixels">readPixels</a> <a href="#SkBitmap_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">SkCanvas::drawBitmap</a> + +--- + +<a name="SkBitmap_readPixels"></a> +## readPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY, SkTransferFunctionBehavior behavior) const +</pre> + +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels 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>), and does not exceed +(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and +<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkBitmap_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.addr() equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorType">colorType</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match. Returns +false if pixel conversion is not possible. +<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 +false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>, +or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>. + +If <a href="#SkBitmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts source +pixels to a linear space before converting to <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>. +If <a href="#SkBitmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a>: source +pixels are treated as if they are linear, regardless of how they are encoded. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> +destination <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> +destination pixel storage</td> + </tr> <tr> <td><a name="SkBitmap_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> +destination row length</td> + </tr> <tr> <td><a name="SkBitmap_readPixels_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +column index whose absolute value is less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +row index whose absolute value is less than <a href="#SkBitmap_height">height</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_behavior"> <code><strong>behavior </strong></code> </a></td> <td> +one of: <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>, +<a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a></td> + </tr> +</table> + +### Return Value + +true if pixels are copied to <a href="#SkBitmap_readPixels_dstPixels">dstPixels</a> + +### Example + +<div><fiddle-embed name="86fb9979516d256d71aa3f3f2182fe0c"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_writePixels">writePixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY) const +</pre> + +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_2_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkBitmap_readPixels_2_srcX">srcX</a>, <a href="#SkBitmap_readPixels_2_srcY">srcY</a>), and does not exceed +(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and +<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkBitmap_readPixels_2_dstRowBytes">dstRowBytes</a> specifics the gap from one destination +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.addr() equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_readPixels_2_dstRowBytes">dstRowBytes</a> is less than <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorType">colorType</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match. Returns +false if pixel conversion is not possible. +<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 +false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>, +or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_readPixels_2_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> +destination <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_2_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> +destination pixel storage</td> + </tr> <tr> <td><a name="SkBitmap_readPixels_2_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> +destination row length</td> + </tr> <tr> <td><a name="SkBitmap_readPixels_2_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +column index whose absolute value is less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_2_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +row index whose absolute value is less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +true if pixels are copied to <a href="#SkBitmap_readPixels_2_dstPixels">dstPixels</a> + +### Example + +<div><fiddle-embed name="b2cbbbbcffb618865d8aae3bc04b2a62"><div>Transferring the gradient from 8 bits per component to 4 bits per component +creates visible banding.</div></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_writePixels">writePixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool readPixels(const SkPixmap& dst, int srcX, int srcY) const +</pre> + +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_3_dst">dst</a>. Copy starts at (<a href="#SkBitmap_readPixels_3_srcX">srcX</a>, <a href="#SkBitmap_readPixels_3_srcY">srcY</a>), and does not exceed +(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_readPixels_3_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, +and row bytes of destination. <a href="#SkBitmap_readPixels_3_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one destination +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_readPixels_3_dst">dst</a> pixel storage equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_readPixels_3_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Color_Type">Color Type</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns +false if pixel conversion is not possible. +<a href="#SkBitmap_readPixels_3_srcX">srcX</a> and <a href="#SkBitmap_readPixels_3_srcY">srcY</a> may be negative to copy only top or left of source. Returns +false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>, +or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_readPixels_3_dst"> <code><strong>dst </strong></code> </a></td> <td> +destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> + </tr> <tr> <td><a name="SkBitmap_readPixels_3_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +column index whose absolute value is less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_readPixels_3_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +row index whose absolute value is less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +true if pixels are copied to <a href="#SkBitmap_readPixels_3_dst">dst</a> + +### Example + +<div><fiddle-embed name="e9f70cbc9827097449a386ec7a8a8188"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_writePixels">writePixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool readPixels(const SkPixmap& dst) const +</pre> + +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_4_dst">dst</a>. Copy starts at (0, 0), and does not exceed +(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_readPixels_4_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, +and row bytes of destination. <a href="#SkBitmap_readPixels_4_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one destination +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_readPixels_4_dst">dst</a> pixel storage equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_readPixels_4_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="undocumented#Color_Type">Color Type</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns +false if pixel conversion is not possible. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_readPixels_4_dst"> <code><strong>dst </strong></code> </a></td> <td> +destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> + </tr> +</table> + +### Return Value + +true if pixels are copied to <a href="#SkBitmap_readPixels_4_dst">dst</a> + +### Example + +<div><fiddle-embed name="2260ff6d04708699b6223b4f73fd268e"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_writePixels">writePixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a> + +--- + +<a name="SkBitmap_writePixels"></a> +## writePixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool writePixels(const SkPixmap& src, int dstX, int dstY) +</pre> + +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 +(<a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_writePixels_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, +and row bytes of source. <a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_writePixels_src">src</a> pixel storage equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_src">src</a> <a href="undocumented#Color_Type">Color Type</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_src">src</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_writePixels_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns +false if pixel conversion is not possible. +<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 +false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative. Returns false ifabs(dstX) >= this-><a href="#SkBitmap_width">width</a>, +or ifabs(dstY) >= this-><a href="#SkBitmap_height">height</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_writePixels_src"> <code><strong>src </strong></code> </a></td> <td> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> + </tr> <tr> <td><a name="SkBitmap_writePixels_dstX"> <code><strong>dstX </strong></code> </a></td> <td> +column index whose absolute value is less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_writePixels_dstY"> <code><strong>dstY </strong></code> </a></td> <td> +row index whose absolute value is less than <a href="#SkBitmap_height">height</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#SkBitmap_writePixels_src">src</a> pixels are copied to <a href="#Bitmap">Bitmap</a> + +### Example + +<div><fiddle-embed name="9b3133a6673d2514d166398adbe1f9f4"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_readPixels">readPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool writePixels(const SkPixmap& src) +</pre> + +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 +(<a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_writePixels_2_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, +and row bytes of source. <a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_writePixels_2_src">src</a> pixel storage equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_2_src">src</a> <a href="undocumented#Color_Type">Color Type</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_2_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_2_src">src</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_writePixels_2_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns +false if pixel conversion is not possible. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_writePixels_2_src"> <code><strong>src </strong></code> </a></td> <td> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkBitmap_writePixels_2_src">src</a> pixels are copied to <a href="#Bitmap">Bitmap</a> + +### Example + +<div><fiddle-embed name="faa5dfa466f6e16c07c124d971f32679"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_readPixels">readPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool writePixels(const SkPixmap& src, int x, int y, + SkTransferFunctionBehavior behavior) +</pre> + +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#SkBitmap_writePixels_3_src">src</a>. Copy starts at (0, 0), and does not exceed +(<a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_height">height</a>). + +<a href="#SkBitmap_writePixels_3_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, +and row bytes of source. <a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source +row to the next. Returns true if pixels are copied. Returns false if: + +<table> <tr> + <td><a href="#SkBitmap_writePixels_3_src">src</a> pixel storage equals nullptr</td> </tr> <tr> + <td><a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> + <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> +</table> + +Pixels are copied only if pixel conversion is possible. If this-><a href="#SkBitmap_colorType">colorType</a> is +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_3_src">src</a> <a href="undocumented#Color_Type">Color Type</a> must match. +If this-><a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_3_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. +If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_3_src">src</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_writePixels_3_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns +false if pixel conversion is not possible. Returns false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> +is zero or negative. + +If <a href="#SkBitmap_writePixels_3_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts <a href="#SkBitmap_writePixels_3_src">src</a> +pixels to a linear space before converting to <a href="#Info">Image Info</a>. +If <a href="#SkBitmap_writePixels_3_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a>: <a href="#SkBitmap_writePixels_3_src">src</a> +pixels are treated as if they are linear, regardless of how they are encoded. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_writePixels_3_src"> <code><strong>src </strong></code> </a></td> <td> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> + </tr> <tr> <td><a name="SkBitmap_writePixels_3_x"> <code><strong>x </strong></code> </a></td> <td> +column index whose absolute value is less than <a href="#SkBitmap_width">width</a></td> + </tr> <tr> <td><a name="SkBitmap_writePixels_3_y"> <code><strong>y </strong></code> </a></td> <td> +row index whose absolute value is less than <a href="#SkBitmap_height">height</a></td> + </tr> <tr> <td><a name="SkBitmap_writePixels_3_behavior"> <code><strong>behavior </strong></code> </a></td> <td> +one of: <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>, +<a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#SkBitmap_writePixels_3_src">src</a> pixels are copied to <a href="#Bitmap">Bitmap</a> + +### Example + +<div><fiddle-embed name="9f046f407b01b759cb737d702a994620"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_readPixels">readPixels</a> + +--- + +<a name="SkBitmap_hasHardwareMipMap"></a> +## hasHardwareMipMap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool hasHardwareMipMap() const +</pre> + +### Return Value + +true if <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> has been called with true + +### See Also + +<a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> + +--- + +<a name="SkBitmap_setHasHardwareMipMap"></a> +## setHasHardwareMipMap + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setHasHardwareMipMap(bool hasHardwareMipMap) +</pre> + +### Parameters + +<table> <tr> <td><a name="SkBitmap_setHasHardwareMipMap_hasHardwareMipMap"> <code><strong>hasHardwareMipMap </strong></code> </a></td> <td> +sets state</td> + </tr> +</table> + +### See Also + +<a href="#SkBitmap_hasHardwareMipMap">hasHardwareMipMap</a> + +--- + +<a name="SkBitmap_extractAlpha"></a> +## extractAlpha + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool extractAlpha(SkBitmap* dst) const +</pre> + +Sets <a href="#SkBitmap_extractAlpha_dst">dst</a> to <a href="#Alpha">Alpha</a> described by pixels. Returns false if <a href="#SkBitmap_extractAlpha_dst">dst</a> cannot be written to +or <a href="#SkBitmap_extractAlpha_dst">dst</a> pixels cannot be allocated. + +Uses <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> to reserve memory for <a href="#SkBitmap_extractAlpha_dst">dst</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_extractAlpha_dst"> <code><strong>dst </strong></code> </a></td> <td> +holds <a href="undocumented#Pixel_Ref">Pixel Ref</a> to fill with alpha layer</td> + </tr> +</table> + +### Return Value + +true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_extractAlpha_dst">dst</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +### Example + +<div><fiddle-embed name="ab6577df079e6c70511cf2bfc6447b44"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_extractSubset">extractSubset</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool extractAlpha(SkBitmap* dst, const SkPaint* paint, SkIPoint* offset) const +</pre> + +Sets <a href="#SkBitmap_extractAlpha_2_dst">dst</a> to <a href="#Alpha">Alpha</a> described by pixels. Returns false if <a href="#SkBitmap_extractAlpha_2_dst">dst</a> cannot be written to +or <a href="#SkBitmap_extractAlpha_2_dst">dst</a> pixels cannot be allocated. + +If <a href="#SkBitmap_extractAlpha_2_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a> +generates <a href="undocumented#Mask_Alpha">Mask Alpha</a> from <a href="#Bitmap">Bitmap</a>. Uses <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> to reserve memory for <a href="#SkBitmap_extractAlpha_2_dst">dst</a> +<a href="undocumented#Pixel_Ref">Pixel Ref</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="#Bitmap">Bitmap</a>; +(0, 0) unless <a href="undocumented#SkMaskFilter">SkMaskFilter</a> generates mask. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_extractAlpha_2_dst"> <code><strong>dst </strong></code> </a></td> <td> +holds <a href="undocumented#Pixel_Ref">Pixel Ref</a> to fill with alpha layer</td> + </tr> <tr> <td><a name="SkBitmap_extractAlpha_2_paint"> <code><strong>paint </strong></code> </a></td> <td> +holds optional <a href="undocumented#Mask_Filter">Mask Filter</a>; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_extractAlpha_2_offset"> <code><strong>offset </strong></code> </a></td> <td> +top-left position for <a href="#SkBitmap_extractAlpha_2_dst">dst</a>; may be nullptr</td> + </tr> +</table> + +### Return Value + +true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_extractAlpha_2_dst">dst</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +### Example + +<div><fiddle-embed name="e122936b119f20098aace454c2105a12"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_extractSubset">extractSubset</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool extractAlpha(SkBitmap* dst, const SkPaint* paint, Allocator* allocator, + SkIPoint* offset) const +</pre> + +Sets <a href="#SkBitmap_extractAlpha_3_dst">dst</a> to <a href="#Alpha">Alpha</a> described by pixels. Returns false if <a href="#SkBitmap_extractAlpha_3_dst">dst</a> cannot be written to +or <a href="#SkBitmap_extractAlpha_3_dst">dst</a> pixels cannot be allocated. + +If <a href="#SkBitmap_extractAlpha_3_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a> +generates <a href="undocumented#Mask_Alpha">Mask Alpha</a> from <a href="#Bitmap">Bitmap</a>. <a href="#SkBitmap_extractAlpha_3_allocator">allocator</a> may reference a custom allocation +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 +position for <a href="#SkBitmap_extractAlpha_3_dst">dst</a> for alignment with <a href="#Bitmap">Bitmap</a>; (0, 0) unless <a href="undocumented#SkMaskFilter">SkMaskFilter</a> generates +mask. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_extractAlpha_3_dst"> <code><strong>dst </strong></code> </a></td> <td> +holds <a href="undocumented#Pixel_Ref">Pixel Ref</a> to fill with alpha layer</td> + </tr> <tr> <td><a name="SkBitmap_extractAlpha_3_paint"> <code><strong>paint </strong></code> </a></td> <td> +holds optional <a href="undocumented#Mask_Filter">Mask Filter</a>; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_extractAlpha_3_allocator"> <code><strong>allocator </strong></code> </a></td> <td> +method to reserve memory for <a href="undocumented#Pixel_Ref">Pixel Ref</a>; may be nullptr</td> + </tr> <tr> <td><a name="SkBitmap_extractAlpha_3_offset"> <code><strong>offset </strong></code> </a></td> <td> +top-left position for <a href="#SkBitmap_extractAlpha_3_dst">dst</a>; may be nullptr</td> + </tr> +</table> + +### Return Value + +true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_extractAlpha_3_dst">dst</a> <a href="undocumented#Pixel_Ref">Pixel Ref</a> + +### Example + +<div><fiddle-embed name="3563cb608791d55bb584f38e842f3003"></fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_extractSubset">extractSubset</a> + +--- + +<a name="SkBitmap_peekPixels"></a> +## peekPixels + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool peekPixels(SkPixmap* pixmap) const +</pre> + +If the pixels are available from this bitmap return true, and fill out the +specified <a href="#SkBitmap_peekPixels_pixmap">pixmap</a> (if not null). If there are no pixels, return false and +ignore the <a href="#SkBitmap_peekPixels_pixmap">pixmap</a> parameter. +Note: if this returns true, the results (in the <a href="#SkBitmap_peekPixels_pixmap">pixmap</a>) are only valid until the bitmap +is changed in any way, in which case the results are invalid. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_peekPixels_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> +storage for pixel state if pixels are readable; otherwise, ignored</td> + </tr> +</table> + +### Return Value + +true if <a href="#Bitmap">Bitmap</a> has direct access to pixels + +### Example + +<div><fiddle-embed name="0cc2c6a0dffa61a88711534bd3d43b40"> + +#### Example Output + +~~~~ +------ +--xxx- +-x--x- +----x- +---xx- +--xx-- +--x--- +------ +--x--- +--x--- +------ +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkBitmap_installPixels">installPixels</a> <a href="#SkBitmap_readPixels">readPixels</a> <a href="#SkBitmap_writePixels">writePixels</a> + +--- + +<a name="SkBitmap_toString"></a> +## toString + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void toString(SkString* str) const; +</pre> + +Creates string representation. The representation is read by +internal debugging tools. The interface and implementation may be +suppressed by defining <a href="undocumented#SK_IGNORE_TO_STRING">SK IGNORE TO STRING</a>. + +### Parameters + +<table> <tr> <td><a name="SkBitmap_toString_str"> <code><strong>str </strong></code> </a></td> <td> +storage for string representation</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="6018d98695245510839a318caabba9c9"> + +#### Example Output + +~~~~ +bitmap dimensions (6, 11) +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPaint_toString">SkPaint::toString</a> + +--- + diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md index f07ed00130..1c5d804692 100644 --- a/site/user/api/SkCanvas_Reference.md +++ b/site/user/api/SkCanvas_Reference.md @@ -22,7 +22,7 @@ To draw to a document, obtain <a href="#Canvas">Canvas</a> from <a href="#Canvas <a href="undocumented#Document">Document</a> based <a href="#Canvas">Canvas</a> and other <a href="#Canvas">Canvas</a> <a href="undocumented#Subclasses">Subclasses</a> reference <a href="undocumented#Device">Device</a> describing the destination. -<a href="#Canvas">Canvas</a> can be constructed to draw to <a href="undocumented#Bitmap">Bitmap</a> without first creating <a href="undocumented#Raster_Surface">Raster Surface</a>. +<a href="#Canvas">Canvas</a> can be constructed to draw to <a href="SkBitmap_Reference#Bitmap">Bitmap</a> without first creating <a href="undocumented#Raster_Surface">Raster Surface</a>. This approach may be deprecated in the future. # <a name="Overview"></a> Overview @@ -45,7 +45,7 @@ This approach may be deprecated in the future. | struct | description | | --- | --- | -| <a href="#SkCanvas_Lattice">Lattice</a> | Divides <a href="undocumented#Bitmap">Bitmap</a>, <a href="undocumented#Image">Image</a> into a rectangular grid. | +| <a href="#SkCanvas_Lattice">Lattice</a> | Divides <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="undocumented#Image">Image</a> into a rectangular grid. | | <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a> | Contains state to create <a href="#Layer">Layer</a>. | ## <a name="Constructors"></a> Constructors @@ -58,8 +58,8 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <a href="#SkCanvas_empty_constructor">SkCanvas()</a> | No <a href="undocumented#Surface">Surface</a>, no dimensions. | | <a href="#SkCanvas_int_int_const_SkSurfaceProps_star">SkCanvas(int width, int height, const SkSurfaceProps* props = nullptr)</a> | No <a href="undocumented#Surface">Surface</a>, set dimensions, <a href="#Properties">Surface Properties</a>. | | <a href="#SkCanvas_copy_SkBaseDevice_star">SkCanvas(SkBaseDevice* device)</a> | Existing <a href="undocumented#Device">Device</a>. (<a href="undocumented#SkBaseDevice">SkBaseDevice</a> is private.) | -| <a href="#SkCanvas_copy_const_SkBitmap">SkCanvas(const SkBitmap& bitmap)</a> | Uses existing <a href="undocumented#Bitmap">Bitmap</a>. | -| <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps">SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)</a> | Uses existing <a href="undocumented#Bitmap">Bitmap</a> and <a href="#Properties">Surface Properties</a>. | +| <a href="#SkCanvas_copy_const_SkBitmap">SkCanvas(const SkBitmap& bitmap)</a> | Uses existing <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. | +| <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps">SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)</a> | Uses existing <a href="SkBitmap_Reference#Bitmap">Bitmap</a> and <a href="#Properties">Surface Properties</a>. | | <a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> | Creates from <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="#Storage">Pixel Storage</a>. | | <a href="#SkCanvas_MakeRasterDirectN32">MakeRasterDirectN32</a> | Creates from image data and <a href="#Storage">Pixel Storage</a>. | @@ -72,26 +72,26 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <a href="#SkCanvas_clear">clear</a> | Fills <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a>. | | <a href="#SkCanvas_clipPath">clipPath</a> | Combines <a href="#Clip">Clip</a> with <a href="SkPath_Reference#Path">Path</a>. | | <a href="#SkCanvas_clipRRect">clipRRect</a> | Combines <a href="#Clip">Clip</a> with <a href="undocumented#Round_Rect">Round Rect</a>. | -| <a href="#SkCanvas_clipRect">clipRect</a> | Combines <a href="#Clip">Clip</a> with <a href="undocumented#Rect">Rect</a>. | +| <a href="#SkCanvas_clipRect">clipRect</a> | Combines <a href="#Clip">Clip</a> with <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkCanvas_clipRegion">clipRegion</a> | Combines <a href="#Clip">Clip</a> with <a href="undocumented#Region">Region</a>. | | <a href="#SkCanvas_concat">concat</a> | Multiplies <a href="#Matrix">Matrix</a> by <a href="#Matrix">Matrix</a>. | | <a href="#SkCanvas_discard">discard</a> | Makes <a href="#Canvas">Canvas</a> contents undefined. | -| <a href="#SkCanvas_drawAnnotation">drawAnnotation</a> | Associates a <a href="undocumented#Rect">Rect</a> with a key-value pair. | +| <a href="#SkCanvas_drawAnnotation">drawAnnotation</a> | Associates a <a href="SkRect_Reference#Rect">Rect</a> with a key-value pair. | | <a href="#SkCanvas_drawArc">drawArc</a> | Draws <a href="undocumented#Arc">Arc</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawAtlas">drawAtlas</a> | Draws sprites using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | -| <a href="#SkCanvas_drawBitmap">drawBitmap</a> | Draws <a href="undocumented#Bitmap">Bitmap</a> at (x, y) position. | -| <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> | Draws proportionally stretched <a href="undocumented#Bitmap">Bitmap</a>. | -| <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> | Draws <a href="undocumented#Nine_Patch">Nine Patch</a> <a href="undocumented#Bitmap">Bitmap</a>. | -| <a href="#SkCanvas_drawBitmapRect">drawBitmapRect</a> | Draws <a href="undocumented#Bitmap">Bitmap</a>, source <a href="undocumented#Rect">Rect</a> to destination <a href="undocumented#Rect">Rect</a>. | +| <a href="#SkCanvas_drawBitmap">drawBitmap</a> | Draws <a href="SkBitmap_Reference#Bitmap">Bitmap</a> at (x, y) position. | +| <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> | Draws proportionally stretched <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. | +| <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> | Draws <a href="undocumented#Nine_Patch">Nine Patch</a> <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. | +| <a href="#SkCanvas_drawBitmapRect">drawBitmapRect</a> | Draws <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkCanvas_drawCircle">drawCircle</a> | Draws <a href="undocumented#Circle">Circle</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawColor">drawColor</a> | Fills <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> and <a href="undocumented#Blend_Mode">Blend Mode</a>. | | <a href="#SkCanvas_drawDRRect">drawDRRect</a> | Draws double <a href="undocumented#Round_Rect">Round Rect</a> stroked or filled. | | <a href="#SkCanvas_drawDrawable">drawDrawable</a> | Draws <a href="undocumented#Drawable">Drawable</a>, encapsulated drawing commands. | -| <a href="#SkCanvas_drawIRect">drawIRect</a> | Draws <a href="undocumented#IRect">IRect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | +| <a href="#SkCanvas_drawIRect">drawIRect</a> | Draws <a href="SkIRect_Reference#IRect">IRect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawImage">drawImage</a> | Draws <a href="undocumented#Image">Image</a> at (x, y) position. | | <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> | Draws proportionally stretched <a href="undocumented#Image">Image</a>. | | <a href="#SkCanvas_drawImageNine">drawImageNine</a> | Draws <a href="undocumented#Nine_Patch">Nine Patch</a> <a href="undocumented#Image">Image</a>. | -| <a href="#SkCanvas_drawImageRect">drawImageRect</a> | Draws <a href="undocumented#Image">Image</a>, source <a href="undocumented#Rect">Rect</a> to destination <a href="undocumented#Rect">Rect</a>. | +| <a href="#SkCanvas_drawImageRect">drawImageRect</a> | Draws <a href="undocumented#Image">Image</a>, source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkCanvas_drawLine">drawLine</a> | Draws line segment between two points. | | <a href="#SkCanvas_drawOval">drawOval</a> | Draws <a href="undocumented#Oval">Oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawPaint">drawPaint</a> | Fills <a href="#Clip">Clip</a> with <a href="SkPaint_Reference#Paint">Paint</a>. | @@ -103,7 +103,7 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <a href="#SkCanvas_drawPosText">drawPosText</a> | Draws text at array of (x, y) positions. | | <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> | Draws text at x positions with common baseline. | | <a href="#SkCanvas_drawRRect">drawRRect</a> | Draws <a href="undocumented#Round_Rect">Round Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | -| <a href="#SkCanvas_drawRect">drawRect</a> | Draws <a href="undocumented#Rect">Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | +| <a href="#SkCanvas_drawRect">drawRect</a> | Draws <a href="SkRect_Reference#Rect">Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawRegion">drawRegion</a> | Draws <a href="undocumented#Region">Region</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> | Draws <a href="undocumented#Round_Rect">Round Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawText">drawText</a> | Draws text at (x, y), using font advance. | @@ -115,7 +115,7 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <a href="#SkCanvas_drawVertices">drawVertices</a> | Draws <a href="undocumented#Vertices">Vertices</a>, a triangle mesh. | | <a href="#SkCanvas_flush">flush</a> | Triggers execution of all pending draw operations. | | <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> | Gets size of base <a href="#Layer">Layer</a> in global coordinates. | -| <a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a> | Returns <a href="undocumented#IRect">IRect</a> bounds of <a href="#Clip">Clip</a>. | +| <a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a> | Returns <a href="SkIRect_Reference#IRect">IRect</a> bounds of <a href="#Clip">Clip</a>. | | <a href="#SkCanvas_getDrawFilter">getDrawFilter</a> | Legacy; to be deprecated. | | <a href="#SkCanvas_getGrContext">getGrContext</a> | Returns <a href="undocumented#GPU_Context">GPU Context</a> of the <a href="undocumented#GPU_Surface">GPU Surface</a>. | | <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> | Returns <a href="#Clip">Clip</a> bounds in source coordinates. | @@ -125,12 +125,12 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <a href="#SkCanvas_getTotalMatrix">getTotalMatrix</a> | Returns <a href="#Matrix">Matrix</a>. | | <a href="#SkCanvas_imageInfo">imageInfo</a> | Returns <a href="#Info">Image Info</a> for <a href="#Canvas">Canvas</a>. | | <a href="#SkCanvas_isClipEmpty">isClipEmpty</a> | Returns if <a href="#Clip">Clip</a> is empty. | -| <a href="#SkCanvas_isClipRect">isClipRect</a> | Returns if <a href="#Clip">Clip</a> is <a href="undocumented#Rect">Rect</a> and not empty. | +| <a href="#SkCanvas_isClipRect">isClipRect</a> | Returns if <a href="#Clip">Clip</a> is <a href="SkRect_Reference#Rect">Rect</a> and not empty. | | <a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> | Creates <a href="#Canvas">Canvas</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a> and pixel data. | | <a href="#SkCanvas_MakeRasterDirectN32">MakeRasterDirectN32</a> | Creates <a href="#Canvas">Canvas</a> from image specifications and pixel data. | | <a href="#SkCanvas_makeSurface">makeSurface</a> | Creates <a href="undocumented#Surface">Surface</a> matching <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a>. | | <a href="#SkCanvas_peekPixels">peekPixels</a> | Returns if <a href="#Canvas">Canvas</a> has direct access to its pixels. | -| <a href="#SkCanvas_quickReject">quickReject</a> | Returns if <a href="undocumented#Rect">Rect</a> is outside <a href="#Clip">Clip</a>. | +| <a href="#SkCanvas_quickReject">quickReject</a> | Returns if <a href="SkRect_Reference#Rect">Rect</a> is outside <a href="#Clip">Clip</a>. | | <a href="#SkCanvas_readPixels">readPixels</a> | Copies and converts rectangle of pixels from <a href="#Canvas">Canvas</a>. | | <a href="#SkCanvas_resetMatrix">resetMatrix</a> | Resets <a href="#Matrix">Matrix</a> to identity. | | <a href="#SkCanvas_restore">restore</a> | Restores changes to <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, pops <a href="#SkCanvas_save">save</a> stack. | @@ -151,7 +151,7 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers ## MakeRasterDirect <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo& info, +static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo& info, void* pixels, size_t rowBytes) </pre> @@ -212,7 +212,7 @@ in the center.</div> ## MakeRasterDirectN32 <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, +static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, SkPMColor* pixels, size_t rowBytes) </pre> @@ -240,7 +240,7 @@ If <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> is greater than <table> <tr> <td><a name="SkCanvas_MakeRasterDirectN32_width"> <code><strong>width </strong></code> </a></td> <td> pixel column count on <a href="undocumented#Raster_Surface">Raster Surface</a> created; must be zero or greater</td> </tr> <tr> <td><a name="SkCanvas_MakeRasterDirectN32_height"> <code><strong>height </strong></code> </a></td> <td> -pixel row count on <a href="undocumented#Raster_Surface">Raster Surface</a> created.; must be zero or greater</td> +pixel row count on <a href="undocumented#Raster_Surface">Raster Surface</a> created; must be zero or greater</td> </tr> <tr> <td><a name="SkCanvas_MakeRasterDirectN32_pixels"> <code><strong>pixels </strong></code> </a></td> <td> pointer to destination <a href="#SkCanvas_MakeRasterDirectN32_pixels">pixels</a> buffer; buffer size should be <a href="#SkCanvas_MakeRasterDirectN32_height">height</a> times <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a></td> @@ -255,7 +255,7 @@ interval from one <a href="undocumented#Surface">Surface</a> row to the next, or ### Example -<div><fiddle-embed name="93010950fe3540f7427d8ff82dc5562a"><div>Allocates a three by three bitmap, clears it to white, and draws a black pixel +<div><fiddle-embed name="a9b116a7ebd1708237ce81ef532e9cb4"><div>Allocates a three by three bitmap, clears it to white, and draws a black pixel in the center.</div> #### Example Output @@ -387,7 +387,7 @@ explicit SkCanvas(const SkBitmap& bitmap) Construct a canvas that draws into <a href="#SkCanvas_copy_const_SkBitmap_bitmap">bitmap</a>. Sets <a href="#SkSurfaceProps_kLegacyFontHost_InitType">SkSurfaceProps::kLegacyFontHost InitType</a> in constructed <a href="undocumented#Surface">Surface</a>. -<a href="undocumented#Bitmap">Bitmap</a> is copied so that subsequently editing <a href="#SkCanvas_copy_const_SkBitmap_bitmap">bitmap</a> will not affect +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> is copied so that subsequently editing <a href="#SkCanvas_copy_const_SkBitmap_bitmap">bitmap</a> will not affect constructed <a href="#Canvas">Canvas</a>. May be deprecated in the future. @@ -406,7 +406,7 @@ storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td> ### Example -<div><fiddle-embed name="93082df2fb33ca62202dc047532b3861"><div>The actual output depends on the installed fonts.</div> +<div><fiddle-embed name="dd92db963af190e849894038f39b598a"><div>The actual output depends on the installed fonts.</div> #### Example Output @@ -496,7 +496,7 @@ device independent fonts</td> ### Example -<div><fiddle-embed name="216c9cd6ec6a8fa48135d792a7003572"><div>The actual output depends on the installed fonts.</div> +<div><fiddle-embed name="c26cfae4c42cb445240335cc12a50235"><div>The actual output depends on the installed fonts.</div> #### Example Output @@ -686,7 +686,7 @@ size=20,30 ## makeSurface <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkSurface> makeSurface(const SkImageInfo& info, +sk_sp<SkSurface> makeSurface(const SkImageInfo& info, const SkSurfaceProps* props = nullptr) </pre> @@ -765,7 +765,7 @@ storage for writable pixels' <a href="#Info">Image Info</a>; may be nullptr</td> </tr> <tr> <td><a name="SkCanvas_accessTopLayerPixels_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> storage for writable pixels' row bytes; may be nullptr</td> </tr> <tr> <td><a name="SkCanvas_accessTopLayerPixels_origin"> <code><strong>origin </strong></code> </a></td> <td> -storage for <a href="#Canvas">Canvas</a> top <a href="#Layer">Layer</a> <a href="#SkCanvas_accessTopLayerPixels_origin">origin</a>, its top left corner; +storage for <a href="#Canvas">Canvas</a> top <a href="#Layer">Layer</a> <a href="#SkCanvas_accessTopLayerPixels_origin">origin</a>, its top-left corner; may be nullptr</td> </tr> </table> @@ -799,7 +799,7 @@ SkRasterHandleAllocator::Handle accessTopRasterHandle() const Returns custom context that tracks the <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a>. Use <a href="undocumented#Raster_Handle_Allocator">Raster Handle Allocator</a> to blend <a href="undocumented#Skia">Skia</a> drawing with custom drawing, typically performed -by the host platform's user interface. The custom context returned is generated by +by the host platform user interface. The custom context returned is generated by <a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a>, which creates a custom canvas with raster storage for the drawing destination. @@ -845,8 +845,7 @@ like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_peekPixels_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> -storage for <a href="#Canvas">Canvas</a> pixel state if <a href="#Canvas">Canvas</a> pixels are readable; -otherwise, ignored</td> +storage for pixel state if pixels are readable; otherwise, ignored</td> </tr> </table> @@ -1040,9 +1039,9 @@ class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. Caller must allocate pixel storage in <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a> if needed. -<a href="undocumented#Bitmap">Bitmap</a> values are converted only if <a href="#Color_Type">Image Color Type</a> and <a href="#Alpha_Type">Image Alpha Type</a> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> values are converted only if <a href="#Color_Type">Image Color Type</a> and <a href="#Alpha_Type">Image Alpha Type</a> do not match. Only pixels within both source and destination rectangles -are copied. <a href="undocumented#Bitmap">Bitmap</a> pixels outside the rectangle intersection are unchanged. +are copied. <a href="SkBitmap_Reference#Bitmap">Bitmap</a> pixels outside the rectangle intersection are unchanged. Pass negative values for <a href="#SkCanvas_readPixels_3_srcX">srcX</a> or <a href="#SkCanvas_readPixels_3_srcY">srcY</a> to offset pixels across or down <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>. @@ -1366,14 +1365,14 @@ depth = 1 --- # <a name="Layer"></a> Layer -<a href="#Layer">Layer</a> allocates a temporary <a href="undocumented#Bitmap">Bitmap</a> to draw into. When the drawing is -complete, the <a href="undocumented#Bitmap">Bitmap</a> is drawn into the <a href="#Canvas">Canvas</a>. +<a href="#Layer">Layer</a> allocates a temporary <a href="SkBitmap_Reference#Bitmap">Bitmap</a> to draw into. When the drawing is +complete, the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is drawn into the <a href="#Canvas">Canvas</a>. <a href="#Layer">Layer</a> is saved in a stack along with other saved state. When state with a <a href="#Layer">Layer</a> -is restored, the <a href="undocumented#Bitmap">Bitmap</a> is drawn into the previous <a href="#Layer">Layer</a>. +is restored, the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is drawn into the previous <a href="#Layer">Layer</a>. <a href="#Layer">Layer</a> may be initialized with the contents of the previous <a href="#Layer">Layer</a>. When <a href="#Layer">Layer</a> is -restored, its <a href="undocumented#Bitmap">Bitmap</a> can be modified by <a href="SkPaint_Reference#Paint">Paint</a> passed to <a href="#Layer">Layer</a> to apply +restored, its <a href="SkBitmap_Reference#Bitmap">Bitmap</a> can be modified by <a href="SkPaint_Reference#Paint">Paint</a> passed to <a href="#Layer">Layer</a> to apply <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>. <a name="SkCanvas_saveLayer"></a> @@ -1384,15 +1383,15 @@ int saveLayer(const SkRect* bounds, const SkPaint* paint) </pre> Saves <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> (<a href="undocumented#Draw_Filter">Draw Filter</a> deprecated on most platforms), -and allocates a <a href="undocumented#Bitmap">Bitmap</a> for subsequent drawing. +and allocates a <a href="SkBitmap_Reference#Bitmap">Bitmap</a> for subsequent drawing. Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>, -and draws the <a href="undocumented#Bitmap">Bitmap</a>. +and draws the <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. <a href="#Matrix">Matrix</a> may be changed by <a href="#SkCanvas_translate">translate</a>, <a href="#SkCanvas_scale">scale</a>, <a href="#SkCanvas_rotate">rotate</a>, <a href="#SkCanvas_skew">skew</a>, <a href="#SkCanvas_concat">concat</a>, <a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>, <a href="#SkCanvas_clipPath">clipPath</a>, <a href="#SkCanvas_clipRegion">clipRegion</a>. -<a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_saveLayer_bounds">bounds</a> suggests but does not define the <a href="undocumented#Bitmap">Bitmap</a> size. To clip drawing to +<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_saveLayer_bounds">bounds</a> suggests but does not define the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> size. To clip drawing to a specific rectangle, use <a href="#SkCanvas_clipRect">clipRect</a>. Optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_saveLayer_paint">paint</a> applies <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and @@ -1425,15 +1424,15 @@ int saveLayer(const SkRect& bounds, const SkPaint* paint) </pre> Saves <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> (<a href="undocumented#Draw_Filter">Draw Filter</a> deprecated on most platforms), -and allocates a <a href="undocumented#Bitmap">Bitmap</a> for subsequent drawing. +and allocates a <a href="SkBitmap_Reference#Bitmap">Bitmap</a> for subsequent drawing. Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>, -and draws the <a href="undocumented#Bitmap">Bitmap</a>. +and draws the <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. <a href="#Matrix">Matrix</a> may be changed by <a href="#SkCanvas_translate">translate</a>, <a href="#SkCanvas_scale">scale</a>, <a href="#SkCanvas_rotate">rotate</a>, <a href="#SkCanvas_skew">skew</a>, <a href="#SkCanvas_concat">concat</a>, <a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>, <a href="#SkCanvas_clipPath">clipPath</a>, <a href="#SkCanvas_clipRegion">clipRegion</a>. -<a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_saveLayer_2_bounds">bounds</a> suggests but does not define the <a href="#Layer">Layer</a> size. To clip drawing to +<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_saveLayer_2_bounds">bounds</a> suggests but does not define the <a href="#Layer">Layer</a> size. To clip drawing to a specific rectangle, use <a href="#SkCanvas_clipRect">clipRect</a>. Optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_saveLayer_2_paint">paint</a> applies <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and @@ -1470,7 +1469,7 @@ int saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPaint* paint) </pre> Saves <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> (<a href="undocumented#Draw_Filter">Draw Filter</a> deprecated on most platforms), -and allocates a <a href="undocumented#Bitmap">Bitmap</a> for subsequent drawing. +and allocates a <a href="SkBitmap_Reference#Bitmap">Bitmap</a> for subsequent drawing. <a href="SkPaint_Reference#LCD_Text">LCD Text</a> is preserved when the <a href="#Layer">Layer</a> is drawn to the prior <a href="#Layer">Layer</a>. Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>, @@ -1479,7 +1478,7 @@ and draws <a href="#Layer">Layer</a>. <a href="#Matrix">Matrix</a> may be changed by <a href="#SkCanvas_translate">translate</a>, <a href="#SkCanvas_scale">scale</a>, <a href="#SkCanvas_rotate">rotate</a>, <a href="#SkCanvas_skew">skew</a>, <a href="#SkCanvas_concat">concat</a>, <a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>, <a href="#SkCanvas_clipPath">clipPath</a>, <a href="#SkCanvas_clipRegion">clipRegion</a>. -<a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests_bounds">bounds</a> suggests but does not define the <a href="#Layer">Layer</a> size. To clip drawing to +<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests_bounds">bounds</a> suggests but does not define the <a href="#Layer">Layer</a> size. To clip drawing to a specific rectangle, use <a href="#SkCanvas_clipRect">clipRect</a>. Optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests_paint">paint</a> applies <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and @@ -1518,7 +1517,7 @@ int saveLayerAlpha(const SkRect* bounds, U8CPU alpha) </pre> Saves <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> (<a href="undocumented#Draw_Filter">Draw Filter</a> deprecated on most platforms), -and allocates <a href="undocumented#Bitmap">Bitmap</a> for subsequent drawing. +and allocates <a href="SkBitmap_Reference#Bitmap">Bitmap</a> for subsequent drawing. Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>, and blends <a href="#Layer">Layer</a> with <a href="#SkCanvas_saveLayerAlpha_alpha">alpha</a> opacity onto prior <a href="#Layer">Layer</a>. @@ -1527,7 +1526,7 @@ and blends <a href="#Layer">Layer</a> with <a href="#SkCanvas_saveLayerAlpha_alp <a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>, <a href="#SkCanvas_clipPath">clipPath</a>, <a href="#SkCanvas_clipRegion">clipRegion</a>. -<a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_saveLayerAlpha_bounds">bounds</a> suggests but does not define <a href="#Layer">Layer</a> size. To clip drawing to +<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_saveLayerAlpha_bounds">bounds</a> suggests but does not define <a href="#Layer">Layer</a> size. To clip drawing to a specific rectangle, use <a href="#SkCanvas_clipRect">clipRect</a>. <a href="#SkCanvas_saveLayerAlpha_alpha">alpha</a> of zero is fully transparent, 255 is fully opaque. @@ -1601,7 +1600,7 @@ scalePaint blends <a href="#Layer">Layer</a> back with transparency.</div></fidd struct <a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> { <a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a>*(... -const <a href="undocumented#SkRect">SkRect</a>* <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds</a>; +const <a href="SkRect_Reference#SkRect">SkRect</a>* <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds</a>; const <a href="SkPaint_Reference#SkPaint">SkPaint</a>* <a href="#SkCanvas_SaveLayerRec_fPaint">fPaint</a>; const <a href="undocumented#SkImageFilter">SkImageFilter</a>* <a href="#SkCanvas_SaveLayerRec_fBackdrop">fBackdrop</a>; <a href="undocumented#SaveLayerFlags">SaveLayerFlags</a> <a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>; @@ -1795,10 +1794,10 @@ int saveLayer(const SaveLayerRec& layerRec) </pre> Saves <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> (<a href="undocumented#Draw_Filter">Draw Filter</a> deprecated on most platforms), -and allocates <a href="undocumented#Bitmap">Bitmap</a> for subsequent drawing. +and allocates <a href="SkBitmap_Reference#Bitmap">Bitmap</a> for subsequent drawing. Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>, -and blends <a href="undocumented#Bitmap">Bitmap</a> with <a href="#Alpha">Color Alpha</a> opacity onto the prior <a href="#Layer">Layer</a>. +and blends <a href="SkBitmap_Reference#Bitmap">Bitmap</a> with <a href="#Alpha">Color Alpha</a> opacity onto the prior <a href="#Layer">Layer</a>. <a href="#Matrix">Matrix</a> may be changed by <a href="#SkCanvas_translate">translate</a>, <a href="#SkCanvas_scale">scale</a>, <a href="#SkCanvas_rotate">rotate</a>, <a href="#SkCanvas_skew">skew</a>, <a href="#SkCanvas_concat">concat</a>, <a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>, @@ -2105,7 +2104,7 @@ If clipping <a href="SkPath_Reference#Path">Path</a> has <a href="SkPaint_Refere that drawing blend partially with the destination along the edge. A rotated rectangular <a href="undocumented#Anti_alias">Anti-aliased</a> clip looks smoother but draws slower. -<a href="#Clip">Clip</a> can combine with <a href="undocumented#Rect">Rect</a> and <a href="undocumented#Round_Rect">Round Rect</a> primitives; like +<a href="#Clip">Clip</a> can combine with <a href="SkRect_Reference#Rect">Rect</a> and <a href="undocumented#Round_Rect">Round Rect</a> primitives; like <a href="SkPath_Reference#Path">Path</a>, these are transformed by <a href="#Matrix">Matrix</a> before they are combined with <a href="#Clip">Clip</a>. <a href="#Clip">Clip</a> can combine with <a href="undocumented#Region">Region</a>. <a href="undocumented#Region">Region</a> is assumed to be in <a href="undocumented#Device">Device</a> coordinates @@ -2132,7 +2131,7 @@ before it is combined with <a href="#Clip">Clip</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_clipRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> +<a href="SkRect_Reference#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipRect_op"> <code><strong>op </strong></code> </a></td> <td> <a href="#Op">Clip Op</a> to apply to <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipRect_doAntiAlias"> <code><strong>doAntiAlias </strong></code> </a></td> <td> @@ -2157,7 +2156,7 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f ### Parameters <table> <tr> <td><a name="SkCanvas_clipRect_2_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> +<a href="SkRect_Reference#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipRect_2_op"> <code><strong>op </strong></code> </a></td> <td> <a href="#Op">Clip Op</a> to apply to <a href="#Clip">Clip</a></td> </tr> @@ -2181,7 +2180,7 @@ before it is combined with <a href="#Clip">Clip</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_clipRect_3_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> +<a href="SkRect_Reference#Rect">Rect</a> to combine with <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipRect_3_doAntiAlias"> <code><strong>doAntiAlias </strong></code> </a></td> <td> true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti-aliased</a></td> </tr> @@ -2352,7 +2351,7 @@ before it is combined with <a href="#Clip">Clip</a>. ### Example -<div><fiddle-embed name="7856755c1bf8431c286c734b353345ad"><div>Overlapping <a href="#Rect">Rects</a> form a clip. When clip's <a href="#Fill_Type">Path Fill Type</a> is set to +<div><fiddle-embed name="7856755c1bf8431c286c734b353345ad"><div>Overlapping <a href="#Rect">Rects</a> form a clip. When clip <a href="#Fill_Type">Path Fill Type</a> is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to <a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div> @@ -2380,7 +2379,7 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti ### Example -<div><fiddle-embed name="187a7ae77a8176e417181411988534b6"><div><a href="#Clip">Clip</a> loops over itself covering its center twice. When clip's <a href="#Fill_Type">Path Fill Type</a> +<div><fiddle-embed name="187a7ae77a8176e417181411988534b6"><div><a href="#Clip">Clip</a> loops over itself covering its center twice. When clip <a href="#Fill_Type">Path Fill Type</a> is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to <a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div> @@ -2432,7 +2431,7 @@ aligns to pixel boundaries.</div></fiddle-embed></div> bool quickReject(const SkRect& rect) const </pre> -Return true if <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_quickReject_rect">rect</a>, transformed by <a href="#Matrix">Matrix</a>, can be quickly determined to be +Return true if <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_quickReject_rect">rect</a>, transformed by <a href="#Matrix">Matrix</a>, can be quickly determined to be outside of <a href="#Clip">Clip</a>. May return false even though <a href="#SkCanvas_quickReject_rect">rect</a> is outside of <a href="#Clip">Clip</a>. Use to check if an area to be drawn is clipped out, to skip subsequent draw calls. @@ -2440,7 +2439,7 @@ Use to check if an area to be drawn is clipped out, to skip subsequent draw call ### Parameters <table> <tr> <td><a name="SkCanvas_quickReject_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to compare with <a href="#Clip">Clip</a></td> +<a href="SkRect_Reference#Rect">Rect</a> to compare with <a href="#Clip">Clip</a></td> </tr> </table> @@ -2506,9 +2505,9 @@ SkRect getLocalClipBounds() const </pre> Return bounds of <a href="#Clip">Clip</a>, transformed by inverse of <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, -return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="undocumented#Rect">Rect</a> sides equal zero. +return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero. -<a href="undocumented#Rect">Rect</a> returned is outset by one to account for partial pixel coverage if <a href="#Clip">Clip</a> +<a href="SkRect_Reference#Rect">Rect</a> returned is outset by one to account for partial pixel coverage if <a href="#Clip">Clip</a> is <a href="undocumented#Anti_alias">Anti-aliased</a>. ### Return Value @@ -2538,7 +2537,7 @@ bool getLocalClipBounds(SkRect* bounds) const </pre> Return <a href="#SkCanvas_getLocalClipBounds_2_bounds">bounds</a> of <a href="#Clip">Clip</a>, transformed by inverse of <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, -return false, and set <a href="#SkCanvas_getLocalClipBounds_2_bounds">bounds</a> to <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="undocumented#Rect">Rect</a> sides equal zero. +return false, and set <a href="#SkCanvas_getLocalClipBounds_2_bounds">bounds</a> to <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero. <a href="#SkCanvas_getLocalClipBounds_2_bounds">bounds</a> is outset by one to account for partial pixel coverage if <a href="#Clip">Clip</a> is <a href="undocumented#Anti_alias">Anti-aliased</a>. @@ -2546,7 +2545,7 @@ is <a href="undocumented#Anti_alias">Anti-aliased</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_getLocalClipBounds_2_bounds"> <code><strong>bounds </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> of <a href="#Clip">Clip</a> in local coordinates</td> +<a href="SkRect_Reference#Rect">Rect</a> of <a href="#Clip">Clip</a> in local coordinates</td> </tr> </table> @@ -2576,10 +2575,10 @@ local bounds empty = true SkIRect getDeviceClipBounds() const </pre> -Return <a href="undocumented#IRect">IRect</a> bounds of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, -return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="undocumented#Rect">Rect</a> sides equal zero. +Return <a href="SkIRect_Reference#IRect">IRect</a> bounds of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, +return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero. -Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, returned <a href="undocumented#IRect">IRect</a> is not outset. +Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, returned <a href="SkIRect_Reference#IRect">IRect</a> is not outset. ### Return Value @@ -2607,15 +2606,15 @@ left:15 top:65 right:60 bottom:115 bool getDeviceClipBounds(SkIRect* bounds) const </pre> -Return <a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, -return false, and set <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> to <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="undocumented#Rect">Rect</a> sides equal zero. +Return <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty, +return false, and set <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> to <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero. Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> is not outset. ### Parameters <table> <tr> <td><a name="SkCanvas_getDeviceClipBounds_2_bounds"> <code><strong>bounds </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> of <a href="#Clip">Clip</a> in device coordinates</td> +<a href="SkRect_Reference#Rect">Rect</a> of <a href="#Clip">Clip</a> in device coordinates</td> </tr> </table> @@ -2960,7 +2959,7 @@ stroke, blend, color, and so on, used to draw</td> void drawRect(const SkRect& rect, const SkPaint& paint) </pre> -Draw <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRect_paint">paint</a>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRect_paint">paint</a>. In <a href="#SkCanvas_drawRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled; if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and <a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square. @@ -2968,7 +2967,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th ### Parameters <table> <tr> <td><a name="SkCanvas_drawRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -rectangle to be drawn</td> +rectangle to draw</td> </tr> <tr> <td><a name="SkCanvas_drawRect_paint"> <code><strong>paint </strong></code> </a></td> <td> stroke or fill, blend, color, and so on, used to draw</td> </tr> @@ -2987,7 +2986,7 @@ stroke or fill, blend, color, and so on, used to draw</td> void drawIRect(const SkIRect& rect, const SkPaint& paint) </pre> -Draw <a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawIRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawIRect_paint">paint</a>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawIRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawIRect_paint">paint</a>. In <a href="#SkCanvas_drawIRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled; if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and <a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square. @@ -2995,7 +2994,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th ### Parameters <table> <tr> <td><a name="SkCanvas_drawIRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -rectangle to be drawn</td> +rectangle to draw</td> </tr> <tr> <td><a name="SkCanvas_drawIRect_paint"> <code><strong>paint </strong></code> </a></td> <td> stroke or fill, blend, color, and so on, used to draw</td> </tr> @@ -3022,7 +3021,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th ### Parameters <table> <tr> <td><a name="SkCanvas_drawRegion_region"> <code><strong>region </strong></code> </a></td> <td> -<a href="#SkCanvas_drawRegion_region">region</a> to be drawn</td> +<a href="#SkCanvas_drawRegion_region">region</a> to draw</td> </tr> <tr> <td><a name="SkCanvas_drawRegion_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> stroke or fill, blend, color, and so on, used to draw</td> </tr> @@ -3048,7 +3047,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th ### Parameters <table> <tr> <td><a name="SkCanvas_drawOval_oval"> <code><strong>oval </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> bounds of <a href="undocumented#Oval">Oval</a></td> +<a href="SkRect_Reference#Rect">Rect</a> bounds of <a href="undocumented#Oval">Oval</a></td> </tr> <tr> <td><a name="SkCanvas_drawOval_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> stroke or fill, blend, color, and so on, used to draw</td> </tr> @@ -3125,7 +3124,7 @@ concave and <a href="#SkCanvas_drawDRRect_outer">outer</a> contains <a href="#Sk ### Example -<div><fiddle-embed name="30823cb4edf884d330285ea161664931"><div>Outer <a href="undocumented#Rect">Rect</a> has no corner radii, but stroke join is rounded. +<div><fiddle-embed name="30823cb4edf884d330285ea161664931"><div>Outer <a href="SkRect_Reference#Rect">Rect</a> has no corner radii, but stroke join is rounded. Inner <a href="undocumented#Round_Rect">Round Rect</a> has corner radii; outset stroke increases radii of corners. Stroke join does not affect <a href="#SkCanvas_drawDRRect_inner">inner</a> <a href="undocumented#Round_Rect">Round Rect</a> since it has no sharp corners.</div></fiddle-embed></div> @@ -3208,12 +3207,12 @@ a negative <a href="#SkCanvas_drawArc_sweepAngle">sweepAngle</a> places <a href= If <a href="#SkCanvas_drawArc_useCenter">useCenter</a> is true, draw a wedge that includes lines from <a href="#SkCanvas_drawArc_oval">oval</a> center to <a href="undocumented#Arc">Arc</a> end points. If <a href="#SkCanvas_drawArc_useCenter">useCenter</a> is false, draw <a href="undocumented#Arc">Arc</a> between end points. -If <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawArc_oval">oval</a> is empty or <a href="#SkCanvas_drawArc_sweepAngle">sweepAngle</a> is zero, nothing is drawn. +If <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawArc_oval">oval</a> is empty or <a href="#SkCanvas_drawArc_sweepAngle">sweepAngle</a> is zero, nothing is drawn. ### Parameters <table> <tr> <td><a name="SkCanvas_drawArc_oval"> <code><strong>oval </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> bounds of <a href="undocumented#Oval">Oval</a> containing <a href="undocumented#Arc">Arc</a> to draw</td> +<a href="SkRect_Reference#Rect">Rect</a> bounds of <a href="undocumented#Oval">Oval</a> containing <a href="undocumented#Arc">Arc</a> to draw</td> </tr> <tr> <td><a name="SkCanvas_drawArc_startAngle"> <code><strong>startAngle </strong></code> </a></td> <td> angle in degrees where <a href="undocumented#Arc">Arc</a> begins</td> </tr> <tr> <td><a name="SkCanvas_drawArc_sweepAngle"> <code><strong>sweepAngle </strong></code> </a></td> <td> @@ -3243,20 +3242,20 @@ void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint) </pre> -Draw <a href="undocumented#Round_Rect">Round Rect</a> bounded by <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawRoundRect_rect">rect</a>, with corner radii (<a href="#SkCanvas_drawRoundRect_rx">rx</a>, <a href="#SkCanvas_drawRoundRect_ry">ry</a>) using <a href="#Clip">Clip</a>, +Draw <a href="undocumented#Round_Rect">Round Rect</a> bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRoundRect_rect">rect</a>, with corner radii (<a href="#SkCanvas_drawRoundRect_rx">rx</a>, <a href="#SkCanvas_drawRoundRect_ry">ry</a>) using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRoundRect_paint">paint</a>. In <a href="#SkCanvas_drawRoundRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled; if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness. If <a href="#SkCanvas_drawRoundRect_rx">rx</a> or <a href="#SkCanvas_drawRoundRect_ry">ry</a> are less than zero, they are treated as if they are zero. If <a href="#SkCanvas_drawRoundRect_rx">rx</a> plus <a href="#SkCanvas_drawRoundRect_ry">ry</a> exceeds <a href="#SkCanvas_drawRoundRect_rect">rect</a> width or <a href="#SkCanvas_drawRoundRect_rect">rect</a> height, radii are scaled down to fit. -If <a href="#SkCanvas_drawRoundRect_rx">rx</a> and <a href="#SkCanvas_drawRoundRect_ry">ry</a> are zero, <a href="undocumented#Round_Rect">Round Rect</a> is drawn as <a href="undocumented#Rect">Rect</a> and if stroked is affected by +If <a href="#SkCanvas_drawRoundRect_rx">rx</a> and <a href="#SkCanvas_drawRoundRect_ry">ry</a> are zero, <a href="undocumented#Round_Rect">Round Rect</a> is drawn as <a href="SkRect_Reference#Rect">Rect</a> and if stroked is affected by <a href="#Stroke_Join">Paint Stroke Join</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_drawRoundRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> bounds of <a href="undocumented#Round_Rect">Round Rect</a> to draw</td> +<a href="SkRect_Reference#Rect">Rect</a> bounds of <a href="undocumented#Round_Rect">Round Rect</a> to draw</td> </tr> <tr> <td><a name="SkCanvas_drawRoundRect_rx"> <code><strong>rx </strong></code> </a></td> <td> axis length in x of oval describing rounded corners</td> </tr> <tr> <td><a name="SkCanvas_drawRoundRect_ry"> <code><strong>ry </strong></code> </a></td> <td> @@ -3331,7 +3330,7 @@ and <a href="undocumented#Draw_Looper">Draw Looper</a>. If <a href="#SkCanvas_dr If <a href="#SkCanvas_drawImage_paint">paint</a> contains <a href="undocumented#Mask_Filter">Mask Filter</a>, generate mask from <a href="#SkCanvas_drawImage_image">image</a> bounds. If generated mask extends beyond <a href="#SkCanvas_drawImage_image">image</a> bounds, replicate <a href="#SkCanvas_drawImage_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the -<a href="#SkCanvas_drawImage_image">image</a>'s edge color when it samples outside of its bounds. +<a href="#SkCanvas_drawImage_image">image</a> edge color when it samples outside of its bounds. ### Parameters @@ -3354,7 +3353,7 @@ and so on; or nullptr</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top, +void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top, const SkPaint* paint = nullptr) </pre> @@ -3366,7 +3365,7 @@ If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_2_pa If <a href="#SkCanvas_drawImage_2_paint">paint</a> contains <a href="undocumented#Mask_Filter">Mask Filter</a>, generate mask from <a href="#SkCanvas_drawImage_2_image">image</a> bounds. If generated mask extends beyond <a href="#SkCanvas_drawImage_2_image">image</a> bounds, replicate <a href="#SkCanvas_drawImage_2_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the -<a href="#SkCanvas_drawImage_2_image">image</a>'s edge color when it samples outside of its bounds. +<a href="#SkCanvas_drawImage_2_image">image</a> edge color when it samples outside of its bounds. ### Parameters @@ -3396,14 +3395,14 @@ enum <a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> { <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>, };</pre> -<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> controls the behavior at the edge of source <a href="undocumented#Rect">Rect</a>, +<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> controls the behavior at the edge of source <a href="SkRect_Reference#Rect">Rect</a>, provided to <a href="#SkCanvas_drawImageRect">drawImageRect</a>, trading off speed for precision. -<a href="undocumented#Image_Filter">Image Filter</a> in <a href="SkPaint_Reference#Paint">Paint</a> may sample multiple pixels in the image. Source <a href="undocumented#Rect">Rect</a> +<a href="undocumented#Image_Filter">Image Filter</a> in <a href="SkPaint_Reference#Paint">Paint</a> may sample multiple pixels in the image. Source <a href="SkRect_Reference#Rect">Rect</a> restricts the bounds of pixels that may be read. <a href="undocumented#Image_Filter">Image Filter</a> may slow down if -it cannot read outside the bounds, when sampling near the edge of source <a href="undocumented#Rect">Rect</a>. +it cannot read outside the bounds, when sampling near the edge of source <a href="SkRect_Reference#Rect">Rect</a>. <a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> specifies whether an <a href="undocumented#Image_Filter">Image Filter</a> is allowed to read pixels -outside source <a href="undocumented#Rect">Rect</a>. +outside source <a href="SkRect_Reference#Rect">Rect</a>. ### Constants @@ -3436,7 +3435,7 @@ void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& dst, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_src">src</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_dst">dst</a>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_src">src</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_dst">dst</a>. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3445,7 +3444,7 @@ If <a href="#SkCanvas_drawImageRect_paint">paint</a> contains <a href="undocumen If generated mask extends beyond <a href="#SkCanvas_drawImageRect_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_src">src</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3456,9 +3455,9 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_src"> <code><strong>src </strong></code> </a></td> <td> -source <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_image">image</a> to draw from</td> +source <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_image">image</a> to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3470,7 +3469,7 @@ filter strictly within <a href="#SkCanvas_drawImageRect_src">src</a> or draw fas ### Example <div><fiddle-embed name="2b01c707ef8b5ce3023b7a1d55fce059"><div>The left bitmap draws with <a href="SkPaint_Reference#Paint">Paint</a> default <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, and stays within -its bounds; there's no bleeding with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>. +its bounds; there is no bleeding with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>. the middle and right bitmaps draw with <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>; with <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a>, the filter remains within the checkerboard, and with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> red bleeds on the edges.</div></fiddle-embed></div> @@ -3483,7 +3482,7 @@ void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_2_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_2_dst">dst</a>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_2_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_2_dst">dst</a>. Note that <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawImageRect_2_dst">dst</a> may include fractional boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_2_paint">paint</a>. @@ -3494,7 +3493,7 @@ If <a href="#SkCanvas_drawImageRect_2_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageRect_2_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_2_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_2_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_2_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_2_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3505,9 +3504,9 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_2_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_2_isrc"> <code><strong>isrc </strong></code> </a></td> <td> -source <a href="undocumented#IRect">IRect</a> of <a href="#SkCanvas_drawImageRect_2_image">image</a> to draw from</td> +source <a href="SkIRect_Reference#IRect">IRect</a> of <a href="#SkCanvas_drawImageRect_2_image">image</a> to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_2_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_2_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_2_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_2_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3527,7 +3526,7 @@ void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_3_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_3_dst">dst</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, +Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_3_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_3_dst">dst</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_3_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_3_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3536,7 +3535,7 @@ If <a href="#SkCanvas_drawImageRect_3_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageRect_3_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_3_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_3_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_3_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_3_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_3_image">image</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3547,7 +3546,7 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_3_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_3_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_3_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_3_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_3_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3563,12 +3562,12 @@ filter strictly within <a href="#SkCanvas_drawImageRect_3_image">image</a> or dr --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageRect(const sk_sp<SkImage>& image, const SkRect& src, +void drawImageRect(const sk_sp<SkImage>& image, const SkRect& src, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_src">src</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_4_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_dst">dst</a>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_src">src</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_4_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_dst">dst</a>. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_4_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_4_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3577,7 +3576,7 @@ If <a href="#SkCanvas_drawImageRect_4_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageRect_4_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_4_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_4_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_4_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_4_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_4_src">src</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3588,9 +3587,9 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_4_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_4_src"> <code><strong>src </strong></code> </a></td> <td> -source <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_4_image">image</a> to draw from</td> +source <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_4_image">image</a> to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_4_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_4_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_4_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_4_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3607,12 +3606,12 @@ The two matrices are concatenated to create the final transformation.</div></fid --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageRect(const sk_sp<SkImage>& image, const SkIRect& isrc, +void drawImageRect(const sk_sp<SkImage>& image, const SkIRect& isrc, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_5_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_5_dst">dst</a>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> of <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_5_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_5_dst">dst</a>. <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawImageRect_5_dst">dst</a> may include fractional boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_5_paint">paint</a>. @@ -3622,7 +3621,7 @@ If <a href="#SkCanvas_drawImageRect_5_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageRect_5_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_5_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_5_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_5_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_5_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_5_image">image</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3633,9 +3632,9 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_5_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_5_isrc"> <code><strong>isrc </strong></code> </a></td> <td> -source <a href="undocumented#IRect">IRect</a> of <a href="#SkCanvas_drawImageRect_5_image">image</a> to draw from</td> +source <a href="SkIRect_Reference#IRect">IRect</a> of <a href="#SkCanvas_drawImageRect_5_image">image</a> to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_5_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_5_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_5_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_5_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3651,12 +3650,12 @@ filter strictly within <a href="#SkCanvas_drawImageRect_5_image">image</a> or dr --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageRect(const sk_sp<SkImage>& image, const SkRect& dst, +void drawImageRect(const sk_sp<SkImage>& image, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_6_image">image</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_6_dst">dst</a>, +Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageRect_6_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_6_dst">dst</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_6_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_6_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3665,7 +3664,7 @@ If <a href="#SkCanvas_drawImageRect_6_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageRect_6_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageRect_6_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageRect_6_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageRect_6_image">image</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawImageRect_6_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to sample within <a href="#SkCanvas_drawImageRect_6_image">image</a>; set to <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows sampling outside to @@ -3676,7 +3675,7 @@ improve performance. <table> <tr> <td><a name="SkCanvas_drawImageRect_6_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_6_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_6_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageRect_6_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageRect_6_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3699,8 +3698,8 @@ void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageNine_image">image</a> stretched proportionally to fit into <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_dst">dst</a>. -<a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_center">center</a> divides the <a href="#SkCanvas_drawImageNine_image">image</a> into nine sections: four sides, four corners, and +Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageNine_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_dst">dst</a>. +<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_center">center</a> divides the <a href="#SkCanvas_drawImageNine_image">image</a> into nine sections: four sides, four corners, and the <a href="#SkCanvas_drawImageNine_center">center</a>. Corners are unmodified or scaled down proportionately if their sides are larger than <a href="#SkCanvas_drawImageNine_dst">dst</a>; <a href="#SkCanvas_drawImageNine_center">center</a> and four sides are scaled to fit remaining space, if any. @@ -3712,16 +3711,16 @@ If <a href="#SkCanvas_drawImageNine_paint">paint</a> contains <a href="undocumen If generated mask extends beyond <a href="#SkCanvas_drawImageNine_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageNine_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageNine_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageNine_image">image</a> edge color when it samples outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawImageNine_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_center"> <code><strong>center </strong></code> </a></td> <td> -<a href="undocumented#IRect">IRect</a> edge of <a href="#SkCanvas_drawImageNine_image">image</a> corners and sides</td> +<a href="SkIRect_Reference#IRect">IRect</a> edge of <a href="#SkCanvas_drawImageNine_image">image</a> corners and sides</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageNine_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageNine_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3738,12 +3737,12 @@ The sides and <a href="#SkCanvas_drawImageNine_center">center</a> are scaled if --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageNine(const sk_sp<SkImage>& image, const SkIRect& center, +void drawImageNine(const sk_sp<SkImage>& image, const SkIRect& center, const SkRect& dst, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageNine_2_image">image</a> stretched proportionally to fit into <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_2_dst">dst</a>. -<a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_2_center">center</a> divides the <a href="#SkCanvas_drawImageNine_2_image">image</a> into nine sections: four sides, four corners, and +Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageNine_2_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_2_dst">dst</a>. +<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_2_center">center</a> divides the <a href="#SkCanvas_drawImageNine_2_image">image</a> into nine sections: four sides, four corners, and the <a href="#SkCanvas_drawImageNine_2_center">center</a>. Corners are not scaled, or scaled down proportionately if their sides are larger than <a href="#SkCanvas_drawImageNine_2_dst">dst</a>; <a href="#SkCanvas_drawImageNine_2_center">center</a> and four sides are scaled to fit remaining space, if any. @@ -3755,16 +3754,16 @@ If <a href="#SkCanvas_drawImageNine_2_paint">paint</a> contains <a href="undocum If generated mask extends beyond <a href="#SkCanvas_drawImageNine_2_image">image</a> bounds, replicate <a href="#SkCanvas_drawImageNine_2_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set -replicates the <a href="#SkCanvas_drawImageNine_2_image">image</a>'s edge color when it samples outside of its bounds. +replicates the <a href="#SkCanvas_drawImageNine_2_image">image</a> edge color when it samples outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawImageNine_2_image"> <code><strong>image </strong></code> </a></td> <td> <a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_2_center"> <code><strong>center </strong></code> </a></td> <td> -<a href="undocumented#IRect">IRect</a> edge of <a href="#SkCanvas_drawImageNine_2_image">image</a> corners and sides</td> +<a href="SkIRect_Reference#IRect">IRect</a> edge of <a href="#SkCanvas_drawImageNine_2_image">image</a> corners and sides</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_2_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageNine_2_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageNine_2_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageNine_2_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3790,7 +3789,7 @@ void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>, with its top-left corner at (<a href="#SkCanvas_drawBitmap_left">left</a>, <a href="#SkCanvas_drawBitmap_top">top</a>), +Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>, with its top-left corner at (<a href="#SkCanvas_drawBitmap_left">left</a>, <a href="#SkCanvas_drawBitmap_top">top</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmap_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmap_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3799,13 +3798,13 @@ If <a href="#SkCanvas_drawBitmap_paint">paint</a> contains <a href="undocumented If generated mask extends beyond <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> edge color when it samples outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmap_left"> <code><strong>left </strong></code> </a></td> <td> <a href="#SkCanvas_drawBitmap_left">left</a> side of <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a></td> </tr> <tr> <td><a name="SkCanvas_drawBitmap_top"> <code><strong>top </strong></code> </a></td> <td> @@ -3831,7 +3830,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkRect& src, const SkRect& dst SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_src">src</a> of <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_dst">dst</a>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_src">src</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_dst">dst</a>. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, @@ -3840,7 +3839,7 @@ If <a href="#SkCanvas_drawBitmapRect_paint">paint</a> contains <a href="undocume If generated mask extends beyond <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawBitmapRect_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to @@ -3850,11 +3849,11 @@ improve performance. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmapRect_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_src"> <code><strong>src </strong></code> </a></td> <td> -source <a href="undocumented#Rect">Rect</a> of image to draw from</td> +source <a href="SkRect_Reference#Rect">Rect</a> of image to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of image to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of image to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3875,7 +3874,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkIRect& isrc, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> of <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a>. <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a> may include fractional boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_2_paint">paint</a>. @@ -3885,7 +3884,7 @@ If <a href="#SkCanvas_drawBitmapRect_2_paint">paint</a> contains <a href="undocu If generated mask extends beyond <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawBitmapRect_2_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to @@ -3895,11 +3894,11 @@ improve performance. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmapRect_2_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_2_isrc"> <code><strong>isrc </strong></code> </a></td> <td> -source <a href="undocumented#IRect">IRect</a> of image to draw from</td> +source <a href="SkIRect_Reference#IRect">IRect</a> of image to draw from</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_2_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of image to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of image to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_2_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3920,7 +3919,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -Draw <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a>, scaled and translated to fill <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a>. +Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a>. <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> bounds is on integer pixel boundaries; <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a> may include fractional boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_3_paint">paint</a>. @@ -3930,7 +3929,7 @@ If <a href="#SkCanvas_drawBitmapRect_3_paint">paint</a> contains <a href="undocu If generated mask extends beyond <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> edge color when it samples outside of its bounds. <a href="#SkCanvas_drawBitmapRect_3_constraint">constraint</a> set to <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> limits <a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Filter_Quality">Filter Quality</a> to @@ -3940,9 +3939,9 @@ improve performance. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmapRect_3_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_3_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of image to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of image to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapRect_3_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -3965,8 +3964,8 @@ void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> stretched proportionally to fit into <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapNine_dst">dst</a>. -<a href="undocumented#IRect">IRect</a> <a href="#SkCanvas_drawBitmapNine_center">center</a> divides the <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> into nine sections: four sides, four corners, +Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapNine_dst">dst</a>. +<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawBitmapNine_center">center</a> divides the <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> into nine sections: four sides, four corners, and the <a href="#SkCanvas_drawBitmapNine_center">center</a>. Corners are not scaled, or scaled down proportionately if their sides are larger than <a href="#SkCanvas_drawBitmapNine_dst">dst</a>; <a href="#SkCanvas_drawBitmapNine_center">center</a> and four sides are scaled to fit remaining space, if any. @@ -3979,17 +3978,17 @@ If <a href="#SkCanvas_drawBitmapNine_paint">paint</a> contains <a href="undocume If generated mask extends beyond <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> edge color when it samples outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmapNine_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapNine_center"> <code><strong>center </strong></code> </a></td> <td> -<a href="undocumented#IRect">IRect</a> edge of image corners and sides</td> +<a href="SkIRect_Reference#IRect">IRect</a> edge of image corners and sides</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapNine_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of image to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of image to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapNine_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -4008,7 +4007,7 @@ and below <a href="#SkCanvas_drawBitmapNine_center">center</a> to fill the remai --- # <a name="SkCanvas_Lattice"></a> Struct SkCanvas::Lattice -<a href="#SkCanvas_Lattice">Lattice</a> divides <a href="undocumented#Bitmap">Bitmap</a> or <a href="undocumented#Image">Image</a> into a rectangular grid. +<a href="#SkCanvas_Lattice">Lattice</a> divides <a href="SkBitmap_Reference#Bitmap">Bitmap</a> or <a href="undocumented#Image">Image</a> into a rectangular grid. Grid entries on even columns and even rows are fixed; these entries are always drawn at their original size if the destination is large enough. If the destination side is too small to hold the fixed entries, all fixed @@ -4025,7 +4024,7 @@ const int* <a href="#SkCanvas_Lattice_fYDivs">fYDivs</a>; const <a href="#SkCanvas_Lattice_Flags">Flags</a>* <a href="#SkCanvas_Lattice_fFlags">fFlags</a>; int <a href="#SkCanvas_Lattice_fXCount">fXCount</a>; int <a href="#SkCanvas_Lattice_fYCount">fYCount</a>; -const <a href="undocumented#SkIRect">SkIRect</a>* <a href="#SkCanvas_Lattice_fBounds">fBounds</a>; +const <a href="SkIRect_Reference#SkIRect">SkIRect</a>* <a href="#SkCanvas_Lattice_fBounds">fBounds</a>; };</pre> ## <a name="SkCanvas_Lattice_Flags"></a> Enum SkCanvas::Lattice::Flags @@ -4082,8 +4081,8 @@ divisions. <a name="SkCanvas_Lattice_fBounds"> <code><strong>const SkIRect* fBounds</strong></code> </a> -Optional subset <a href="undocumented#IRect">IRect</a> source to draw from. -If nullptr, source bounds is dimensions of <a href="undocumented#Bitmap">Bitmap</a> or <a href="undocumented#Image">Image</a>. +Optional subset <a href="SkIRect_Reference#IRect">IRect</a> source to draw from. +If nullptr, source bounds is dimensions of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> or <a href="undocumented#Image">Image</a>. <a name="SkCanvas_drawBitmapLattice"></a> ## drawBitmapLattice @@ -4093,12 +4092,12 @@ void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkRect& dst, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> stretched proportionally to fit into <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawBitmapLattice_dst">dst</a>. +Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapLattice_dst">dst</a>. <a href="#SkCanvas_Lattice">Lattice</a> <a href="#SkCanvas_drawBitmapLattice_lattice">lattice</a> divides <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> into a rectangular grid. Each intersection of an even-numbered row and column is fixed; like the corners of <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a>, fixed <a href="#SkCanvas_drawBitmapLattice_lattice">lattice</a> elements never <a href="#SkCanvas_scale">scale</a> larger than their initial -size and shrink proportionately when all fixed elements exceed the <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a>'s +size and shrink proportionately when all fixed elements exceed the <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> dimension. All other grid elements <a href="#SkCanvas_scale">scale</a> to fill the available space, if any. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapLattice_paint">paint</a>. @@ -4109,17 +4108,17 @@ If <a href="#SkCanvas_drawBitmapLattice_paint">paint</a> contains <a href="undoc If generated mask extends beyond <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a>'s edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> edge color when it samples outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawBitmapLattice_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -<a href="undocumented#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> containing pixels, dimensions, and format</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapLattice_lattice"> <code><strong>lattice </strong></code> </a></td> <td> division of <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> into fixed and variable rectangles</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapLattice_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of image to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of image to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawBitmapLattice_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -4145,12 +4144,12 @@ void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageLattice_image">image</a> stretched proportionally to fit into <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawImageLattice_dst">dst</a>. +Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImageLattice_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageLattice_dst">dst</a>. <a href="#SkCanvas_Lattice">Lattice</a> <a href="#SkCanvas_drawImageLattice_lattice">lattice</a> divides <a href="#SkCanvas_drawImageLattice_image">image</a> into a rectangular grid. Each intersection of an even-numbered row and column is fixed; like the corners of <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a>, fixed <a href="#SkCanvas_drawImageLattice_lattice">lattice</a> elements never <a href="#SkCanvas_scale">scale</a> larger than their initial -size and shrink proportionately when all fixed elements exceed the bitmap's +size and shrink proportionately when all fixed elements exceed the bitmap dimension. All other grid elements <a href="#SkCanvas_scale">scale</a> to fill the available space, if any. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageLattice_paint">paint</a>. @@ -4161,7 +4160,7 @@ If <a href="#SkCanvas_drawImageLattice_paint">paint</a> contains <a href="undocu If generated mask extends beyond bitmap bounds, replicate bitmap edge colors, just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with -<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the bitmap's edge color when it samples +<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the bitmap edge color when it samples outside of its bounds. ### Parameters @@ -4171,7 +4170,7 @@ outside of its bounds. </tr> <tr> <td><a name="SkCanvas_drawImageLattice_lattice"> <code><strong>lattice </strong></code> </a></td> <td> division of bitmap into fixed and variable rectangles</td> </tr> <tr> <td><a name="SkCanvas_drawImageLattice_dst"> <code><strong>dst </strong></code> </a></td> <td> -destination <a href="undocumented#Rect">Rect</a> of <a href="#SkCanvas_drawImageLattice_image">image</a> to draw to</td> +destination <a href="SkRect_Reference#Rect">Rect</a> of <a href="#SkCanvas_drawImageLattice_image">image</a> to draw to</td> </tr> <tr> <td><a name="SkCanvas_drawImageLattice_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="SkPaint_Reference#Paint">Paint</a> containing <a href="undocumented#Blend_Mode">Blend Mode</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and so on; or nullptr</td> @@ -4197,11 +4196,11 @@ void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, Draw <a href="#SkCanvas_drawText_text">text</a>, with origin at (<a href="#SkCanvas_drawText_x">x</a>, <a href="#SkCanvas_drawText_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawText_paint">paint</a>. -<a href="#SkCanvas_drawText_text">text</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawText_text">text</a> encoding is +<a href="#SkCanvas_drawText_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawText_text">text</a> is encoded as <a href="undocumented#UTF_8">UTF-8</a>. <a href="#SkCanvas_drawText_x">x</a> and <a href="#SkCanvas_drawText_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default -<a href="#SkCanvas_drawText_text">text</a> draws left to right, positioning the first glyph's left side bearing at <a href="#SkCanvas_drawText_x">x</a> +<a href="#SkCanvas_drawText_text">text</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawText_x">x</a> and its baseline at <a href="#SkCanvas_drawText_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. All elements of <a href="#SkCanvas_drawText_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4240,12 +4239,12 @@ void drawString(const char* string, SkScalar x, SkScalar y, const SkPaint& paint Draw null terminated <a href="#SkCanvas_drawString_string">string</a>, with origin at (<a href="#SkCanvas_drawString_x">x</a>, <a href="#SkCanvas_drawString_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawString_paint">paint</a>. -<a href="#SkCanvas_drawString_string">string</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawString_string">string</a> encoding is -<a href="undocumented#UTF_8">UTF-8</a>. Other values of <a href="#Text_Encoding">Paint Text Encoding</a> are unlikely to produce the desired +<a href="#SkCanvas_drawString_string">string</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, strings are encoded +as <a href="undocumented#UTF_8">UTF-8</a>. Other values of <a href="#Text_Encoding">Paint Text Encoding</a> are unlikely to produce the desired results, since zero bytes may be embedded in the <a href="#SkCanvas_drawString_string">string</a>. <a href="#SkCanvas_drawString_x">x</a> and <a href="#SkCanvas_drawString_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default -<a href="#SkCanvas_drawString_string">string</a> draws left to right, positioning the first glyph's left side bearing at <a href="#SkCanvas_drawString_x">x</a> +<a href="#SkCanvas_drawString_string">string</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawString_x">x</a> and its baseline at <a href="#SkCanvas_drawString_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. All elements of <a href="#SkCanvas_drawString_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4284,12 +4283,12 @@ void drawString(const SkString& string, SkScalar x, SkScalar y, Draw null terminated <a href="#SkCanvas_drawString_2_string">string</a>, with origin at (<a href="#SkCanvas_drawString_2_x">x</a>, <a href="#SkCanvas_drawString_2_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawString_2_paint">paint</a>. -<a href="#SkCanvas_drawString_2_string">string</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawString_2_string">string</a> encoding is -<a href="undocumented#UTF_8">UTF-8</a>. Other values of <a href="#Text_Encoding">Paint Text Encoding</a> are unlikely to produce the desired +<a href="#SkCanvas_drawString_2_string">string</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, strings are encoded +as <a href="undocumented#UTF_8">UTF-8</a>. Other values of <a href="#Text_Encoding">Paint Text Encoding</a> are unlikely to produce the desired results, since zero bytes may be embedded in the <a href="#SkCanvas_drawString_2_string">string</a>. <a href="#SkCanvas_drawString_2_x">x</a> and <a href="#SkCanvas_drawString_2_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default -<a href="#SkCanvas_drawString_2_string">string</a> draws left to right, positioning the first glyph's left side bearing at <a href="#SkCanvas_drawString_2_x">x</a> +<a href="#SkCanvas_drawString_2_string">string</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawString_2_x">x</a> and its baseline at <a href="#SkCanvas_drawString_2_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. All elements of <a href="#SkCanvas_drawString_2_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4332,9 +4331,9 @@ Draw each glyph in <a href="#SkCanvas_drawPosText_text">text</a> with the origin <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPosText_paint">paint</a>. The number of entries in <a href="#SkCanvas_drawPosText_pos">pos</a> array must match the number of <a href="#Glyph">Glyphs</a> described by <a href="#SkCanvas_drawPosText_byteLength">byteLength</a> of <a href="#SkCanvas_drawPosText_text">text</a>. -<a href="#SkCanvas_drawPosText_text">text</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawPosText_text">text</a> encoding is +<a href="#SkCanvas_drawPosText_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawPosText_text">text</a> is encoded as <a href="undocumented#UTF_8">UTF-8</a>. <a href="#SkCanvas_drawPosText_pos">pos</a> elements' meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; -by default each glyph's left side bearing is positioned at x and its +by default each glyph left side bearing is positioned at x and its baseline is positioned at y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. @@ -4343,7 +4342,7 @@ All elements of <a href="#SkCanvas_drawPosText_paint">paint</a>: <a href="undocu filled 12 point black <a href="#Glyph">Glyphs</a>. Layout engines such as <a href="undocumented#Harfbuzz">Harfbuzz</a> typically position each glyph -rather than using the font's advance widths. +rather than using the font advance widths. ### Parameters @@ -4376,9 +4375,9 @@ Draw each glyph in <a href="#SkCanvas_drawPosTextH_text">text</a> with its (x, y <a href="#SkCanvas_drawPosTextH_constY">constY</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPosTextH_paint">paint</a>. The number of entries in <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> array must match the number of <a href="#Glyph">Glyphs</a> described by <a href="#SkCanvas_drawPosTextH_byteLength">byteLength</a> of <a href="#SkCanvas_drawPosTextH_text">text</a>. -<a href="#SkCanvas_drawPosTextH_text">text</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawPosTextH_text">text</a> encoding is +<a href="#SkCanvas_drawPosTextH_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawPosTextH_text">text</a> is encoded as <a href="undocumented#UTF_8">UTF-8</a>. <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> elements' meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; -by default each glyph's left side bearing is positioned at an <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> element and +by default each glyph left side bearing is positioned at an <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> element and its baseline is positioned at <a href="#SkCanvas_drawPosTextH_constY">constY</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. @@ -4387,7 +4386,7 @@ All elements of <a href="#SkCanvas_drawPosTextH_paint">paint</a>: <a href="undoc filled 12 point black <a href="#Glyph">Glyphs</a>. Layout engines such as <a href="undocumented#Harfbuzz">Harfbuzz</a> typically position each glyph -rather than using the font's advance widths if all <a href="#Glyph">Glyphs</a> share the same +rather than using the font advance widths if all <a href="#Glyph">Glyphs</a> share the same baseline. ### Parameters @@ -4424,12 +4423,12 @@ Draw <a href="#SkCanvas_drawTextOnPathHV_text">text</a> on <a href="SkPath_Refer Origin of <a href="#SkCanvas_drawTextOnPathHV_text">text</a> is at distance <a href="#SkCanvas_drawTextOnPathHV_hOffset">hOffset</a> along the <a href="#SkCanvas_drawTextOnPathHV_path">path</a>, offset by a perpendicular vector of length <a href="#SkCanvas_drawTextOnPathHV_vOffset">vOffset</a>. If the <a href="#SkCanvas_drawTextOnPathHV_path">path</a> section corresponding the glyph advance is curved, the glyph is drawn curved to match; control points in the glyph are -mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPathHV_path">path</a>. If the <a href="#SkCanvas_drawTextOnPathHV_text">text</a>'s advance is larger +mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPathHV_path">path</a>. If the <a href="#SkCanvas_drawTextOnPathHV_text">text</a> advance is larger than the <a href="#SkCanvas_drawTextOnPathHV_path">path</a> length, the excess <a href="#SkCanvas_drawTextOnPathHV_text">text</a> is clipped. -<a href="#SkCanvas_drawTextOnPathHV_text">text</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPathHV_text">text</a> encoding is +<a href="#SkCanvas_drawTextOnPathHV_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPathHV_text">text</a> is encoded as <a href="undocumented#UTF_8">UTF-8</a>. Origin meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by -default <a href="#SkCanvas_drawTextOnPathHV_text">text</a> positions the first glyph's left side bearing at origin x and its +default <a href="#SkCanvas_drawTextOnPathHV_text">text</a> positions the first glyph left side bearing at origin x and its baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. All elements of <a href="#SkCanvas_drawTextOnPathHV_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4472,12 +4471,12 @@ Draw <a href="#SkCanvas_drawTextOnPath_text">text</a> on <a href="SkPath_Referen Origin of <a href="#SkCanvas_drawTextOnPath_text">text</a> is at beginning of <a href="#SkCanvas_drawTextOnPath_path">path</a> offset by <a href="#SkCanvas_drawTextOnPath_matrix">matrix</a>, if provided, before it is mapped to <a href="#SkCanvas_drawTextOnPath_path">path</a>. If the <a href="#SkCanvas_drawTextOnPath_path">path</a> section corresponding the glyph advance is curved, the glyph is drawn curved to match; control points in the glyph are -mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPath_path">path</a>. If the <a href="#SkCanvas_drawTextOnPath_text">text</a>'s advance is larger +mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPath_path">path</a>. If the <a href="#SkCanvas_drawTextOnPath_text">text</a> advance is larger than the <a href="#SkCanvas_drawTextOnPath_path">path</a> length, the excess <a href="#SkCanvas_drawTextOnPath_text">text</a> is clipped. -<a href="#SkCanvas_drawTextOnPath_text">text</a>'s meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPath_text">text</a> encoding is +<a href="#SkCanvas_drawTextOnPath_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPath_text">text</a> is encoded as <a href="undocumented#UTF_8">UTF-8</a>. Origin meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by -default <a href="#SkCanvas_drawTextOnPath_text">text</a> positions the first glyph's left side bearing at origin x and its +default <a href="#SkCanvas_drawTextOnPath_text">text</a> positions the first glyph left side bearing at origin x and its baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>. All elements of <a href="#SkCanvas_drawTextOnPath_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4521,7 +4520,7 @@ using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPai <a href="undocumented#RSXform">RSXform</a> array specifies a separate square <a href="#SkCanvas_scale">scale</a>, rotation, and translation for each glyph. -Optional <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawTextRSXform_cullRect">cullRect</a> is a conservative bounds of <a href="#SkCanvas_drawTextRSXform_text">text</a>, taking into account +Optional <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawTextRSXform_cullRect">cullRect</a> is a conservative bounds of <a href="#SkCanvas_drawTextRSXform_text">text</a>, taking into account <a href="undocumented#RSXform">RSXform</a> and <a href="#SkCanvas_drawTextRSXform_paint">paint</a>. If <a href="#SkCanvas_drawTextRSXform_cullRect">cullRect</a> is outside of <a href="#Clip">Clip</a>, canvas can skip drawing. All elements of <a href="#SkCanvas_drawTextRSXform_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, @@ -4537,7 +4536,7 @@ byte length of <a href="#SkCanvas_drawTextRSXform_text">text</a> array</td> </tr> <tr> <td><a name="SkCanvas_drawTextRSXform_xform"> <code><strong>xform </strong></code> </a></td> <td> <a href="undocumented#RSXform">RSXform</a> rotates, scales, and translates each glyph individually</td> </tr> <tr> <td><a name="SkCanvas_drawTextRSXform_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> bounds of <a href="#SkCanvas_drawTextRSXform_text">text</a> for efficient clipping; or nullptr</td> +<a href="SkRect_Reference#Rect">Rect</a> bounds of <a href="#SkCanvas_drawTextRSXform_text">text</a> for efficient clipping; or nullptr</td> </tr> <tr> <td><a name="SkCanvas_drawTextRSXform_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="#SkCanvas_drawTextRSXform_text">text</a> size, blend, color, and so on, used to draw</td> </tr> @@ -4588,7 +4587,7 @@ blend, color, stroking, and so on, used to draw</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, +void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaint& paint) </pre> @@ -4650,7 +4649,7 @@ recorded drawing commands to play</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPicture(const sk_sp<SkPicture>& picture) +void drawPicture(const sk_sp<SkPicture>& picture) </pre> Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_2_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. @@ -4702,7 +4701,7 @@ recorded drawing commands to play</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPicture(const sk_sp<SkPicture>& picture, const SkMatrix* matrix, +void drawPicture(const sk_sp<SkPicture>& picture, const SkMatrix* matrix, const SkPaint* paint) </pre> @@ -4760,7 +4759,7 @@ specifies the <a href="undocumented#Shader">Shader</a>, used as <a href="undocum --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, +void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint) </pre> @@ -4797,20 +4796,20 @@ void drawPatch(const SkPoint cubics[12], const SkColor colors[4], Draws a <a href="undocumented#Coons">Coons</a> patch: the interpolation of four <a href="#SkCanvas_drawPatch_cubics">cubics</a> with shared corners, associating a color, and optionally a texture coordinate, with each corner. -The <a href="undocumented#Coons">Coons</a> patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPatch_paint">paint</a>'s <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, +The <a href="undocumented#Coons">Coons</a> patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>. If <a href="undocumented#Shader">Shader</a> is provided it is treated as the <a href="undocumented#Coons">Coons</a> patch texture; <a href="undocumented#Blend_Mode">Blend Mode</a> <a href="#SkCanvas_drawPatch_mode">mode</a> combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if both are provided. -<a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top left corner, +<a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner, in clockwise order, sharing every fourth point. The last <a href="#Cubic">Cubic</a> ends at the first point. -<a href="undocumented#Color">Color</a> array color associates <a href="#SkCanvas_drawPatch_colors">colors</a> with corners in top left, top right, -bottom right, bottom left order. +<a href="undocumented#Color">Color</a> array color associates <a href="#SkCanvas_drawPatch_colors">colors</a> with corners in top-left, top-right, +bottom-right, bottom-left order. If <a href="#SkCanvas_drawPatch_paint">paint</a> contains <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_texCoords">texCoords</a> maps <a href="undocumented#Shader">Shader</a> as texture to -corners in top left, top right, bottom right, bottom left order. +corners in top-left, top-right, bottom-right, bottom-left order. ### Parameters @@ -4843,20 +4842,20 @@ void drawPatch(const SkPoint cubics[12], const SkColor colors[4], Draws <a href="#Cubic">Cubic</a> <a href="undocumented#Coons">Coons</a> patch: the interpolation of four <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> with shared corners, associating a color, and optionally a texture coordinate, with each corner. -The <a href="undocumented#Coons">Coons</a> patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPatch_2_paint">paint</a>'s <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, +The <a href="undocumented#Coons">Coons</a> patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_2_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>. If <a href="undocumented#Shader">Shader</a> is provided it is treated as the <a href="undocumented#Coons">Coons</a> patch texture; <a href="undocumented#Blend_Mode">Blend Mode</a> mode combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_2_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if both are provided. -<a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top left corner, +<a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner, in clockwise order, sharing every fourth point. The last <a href="#Cubic">Cubic</a> ends at the first point. -<a href="undocumented#Color">Color</a> array color associates <a href="#SkCanvas_drawPatch_2_colors">colors</a> with corners in top left, top right, -bottom right, bottom left order. +<a href="undocumented#Color">Color</a> array color associates <a href="#SkCanvas_drawPatch_2_colors">colors</a> with corners in top-left, top-right, +bottom-right, bottom-left order. If <a href="#SkCanvas_drawPatch_2_paint">paint</a> contains <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Point">Point</a> array <a href="#SkCanvas_drawPatch_2_texCoords">texCoords</a> maps <a href="undocumented#Shader">Shader</a> as texture to -corners in top left, top right, bottom right, bottom left order. +corners in top-left, top-right, bottom-right, bottom-left order. ### Parameters @@ -4894,7 +4893,7 @@ void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[] Draw a set of sprites from <a href="#SkCanvas_drawAtlas_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_paint">paint</a>. <a href="#SkCanvas_drawAtlas_paint">paint</a> uses <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a> -to draw, if present. For each entry in the array, <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_tex">tex</a> locates sprite in +to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_tex">tex</a> locates sprite in <a href="#SkCanvas_drawAtlas_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_xform">xform</a> transforms it into destination space. <a href="#SkCanvas_drawAtlas_xform">xform</a>, text, and <a href="#SkCanvas_drawAtlas_colors">colors</a> if present, must contain <a href="#SkCanvas_drawAtlas_count">count</a> entries. @@ -4909,7 +4908,7 @@ If <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is outside of <a href="#C </tr> <tr> <td><a name="SkCanvas_drawAtlas_xform"> <code><strong>xform </strong></code> </a></td> <td> <a href="undocumented#RSXform">RSXform</a> mappings for sprites in <a href="#SkCanvas_drawAtlas_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_tex"> <code><strong>tex </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_atlas">atlas</a></td> +<a href="SkRect_Reference#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_colors"> <code><strong>colors </strong></code> </a></td> <td> one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_count"> <code><strong>count </strong></code> </a></td> <td> @@ -4930,14 +4929,14 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], +void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], const SkRect tex[], const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect, const SkPaint* paint) </pre> Draw a set of sprites from <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_2_paint">paint</a>. <a href="#SkCanvas_drawAtlas_2_paint">paint</a> uses <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a> -to draw, if present. For each entry in the array, <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_2_tex">tex</a> locates sprite in +to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_2_tex">tex</a> locates sprite in <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_2_xform">xform</a> transforms it into destination space. <a href="#SkCanvas_drawAtlas_2_xform">xform</a>, text, and <a href="#SkCanvas_drawAtlas_2_colors">colors</a> if present, must contain <a href="#SkCanvas_drawAtlas_2_count">count</a> entries. @@ -4952,7 +4951,7 @@ If <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is outside of <a href=" </tr> <tr> <td><a name="SkCanvas_drawAtlas_2_xform"> <code><strong>xform </strong></code> </a></td> <td> <a href="undocumented#RSXform">RSXform</a> mappings for sprites in <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_2_tex"> <code><strong>tex </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a></td> +<a href="SkRect_Reference#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_2_colors"> <code><strong>colors </strong></code> </a></td> <td> one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_2_count"> <code><strong>count </strong></code> </a></td> <td> @@ -4979,7 +4978,7 @@ void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[] Draw a set of sprites from <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_3_paint">paint</a>. <a href="#SkCanvas_drawAtlas_3_paint">paint</a> uses <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a> -to draw, if present. For each entry in the array, <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_3_tex">tex</a> locates sprite in +to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_3_tex">tex</a> locates sprite in <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_3_xform">xform</a> transforms it into destination space. <a href="#SkCanvas_drawAtlas_3_xform">xform</a> and text must contain <a href="#SkCanvas_drawAtlas_3_count">count</a> entries. @@ -4993,7 +4992,7 @@ If <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is outside of <a href=" </tr> <tr> <td><a name="SkCanvas_drawAtlas_3_xform"> <code><strong>xform </strong></code> </a></td> <td> <a href="undocumented#RSXform">RSXform</a> mappings for sprites in <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_3_tex"> <code><strong>tex </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a></td> +<a href="SkRect_Reference#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_3_count"> <code><strong>count </strong></code> </a></td> <td> number of sprites to draw</td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_3_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td> @@ -5010,14 +5009,14 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td> --- <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], +void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], const SkRect tex[], int count, const SkRect* cullRect, const SkPaint* paint) </pre> Draw a set of sprites from <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_4_paint">paint</a>. <a href="#SkCanvas_drawAtlas_4_paint">paint</a> uses <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a> -to draw, if present. For each entry in the array, <a href="undocumented#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_4_tex">tex</a> locates sprite in +to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_4_tex">tex</a> locates sprite in <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_4_xform">xform</a> transforms it into destination space. <a href="#SkCanvas_drawAtlas_4_xform">xform</a> and text must contain <a href="#SkCanvas_drawAtlas_4_count">count</a> entries. @@ -5031,7 +5030,7 @@ If <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is outside of <a href=" </tr> <tr> <td><a name="SkCanvas_drawAtlas_4_xform"> <code><strong>xform </strong></code> </a></td> <td> <a href="undocumented#RSXform">RSXform</a> mappings for sprites in <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_4_tex"> <code><strong>tex </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a></td> +<a href="SkRect_Reference#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a></td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_4_count"> <code><strong>count </strong></code> </a></td> <td> number of sprites to draw</td> </tr> <tr> <td><a name="SkCanvas_drawAtlas_4_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td> @@ -5112,7 +5111,7 @@ offset into <a href="#Canvas">Canvas</a> writable pixels in <a href="#SkCanvas_d void drawAnnotation(const SkRect& rect, const char key[], SkData* value) </pre> -Associate <a href="undocumented#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a key-value pair, where the <a href="#SkCanvas_drawAnnotation_key">key</a> is +Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a key-value pair, where the <a href="#SkCanvas_drawAnnotation_key">key</a> is a null-terminated utf8 string, and optional <a href="#SkCanvas_drawAnnotation_value">value</a> is stored as <a href="undocumented#Data">Data</a>. Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to @@ -5121,7 +5120,7 @@ Only some canvas implementations, such as recording to <a href="undocumented#Pic ### Parameters <table> <tr> <td><a name="SkCanvas_drawAnnotation_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> extent of canvas to annotate</td> +<a href="SkRect_Reference#Rect">Rect</a> extent of canvas to annotate</td> </tr> <tr> <td><a name="SkCanvas_drawAnnotation_key"> <code><strong>key </strong></code> </a></td> <td> string used for lookup</td> </tr> <tr> <td><a name="SkCanvas_drawAnnotation_value"> <code><strong>value </strong></code> </a></td> <td> @@ -5137,10 +5136,10 @@ data holding <a href="#SkCanvas_drawAnnotation_value">value</a> stored in annota <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> void drawAnnotation(const SkRect& rect, const char key[], - const sk_sp<SkData>& value) + const sk_sp<SkData>& value) </pre> -Associate <a href="undocumented#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a key-value pair, where the <a href="#SkCanvas_drawAnnotation_2_key">key</a> is +Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a key-value pair, where the <a href="#SkCanvas_drawAnnotation_2_key">key</a> is a null-terminated utf8 string, and optional <a href="#SkCanvas_drawAnnotation_2_value">value</a> is stored as <a href="undocumented#Data">Data</a>. Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to @@ -5149,7 +5148,7 @@ Only some canvas implementations, such as recording to <a href="undocumented#Pic ### Parameters <table> <tr> <td><a name="SkCanvas_drawAnnotation_2_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> extent of canvas to annotate</td> +<a href="SkRect_Reference#Rect">Rect</a> extent of canvas to annotate</td> </tr> <tr> <td><a name="SkCanvas_drawAnnotation_2_key"> <code><strong>key </strong></code> </a></td> <td> string used for lookup</td> </tr> <tr> <td><a name="SkCanvas_drawAnnotation_2_value"> <code><strong>value </strong></code> </a></td> <td> @@ -5224,12 +5223,12 @@ clip is empty virtual bool isClipRect() const </pre> -Returns true if <a href="#Clip">Clip</a> is <a href="undocumented#Rect">Rect</a> and not empty. -Returns false if the clip is empty, or if it is not <a href="undocumented#Rect">Rect</a>. +Returns true if <a href="#Clip">Clip</a> is <a href="SkRect_Reference#Rect">Rect</a> and not empty. +Returns false if the clip is empty, or if it is not <a href="SkRect_Reference#Rect">Rect</a>. ### Return Value -true if <a href="#Clip">Clip</a> is <a href="undocumented#Rect">Rect</a> and not empty +true if <a href="#Clip">Clip</a> is <a href="SkRect_Reference#Rect">Rect</a> and not empty ### Example diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md index d7ba1e232a..e539b3a628 100644 --- a/site/user/api/SkPaint_Reference.md +++ b/site/user/api/SkPaint_Reference.md @@ -88,7 +88,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#SkPaint_Hinting">Hinting</a> | Level of glyph outline adjustment. | | <a href="#SkPaint_Join">Join</a> | Corner geometry on stroked shapes. | | <a href="#SkPaint_Style">Style</a> | Stroke, fill, or both. | -| <a href="#SkPaint_TextEncoding">TextEncoding</a> | Character or glyph encoding size. | +| <a href="#SkPaint_TextEncoding">TextEncoding</a> | Character or glyph encoded size. | ## <a name="Structs"></a> Structs @@ -154,7 +154,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#SkPaint_getStyle">getStyle</a> | Returns <a href="#SkPaint_Style">Style</a>: stroke, fill, or both. | | <a href="#SkPaint_getTextAlign">getTextAlign</a> | Returns <a href="#SkPaint_Align">Align</a>: left, center, or right. | | <a href="#SkPaint_getTextBlobIntercepts">getTextBlobIntercepts</a> | Returns where lines intersect <a href="undocumented#Text_Blob">Text Blob</a>; underlines. | -| <a href="#SkPaint_getTextEncoding">getTextEncoding</a> | Returns character or glyph encoding size. | +| <a href="#SkPaint_getTextEncoding">getTextEncoding</a> | Returns character or glyph encoded size. b | | <a href="#SkPaint_getTextIntercepts">getTextIntercepts</a> | Returns where lines intersect text; underlines. | | <a href="#SkPaint_getTextPath">getTextPath</a> | Returns <a href="SkPath_Reference#Path">Path</a> equivalent to text. | | <a href="#SkPaint_getTextScaleX">getTextScaleX</a> | Returns the text horizontal scale; condensed text. | @@ -212,7 +212,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#SkPaint_setStyle">setStyle</a> | Sets <a href="#SkPaint_Style">Style</a>: stroke, fill, or both. | | <a href="#SkPaint_setSubpixelText">setSubpixelText</a> | Sets or clears <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a>. | | <a href="#SkPaint_setTextAlign">setTextAlign</a> | Sets <a href="#SkPaint_Align">Align</a>: left, center, or right. | -| <a href="#SkPaint_setTextEncoding">setTextEncoding</a> | Sets character or glyph encoding size. | +| <a href="#SkPaint_setTextEncoding">setTextEncoding</a> | Sets character or glyph encoded size. | | <a href="#SkPaint_setTextScaleX">setTextScaleX</a> | Sets the text horizontal scale; condensed text. | | <a href="#SkPaint_setTextSkewX">setTextSkewX</a> | Sets the text horizontal skew; oblique text. | | <a href="#SkPaint_setTextSize">setTextSize</a> | Sets text size in points. | @@ -369,8 +369,8 @@ path effect unique: true void reset() </pre> -Sets all paint's contents to their initial values. This is equivalent to replacing -the paint with the result of <a href="#SkPaint_empty_constructor">SkPaint()</a>. +Sets all <a href="#Paint">Paint</a> contents to their initial values. This is equivalent to replacing +<a href="#Paint">Paint</a> with the result of <a href="#SkPaint_empty_constructor">SkPaint()</a>. ### Example @@ -949,7 +949,7 @@ at compile time. <div><fiddle-embed name="a6575a49467ce8d28bb01cc7638fa04d"><div>A red line is drawn with transparency on the edges to make it look smoother. A blue line draws only where the pixel centers are contained. -The lines are drawn into <a href="undocumented#Bitmap">Bitmap</a>, then drawn magnified to make the +The lines are drawn into <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, then drawn magnified to make the <a href="#Alias">Aliasing</a> easier to see.</div></fiddle-embed></div> <a name="SkPaint_isAntiAlias"></a> @@ -1361,7 +1361,7 @@ the outline glyph if <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmap includes an embedded bitmap <a href="undocumented#Glyph">Glyph</a> at odd font sizes. This example works on platforms that use <a href="undocumented#FreeType">FreeType</a> as their <a href="#Engine">Font Engine</a>. <a href="undocumented#Windows">Windows</a> may, but is not required to, return a bitmap glyph if -<a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> is set.</div><a href="undocumented#SkBitmap">SkBitmap</a> bitmap; +<a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> is set.</div><a href="SkBitmap_Reference#SkBitmap">SkBitmap</a> bitmap; bitmap.allocN32Pixels(30, 15); bitmap.eraseColor(0); <a href="SkCanvas_Reference#SkCanvas">SkCanvas</a> offscreen(bitmap); @@ -1601,7 +1601,7 @@ paint1 == paint2 # <a name="Fake_Bold"></a> Fake Bold <a href="#Fake_Bold">Fake Bold</a> approximates the bold font style accompanying a normal font when a bold font face is not available. <a href="undocumented#Skia">Skia</a> does not provide font substitution; it is up to the client to find the -bold font face using the platform's <a href="undocumented#Font_Manager">Font Manager</a>. +bold font face using the platform <a href="undocumented#Font_Manager">Font Manager</a>. Use <a href="#Text_Skew_X">Text Skew X</a> to approximate an italic font style when the italic font face is not available. @@ -1687,7 +1687,7 @@ spacing by the difference of the hinted and <a href="undocumented#Unhinted">Unhi <a href="undocumented#FreeType">FreeType</a> as their <a href="#Engine">Font Engine</a>. <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> is not related to text <a href="undocumented#Kerning">Kerning</a>, where the space between -a specific pair of characters is adjusted using data in the font's <a href="undocumented#Kerning">Kerning</a> tables. +a specific pair of characters is adjusted using data in the font <a href="undocumented#Kerning">Kerning</a> tables. <a name="SkPaint_isDevKernText"></a> ## isDevKernText @@ -1759,7 +1759,7 @@ in a noticeable difference. <td><a href="#SkCanvas_drawImageRect">SkCanvas::drawImageRect</a></td> </tr> </table> -and when <a href="#Paint">Paint</a> has a <a href="undocumented#Shader">Shader</a> specialization that uses <a href="undocumented#Image">Image</a> or <a href="undocumented#Bitmap">Bitmap</a>. +and when <a href="#Paint">Paint</a> has a <a href="undocumented#Shader">Shader</a> specialization that uses <a href="undocumented#Image">Image</a> or <a href="SkBitmap_Reference#Bitmap">Bitmap</a>. <a href="undocumented#Filter_Quality">Filter Quality</a> is <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a> by default. @@ -2044,10 +2044,10 @@ Set <a href="#Style">Style</a> to <a href="#SkPaint_kStroke_Style">kStroke Style ## <a name="Stroke"></a> Stroke -The stroke covers the area described by following the shape's edge with a pen or brush of +The stroke covers the area described by following the shape edge with a pen or brush of <a href="#Stroke_Width">Stroke Width</a>. The area covered where the shape starts and stops is described by <a href="#Stroke_Cap">Stroke Cap</a>. The area covered where the shape turns a corner is described by <a href="#Stroke_Join">Stroke Join</a>. -The stroke is centered on the shape; it extends equally on either side of the shape's edge. +The stroke is centered on the shape; it extends equally on either side of the shape edge. As <a href="#Stroke_Width">Stroke Width</a> gets smaller, the drawn path frame is thinner. <a href="#Stroke_Width">Stroke Width</a> less than one may have gaps, and if <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is set, <a href="#Alpha">Color Alpha</a> will increase to visually decrease coverage. @@ -2085,8 +2085,8 @@ a fill draw. <table> <tr> <td><a name="SkPaint_kFill_Style"> <code><strong>SkPaint::kFill_Style </strong></code> </a></td><td>0</td><td>Set to fill geometry. -Applies to <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. -<a href="undocumented#Bitmap">Bitmap</a>, <a href="undocumented#Image">Image</a>, <a href="#Patch">Patches</a>, <a href="undocumented#Region">Region</a>, <a href="#Sprite">Sprites</a>, and <a href="undocumented#Vertices">Vertices</a> are painted as if +Applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. +<a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="undocumented#Image">Image</a>, <a href="#Patch">Patches</a>, <a href="undocumented#Region">Region</a>, <a href="#Sprite">Sprites</a>, and <a href="undocumented#Vertices">Vertices</a> are painted as if <a href="#SkPaint_kFill_Style">kFill Style</a> is set, and ignore the set <a href="#SkPaint_Style">Style</a>. The <a href="#Fill_Type">Path Fill Type</a> specifies additional rules to fill the area outside the path edge, and to create an unfilled hole inside the shape. @@ -2094,14 +2094,14 @@ and to create an unfilled hole inside the shape. </tr> <tr> <td><a name="SkPaint_kStroke_Style"> <code><strong>SkPaint::kStroke_Style </strong></code> </a></td><td>1</td><td>Set to stroke geometry. -Applies to <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Arc">Arcs</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. +Applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Arc">Arcs</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. <a href="#Arc">Arcs</a>, <a href="#Line">Lines</a>, and <a href="#Point">Points</a>, are always drawn as if <a href="#SkPaint_kStroke_Style">kStroke Style</a> is set, and ignore the set <a href="#SkPaint_Style">Style</a>. The stroke construction is unaffected by the <a href="#Fill_Type">Path Fill Type</a>.</td> </tr> <tr> <td><a name="SkPaint_kStrokeAndFill_Style"> <code><strong>SkPaint::kStrokeAndFill_Style </strong></code> </a></td><td>2</td><td>Set to stroke and fill geometry. -Applies to <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. +Applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. <a href="SkPath_Reference#Path">Path</a> is treated as if it is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, and the set <a href="#Fill_Type">Path Fill Type</a> is ignored.</td> </tr> @@ -2189,14 +2189,14 @@ one of: <a href="#SkPaint_kFill_Style">kFill Style</a>, <a href="#SkPaint_kStrok # <a name="Stroke_Width"></a> Stroke Width <a href="#Stroke_Width">Stroke Width</a> sets the width for stroking. The width is the thickness -of the stroke perpendicular to the path's direction when the paint's style is +of the stroke perpendicular to the path direction when the paint style is set to <a href="#SkPaint_kStroke_Style">kStroke Style</a> or <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a>. When width is greater than zero, the stroke encompasses as many pixels partially or fully as needed. When the width equals zero, the paint enables hairlines; the stroke is always one pixel wide. -The stroke's dimensions are scaled by the canvas matrix, but <a href="#Hairline">Hairline</a> stroke +The stroke dimensions are scaled by the canvas matrix, but <a href="#Hairline">Hairline</a> stroke remains one pixel wide regardless of scaling. The default width for the paint is zero. @@ -2204,7 +2204,7 @@ The default width for the paint is zero. ### Example <div><fiddle-embed name="01e3e08a3022a351628ff54e84887756"><div>The pixels hit to represent thin lines vary with the angle of the -line and the platform's implementation.</div></fiddle-embed></div> +line and the platform implementation.</div></fiddle-embed></div> <a name="SkPaint_getStrokeWidth"></a> ## getStrokeWidth @@ -2417,7 +2417,7 @@ May be used to verify that <a href="#Stroke_Cap">Stroke Cap</a> is a legal value </tr> Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it -follows the <a href="#Contour">Path Contour</a>, moving parallel to the contours's direction. +follows the <a href="#Contour">Path Contour</a>, moving parallel to the contour direction. If the <a href="#Contour">Path Contour</a> is not terminated by <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a>, the contour has a visible beginning and end. @@ -2508,7 +2508,7 @@ kRound_Cap == paint.getStrokeCap() <a href="#Stroke_Join">Stroke Join</a> draws at the sharp corners of an open or closed <a href="#Contour">Path Contour</a>. Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it -follows the <a href="#Contour">Path Contour</a>, moving parallel to the contours's direction. +follows the <a href="#Contour">Path Contour</a>, moving parallel to the contour direction. If the contour direction changes abruptly, because the tangent direction leading to the end of a curve within the contour does not match the tangent direction of @@ -2792,7 +2792,7 @@ nullptr != shader ## refShader <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkShader> refShader() const +sk_sp<SkShader> refShader() const </pre> Optional colors used when filling a path, such as a gradient. @@ -2822,7 +2822,7 @@ shader unique: false ## setShader <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setShader(sk_sp<SkShader> shader) +void setShader(sk_sp<SkShader> shader) </pre> Optional colors used when filling a path, such as a gradient. @@ -2887,7 +2887,7 @@ nullptr != color filter ## refColorFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkColorFilter> refColorFilter() const +sk_sp<SkColorFilter> refColorFilter() const </pre> Returns <a href="undocumented#Color_Filter">Color Filter</a> if set, or nullptr. @@ -2916,7 +2916,7 @@ color filter unique: false ## setColorFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setColorFilter(sk_sp<SkColorFilter> colorFilter) +void setColorFilter(sk_sp<SkColorFilter> colorFilter) </pre> Sets <a href="undocumented#Color_Filter">Color Filter</a> to filter, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3085,7 +3085,7 @@ nullptr != path effect ## refPathEffect <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkPathEffect> refPathEffect() const +sk_sp<SkPathEffect> refPathEffect() const </pre> Returns <a href="undocumented#Path_Effect">Path Effect</a> if set, or nullptr. @@ -3114,7 +3114,7 @@ path effect unique: false ## setPathEffect <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setPathEffect(sk_sp<SkPathEffect> pathEffect) +void setPathEffect(sk_sp<SkPathEffect> pathEffect) </pre> Sets <a href="undocumented#Path_Effect">Path Effect</a> to <a href="#SkPaint_setPathEffect_pathEffect">pathEffect</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3181,7 +3181,7 @@ nullptr != mask filter ## refMaskFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkMaskFilter> refMaskFilter() const +sk_sp<SkMaskFilter> refMaskFilter() const </pre> Returns <a href="undocumented#Mask_Filter">Mask Filter</a> if set, or nullptr. @@ -3211,7 +3211,7 @@ mask filter unique: false ## setMaskFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setMaskFilter(sk_sp<SkMaskFilter> maskFilter) +void setMaskFilter(sk_sp<SkMaskFilter> maskFilter) </pre> Sets <a href="undocumented#Mask_Filter">Mask Filter</a> to <a href="#SkPaint_setMaskFilter_maskFilter">maskFilter</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3277,7 +3277,7 @@ nullptr != typeface ## refTypeface <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkTypeface> refTypeface() const +sk_sp<SkTypeface> refTypeface() const </pre> Increases <a href="undocumented#Typeface">Typeface</a> <a href="undocumented#Reference_Count">Reference Count</a> by one. @@ -3305,7 +3305,7 @@ typeface1 == typeface2 ## setTypeface <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setTypeface(sk_sp<SkTypeface> typeface) +void setTypeface(sk_sp<SkTypeface> typeface) </pre> Sets <a href="undocumented#Typeface">Typeface</a> to <a href="#SkPaint_setTypeface_typeface">typeface</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Typeface">Typeface</a>. @@ -3334,7 +3334,7 @@ and returns a <a href="undocumented#Mask">Mask</a>. creating a shadow effect. <a href="undocumented#Rasterizer">Rasterizer</a> forms the base of <a href="#Layer">Rasterizer Layer</a>, which creates effects like embossing and outlining. -<a href="undocumented#Rasterizer">Rasterizer</a> applies to <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Arc">Arcs</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, +<a href="undocumented#Rasterizer">Rasterizer</a> applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Arc">Arcs</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>, <a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>. ### Example @@ -3374,7 +3374,7 @@ nullptr != rasterizer ## refRasterizer <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkRasterizer> refRasterizer() const +sk_sp<SkRasterizer> refRasterizer() const </pre> Returns <a href="undocumented#Rasterizer">Rasterizer</a> if set, or nullptr. @@ -3403,7 +3403,7 @@ rasterizer unique: false ## setRasterizer <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setRasterizer(sk_sp<SkRasterizer> rasterizer) +void setRasterizer(sk_sp<SkRasterizer> rasterizer) </pre> Sets <a href="undocumented#Rasterizer">Rasterizer</a> to <a href="#SkPaint_setRasterizer_rasterizer">rasterizer</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3473,7 +3473,7 @@ nullptr != image filter ## refImageFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkImageFilter> refImageFilter() const +sk_sp<SkImageFilter> refImageFilter() const </pre> Returns <a href="undocumented#Image_Filter">Image Filter</a> if set, or nullptr. @@ -3502,7 +3502,7 @@ image filter unique: false ## setImageFilter <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setImageFilter(sk_sp<SkImageFilter> imageFilter) +void setImageFilter(sk_sp<SkImageFilter> imageFilter) </pre> Sets <a href="undocumented#Image_Filter">Image Filter</a> to <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3570,7 +3570,7 @@ nullptr != draw looper ## refDrawLooper <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkDrawLooper> refDrawLooper() const +sk_sp<SkDrawLooper> refDrawLooper() const </pre> Returns <a href="undocumented#Draw_Looper">Draw Looper</a> if set, or nullptr. @@ -3616,7 +3616,7 @@ Deprecated. ## setDrawLooper <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setDrawLooper(sk_sp<SkDrawLooper> drawLooper) +void setDrawLooper(sk_sp<SkDrawLooper> drawLooper) </pre> Sets <a href="undocumented#Draw_Looper">Draw Looper</a> to <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous @@ -3642,7 +3642,7 @@ iterates through drawing one or more time, altering <a href="#Paint">Paint</a></ ## setLooper <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setLooper(sk_sp<SkDrawLooper> drawLooper) +void setLooper(sk_sp<SkDrawLooper> drawLooper) </pre> Deprecated. @@ -3953,10 +3953,10 @@ enum <a href="#SkPaint_TextEncoding">TextEncoding</a> { };</pre> <a href="#SkPaint_TextEncoding">TextEncoding</a> determines whether text specifies character codes and their encoded -size, or glyph indices. Character codes use the encoding specified by the<a href="undocumented#Unicode">Unicode</a> standard. +size, or glyph indices. Characters are encoded as specified by the<a href="undocumented#Unicode">Unicode</a> standard. Character codes encoded size are specified by <a href="undocumented#UTF_8">UTF-8</a>, <a href="undocumented#UTF_16">UTF-16</a>, or <a href="undocumented#UTF_32">UTF-32</a>. -All character encodings are able to represent all of <a href="undocumented#Unicode">Unicode</a>, differing only +All character code formats are able to represent all of <a href="undocumented#Unicode">Unicode</a>, differing only in the total storage required. <a href="undocumented#UTF_8">UTF-8</a> (<a href="undocumented#RFC">RFC</a> 3629)encodes each character as one or more 8-bit bytes. @@ -3990,9 +3990,9 @@ A glyph index is a 16-bit word. ### Example -<div><fiddle-embed name="b29294e7f29d160a1b46abf2dcec9d2a"><div>First line has <a href="undocumented#UTF_8">UTF-8</a> encoding. -Second line has <a href="undocumented#UTF_16">UTF-16</a> encoding. -Third line has <a href="undocumented#UTF_32">UTF-32</a> encoding. +<div><fiddle-embed name="b29294e7f29d160a1b46abf2dcec9d2a"><div>First line is encoded in <a href="undocumented#UTF_8">UTF-8</a>. +Second line is encoded in <a href="undocumented#UTF_16">UTF-16</a>. +Third line is encoded in <a href="undocumented#UTF_32">UTF-32</a>. Fourth line has 16 bit glyph indices.</div></fiddle-embed></div> <a name="SkPaint_getTextEncoding"></a> @@ -4455,8 +4455,7 @@ Returns the number of glyph indices represented by <a href="#SkPaint_textToGlyph <a href="#Text_Encoding">Text Encoding</a> specifies how <a href="#SkPaint_textToGlyphs_text">text</a> represents characters or <a href="#SkPaint_textToGlyphs_glyphs">glyphs</a>. <a href="#SkPaint_textToGlyphs_glyphs">glyphs</a> may be nullptr, to compute the glyph count. -Does not check <a href="#SkPaint_textToGlyphs_text">text</a> for valid character encoding or valid -glyph indices. +Does not check <a href="#SkPaint_textToGlyphs_text">text</a> for valid character codes or valid glyph indices. If <a href="#SkPaint_textToGlyphs_byteLength">byteLength</a> equals zero, returns zero. If <a href="#SkPaint_textToGlyphs_byteLength">byteLength</a> includes a partial character, the partial character is ignored. @@ -5103,10 +5102,10 @@ effects in the paint (e.g. stroking). If needed, it uses the <a href="#SkPaint_c parameter. It returns the adjusted bounds that can then be used for <a href="#SkCanvas_quickReject">SkCanvas::quickReject</a> tests. -The returned <a href="undocumented#Rect">Rect</a> will either be <a href="#SkPaint_computeFastBounds_orig">orig</a> or <a href="#SkPaint_computeFastBounds_storage">storage</a>, thus the caller +The returned <a href="SkRect_Reference#Rect">Rect</a> will either be <a href="#SkPaint_computeFastBounds_orig">orig</a> or <a href="#SkPaint_computeFastBounds_storage">storage</a>, thus the caller should not rely on <a href="#SkPaint_computeFastBounds_storage">storage</a> being set to the result, but should always use the returned value. It is legal for <a href="#SkPaint_computeFastBounds_orig">orig</a> and <a href="#SkPaint_computeFastBounds_storage">storage</a> to be the same -<a href="undocumented#Rect">Rect</a>. +<a href="SkRect_Reference#Rect">Rect</a>. ### Parameters diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md index cbf344cd09..8f5ad4b029 100644 --- a/site/user/api/SkPath_Reference.md +++ b/site/user/api/SkPath_Reference.md @@ -13,11 +13,11 @@ containing two connected <a href="#Line">Lines</a> are described the <a href="#V with three entries, sharing the middle entry as the end of the first <a href="undocumented#Line">Line</a> and the start of the second <a href="undocumented#Line">Line</a>. -<a href="#Path">Path</a> components <a href="#Arc">Arc</a>, <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> are composed of +<a href="#Path">Path</a> components <a href="#Arc">Arc</a>, <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> are composed of <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> with as many <a href="#Verb">Verbs</a> and <a href="#Point">Points</a> required for an exact description. Once added to <a href="#Path">Path</a>, these components may lose their identity; although <a href="#Path">Path</a> can be inspected to determine if it describes a single -<a href="undocumented#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, <a href="undocumented#Round_Rect">Round Rect</a>, and so on. +<a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, <a href="undocumented#Round_Rect">Round Rect</a>, and so on. ### Example @@ -147,13 +147,13 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | <a href="#SkPath_addPath">addPath</a> | Adds contents of <a href="#Path">Path</a>. | | <a href="#SkPath_addPoly">addPoly</a> | Adds one <a href="#Contour">Contour</a> containing connected lines. | | <a href="#SkPath_addRRect">addRRect</a> | Adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Round_Rect">Round Rect</a>. | -| <a href="#SkPath_addRect">addRect</a> | Adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Rect">Rect</a>. | +| <a href="#SkPath_addRect">addRect</a> | Adds one <a href="#Contour">Contour</a> containing <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkPath_addRoundRect">addRoundRect</a> | Adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Round_Rect">Round Rect</a> with common corner radii. | | <a href="#SkPath_arcTo">arcTo</a> | Appends <a href="#Arc">Arc</a>. | | <a href="#SkPath_close">close</a> | Makes last <a href="#Contour">Contour</a> a loop. | | <a href="#SkPath_computeTightBounds">computeTightBounds</a> | Returns extent of geometry. | | <a href="#SkPath_conicTo">conicTo</a> | Appends <a href="#Conic">Conic</a>. | -| <a href="#SkPath_conservativelyContainsRect">conservativelyContainsRect</a> | Returns true if <a href="undocumented#Rect">Rect</a> may be inside. | +| <a href="#SkPath_conservativelyContainsRect">conservativelyContainsRect</a> | Returns true if <a href="SkRect_Reference#Rect">Rect</a> may be inside. | | <a href="#SkPath_contains">contains</a> | Returns if <a href="undocumented#Point">Point</a> is in fill area. | | <a href="#SkPath_countPoints">countPoints</a> | Returns <a href="#Point_Array">Point Array</a> length. | | <a href="#SkPath_countVerbs">countVerbs</a> | Returns <a href="#Verb_Array">Verb Array</a> length. | @@ -179,10 +179,10 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | <a href="#SkPath_isInverseFillType">isInverseFillType</a> | Returns if <a href="#Fill_Type">Fill Type</a> fills outside geometry. | | <a href="#SkPath_isLastContourClosed">isLastContourClosed</a> | Returns if final <a href="#Contour">Contour</a> forms a loop. | | <a href="#SkPath_isLine">isLine</a> | Returns if describes <a href="undocumented#Line">Line</a>. | -| <a href="#SkPath_isNestedFillRects">isNestedFillRects</a> | Returns if describes <a href="undocumented#Rect">Rect</a> pair, one inside the other. | +| <a href="#SkPath_isNestedFillRects">isNestedFillRects</a> | Returns if describes <a href="SkRect_Reference#Rect">Rect</a> pair, one inside the other. | | <a href="#SkPath_isOval">isOval</a> | Returns if describes <a href="undocumented#Oval">Oval</a>. | | <a href="#SkPath_isRRect">isRRect</a> | Returns if describes <a href="undocumented#Round_Rect">Round Rect</a>. | -| <a href="#SkPath_isRect">isRect</a> | Returns if describes <a href="undocumented#Rect">Rect</a>. | +| <a href="#SkPath_isRect">isRect</a> | Returns if describes <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkPath_isValid">isValid</a> | Returns if data is internally consistent. | | <a href="#SkPath_isVolatile">isVolatile</a> | Returns if <a href="undocumented#Device">Device</a> should not cache. | | <a href="#SkPath_lineTo">lineTo</a> | Appends <a href="undocumented#Line">Line</a>. | @@ -207,7 +207,7 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | <a href="#SkPath_setLastPt">setLastPt</a> | Replaces <a href="#Last_Point">Last Point</a>. | | <a href="#SkPath_swap">swap</a> | Exchanges <a href="#Path">Path</a> pair. | | <a href="#SkPath_toggleInverseFillType">toggleInverseFillType</a> | Toggles <a href="#Fill_Type">Fill Type</a> between inside and outside geometry. | -| <a href="#SkPath_transform">transform</a> | Applies <a href="undocumented#Matrix">Matrix</a> to <a href="#Point_Array">Point Array</a> and <a href="#Weight">Weights</a>. | +| <a href="#SkPath_transform">transform</a> | Applies <a href="SkMatrix_Reference#Matrix">Matrix</a> to <a href="#Point_Array">Point Array</a> and <a href="#Weight">Weights</a>. | | <a href="#SkPath_unique">unique</a> | Returns if data has single owner. | | <a href="#SkPath_updateBoundsCache">updateBoundsCache</a> | Refreshes result of <a href="#SkPath_getBounds">getBounds</a>. | | <a href="#SkPath_writeToMemory">writeToMemory</a> | Copies data to buffer. | @@ -312,7 +312,7 @@ When <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> multiple o measures along <a href="#Path">Path</a> to determine where to start and stop stroke; <a href="#Direction">Direction</a> will change dashed results as it steps clockwise or counterclockwise. -Closed <a href="#Contour">Contours</a> like <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> added with +Closed <a href="#Contour">Contours</a> like <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> added with <a href="#SkPath_kCW_Direction">kCW Direction</a> travel clockwise; the same added with <a href="#SkPath_kCCW_Direction">kCCW Direction</a> travel counterclockwise. @@ -1033,7 +1033,7 @@ Triggers performance optimizations on some <a href="undocumented#GPU_Surface">GP ### Parameters <table> <tr> <td><a name="SkPath_isOval_rect"> <code><strong>rect </strong></code> </a></td> <td> -storage for bounding <a href="undocumented#Rect">Rect</a> of <a href="undocumented#Oval">Oval</a>; may be nullptr</td> +storage for bounding <a href="SkRect_Reference#Rect">Rect</a> of <a href="undocumented#Oval">Oval</a>; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isOval_dir"> <code><strong>dir </strong></code> </a></td> <td> storage for <a href="#SkPath_Direction">Direction</a>; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isOval_start"> <code><strong>start </strong></code> </a></td> <td> @@ -1063,7 +1063,7 @@ bool isRRect(SkRRect* rrect, Direction* dir = nullptr, unsigned* start = nullptr </pre> Returns true if constructed by <a href="#SkPath_addRoundRect">addRoundRect</a>, <a href="#SkPath_addRRect">addRRect</a>; and if construction -is not empty, not <a href="undocumented#Rect">Rect</a>, and not <a href="undocumented#Oval">Oval</a>. <a href="#Path">Path</a> constructed with other calls +is not empty, not <a href="SkRect_Reference#Rect">Rect</a>, and not <a href="undocumented#Oval">Oval</a>. <a href="#Path">Path</a> constructed with other calls will not return true though <a href="#Path">Path</a> draws <a href="undocumented#Round_Rect">Round Rect</a>. <a href="#SkPath_isRRect_rrect">rrect</a> receives bounds of <a href="undocumented#Round_Rect">Round Rect</a>. @@ -1078,7 +1078,7 @@ Triggers performance optimizations on some <a href="undocumented#GPU_Surface">GP ### Parameters <table> <tr> <td><a name="SkPath_isRRect_rrect"> <code><strong>rrect </strong></code> </a></td> <td> -storage for bounding <a href="undocumented#Rect">Rect</a> of <a href="undocumented#Round_Rect">Round Rect</a>; may be nullptr</td> +storage for bounding <a href="SkRect_Reference#Rect">Rect</a> of <a href="undocumented#Round_Rect">Round Rect</a>; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isRRect_dir"> <code><strong>dir </strong></code> </a></td> <td> storage for <a href="#SkPath_Direction">Direction</a>; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isRRect_start"> <code><strong>start </strong></code> </a></td> <td> @@ -1789,7 +1789,7 @@ Returns minimum and maximum x and y values of <a href="#Point_Array">Point Array Returns (0, 0, 0, 0) if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> no points. Returned bounds width and height may be larger or smaller than area affected when <a href="#Path">Path</a> is drawn. -<a href="undocumented#Rect">Rect</a> returned includes all <a href="#Point">Points</a> added to <a href="#Path">Path</a>, including <a href="#Point">Points</a> associated with +<a href="SkRect_Reference#Rect">Rect</a> returned includes all <a href="#Point">Points</a> added to <a href="#Path">Path</a>, including <a href="#Point">Points</a> associated with <a href="#SkPath_kMove_Verb">kMove Verb</a> that define empty <a href="#Contour">Contours</a>. ### Return Value @@ -1914,7 +1914,7 @@ the <a href="undocumented#Point">Point</a> or <a href="undocumented#Line">Line</ ### Parameters <table> <tr> <td><a name="SkPath_conservativelyContainsRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a>, <a href="undocumented#Line">Line</a>, or <a href="undocumented#Point">Point</a> checked for containment</td> +<a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Line">Line</a>, or <a href="undocumented#Point">Point</a> checked for containment</td> </tr> </table> @@ -1924,11 +1924,11 @@ true if <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained ### Example -<div><fiddle-embed name="41638d13e40fa449ece354dde5fb1941"><div><a href="undocumented#Rect">Rect</a> is drawn in blue if it is contained by red <a href="#Path">Path</a>.</div></fiddle-embed></div> +<div><fiddle-embed name="41638d13e40fa449ece354dde5fb1941"><div><a href="SkRect_Reference#Rect">Rect</a> is drawn in blue if it is contained by red <a href="#Path">Path</a>.</div></fiddle-embed></div> ### See Also -<a href="#SkPath_contains">contains</a> <a href="undocumented#Op">Op</a> <a href="undocumented#Rect">Rect</a> <a href="#SkPath_Convexity">Convexity</a> +<a href="#SkPath_contains">contains</a> <a href="undocumented#Op">Op</a> <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkPath_Convexity">Convexity</a> --- @@ -3168,7 +3168,7 @@ bool isRect(SkRect* rect, bool* isClosed = nullptr, Direction* direction = nullptr) const </pre> -Returns true if <a href="#Path">Path</a> is equivalent to <a href="undocumented#Rect">Rect</a> when filled. +Returns true if <a href="#Path">Path</a> is equivalent to <a href="SkRect_Reference#Rect">Rect</a> when filled. If false: <a href="#SkPath_isRect_rect">rect</a>, <a href="#SkPath_isRect_isClosed">isClosed</a>, and <a href="#SkPath_isRect_direction">direction</a> are unchanged. If true: <a href="#SkPath_isRect_rect">rect</a>, <a href="#SkPath_isRect_isClosed">isClosed</a>, and <a href="#SkPath_isRect_direction">direction</a> are written to if not nullptr. @@ -3178,17 +3178,17 @@ that do not alter the area drawn by the returned <a href="#SkPath_isRect_rect">r ### Parameters <table> <tr> <td><a name="SkPath_isRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -storage for bounds of <a href="undocumented#Rect">Rect</a>; may be nullptr</td> +storage for bounds of <a href="SkRect_Reference#Rect">Rect</a>; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isRect_isClosed"> <code><strong>isClosed </strong></code> </a></td> <td> storage set to true if <a href="#Path">Path</a> is closed; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isRect_direction"> <code><strong>direction </strong></code> </a></td> <td> -storage set to <a href="undocumented#Rect">Rect</a> <a href="#SkPath_isRect_direction">direction</a>; may be nullptr</td> +storage set to <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkPath_isRect_direction">direction</a>; may be nullptr</td> </tr> </table> ### Return Value -true if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> <a href="undocumented#Rect">Rect</a> +true if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> <a href="SkRect_Reference#Rect">Rect</a> ### Example @@ -3221,17 +3221,17 @@ addPoly is rect (0, 0, 80, 80); is not closed; direction CCW bool isNestedFillRects(SkRect rect[2], Direction dirs[2] = nullptr) const </pre> -Returns true if <a href="#Path">Path</a> is equivalent to nested <a href="undocumented#Rect">Rect</a> pair when filled. +Returns true if <a href="#Path">Path</a> is equivalent to nested <a href="SkRect_Reference#Rect">Rect</a> pair when filled. If false, <a href="#SkPath_isNestedFillRects_rect">rect</a> and <a href="#SkPath_isNestedFillRects_dirs">dirs</a> are unchanged. If true, <a href="#SkPath_isNestedFillRects_rect">rect</a> and <a href="#SkPath_isNestedFillRects_dirs">dirs</a> are written to if not nullptr: -setting <a href="#SkPath_isNestedFillRects_rect">rect</a>[0] to outer <a href="undocumented#Rect">Rect</a>, and <a href="#SkPath_isNestedFillRects_rect">rect</a>[1] to inner <a href="undocumented#Rect">Rect</a>; -setting <a href="#SkPath_isNestedFillRects_dirs">dirs</a>[0] to <a href="#SkPath_Direction">Direction</a> of outer <a href="undocumented#Rect">Rect</a>, and <a href="#SkPath_isNestedFillRects_dirs">dirs</a>[1] to <a href="#SkPath_Direction">Direction</a> of inner -<a href="undocumented#Rect">Rect</a>. +setting <a href="#SkPath_isNestedFillRects_rect">rect</a>[0] to outer <a href="SkRect_Reference#Rect">Rect</a>, and <a href="#SkPath_isNestedFillRects_rect">rect</a>[1] to inner <a href="SkRect_Reference#Rect">Rect</a>; +setting <a href="#SkPath_isNestedFillRects_dirs">dirs</a>[0] to <a href="#SkPath_Direction">Direction</a> of outer <a href="SkRect_Reference#Rect">Rect</a>, and <a href="#SkPath_isNestedFillRects_dirs">dirs</a>[1] to <a href="#SkPath_Direction">Direction</a> of inner +<a href="SkRect_Reference#Rect">Rect</a>. ### Parameters <table> <tr> <td><a name="SkPath_isNestedFillRects_rect"> <code><strong>rect </strong></code> </a></td> <td> -storage for <a href="undocumented#Rect">Rect</a> pair; may be nullptr</td> +storage for <a href="SkRect_Reference#Rect">Rect</a> pair; may be nullptr</td> </tr> <tr> <td><a name="SkPath_isNestedFillRects_dirs"> <code><strong>dirs </strong></code> </a></td> <td> storage for <a href="#SkPath_Direction">Direction</a> pair; may be nullptr</td> </tr> @@ -3239,7 +3239,7 @@ storage for <a href="#SkPath_Direction">Direction</a> pair; may be nullptr</td> ### Return Value -true if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> nested <a href="undocumented#Rect">Rect</a> pair +true if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> nested <a href="SkRect_Reference#Rect">Rect</a> pair ### Example @@ -3267,15 +3267,15 @@ inner (12.5, 22.5, 27.5, 37.5); direction CCW void addRect(const SkRect& rect, Direction dir = kCW_Direction) </pre> -Add <a href="undocumented#Rect">Rect</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, three <a href="#SkPath_kLine_Verb">kLine Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>, -starting with top-left corner of <a href="undocumented#Rect">Rect</a>; followed by top-right, bottom-right, +Add <a href="SkRect_Reference#Rect">Rect</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, three <a href="#SkPath_kLine_Verb">kLine Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>, +starting with top-left corner of <a href="SkRect_Reference#Rect">Rect</a>; followed by top-right, bottom-right, and bottom-left if <a href="#SkPath_addRect_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>; or followed by bottom-left, bottom-right, and top-right if <a href="#SkPath_addRect_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>. ### Parameters <table> <tr> <td><a name="SkPath_addRect_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to add as a closed contour</td> +<a href="SkRect_Reference#Rect">Rect</a> to add as a closed contour</td> </tr> <tr> <td><a name="SkPath_addRect_dir"> <code><strong>dir </strong></code> </a></td> <td> <a href="#SkPath_Direction">Direction</a> to wind added contour</td> </tr> @@ -3283,8 +3283,8 @@ bottom-right, and top-right if <a href="#SkPath_addRect_dir">dir</a> is <a href= ### Example -<div><fiddle-embed name="0f841e4eaebb613b5069800567917c2d"><div>The left <a href="undocumented#Rect">Rect</a> dashes starting at the top-left corner, to the right. -The right <a href="undocumented#Rect">Rect</a> dashes starting at the top-left corner, towards the bottom.</div></fiddle-embed></div> +<div><fiddle-embed name="0f841e4eaebb613b5069800567917c2d"><div>The left <a href="SkRect_Reference#Rect">Rect</a> dashes starting at the top-left corner, to the right. +The right <a href="SkRect_Reference#Rect">Rect</a> dashes starting at the top-left corner, towards the bottom.</div></fiddle-embed></div> ### See Also @@ -3296,9 +3296,9 @@ The right <a href="undocumented#Rect">Rect</a> dashes starting at the top-left c void addRect(const SkRect& rect, Direction dir, unsigned start) </pre> -Add <a href="undocumented#Rect">Rect</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, three <a href="#SkPath_kLine_Verb">kLine Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. -If <a href="#SkPath_addRect_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, <a href="undocumented#Rect">Rect</a> corners are added clockwise; if <a href="#SkPath_addRect_2_dir">dir</a> is -<a href="#SkPath_kCCW_Direction">kCCW Direction</a>, <a href="undocumented#Rect">Rect</a> corners are added counterclockwise. +Add <a href="SkRect_Reference#Rect">Rect</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, three <a href="#SkPath_kLine_Verb">kLine Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. +If <a href="#SkPath_addRect_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, <a href="SkRect_Reference#Rect">Rect</a> corners are added clockwise; if <a href="#SkPath_addRect_2_dir">dir</a> is +<a href="#SkPath_kCCW_Direction">kCCW Direction</a>, <a href="SkRect_Reference#Rect">Rect</a> corners are added counterclockwise. <a href="#SkPath_addRect_2_start">start</a> determines the first corner added. | <a href="#SkPath_addRect_2_start">start</a> | first corner | @@ -3311,11 +3311,11 @@ If <a href="#SkPath_addRect_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kC ### Parameters <table> <tr> <td><a name="SkPath_addRect_2_rect"> <code><strong>rect </strong></code> </a></td> <td> -<a href="undocumented#Rect">Rect</a> to add as a closed contour</td> +<a href="SkRect_Reference#Rect">Rect</a> to add as a closed contour</td> </tr> <tr> <td><a name="SkPath_addRect_2_dir"> <code><strong>dir </strong></code> </a></td> <td> <a href="#SkPath_Direction">Direction</a> to wind added contour</td> </tr> <tr> <td><a name="SkPath_addRect_2_start"> <code><strong>start </strong></code> </a></td> <td> -initial corner of <a href="undocumented#Rect">Rect</a> to add</td> +initial corner of <a href="SkRect_Reference#Rect">Rect</a> to add</td> </tr> </table> @@ -3335,22 +3335,22 @@ void addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom, Direction dir = kCW_Direction) </pre> -Add <a href="undocumented#Rect">Rect</a> (<a href="#SkPath_addRect_3_left">left</a>, <a href="#SkPath_addRect_3_top">top</a>, <a href="#SkPath_addRect_3_right">right</a>, <a href="#SkPath_addRect_3_bottom">bottom</a>) to <a href="#Path">Path</a>, +Add <a href="SkRect_Reference#Rect">Rect</a> (<a href="#SkPath_addRect_3_left">left</a>, <a href="#SkPath_addRect_3_top">top</a>, <a href="#SkPath_addRect_3_right">right</a>, <a href="#SkPath_addRect_3_bottom">bottom</a>) to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, three <a href="#SkPath_kLine_Verb">kLine Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>, -starting with top-left corner of <a href="undocumented#Rect">Rect</a>; followed by top-right, bottom-right, +starting with top-left corner of <a href="SkRect_Reference#Rect">Rect</a>; followed by top-right, bottom-right, and bottom-left if <a href="#SkPath_addRect_3_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>; or followed by bottom-left, bottom-right, and top-right if <a href="#SkPath_addRect_3_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>. ### Parameters <table> <tr> <td><a name="SkPath_addRect_3_left"> <code><strong>left </strong></code> </a></td> <td> -smaller x of <a href="undocumented#Rect">Rect</a></td> +smaller x of <a href="SkRect_Reference#Rect">Rect</a></td> </tr> <tr> <td><a name="SkPath_addRect_3_top"> <code><strong>top </strong></code> </a></td> <td> -smaller y of <a href="undocumented#Rect">Rect</a></td> +smaller y of <a href="SkRect_Reference#Rect">Rect</a></td> </tr> <tr> <td><a name="SkPath_addRect_3_right"> <code><strong>right </strong></code> </a></td> <td> -larger x of <a href="undocumented#Rect">Rect</a></td> +larger x of <a href="SkRect_Reference#Rect">Rect</a></td> </tr> <tr> <td><a name="SkPath_addRect_3_bottom"> <code><strong>bottom </strong></code> </a></td> <td> -larger y of <a href="undocumented#Rect">Rect</a></td> +larger y of <a href="SkRect_Reference#Rect">Rect</a></td> </tr> <tr> <td><a name="SkPath_addRect_3_dir"> <code><strong>dir </strong></code> </a></td> <td> <a href="#SkPath_Direction">Direction</a> to wind added contour</td> </tr> @@ -3358,8 +3358,8 @@ larger y of <a href="undocumented#Rect">Rect</a></td> ### Example -<div><fiddle-embed name="3837827310e8b88b8c2e128ef9fbbd65"><div>The <a href="#SkPath_addRect_3_left">left</a> <a href="undocumented#Rect">Rect</a> dashes start at the top-left corner, and continue to the <a href="#SkPath_addRect_3_right">right</a>. -The <a href="#SkPath_addRect_3_right">right</a> <a href="undocumented#Rect">Rect</a> dashes start at the top-left corner, and continue down.</div></fiddle-embed></div> +<div><fiddle-embed name="3837827310e8b88b8c2e128ef9fbbd65"><div>The <a href="#SkPath_addRect_3_left">left</a> <a href="SkRect_Reference#Rect">Rect</a> dashes start at the top-left corner, and continue to the <a href="#SkPath_addRect_3_right">right</a>. +The <a href="#SkPath_addRect_3_right">right</a> <a href="SkRect_Reference#Rect">Rect</a> dashes start at the top-left corner, and continue down.</div></fiddle-embed></div> ### See Also @@ -3375,7 +3375,7 @@ void addOval(const SkRect& oval, Direction dir = kCW_Direction) </pre> Add <a href="undocumented#Oval">Oval</a> to path, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, four <a href="#SkPath_kConic_Verb">kConic Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. -<a href="undocumented#Oval">Oval</a> is upright ellipse bounded by <a href="undocumented#Rect">Rect</a> <a href="#SkPath_addOval_oval">oval</a> with radii equal to half <a href="#SkPath_addOval_oval">oval</a> width +<a href="undocumented#Oval">Oval</a> is upright ellipse bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkPath_addOval_oval">oval</a> with radii equal to half <a href="#SkPath_addOval_oval">oval</a> width and half <a href="#SkPath_addOval_oval">oval</a> height. <a href="undocumented#Oval">Oval</a> begins at (<a href="#SkPath_addOval_oval">oval</a>.fRight, <a href="#SkPath_addOval_oval">oval</a>.centerY()) and continues clockwise if <a href="#SkPath_addOval_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, counterclockwise if <a href="#SkPath_addOval_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>. @@ -3405,7 +3405,7 @@ void addOval(const SkRect& oval, Direction dir, unsigned start) </pre> Add <a href="undocumented#Oval">Oval</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, four <a href="#SkPath_kConic_Verb">kConic Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. -<a href="undocumented#Oval">Oval</a> is upright ellipse bounded by <a href="undocumented#Rect">Rect</a> <a href="#SkPath_addOval_2_oval">oval</a> with radii equal to half <a href="#SkPath_addOval_2_oval">oval</a> width +<a href="undocumented#Oval">Oval</a> is upright ellipse bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkPath_addOval_2_oval">oval</a> with radii equal to half <a href="#SkPath_addOval_2_oval">oval</a> width and half <a href="#SkPath_addOval_2_oval">oval</a> height. <a href="undocumented#Oval">Oval</a> begins at <a href="#SkPath_addOval_2_start">start</a> and continues clockwise if <a href="#SkPath_addOval_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, counterclockwise if <a href="#SkPath_addOval_2_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>. @@ -3530,9 +3530,9 @@ of the upper-left corner and winds counterclockwise. If either <a href="#SkPath_addRoundRect_rx">rx</a> or <a href="#SkPath_addRoundRect_ry">ry</a> is too large, <a href="#SkPath_addRoundRect_rx">rx</a> and <a href="#SkPath_addRoundRect_ry">ry</a> are scaled uniformly until the corners fit. If <a href="#SkPath_addRoundRect_rx">rx</a> or <a href="#SkPath_addRoundRect_ry">ry</a> is less than or equal to zero, <a href="#SkPath_addRoundRect">addRoundRect</a> appends -<a href="undocumented#Rect">Rect</a> <a href="#SkPath_addRoundRect_rect">rect</a> to <a href="#Path">Path</a>. +<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkPath_addRoundRect_rect">rect</a> to <a href="#Path">Path</a>. -After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or RoundRect. +After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or RoundRect. ### Parameters @@ -3549,7 +3549,7 @@ y-radius of rounded corners on the <a href="undocumented#Round_Rect">Round Rect< ### Example -<div><fiddle-embed name="24736f685f265cf533f1700c042db353"><div>If either radius is zero, path <a href="#SkPath_contains">contains</a> <a href="undocumented#Rect">Rect</a> and is drawn red. +<div><fiddle-embed name="24736f685f265cf533f1700c042db353"><div>If either radius is zero, path <a href="#SkPath_contains">contains</a> <a href="SkRect_Reference#Rect">Rect</a> and is drawn red. If sides are only radii, path <a href="#SkPath_contains">contains</a> <a href="undocumented#Oval">Oval</a> and is drawn blue. All remaining path draws are convex, and are drawn in gray; no paths constructed from <a href="#SkPath_addRoundRect">addRoundRect</a> are concave, so none are @@ -3589,7 +3589,7 @@ If both <a href="#SkPath_addRoundRect_2_radii">radii</a> on any side of <a href= uniformly until the corners fit. If either radius of a corner is less than or equal to zero, both are treated as zero. -After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or RoundRect. +After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or RoundRect. ### Parameters @@ -3624,7 +3624,7 @@ Add <a href="#SkPath_addRRect_rrect">rrect</a> to <a href="#Path">Path</a>, crea winds clockwise. If <a href="#SkPath_addRRect_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>, <a href="#SkPath_addRRect_rrect">rrect</a> starts at the bottom-left of the upper-left corner and winds counterclockwise. -After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or <a href="undocumented#Round_Rect">Round Rect</a>. +After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or <a href="undocumented#Round_Rect">Round Rect</a>. ### Parameters @@ -3664,7 +3664,7 @@ winds clockwise; if <a href="#SkPath_addRRect_2_dir">dir</a> is <a href="#SkPath | 6 | top of bottom-left corner | | 7 | bottom of top-left corner | -After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or <a href="undocumented#Round_Rect">Round Rect</a>. +After appending, <a href="#Path">Path</a> may be empty, or may contain: <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Oval">Oval</a>, or <a href="undocumented#Round_Rect">Round Rect</a>. ### Parameters @@ -3956,7 +3956,7 @@ is replaced. ### Parameters <table> <tr> <td><a name="SkPath_transform_matrix"> <code><strong>matrix </strong></code> </a></td> <td> -<a href="undocumented#Matrix">Matrix</a> to apply to <a href="#Path">Path</a></td> +<a href="SkMatrix_Reference#Matrix">Matrix</a> to apply to <a href="#Path">Path</a></td> </tr> <tr> <td><a name="SkPath_transform_dst"> <code><strong>dst </strong></code> </a></td> <td> overwritten, transformed copy of <a href="#Path">Path</a>; may be nullptr</td> </tr> @@ -3968,7 +3968,7 @@ overwritten, transformed copy of <a href="#Path">Path</a>; may be nullptr</td> ### See Also -<a href="#SkPath_addPath">addPath</a> <a href="#SkPath_offset">offset</a> <a href="#SkCanvas_concat">SkCanvas::concat()</a> <a href="undocumented#SkMatrix">SkMatrix</a> +<a href="#SkPath_addPath">addPath</a> <a href="#SkPath_offset">offset</a> <a href="#SkCanvas_concat">SkCanvas::concat()</a> <a href="SkMatrix_Reference#SkMatrix">SkMatrix</a> --- @@ -3983,7 +3983,7 @@ Transform <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Arr ### Parameters <table> <tr> <td><a name="SkPath_transform_2_matrix"> <code><strong>matrix </strong></code> </a></td> <td> -<a href="undocumented#Matrix">Matrix</a> to apply to <a href="#Path">Path</a></td> +<a href="SkMatrix_Reference#Matrix">Matrix</a> to apply to <a href="#Path">Path</a></td> </tr> </table> @@ -3993,7 +3993,7 @@ Transform <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Arr ### See Also -<a href="#SkPath_addPath">addPath</a> <a href="#SkPath_offset">offset</a> <a href="#SkCanvas_concat">SkCanvas::concat()</a> <a href="undocumented#SkMatrix">SkMatrix</a> +<a href="#SkPath_addPath">addPath</a> <a href="#SkPath_offset">offset</a> <a href="#SkCanvas_concat">SkCanvas::concat()</a> <a href="SkMatrix_Reference#SkMatrix">SkMatrix</a> --- @@ -4390,7 +4390,7 @@ path is equal to copy ## serialize <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkData> serialize() const +sk_sp<SkData> serialize() const </pre> Write <a href="#Path">Path</a> to buffer, returning the buffer written to, wrapped in <a href="undocumented#Data">Data</a>. diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md index fd454a4c37..9c7deb64cb 100644 --- a/site/user/api/SkPixmap_Reference.md +++ b/site/user/api/SkPixmap_Reference.md @@ -9,11 +9,11 @@ SkPixmap Reference raster destinations. <a href="SkCanvas_Reference#Canvas">Canvas</a> can not draw <a href="#Pixmap">Pixmap</a>, nor does <a href="#Pixmap">Pixmap</a> provide a direct drawing destination. -Use <a href="undocumented#Bitmap">Bitmap</a> to draw pixels referenced by <a href="#Pixmap">Pixmap</a>; use <a href="undocumented#Surface">Surface</a> to draw into +Use <a href="SkBitmap_Reference#Bitmap">Bitmap</a> to draw pixels referenced by <a href="#Pixmap">Pixmap</a>; use <a href="undocumented#Surface">Surface</a> to draw into pixels referenced by <a href="#Pixmap">Pixmap</a>. -<a href="#Pixmap">Pixmap</a> does not try to manage the lifetime of the pixel memory. Use <a href="undocumented#PixelRef">PixelRef</a> -to manage pixel memory; <a href="undocumented#PixelRef">PixelRef</a> is safe across threads. +<a href="#Pixmap">Pixmap</a> does not try to manage the lifetime of the pixel memory. Use <a href="undocumented#Pixel_Ref">Pixel Ref</a> +to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe across threads. # <a name="Overview"></a> Overview @@ -238,7 +238,7 @@ size of one row of <a href="#SkPixmap_addr">addr</a>; <a href="#SkPixmap_width"> ## setColorSpace <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setColorSpace(sk_sp<SkColorSpace> colorSpace) +void setColorSpace(sk_sp<SkColorSpace> colorSpace) </pre> Changes <a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a>; preserves <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and @@ -391,7 +391,8 @@ size_t rowBytes() const Returns row bytes, the interval from one pixel row to the next. Row bytes is at least as large as<a href="#SkPixmap_width">width</a> * <a href="#SkPixmap_info">info</a>.bytesPerPixel(). -It is up to the <a href="#Pixmap">Pixmap</a> creator to ensure that row bytes is a useful value. +Returns zero if <a href="#SkPixmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. +It is up to the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> creator to ensure that row bytes is a useful value. ### Return Value @@ -479,7 +480,7 @@ pixmap width: 16 info width: 16 ### See Also -<a href="#SkPixmap_height">height</a> +<a href="#SkPixmap_height">height</a> <a href="#SkImageInfo_width">SkImageInfo::width()</a> --- @@ -498,7 +499,7 @@ pixel <a href="#SkPixmap_height">height</a> in <a href="#Info">Image Info</a> ### Example -<div><fiddle-embed name="cf80286d58a00cb0328c4205b6517755"> +<div><fiddle-embed name="4a996d32122f469d51ddd0186efb48cc"> #### Example Output @@ -510,7 +511,7 @@ pixmap height: 32 info height: 32 ### See Also -<a href="#SkPixmap_width">width</a> +<a href="#SkPixmap_width">width</a> ImageInfo::height() --- @@ -543,7 +544,7 @@ color type: kAlpha_SkColorType ### See Also -<a href="#SkPixmap_alphaType">alphaType</a> +<a href="#SkPixmap_alphaType">alphaType</a> <a href="#SkImageInfo_colorType">SkImageInfo::colorType</a> --- @@ -575,7 +576,7 @@ alpha type: kPremul_SkAlphaType ### See Also -<a href="#SkPixmap_colorType">colorType</a> +<a href="#SkPixmap_colorType">colorType</a> <a href="#SkImageInfo_alphaType">SkImageInfo::alphaType</a> --- @@ -586,11 +587,13 @@ alpha type: kPremul_SkAlphaType SkColorSpace* colorSpace() const </pre> -Returns <a href="undocumented#Color_Space">Color Space</a> associated with <a href="#Info">Image Info</a>. +Returns <a href="undocumented#Color_Space">Color Space</a> associated with <a href="#Info">Image Info</a>. The +reference count of <a href="undocumented#Color_Space">Color Space</a> is unchanged. The returned <a href="undocumented#Color_Space">Color Space</a> is +immutable. ### Return Value -<a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a> +<a href="undocumented#Color_Space">Color Space</a>, the range of colors, in <a href="#Info">Image Info</a> ### Example @@ -607,7 +610,7 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false ### See Also -<a href="undocumented#Color_Space">Color Space</a> +<a href="undocumented#Color_Space">Color Space</a> <a href="#SkImageInfo_colorSpace">SkImageInfo::colorSpace</a> --- @@ -619,7 +622,8 @@ bool isOpaque() const </pre> Returns true if <a href="undocumented#Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. -Does not check if <a href="undocumented#Color_Type">Color Type</a> allows <a href="#Alpha">Alpha</a>, or <a href="#Alpha">Alpha</a> in pixel values. +Does not check if <a href="undocumented#Color_Type">Color Type</a> allows <a href="#Alpha">Alpha</a>, or if any pixel value has +transparency. ### Return Value @@ -653,7 +657,7 @@ isOpaque: true SkIRect bounds() const </pre> -Returns <a href="undocumented#IRect">IRect</a>{ 0, 0, <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a> }. +Returns <a href="SkIRect_Reference#IRect">IRect</a>{ 0, 0, <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a> }. ### Return Value @@ -676,7 +680,7 @@ width: 2 height: 2 empty: false ### See Also -<a href="#SkPixmap_height">height</a> <a href="#SkPixmap_width">width</a> <a href="undocumented#IRect">IRect</a> +<a href="#SkPixmap_height">height</a> <a href="#SkPixmap_width">width</a> <a href="SkIRect_Reference#IRect">IRect</a> --- @@ -769,26 +773,6 @@ Includes unused memory on last row when <a href="#SkPixmap_rowBytesAsPixels">row conservative pixel storage size -### Example - -<div><fiddle-embed name="2ab8c15170ff23edb386258299221051"> - -#### Example Output - -~~~~ -width: 1 height: 1 getSize64: 5 -width: 1 height: 1000 getSize64: 5000 -width: 1 height: 1000000 getSize64: 5000000 -width: 1000 height: 1 getSize64: 5000 -width: 1000 height: 1000 getSize64: 5000000 -width: 1000 height: 1000000 getSize64: 5000000000 -width: 1000000 height: 1 getSize64: 5000000 -width: 1000000 height: 1000 getSize64: 5000000000 -width: 1000000 height: 1000000 getSize64: 5000000000000 -~~~~ - -</fiddle-embed></div> - ### See Also <a href="#SkPixmap_getSafeSize64">getSafeSize64</a> <a href="#SkPixmap_getSafeSize">getSafeSize</a> <a href="#SkPixmap_height">height</a> <a href="#SkPixmap_rowBytes">rowBytes</a> <a href="#SkPixmap_width">width</a> <a href="#SkImageInfo_bytesPerPixel">SkImageInfo::bytesPerPixel</a> @@ -809,26 +793,6 @@ Does not include unused memory on last row when <a href="#SkPixmap_rowBytesAsPix exact pixel storage size -### Example - -<div><fiddle-embed name="aee6a517fce327bba42844b26bd4655f"> - -#### Example Output - -~~~~ -width: 1 height: 1 getSafeSize64: 4 -width: 1 height: 1000 getSafeSize64: 4999 -width: 1 height: 1000000 getSafeSize64: 4999999 -width: 1000 height: 1 getSafeSize64: 4000 -width: 1000 height: 1000 getSafeSize64: 4999000 -width: 1000 height: 1000000 getSafeSize64: 4999999000 -width: 1000000 height: 1 getSafeSize64: 4000000 -width: 1000000 height: 1000 getSafeSize64: 4999000000 -width: 1000000 height: 1000000 getSafeSize64: 4999999000000 -~~~~ - -</fiddle-embed></div> - ### See Also <a href="#SkPixmap_getSize64">getSize64</a> <a href="#SkPixmap_getSafeSize">getSafeSize</a> <a href="#SkPixmap_height">height</a> <a href="#SkPixmap_rowBytes">rowBytes</a> <a href="#SkPixmap_width">width</a> <a href="#SkImageInfo_bytesPerPixel">SkImageInfo::bytesPerPixel</a> @@ -851,29 +815,52 @@ The largest value than can be returned is 2,147,483,647. exact pixel storage size if size fits in signed 32 bits +### See Also + +<a href="#SkPixmap_getSize64">getSize64</a> <a href="#SkPixmap_getSafeSize64">getSafeSize64</a> <a href="#SkPixmap_height">height</a> <a href="#SkPixmap_rowBytes">rowBytes</a> <a href="#SkPixmap_width">width</a> <a href="#SkImageInfo_bytesPerPixel">SkImageInfo::bytesPerPixel</a> <a href="undocumented#sk_64_isS32">sk 64 isS32</a> + +--- + +<a name="SkPixmap_computeByteSize"></a> +## computeByteSize + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t computeByteSize() const +</pre> + +Returns minimum memory required for pixel storage. +Does not include unused memory on last row when <a href="#SkPixmap_rowBytesAsPixels">rowBytesAsPixels</a> exceeds <a href="#SkPixmap_width">width</a>. +Returns zero if result does not fit in size_t. +Returns zero if <a href="#SkPixmap_height">height</a> or <a href="#SkPixmap_width">width</a> is 0. +Returns <a href="#SkPixmap_height">height</a> times <a href="#SkPixmap_rowBytes">rowBytes</a> if <a href="#SkPixmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +### Return Value + +size in bytes of image buffer + ### Example -<div><fiddle-embed name="1e2830708e4da1db886d8d7541af618b"> +<div><fiddle-embed name="410d14ddc45d272598c5a4e52bb047de"> #### Example Output ~~~~ -width: 1 height: 1 getSafeSize: 4 -width: 1 height: 1000 getSafeSize: 4999 -width: 1 height: 1000000 getSafeSize: 4999999 -width: 1000 height: 1 getSafeSize: 4000 -width: 1000 height: 1000 getSafeSize: 4999000 -width: 1000 height: 1000000 getSafeSize: 0 -width: 1000000 height: 1 getSafeSize: 4000000 -width: 1000000 height: 1000 getSafeSize: 0 -width: 1000000 height: 1000000 getSafeSize: 0 +width: 1 height: 1 computeByteSize: 4 +width: 1 height: 1000 computeByteSize: 4999 +width: 1 height: 1000000 computeByteSize: 4999999 +width: 1000 height: 1 computeByteSize: 4000 +width: 1000 height: 1000 computeByteSize: 4999000 +width: 1000 height: 1000000 computeByteSize: 4999999000 +width: 1000000 height: 1 computeByteSize: 4000000 +width: 1000000 height: 1000 computeByteSize: 4999000000 +width: 1000000 height: 1000000 computeByteSize: 4999999000000 ~~~~ </fiddle-embed></div> ### See Also -<a href="#SkPixmap_getSize64">getSize64</a> <a href="#SkPixmap_getSafeSize64">getSafeSize64</a> <a href="#SkPixmap_height">height</a> <a href="#SkPixmap_rowBytes">rowBytes</a> <a href="#SkPixmap_width">width</a> <a href="#SkImageInfo_bytesPerPixel">SkImageInfo::bytesPerPixel</a> <a href="undocumented#sk_64_isS32">sk 64 isS32</a> +<a href="#SkImageInfo_computeByteSize">SkImageInfo::computeByteSize</a> --- @@ -902,7 +889,7 @@ Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Return Value -true all pixels have opaque values or <a href="undocumented#Color_Type">Color Type</a> is opaque +true if all pixels have opaque values or <a href="undocumented#Color_Type">Color Type</a> is opaque ### Example @@ -990,10 +977,13 @@ Unpremultiplied: const void* addr(int x, int y) const </pre> -Returns readable pixel address at (<a href="#SkPixmap_addr_2_x">x</a>, <a href="#SkPixmap_addr_2_y">y</a>). +Returns readable pixel address at (<a href="#SkPixmap_addr_2_x">x</a>, <a href="#SkPixmap_addr_2_y">y</a>). Returns nullptr if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr. Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr_2_x">x</a> or <a href="#SkPixmap_addr_2_y">y</a> trigger an assert() if -built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns zero if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. +built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns nullptr if <a href="undocumented#Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. + +Performs a lookup of pixel size; for better performance, call +one of: <a href="#SkPixmap_addr8">addr8</a>, <a href="#SkPixmap_addr16">addr16</a>, <a href="#SkPixmap_addr32">addr32</a>, <a href="#SkPixmap_addr64">addr64</a>, or <a href="#SkPixmap_addrF16">addrF16</a>. ### Parameters @@ -1022,7 +1012,7 @@ pixmap.addr(1, 2) == &storage[1 + 2 * w] ### See Also -<a href="#SkPixmap_addr8">addr8</a> <a href="#SkPixmap_addr16">addr16</a> <a href="#SkPixmap_addr32">addr32</a> <a href="#SkPixmap_addr64">addr64</a> <a href="#SkPixmap_addrF16">addrF16</a> <a href="#SkPixmap_getColor">getColor</a> <a href="#SkPixmap_writable_addr">writable addr</a> +<a href="#SkPixmap_addr8">addr8</a> <a href="#SkPixmap_addr16">addr16</a> <a href="#SkPixmap_addr32">addr32</a> <a href="#SkPixmap_addr64">addr64</a> <a href="#SkPixmap_addrF16">addrF16</a> <a href="#SkPixmap_getColor">getColor</a> <a href="#SkPixmap_writable_addr">writable addr</a> <a href="#SkBitmap_getAddr">SkBitmap::getAddr</a> --- @@ -1521,7 +1511,7 @@ writable unsigned 8-bit pointer to pixels ### Example -<div><fiddle-embed name="809284db136748208b3efc31cd89de29"><div>Altering pixels after drawing <a href="undocumented#Bitmap">Bitmap</a> is not guaranteed to affect subsequent +<div><fiddle-embed name="809284db136748208b3efc31cd89de29"><div>Altering pixels after drawing <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is not guaranteed to affect subsequent drawing on all platforms. Adding a second <a href="#SkBitmap_installPixels">SkBitmap::installPixels</a> after editing pixel memory is safer.</div></fiddle-embed></div> @@ -1689,7 +1679,7 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY, SkTransferFunctionBehavior behavior) const </pre> -Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_srcX">srcX</a>, <a href="#SkPixmap_readPixels_srcY">srcY</a>), and does not exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>). +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_srcX">srcX</a>, <a href="#SkPixmap_readPixels_srcY">srcY</a>), and does not exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>). <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination @@ -1709,7 +1699,7 @@ or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>. If <a href="#SkPixmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts source pixels to a linear space before converting to <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>. If <a href="#SkPixmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a>: source -pixels are treated as if they are linear, regardless of their encoding. +pixels are treated as if they are linear, regardless of how they are encoded. ### Parameters @@ -1747,7 +1737,7 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_dstPixels">dstPixels< bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes) const </pre> -Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_2_dstPixels">dstPixels</a>. Copy starts at (0, 0), and does not +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_2_dstPixels">dstPixels</a>. Copy starts at (0, 0), and does not exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>). <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and @@ -1795,7 +1785,7 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY) const </pre> -Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_3_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_3_srcX">srcX</a>, <a href="#SkPixmap_readPixels_3_srcY">srcY</a>), and does not +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_3_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_3_srcX">srcX</a>, <a href="#SkPixmap_readPixels_3_srcY">srcY</a>), and does not exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>). <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and @@ -1846,7 +1836,7 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_3_dstPixels">dstPixel bool readPixels(const SkPixmap& dst, int srcX, int srcY) const </pre> -Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_4_dst">dst</a>. Copy starts at (<a href="#SkPixmap_readPixels_4_srcX">srcX</a>, <a href="#SkPixmap_readPixels_4_srcY">srcY</a>), and does not +Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_4_dst">dst</a>. Copy starts at (<a href="#SkPixmap_readPixels_4_srcX">srcX</a>, <a href="#SkPixmap_readPixels_4_srcY">srcY</a>), and does not exceed (this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>). <a href="#SkPixmap_readPixels_4_dst">dst</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of destination. Returns true if pixels are copied. Returns false if <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_rowBytes">rowBytes</a> is less than @@ -1993,7 +1983,7 @@ not intersect <a href="#SkPixmap_bounds">bounds</a>. <table> <tr> <td><a name="SkPixmap_erase_color"> <code><strong>color </strong></code> </a></td> <td> <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a> to write</td> </tr> <tr> <td><a name="SkPixmap_erase_subset"> <code><strong>subset </strong></code> </a></td> <td> -bounding integer <a href="undocumented#Rect">Rect</a> of written pixels</td> +bounding integer <a href="SkRect_Reference#Rect">Rect</a> of written pixels</td> </tr> </table> @@ -2054,7 +2044,7 @@ not intersect <a href="#SkPixmap_bounds">bounds</a>, or if <a href="#SkPixmap_er <table> <tr> <td><a name="SkPixmap_erase_3_color"> <code><strong>color </strong></code> </a></td> <td> <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a> to write</td> </tr> <tr> <td><a name="SkPixmap_erase_3_subset"> <code><strong>subset </strong></code> </a></td> <td> -bounding integer <a href="undocumented#Rect">Rect</a> of pixels to write; may be nullptr</td> +bounding integer <a href="SkRect_Reference#Rect">Rect</a> of pixels to write; may be nullptr</td> </tr> </table> diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md index 6d3dbd70f0..e0c27af766 100644 --- a/site/user/api/undocumented.md +++ b/site/user/api/undocumented.md @@ -3,8 +3,6 @@ undocumented # <a name="Glyph"></a> Glyph -# <a name="Curve"></a> Curve - # <a name="Document"></a> Document # <a name="SkDocument"></a> Class SkDocument @@ -21,41 +19,18 @@ SkCanvas* beginPage(SkScalar width, SkScalar height, ## <a name="PDF"></a> PDF -# <a name="Arc"></a> Arc - -# <a name="Rect"></a> Rect - -# <a name="SkRect"></a> Struct SkRect - -<a name="SkRect_MakeEmpty"></a> -## MakeEmpty - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static constexpr SkRect SK_WARN_UNUSED_RESULT MakeEmpty() -</pre> - ---- - -<a name="SkRect_dump"></a> -## dump - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void dump() const -</pre> - ---- +# <a name="PostScript"></a> PostScript -<a name="SkRect_dumpHex"></a> -## dumpHex +## <a name="Arct"></a> Arct -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void dumpHex() const -</pre> +# <a name="Size"></a> Size ---- +# <a name="Arc"></a> Arc # <a name="Line"></a> Line +# <a name="Mip_Map"></a> Mip Map + # <a name="Region"></a> Region # <a name="SkRegion"></a> Class SkRegion @@ -68,6 +43,10 @@ void dumpHex() const # <a name="SkVector"></a> Struct SkVector +# <a name="Patch"></a> Patch + +# <a name="Curve"></a> Curve + # <a name="Point"></a> Point # <a name="SkPoint"></a> Struct SkPoint @@ -83,8 +62,6 @@ bool equalsWithinTolerance(const SkPoint& p) const ## <a name="Array"></a> Array -# <a name="Patch"></a> Patch - # <a name="Typeface"></a> Typeface # <a name="SkTypeface"></a> Class SkTypeface @@ -105,40 +82,6 @@ bool equalsWithinTolerance(const SkPoint& p) const # <a name="SkBBHFactory"></a> Class SkBBHFactory -# <a name="Bitmap"></a> Bitmap - -# <a name="SkBitmap"></a> Class SkBitmap - -## <a name="Row_Bytes"></a> Row Bytes - -<a name="SkBitmap_erase"></a> -## erase - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void erase(SkColor c, const SkIRect& area) const -</pre> - ---- - -<a name="SkBitmap_installPixels"></a> -## installPixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) -</pre> - ---- - -<a name="SkBitmap_readPixels"></a> -## readPixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, - int srcX, int srcY, SkTransferFunctionBehavior behavior) const -</pre> - ---- - # <a name="Blend_Mode"></a> Blend Mode ## <a name="SkBlendMode"></a> Enum SkBlendMode @@ -271,7 +214,7 @@ int SkColorSetARGB(a, r, g, b) ## MakeSRGBLinear <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkColorSpace> MakeSRGBLinear() +static sk_sp<SkColorSpace> MakeSRGBLinear() </pre> --- @@ -329,8 +272,8 @@ void draw(SkCanvas*, const SkMatrix* = NULL) ## MakeCanvas <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> - MakeCanvas(std::unique_ptr<SkRasterHandleAllocator>, +static std::unique_ptr<SkCanvas> + MakeCanvas(std::unique_ptr<SkRasterHandleAllocator>, const SkImageInfo&, const Rec* rec = nullptr) </pre> @@ -469,7 +412,7 @@ SkImageInfo() ## makeColorSpace <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const +SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const </pre> --- @@ -501,13 +444,79 @@ int bytesPerPixel() const --- +<a name="SkImageInfo_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int height() const +</pre> + +--- + +<a name="SkImageInfo_width"></a> +## width + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int width() const +</pre> + +--- + +<a name="SkImageInfo_colorType"></a> +## colorType + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkColorType colorType() const +</pre> + +--- + +<a name="SkImageInfo_alphaType"></a> +## alphaType + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkAlphaType alphaType() const +</pre> + +--- + +<a name="SkImageInfo_colorSpace"></a> +## colorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkColorSpace* colorSpace() const +</pre> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isOpaque() const +</pre> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t minRowBytes() const +</pre> + +--- + +<a name="SkImageInfo_computeByteSize"></a> +## computeByteSize + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +size_t computeByteSize(size_t rowBytes) const +</pre> + +--- + # <a name="SkImage"></a> Class SkImage <a name="SkImage_makeShader"></a> ## makeShader <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkShader> makeShader(SkShader::TileMode, SkShader::TileMode, +sk_sp<SkShader> makeShader(SkShader::TileMode, SkShader::TileMode, const SkMatrix* localMatrix = nullptr) const </pre> @@ -517,7 +526,7 @@ sk_sp<SkShader> makeShader(SkShader::TileMode, SkShader::TileMode, ## MakeRasterCopy <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkImage> MakeRasterCopy(const SkPixmap&) +static sk_sp<SkImage> MakeRasterCopy(const SkPixmap&) </pre> --- @@ -550,15 +559,24 @@ bool scalePixels(const SkPixmap& dst, SkFilterQuality, # <a name="Image_Scaling"></a> Image Scaling -# <a name="IRect"></a> IRect +# <a name="Malloc_Pixel_Ref"></a> Malloc Pixel Ref + +# <a name="SkMallocPixelRef"></a> Class SkMallocPixelRef -# <a name="SkIRect"></a> Struct SkIRect +<a name="SkMallocPixelRef_MakeZeroed"></a> +## MakeZeroed + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +static sk_sp<SkPixelRef> MakeZeroed(const SkImageInfo&, size_t rowBytes) +</pre> + +--- -<a name="SkIRect_intersect"></a> -## intersect +<a name="SkMallocPixelRef_MakeAllocate"></a> +## MakeAllocate <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool intersect(const SkIRect& r) +static sk_sp<SkPixelRef> MakeAllocate(const SkImageInfo&, size_t rowBytes) </pre> --- @@ -596,6 +614,16 @@ k <tr> # <a name="SkMaskFilter"></a> Class SkMaskFilter +<a name="SkMaskFilter_filterMask"></a> +## filterMask + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, + SkIPoint* margin) const +</pre> + +--- + # <a name="Math"></a> Math <a name="sk_64_isS32"></a> @@ -607,9 +635,59 @@ static inline bool sk_64_isS32(int64_t value) --- -# <a name="Matrix"></a> Matrix +<a name="SkIntToScalar"></a> +## SkIntToScalar + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkIntToScalar(x) +</pre> + +--- + +<a name="SkScalarRoundToInt"></a> +## SkScalarRoundToInt + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkScalarRoundToInt(x) +</pre> + +--- -# <a name="SkMatrix"></a> Struct SkMatrix +<a name="SkScalarFloorToInt"></a> +## SkScalarFloorToInt + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkScalarFloorToInt(x) +</pre> + +--- + +<a name="SkScalarCeilToInt"></a> +## SkScalarCeilToInt + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkScalarCeilToInt(x) +</pre> + +--- + +<a name="SkScalarFloorToScalar"></a> +## SkScalarFloorToScalar + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkScalarFloorToScalar(x) +</pre> + +--- + +<a name="SkScalarCeilToScalar"></a> +## SkScalarCeilToScalar + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +SkScalarCeilToScalar(x) +</pre> + +--- # <a name="Nine_Patch"></a> Nine Patch @@ -701,13 +779,45 @@ SkCanvas* beginRecording(const SkRect& bounds, SkBBHFactory* bbhFactory = NULL, ## <a name="Storage"></a> Storage -# <a name="PixelRef"></a> PixelRef +# <a name="Pixel_Ref"></a> Pixel Ref # <a name="SkPixelRef"></a> Class SkPixelRef -# <a name="PostScript"></a> PostScript +<a name="SkPixelRef_width"></a> +## width -## <a name="Arct"></a> Arct +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int width() const +</pre> + +--- + +<a name="SkPixelRef_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +int height() const +</pre> + +--- + +<a name="SkPixelRef_isImmutable"></a> +## isImmutable + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +bool isImmutable() const +</pre> + +--- + +<a name="SkPixelRef_setImmutable"></a> +## setImmutable + +<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +void setImmutable() +</pre> + +--- # <a name="Premultiply"></a> Premultiply @@ -723,6 +833,8 @@ SkCanvas* beginRecording(const SkRect& bounds, SkBBHFactory* bbhFactory = NULL, # <a name="Reference_Count"></a> Reference Count +# <a name="SkRefCnt"></a> Class SkRefCnt + # <a name="sk_sp"></a> Class sk_sp # <a name="Right_Side_Bearing"></a> Right Side Bearing @@ -772,7 +884,7 @@ void dumpHex() const ## MakeBitmapShader <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, +static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy, const SkMatrix* localMatrix = nullptr) </pre> @@ -801,7 +913,7 @@ static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, ## MakeRasterDirect <pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkSurface> MakeRasterDirect(const SkImageInfo&, void* pixels, +static sk_sp<SkSurface> MakeRasterDirect(const SkImageInfo&, void* pixels, size_t rowBytes, const SkSurfaceProps* = nullptr) </pre> |