diff options
author | 2017-11-27 10:44:06 -0500 | |
---|---|---|
committer | 2017-11-27 16:12:56 +0000 | |
commit | a560c4796f5b83a2e55cf564dc847ad6498164b0 (patch) | |
tree | 1e47f0055e1a19621046ecbc601e999e67c34465 /site | |
parent | 56536c42f561f6d8902703a33cf178deb91f9d4d (diff) |
bookmaker refresh
Add support for more operator overloads.
Add SkSurface, SkPoint, SkIPoint, SkIPoint16 docs.
(SkImage doc skeleton added, but not really started.)
Force recompile all examples.
Docs-Preview: https://skia.org/?cl=67726
Bug: skia:6898
Change-Id: If9e2d23f79d5db64146dd22588f5cac970614b8a
Reviewed-on: https://skia-review.googlesource.com/67726
Commit-Queue: Cary Clark <caryclark@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Diffstat (limited to 'site')
-rw-r--r-- | site/user/api/SkBitmap_Reference.md | 573 | ||||
-rw-r--r-- | site/user/api/SkCanvas_Reference.md | 782 | ||||
-rw-r--r-- | site/user/api/SkIPoint16_Reference.md | 173 | ||||
-rw-r--r-- | site/user/api/SkIPoint_Reference.md | 503 | ||||
-rw-r--r-- | site/user/api/SkIRect_Reference.md | 144 | ||||
-rw-r--r-- | site/user/api/SkImage_Reference.md | 1876 | ||||
-rw-r--r-- | site/user/api/SkMatrix_Reference.md | 602 | ||||
-rw-r--r-- | site/user/api/SkPaint_Reference.md | 438 | ||||
-rw-r--r-- | site/user/api/SkPath_Reference.md | 656 | ||||
-rw-r--r-- | site/user/api/SkPixmap_Reference.md | 251 | ||||
-rw-r--r-- | site/user/api/SkPoint_Reference.md | 1313 | ||||
-rw-r--r-- | site/user/api/SkRect_Reference.md | 226 | ||||
-rw-r--r-- | site/user/api/SkSurface_Reference.md | 1541 | ||||
-rw-r--r-- | site/user/api/catalog.htm | 1186 | ||||
-rw-r--r-- | site/user/api/undocumented.md | 681 | ||||
-rw-r--r-- | site/user/api/usingBookmaker.md | 22 |
16 files changed, 8648 insertions, 2319 deletions
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md index 824da343c7..e3c194bc43 100644 --- a/site/user/api/SkBitmap_Reference.md +++ b/site/user/api/SkBitmap_Reference.md @@ -5,19 +5,19 @@ SkBitmap Reference # <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> +<a href="undocumented#Image_Info">Image Info</a>, containing integer <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a> and <a href="undocumented#Image_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="undocumented#Image_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. +If pixel array is primarily read-only, use <a href="SkImage_Reference#Image">Image</a> for better performance. +If pixel array is primarily written to, use <a href="SkSurface_Reference#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>, +Declaring <a href="#SkBitmap">SkBitmap</a> const prevents altering <a href="undocumented#Image_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. @@ -58,8 +58,8 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared | 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 href="#SkBitmap">SkBitmap</a>& <a href="#SkBitmap_move_operator">operator=(SkBitmap&& src)</a> | Takes ownership of pixels. | +| <a href="#SkBitmap">SkBitmap</a>& <a href="#SkBitmap_copy_operator">operator=(const SkBitmap& src)</a> | Shares ownership of pixels. | ## <a name="Member_Functions"></a> Member Functions @@ -67,17 +67,17 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared | --- | --- | | <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_allocPixels">allocPixels</a> | Allocates pixels from <a href="undocumented#Image_Info">Image Info</a>, or aborts. | +| <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> | Allocates pixels from <a href="undocumented#Image_Info">Image Info</a> with options, or aborts. | +| <a href="#SkBitmap_alphaType">alphaType</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Image_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_bytesPerPixel">bytesPerPixel</a> | Returns number of bytes in pixel based on <a href="undocumented#Image_Color_Type">Color Type</a>. | +| <a href="#SkBitmap_colorSpace">colorSpace</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | +| <a href="#SkBitmap_colorType">colorType</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Image_Color_Type">Color Type</a>. | | <a href="#SkBitmap_computeByteSize">computeByteSize</a> | Returns 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_empty">empty</a> | Returns true if <a href="undocumented#Image_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 | @@ -96,12 +96,12 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared | <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_info">info</a> | Returns <a href="undocumented#Image_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_isOpaque">isOpaque</a> | Returns true if <a href="undocumented#Image_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. | @@ -109,14 +109,14 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared | <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_refColorSpace">refColorSpace</a> | Returns <a href="undocumented#Image_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_setAlphaType">setAlphaType</a> | Sets <a href="undocumented#Image_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_setInfo">setInfo</a> | Sets <a href="#SkBitmap_height">height</a>, <a href="#SkBitmap_width">width</a>, <a href="undocumented#Image_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. | @@ -124,15 +124,15 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared | <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_tryAllocPixels">tryAllocPixels</a> | Allocates pixels from <a href="undocumented#Image_Info">Image Info</a> if possible. | +| <a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> | Allocates pixels from <a href="undocumented#Image_Info">Image Info</a> with options if possible. | | <a href="#SkBitmap_validate">validate</a> | Asserts if <a href="#Bitmap">Bitmap</a> is invalid (debug only). | | <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: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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; @@ -143,18 +143,18 @@ 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"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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> +<a href="undocumented#Image_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> +<a href="#Bitmap">Bitmap</a> containing <a href="undocumented#Image_Info">Image Info</a> as input, and <a href="undocumented#Pixel_Ref">Pixel Ref</a> as output</td> </tr> </table> @@ -170,7 +170,7 @@ true if <a href="undocumented#Pixel_Ref">Pixel Ref</a> was allocated # <a name="SkBitmap::HeapAllocator"></a> Class SkBitmap::HeapAllocator -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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; @@ -183,18 +183,18 @@ memory from the heap. This is the default <a href="#SkBitmap_Allocator">Allocato <a name="SkBitmap_HeapAllocator_allocPixelRef"></a> ## allocPixelRef -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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> +<a href="undocumented#Image_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> +<a href="#Bitmap">Bitmap</a> containing <a href="undocumented#Image_Info">Image Info</a> as input, and <a href="undocumented#Pixel_Ref">Pixel Ref</a> as output</td> </tr> </table> @@ -225,7 +225,7 @@ pixel address = 0x560ddd0ac670 <a name="SkBitmap_empty_constructor"></a> ## SkBitmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkBitmap() </pre> @@ -262,7 +262,7 @@ width: 25 height: 35 color: kRGBA_8888_SkColorType alpha: kOpaque_SkAlphaType <a name="SkBitmap_copy_const_SkBitmap"></a> ## SkBitmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkBitmap(const SkBitmap& src) </pre> @@ -272,7 +272,7 @@ 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> +<a href="#Bitmap">Bitmap</a> to copy <a href="undocumented#Image_Info">Image Info</a>, and share <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> </tr> </table> @@ -303,7 +303,7 @@ copy has pixels: true <a name="SkBitmap_move_SkBitmap"></a> ## SkBitmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkBitmap(SkBitmap&& src) </pre> @@ -313,7 +313,7 @@ Copies settings from <a href="#SkBitmap_move_SkBitmap_src">src</a> to returned < ### 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> +<a href="#Bitmap">Bitmap</a> to copy <a href="undocumented#Image_Info">Image Info</a>, and reassign <a href="undocumented#Pixel_Ref">Pixel Ref</a></td> </tr> </table> @@ -344,7 +344,7 @@ copy has pixels: true <a name="SkBitmap_destructor"></a> ## ~SkBitmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> ~SkBitmap() </pre> @@ -356,26 +356,26 @@ Decrements <a href="undocumented#Pixel_Ref">Pixel Ref</a> reference count, if <a --- -<a name="SkBitmap_copy_assignment_operator"></a> +<a name="SkBitmap_copy_operator"></a> ## operator= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Copies settings from <a href="#SkBitmap_copy_operator_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Shares pixels if <a href="#SkBitmap_copy_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> +<table> <tr> <td><a name="SkBitmap_copy_operator_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="undocumented#Image_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> +copy of <a href="#SkBitmap_copy_operator_src">src</a> ### Example @@ -397,26 +397,26 @@ copy has pixels: true --- -<a name="SkBitmap_move_assignment_operator"></a> +<a name="SkBitmap_move_operator"></a> ## operator= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Copies settings from <a href="#SkBitmap_move_operator_src">src</a> to returned <a href="#Bitmap">Bitmap</a>. Moves ownership of <a href="#SkBitmap_move_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> +<table> <tr> <td><a name="SkBitmap_move_operator_src"> <code><strong>src </strong></code> </a></td> <td> +<a href="#Bitmap">Bitmap</a> to copy <a href="undocumented#Image_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> +copy of <a href="#SkBitmap_move_operator_src">src</a> ### Example @@ -441,7 +441,7 @@ copy has pixels: true <a name="SkBitmap_swap"></a> ## swap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void swap(SkBitmap& other) </pre> @@ -471,22 +471,22 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT ### See Also -<a href="#SkBitmap_move_SkBitmap">SkBitmap(SkBitmap&& src)</a> <a href="#SkBitmap_move_assignment_operator">operator=(SkBitmap&& src)</a> +<a href="#SkBitmap_move_SkBitmap">SkBitmap(SkBitmap&& src)</a> <a href="#SkBitmap_move_operator">operator=(SkBitmap&& src)</a> --- <a name="SkBitmap_info"></a> ## info -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +Returns <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, and <a href="undocumented#Color_Space">Color Space</a>. ### Return Value -reference to <a href="#Info">Image Info</a> +reference to <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -502,18 +502,18 @@ width: 56 height: 56 color: BGRA_8888 alpha: Opaque ### See Also -<a href="#Info">Image Info</a> +<a href="undocumented#Image_Info">Image Info</a> --- <a name="SkBitmap_width"></a> ## width -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int width() const </pre> -Returns pixel count in each pixel row. Should be equal or less than: +Returns pixel count in each 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>. @@ -522,7 +522,7 @@ Maybe be less than <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_ ### Return Value -pixel <a href="#SkBitmap_width">width</a> in <a href="#Info">Image Info</a> +pixel <a href="#SkBitmap_width">width</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -545,7 +545,7 @@ bitmap width: 16 info width: 16 <a name="SkBitmap_height"></a> ## height -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int height() const </pre> @@ -556,7 +556,7 @@ Maybe be less than <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_ ### Return Value -pixel <a href="#SkBitmap_height">height</a> in <a href="#Info">Image Info</a> +pixel <a href="#SkBitmap_height">height</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -579,17 +579,17 @@ bitmap height: 32 info height: 32 <a name="SkBitmap_colorType"></a> ## colorType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>, +Returns <a href="undocumented#Image_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> +<a href="undocumented#Image_Color_Type">Color Type</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -612,16 +612,16 @@ color type: kAlpha_SkColorType <a name="SkBitmap_alphaType"></a> ## alphaType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>, +Returns <a href="undocumented#Image_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> +<a href="undocumented#Image_Alpha_Type">Alpha Type</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -644,22 +644,22 @@ alpha type: kPremul_SkAlphaType <a name="SkBitmap_colorSpace"></a> ## colorSpace -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Returns <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with <a href="undocumented#Image_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> in <a href="undocumented#Image_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> +and an <a href="undocumented#sRGB">sRGB</a> gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to <a href="undocumented#sRGB">sRGB</a> gamma.</div> #### Example Output @@ -678,19 +678,19 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false <a name="SkBitmap_refColorSpace"></a> ## refColorSpace -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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#Image_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 +<a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_Info">Image Info</a> wrapped in a smart pointer ### Example @@ -713,11 +713,11 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false <a name="SkBitmap_bytesPerPixel"></a> ## bytesPerPixel -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int bytesPerPixel() const </pre> -Returns number of bytes per pixel required by <a href="undocumented#Color_Type">Color Type</a>. +Returns number of bytes per pixel required by <a href="undocumented#Image_Color_Type">Color Type</a>. Returns zero if <a href="#SkBitmap_colorType">colorType</a>( is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Return Value @@ -752,7 +752,7 @@ color: kRGBA_F16_SkColorType bytesPerPixel: 8 <a name="SkBitmap_rowBytesAsPixels"></a> ## rowBytesAsPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int rowBytesAsPixels() const </pre> @@ -788,7 +788,7 @@ rowBytes: 8 rowBytesAsPixels: 2 <a name="SkBitmap_shiftPerPixel"></a> ## shiftPerPixel -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int shiftPerPixel() const </pre> @@ -827,7 +827,7 @@ color: kRGBA_F16_SkColorType shiftPerPixel: 3 <a name="SkBitmap_empty"></a> ## empty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool empty() const </pre> @@ -864,7 +864,7 @@ width: 2 height: 2 empty: false <a name="SkBitmap_isNull"></a> ## isNull -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isNull() const </pre> @@ -900,7 +900,7 @@ allocated bitmap does have pixels <a name="SkBitmap_drawsNothing"></a> ## drawsNothing -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool drawsNothing() const </pre> @@ -935,7 +935,7 @@ empty:false isNull:false drawsNothing:false <a name="SkBitmap_rowBytes"></a> ## rowBytes -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t rowBytes() const </pre> @@ -971,31 +971,31 @@ setInfo returned:true rowBytes:8 <a name="SkBitmap_setAlphaType"></a> ## setAlphaType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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> +Sets <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, if <a href="#SkBitmap_alphaType">alphaType</a> is compatible with <a href="undocumented#Image_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#Image_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#Image_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#Image_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>. +Returns true if <a href="undocumented#Image_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#Image_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>, +If <a href="undocumented#Image_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. +<a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a> and <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. +If <a href="undocumented#Image_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 +If <a href="undocumented#Image_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#Image_Alpha_Type">Alpha Type</a> is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>. +If <a href="undocumented#Image_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> +This changes <a href="undocumented#Image_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 @@ -1008,7 +1008,7 @@ one of: <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="un ### Return Value -true if <a href="undocumented#Alpha_Type">Alpha Type</a> is set +true if <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is set ### Example @@ -1016,14 +1016,14 @@ true if <a href="undocumented#Alpha_Type">Alpha Type</a> is set ### 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 href="undocumented#Image_Alpha_Type">Alpha Type</a> <a href="undocumented#Image_Color_Type">Color Type</a> <a href="undocumented#Image_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"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void* getPixels() const </pre> @@ -1055,7 +1055,7 @@ bitmap.getColor(0, 0) == 0xFFFFFFFF <a name="SkBitmap_computeByteSize"></a> ## computeByteSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t computeByteSize() const </pre> @@ -1098,7 +1098,7 @@ width: 1000000 height: 1000000 computeByteSize: 4999999000000 <a name="SkBitmap_isImmutable"></a> ## isImmutable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isImmutable() const </pre> @@ -1125,14 +1125,14 @@ copy is immutable ### See Also -<a href="#SkBitmap_setImmutable">setImmutable</a> <a href="#SkPixelRef_isImmutable">SkPixelRef::isImmutable</a> <a href="undocumented#SkImage">SkImage</a> +<a href="#SkBitmap_setImmutable">setImmutable</a> <a href="#SkPixelRef_isImmutable">SkPixelRef::isImmutable</a> <a href="SkImage_Reference#SkImage">SkImage</a> --- <a name="SkBitmap_setImmutable"></a> ## setImmutable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setImmutable() </pre> @@ -1148,24 +1148,24 @@ Writing to immutable <a href="#Bitmap">Bitmap</a> pixels triggers an assert on d ### See Also -<a href="#SkBitmap_isImmutable">isImmutable</a> <a href="#SkPixelRef_setImmutable">SkPixelRef::setImmutable</a> <a href="undocumented#SkImage">SkImage</a> +<a href="#SkBitmap_isImmutable">isImmutable</a> <a href="#SkPixelRef_setImmutable">SkPixelRef::setImmutable</a> <a href="SkImage_Reference#SkImage">SkImage</a> --- <a name="SkBitmap_isOpaque"></a> ## isOpaque -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Returns true if <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. +Does not check if <a href="undocumented#Image_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> +true if <a href="undocumented#Image_Info">Image Info</a> describes opaque <a href="#Alpha">Alpha</a> ### Example @@ -1191,7 +1191,7 @@ isOpaque: true <a name="SkBitmap_isVolatile"></a> ## isVolatile -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isVolatile() const </pre> @@ -1226,7 +1226,7 @@ copy is not volatile <a name="SkBitmap_setIsVolatile"></a> ## setIsVolatile -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setIsVolatile(bool isVolatile) </pre> @@ -1257,7 +1257,7 @@ true if backing pixels are temporary</td> <a name="SkBitmap_reset"></a> ## reset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset() </pre> @@ -1292,19 +1292,19 @@ width:0 height:0 isNull:true <a name="SkBitmap_ComputeIsOpaque"></a> ## ComputeIsOpaque -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Returns true if all pixels are opaque. <a href="undocumented#Image_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#Image_Color_Type">Color Types</a> +without alpha in each pixel; for other <a href="undocumented#Image_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>, +For <a href="undocumented#Image_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#Image_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#Image_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. @@ -1319,7 +1319,7 @@ Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Return Value -true if 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#Image_Color_Type">Color Type</a> is opaque ### Example @@ -1338,14 +1338,14 @@ computeIsOpaque: true ### See Also -<a href="#SkBitmap_isOpaque">isOpaque</a> <a href="undocumented#Color_Type">Color Type</a> <a href="#Alpha">Alpha</a> +<a href="#SkBitmap_isOpaque">isOpaque</a> <a href="undocumented#Image_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"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void getBounds(SkRect* bounds) const </pre> @@ -1368,7 +1368,7 @@ container for floating point rectangle</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void getBounds(SkIRect* bounds) const </pre> @@ -1394,7 +1394,7 @@ container for integral rectangle</td> <a name="SkBitmap_bounds"></a> ## bounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect bounds() const </pre> @@ -1417,7 +1417,7 @@ integral rectangle from origin to <a href="#SkBitmap_width">width</a> and <a hre <a name="SkBitmap_dimensions"></a> ## dimensions -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkISize dimensions() const </pre> @@ -1440,7 +1440,7 @@ integral size of <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_heig <a name="SkBitmap_getSubset"></a> ## getSubset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect getSubset() const </pre> @@ -1472,11 +1472,11 @@ subset: 100, 100, 412, 412 <a name="SkBitmap_setInfo"></a> ## setInfo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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>. @@ -1498,7 +1498,6 @@ 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> @@ -1507,7 +1506,7 @@ Calls <a href="#SkBitmap_reset">reset</a> and returns false if: ### 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1515,7 +1514,7 @@ contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height< ### Return Value -true if <a href="#Info">Image Info</a> set successfully +true if <a href="undocumented#Image_Info">Image Info</a> set successfully ### Example @@ -1523,13 +1522,13 @@ true if <a href="#Info">Image Info</a> set successfully ### 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 href="undocumented#Image_Alpha_Type">Alpha Type</a> <a href="undocumented#Image_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: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkBitmap_AllocFlags">AllocFlags</a> { <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> = 1 << 0, };</pre> @@ -1553,17 +1552,15 @@ enum <a href="#SkBitmap_AllocFlags">AllocFlags</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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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. +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could +not be allocated, 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 @@ -1576,7 +1573,7 @@ Passing <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> is u ### 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1588,16 +1585,12 @@ 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> +<div><fiddle-embed name="4fff5f5034ced615ad5a1d50c40aeff3"> #### Example Output ~~~~ -attempt 1 -failed! +bitmap allocation succeeded! ~~~~ </fiddle-embed></div> @@ -1611,15 +1604,15 @@ failed! <a name="SkBitmap_allocPixelsFlags"></a> ## allocPixelsFlags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could +not be allocated, 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>. @@ -1634,7 +1627,7 @@ Passing <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a> is u ### 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1654,16 +1647,15 @@ lets the first draw show through.</div></fiddle-embed></div> <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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="undocumented#Image_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 @@ -1674,7 +1666,7 @@ 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1697,16 +1689,16 @@ true if pixel storage is allocated <a name="SkBitmap_allocPixels"></a> ## allocPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could +not be allocated. 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 @@ -1717,7 +1709,7 @@ 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1733,14 +1725,14 @@ size of pixel row or larger; may be zero</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="undocumented#Image_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 @@ -1751,7 +1743,7 @@ 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> </tr> </table> @@ -1769,15 +1761,15 @@ true if pixel storage is allocated --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could +not be allocated. 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 @@ -1788,7 +1780,7 @@ 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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> </tr> </table> @@ -1805,13 +1797,12 @@ contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height< <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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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>; +Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates +pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="undocumented#Image_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, @@ -1819,8 +1810,8 @@ 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. +Use to create <a href="#Bitmap">Bitmap</a> that matches <a href="undocumented#SkPMColor">SkPMColor</a>, the native pixel arrangement on +the platform. <a href="#Bitmap">Bitmap</a> drawn to output device skips converting its pixel format. ### Parameters @@ -1850,20 +1841,20 @@ true if pixel storage is allocated <a name="SkBitmap_allocN32Pixels"></a> ## allocN32Pixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>; +Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and the <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates +pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="undocumented#Image_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. +Use to create <a href="#Bitmap">Bitmap</a> that matches <a href="undocumented#SkPMColor">SkPMColor</a>, the native pixel arrangement on +the platform. <a href="#Bitmap">Bitmap</a> drawn to output device skips converting its pixel format. ### Parameters @@ -1889,30 +1880,30 @@ true if pixels do not have transparency</td> <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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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> +Sets <a href="undocumented#Image_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>: +If <a href="undocumented#Image_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 +Otherwise, if <a href="#SkBitmap_installPixels_pixels">pixels</a> equals nullptr: sets <a href="undocumented#Image_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: +If <a href="undocumented#Image_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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1926,7 +1917,7 @@ caller state passed to <a href="#SkBitmap_installPixels_releaseProc">releaseProc ### Return Value -true if <a href="#Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> +true if <a href="undocumented#Image_Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> ### Example @@ -1948,24 +1939,24 @@ install not successful --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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> +Sets <a href="undocumented#Image_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>: +If <a href="undocumented#Image_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. +Otherwise, if <a href="#SkBitmap_installPixels_2_pixels">pixels</a> equals nullptr: sets <a href="undocumented#Image_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> +contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_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> @@ -1975,7 +1966,7 @@ size of pixel row or larger</td> ### Return Value -true if <a href="#Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> +true if <a href="undocumented#Image_Info">Image Info</a> is set to <a href="#SkBitmap_info">info</a> ### Example @@ -1987,30 +1978,30 @@ true if <a href="#Info">Image Info</a> is set to <a href="#SkBitmap_info">info</ --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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 +If <a href="undocumented#Image_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. +Otherwise, if <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.addr() equals nullptr: sets <a href="undocumented#Image_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> +<a href="undocumented#Image_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> +true if <a href="undocumented#Image_Info">Image Info</a> was set to <a href="#SkBitmap_installPixels_3_pixmap">pixmap</a>.<a href="#SkBitmap_info">info</a> ### Example @@ -2025,11 +2016,11 @@ true if <a href="#Info">Image Info</a> was set to <a href="#SkBitmap_installPixe <a name="SkBitmap_installMaskPixels"></a> ## installMaskPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Sets <a href="undocumented#Image_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>, @@ -2047,7 +2038,7 @@ Caller must ensure that <a href="#SkBitmap_installMaskPixels_mask">mask</a> is v ### 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> +true if <a href="undocumented#Image_Info">Image Info</a> and <a href="undocumented#Pixel_Ref">Pixel Ref</a> refer to <a href="#SkBitmap_installMaskPixels_mask">mask</a> ### Example @@ -2062,11 +2053,11 @@ true if <a href="#Info">Image Info</a> and <a href="undocumented#Pixel_Ref">Pixe <a name="SkBitmap_setPixels"></a> ## setPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +Replaces <a href="undocumented#Pixel_Ref">Pixel Ref</a> with <a href="#SkBitmap_setPixels_pixels">pixels</a>, preserving <a href="undocumented#Image_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>; @@ -2092,15 +2083,14 @@ address of pixel storage, managed by caller</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +The allocation size is determined by <a href="undocumented#Image_Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Image_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. +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 fails. ### Return Value @@ -2118,15 +2108,15 @@ and erases it to black, but does not alter set1. <a href="#SkBitmap_setPixels">s --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +The allocation size is determined by <a href="undocumented#Image_Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Image_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 +Aborts if <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, 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 @@ -2141,12 +2131,12 @@ and erases it to black, but does not alter set1. <a href="#SkBitmap_setPixels">s --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +The allocation size is determined by <a href="undocumented#Image_Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Image_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. @@ -2175,12 +2165,12 @@ sufficient memory.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +The allocation size is determined by <a href="undocumented#Image_Info">Image Info</a> <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Image_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 @@ -2206,7 +2196,7 @@ instance of <a href="#SkBitmap_Allocator">SkBitmap::Allocator</a> instantiation< <a name="SkBitmap_pixelRef"></a> ## pixelRef -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPixelRef* pixelRef() const </pre> @@ -2232,7 +2222,7 @@ If <a href="undocumented#Pixel_Ref">Pixel Ref</a> has not been set, returns null <a name="SkBitmap_pixelRefOrigin"></a> ## pixelRefOrigin -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIPoint pixelRefOrigin() const </pre> @@ -2271,7 +2261,7 @@ subset origin: 32, 64 <a name="SkBitmap_setPixelRef"></a> ## setPixelRef -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPixelRef(sk_sp<SkPixelRef> pixelRef, int dx, int dy) </pre> @@ -2282,7 +2272,7 @@ Asserts in debug builds if <a href="#SkBitmap_setPixelRef_dx">dx</a> or <a href= 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>. +<a href="undocumented#Image_Color_Type">Color Type</a> and <a href="undocumented#Image_Alpha_Type">Alpha Type</a> in <a href="undocumented#Image_Info">Image Info</a>. ### Parameters @@ -2308,7 +2298,7 @@ row offset in <a href="undocumented#Pixel_Ref">Pixel Ref</a> for bitmap origin</ <a name="SkBitmap_readyToDraw"></a> ## readyToDraw -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool readyToDraw() const </pre> @@ -2331,7 +2321,7 @@ true if <a href="#SkBitmap_getPixels">getPixels</a> is not nullptr <a name="SkBitmap_getGenerationID"></a> ## getGenerationID -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t getGenerationID() const </pre> @@ -2369,7 +2359,7 @@ erase id 6 <a name="SkBitmap_notifyPixelsChanged"></a> ## notifyPixelsChanged -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void notifyPixelsChanged() const </pre> @@ -2389,7 +2379,7 @@ Marks that pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> have changed <a name="SkBitmap_eraseColor"></a> ## eraseColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void eraseColor(SkColor c) const </pre> @@ -2418,7 +2408,7 @@ then <a href="#RGB">Color RGB</a> is ignored. <a name="SkBitmap_eraseARGB"></a> ## eraseARGB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) const </pre> @@ -2454,7 +2444,7 @@ amount of <a href="#RGB_Blue">Color RGB Blue</a>, from no blue (0) to full blue <a name="SkBitmap_eraseRGB"></a> ## eraseRGB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void eraseRGB(U8CPU r, U8CPU g, U8CPU b) const </pre> @@ -2480,7 +2470,7 @@ amount of blue</td> <a name="SkBitmap_erase"></a> ## erase -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void erase(SkColor c, const SkIRect& area) const </pre> @@ -2513,7 +2503,7 @@ rectangle to fill</td> <a name="SkBitmap_eraseArea"></a> ## eraseArea -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void eraseArea(const SkIRect& area, SkColor c) const </pre> @@ -2524,19 +2514,19 @@ Legacy call to be deprecated. <a name="SkBitmap_getColor"></a> ## getColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>. +Returns black with <a href="#Alpha">Alpha</a> if <a href="undocumented#Image_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 +<a href="undocumented#SK_RELEASE">SK RELEASE</a> is defined. Fails if <a href="undocumented#Image_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 +<a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_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. @@ -2583,7 +2573,7 @@ Unpremultiplied: <a name="SkBitmap_getAddr"></a> ## getAddr -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void* getAddr(int x, int y) const </pre> @@ -2591,7 +2581,7 @@ Returns pixel address at (<a href="#SkBitmap_getAddr_x">x</a>, <a href="#SkBitma 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. +<a href="undocumented#Image_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>. @@ -2630,7 +2620,7 @@ addr interval == rowBytes <a name="SkBitmap_getAddr32"></a> ## getAddr32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> inline uint32_t* getAddr32(int x, int y) const </pre> @@ -2679,7 +2669,7 @@ addr interval == rowBytes <a name="SkBitmap_getAddr16"></a> ## getAddr16 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> inline uint16_t* getAddr16(int x, int y) const </pre> @@ -2728,7 +2718,7 @@ addr interval == rowBytes <a name="SkBitmap_getAddr8"></a> ## getAddr8 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> inline uint8_t* getAddr8(int x, int y) const </pre> @@ -2777,7 +2767,7 @@ unsigned 8-bit pointer to pixel at (<a href="#SkBitmap_getAddr8_x">x</a>, <a hre <a name="SkBitmap_extractSubset"></a> ## extractSubset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool extractSubset(SkBitmap* dst, const SkIRect& subset) const </pre> @@ -2844,15 +2834,15 @@ subset: 1000, 100, 1000, 200 success; false <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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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="#SkBitmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -2881,7 +2871,7 @@ 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> +destination <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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> @@ -2910,15 +2900,14 @@ true if pixels are copied to <a href="#SkBitmap_readPixels_dstPixels">dstPixels< --- -<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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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="#SkBitmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -2942,7 +2931,7 @@ 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> +destination <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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> @@ -2969,14 +2958,14 @@ creates visible banding.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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, +<a href="#SkBitmap_readPixels_3_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -2987,9 +2976,9 @@ row to the next. Returns true if pixels are copied. Returns false if: </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. +<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#Image_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 +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#Image_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 @@ -3000,7 +2989,7 @@ 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> +destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="undocumented#Image_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> @@ -3022,14 +3011,14 @@ true if pixels are copied to <a href="#SkBitmap_readPixels_3_dst">dst</a> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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, +<a href="#SkBitmap_readPixels_4_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -3040,16 +3029,16 @@ row to the next. Returns true if pixels are copied. Returns false if: </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. +<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#Image_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 +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#Image_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> +destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="undocumented#Image_Info">Image Info</a>, pixels, row bytes</td> </tr> </table> @@ -3070,14 +3059,14 @@ true if pixels are copied to <a href="#SkBitmap_readPixels_4_dst">dst</a> <a name="SkBitmap_writePixels"></a> ## writePixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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, +<a href="#SkBitmap_writePixels_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -3088,9 +3077,9 @@ row to the next. Returns true if pixels are copied. Returns false if: </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. +<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#Image_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 +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#Image_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 @@ -3101,7 +3090,7 @@ 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> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="undocumented#Image_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> @@ -3123,14 +3112,14 @@ true if <a href="#SkBitmap_writePixels_src">src</a> pixels are copied to <a href --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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, +<a href="#SkBitmap_writePixels_2_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -3141,16 +3130,16 @@ row to the next. Returns true if pixels are copied. Returns false if: </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. +<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#Image_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 +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#Image_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> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="undocumented#Image_Info">Image Info</a>, pixels, row bytes</td> </tr> </table> @@ -3168,15 +3157,14 @@ true if <a href="#SkBitmap_writePixels_2_src">src</a> pixels are copied to <a hr --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool writePixels(const SkPixmap& src, int x, int y, - SkTransferFunctionBehavior behavior) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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, +<a href="#SkBitmap_writePixels_3_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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: @@ -3187,22 +3175,22 @@ row to the next. Returns true if pixels are copied. Returns false if: </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. +<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#Image_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 +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#Image_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>. +pixels to a linear space before converting to <a href="undocumented#Image_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> +source <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="undocumented#Image_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> @@ -3230,7 +3218,7 @@ true if <a href="#SkBitmap_writePixels_3_src">src</a> pixels are copied to <a hr <a name="SkBitmap_hasHardwareMipMap"></a> ## hasHardwareMipMap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasHardwareMipMap() const </pre> @@ -3247,7 +3235,7 @@ true if <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> has be <a name="SkBitmap_setHasHardwareMipMap"></a> ## setHasHardwareMipMap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setHasHardwareMipMap(bool hasHardwareMipMap) </pre> @@ -3267,7 +3255,7 @@ sets state</td> <a name="SkBitmap_extractAlpha"></a> ## extractAlpha -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool extractAlpha(SkBitmap* dst) const </pre> @@ -3297,7 +3285,7 @@ true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_e --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool extractAlpha(SkBitmap* dst, const SkPaint* paint, SkIPoint* offset) const </pre> @@ -3334,9 +3322,8 @@ true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_e --- -<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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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 @@ -3378,11 +3365,11 @@ true if <a href="#Alpha">Alpha</a> layer was constructed in <a href="#SkBitmap_e <a name="SkBitmap_peekPixels"></a> ## peekPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool peekPixels(SkPixmap* pixmap) const </pre> -Copies <a href="#Bitmap">Bitmap</a> pixel address, row bytes, and <a href="#Info">Image Info</a> to <a href="#SkBitmap_peekPixels_pixmap">pixmap</a>, if address +Copies <a href="#Bitmap">Bitmap</a> pixel address, row bytes, and <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_peekPixels_pixmap">pixmap</a>, if address is available, and returns true. If pixel address is not available, return false and leave <a href="#SkBitmap_peekPixels_pixmap">pixmap</a> unchanged. @@ -3407,11 +3394,11 @@ true if <a href="#Bitmap">Bitmap</a> has direct access to pixels ~~~~ ------ ---xxx- --x--x- +-xxx-- +x---x- ----x- ----xx- ---xx-- +---x-- +--x--- --x--- ------ --x--- @@ -3430,7 +3417,7 @@ true if <a href="#Bitmap">Bitmap</a> has direct access to pixels <a name="SkBitmap_validate"></a> ## validate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void validate() const; </pre> @@ -3446,7 +3433,7 @@ Asserts if internal values are illegal or inconsistent. Only available if <a name="SkBitmap_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const; </pre> diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md index 33ce63104b..d712dc631c 100644 --- a/site/user/api/SkCanvas_Reference.md +++ b/site/user/api/SkCanvas_Reference.md @@ -7,14 +7,14 @@ SkCanvas Reference <a href="#Canvas">Canvas</a> provides an interface for drawing, and how the drawing is clipped and transformed. <a href="#Canvas">Canvas</a> contains a stack of <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> values. -<a href="#Canvas">Canvas</a> and <a href="SkPaint_Reference#Paint">Paint</a> together provide the state to draw into <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. +<a href="#Canvas">Canvas</a> and <a href="SkPaint_Reference#Paint">Paint</a> together provide the state to draw into <a href="SkSurface_Reference#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. Each <a href="#Canvas">Canvas</a> draw call transforms the geometry of the object by the concatenation of all <a href="#Matrix">Matrix</a> values in the stack. The transformed geometry is clipped by the intersection of all of <a href="#Clip">Clip</a> values in the stack. The <a href="#Canvas">Canvas</a> draw calls use <a href="SkPaint_Reference#Paint">Paint</a> to supply drawing state such as <a href="undocumented#Color">Color</a>, <a href="undocumented#Typeface">Typeface</a>, text size, stroke width, <a href="undocumented#Shader">Shader</a> and so on. To draw to a pixel-based destination, create <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Surface">GPU Surface</a>. -Request <a href="#Canvas">Canvas</a> from <a href="undocumented#Surface">Surface</a> to obtain the interface to draw. +Request <a href="#Canvas">Canvas</a> from <a href="SkSurface_Reference#Surface">Surface</a> to obtain the interface to draw. <a href="#Canvas">Canvas</a> generated by <a href="undocumented#Raster_Surface">Raster Surface</a> draws to memory visible to the <a href="undocumented#CPU">CPU</a>. <a href="#Canvas">Canvas</a> generated by <a href="undocumented#GPU_Surface">GPU Surface</a> uses <a href="undocumented#Vulkan">Vulkan</a> or <a href="undocumented#OpenGL">OpenGL</a> to draw to the <a href="undocumented#GPU">GPU</a>. @@ -38,28 +38,28 @@ This approach may be deprecated in the future. | --- | --- | | <a href="#SkCanvas_Lattice_Flags">Lattice::Flags</a> | Controls <a href="#SkCanvas_Lattice">Lattice</a> transparency. | | <a href="#SkCanvas_PointMode">PointMode</a> | Sets <a href="#SkCanvas_drawPoints">drawPoints</a> options. | -| <a href="undocumented#SaveLayerFlags">SaveLayerFlags</a> | Sets <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a> options. | +| SaveLayerFlags | Sets <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a> options. | | <a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> | Sets <a href="#SkCanvas_drawImageRect">drawImageRect</a> options. | ## <a name="Structs"></a> Structs | struct | description | | --- | --- | -| <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_Lattice">Lattice</a> | Divides <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkImage_Reference#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 -Create the desired type of <a href="undocumented#Surface">Surface</a> to obtain its <a href="#Canvas">Canvas</a> when possible. <a href="#Overview_Constructors">Constructors</a> are useful -when no <a href="undocumented#Surface">Surface</a> is required, and some helpers implicitly create <a href="undocumented#Raster_Surface">Raster Surface</a>. +Create the desired type of <a href="SkSurface_Reference#Surface">Surface</a> to obtain its <a href="#Canvas">Canvas</a> when possible. <a href="#Overview_Constructors">Constructors</a> are useful +when no <a href="SkSurface_Reference#Surface">Surface</a> is required, and some helpers implicitly create <a href="undocumented#Raster_Surface">Raster Surface</a>. | | description | | --- | --- | -| <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_empty_constructor">SkCanvas()</a> | No <a href="SkSurface_Reference#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="SkSurface_Reference#Surface">Surface</a>, set dimensions, <a href="undocumented#Surface_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="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_const_SkBitmap_const_SkSurfaceProps">SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)</a> | Uses existing <a href="SkBitmap_Reference#Bitmap">Bitmap</a> and <a href="undocumented#Surface_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>. | @@ -88,14 +88,14 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <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="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="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a>. | +| <a href="#SkCanvas_drawImage">drawImage</a> | Draws <a href="SkImage_Reference#Image">Image</a> at (x, y) position. | +| <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> | Draws proportionally stretched <a href="SkImage_Reference#Image">Image</a>. | +| <a href="#SkCanvas_drawImageNine">drawImageNine</a> | Draws <a href="undocumented#Nine_Patch">Nine Patch</a> <a href="SkImage_Reference#Image">Image</a>. | +| <a href="#SkCanvas_drawImageRect">drawImageRect</a> | Draws <a href="SkImage_Reference#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>. | -| <a href="#SkCanvas_drawPatch">drawPatch</a> | Draws <a href="undocumented#Coons">Coons</a> patch. | +| <a href="#SkCanvas_drawPatch">drawPatch</a> | Draws <a href="undocumented#Coons_Patch">Coons Patch</a>. | | <a href="#SkCanvas_drawPath">drawPath</a> | Draws <a href="SkPath_Reference#Path">Path</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. | | <a href="#SkCanvas_drawPicture">drawPicture</a> | Draws <a href="undocumented#Picture">Picture</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. | | <a href="#SkCanvas_drawPoint">drawPoint</a> | Draws point at (x, y) position. | @@ -120,15 +120,15 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers | <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. | | <a href="#SkCanvas_getMetaData">getMetaData</a> | Associates additional data with the canvas. | -| <a href="#SkCanvas_getProps">getProps</a> | Copies <a href="#Properties">Surface Properties</a> if available. | +| <a href="#SkCanvas_getProps">getProps</a> | Copies <a href="undocumented#Surface_Properties">Surface Properties</a> if available. | | <a href="#SkCanvas_getSaveCount">getSaveCount</a> | Returns depth of stack containing <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. | | <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_imageInfo">imageInfo</a> | Returns <a href="undocumented#Image_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="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_makeSurface">makeSurface</a> | Creates <a href="SkSurface_Reference#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="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>. | @@ -150,36 +150,41 @@ when no <a href="undocumented#Surface">Surface</a> is required, and some helpers <a name="SkCanvas_MakeRasterDirect"></a> ## MakeRasterDirect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo& info, - void* pixels, size_t rowBytes) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo& info, void* pixels, + size_t rowBytes, + const SkSurfaceProps* props = nullptr) </pre> Allocates raster <a href="#Canvas">Canvas</a> that will draw directly into <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a>. -To access <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> after drawing, call <a href="#SkCanvas_flush">flush</a> or <a href="#SkCanvas_peekPixels">peekPixels</a>. <a href="#Canvas">Canvas</a> is returned if all parameters are valid. Valid parameters include: <a href="#SkCanvas_MakeRasterDirect_info">info</a> dimensions are zero or positive; -<a href="#SkCanvas_MakeRasterDirect_info">info</a> contains <a href="#Color_Type">Image Color Type</a> and <a href="#Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>; +<a href="#SkCanvas_MakeRasterDirect_info">info</a> contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> is not nullptr; -<a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is zero or large enough to contain <a href="#SkCanvas_MakeRasterDirect_info">info</a> width <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> of <a href="#Color_Type">Image Color Type</a>. +<a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is zero or large enough to contain <a href="#SkCanvas_MakeRasterDirect_info">info</a> width <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> of <a href="undocumented#Image_Color_Type">Image Color Type</a>. Pass zero for <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirect_info">info</a> width and size of pixel. If <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is greater than zero, it must be equal to or greater than -<a href="#SkCanvas_MakeRasterDirect_info">info</a> width times bytes required for <a href="#Color_Type">Image Color Type</a>. +<a href="#SkCanvas_MakeRasterDirect_info">info</a> width times bytes required for <a href="undocumented#Image_Color_Type">Image Color Type</a>. <a href="undocumented#Pixel">Pixel</a> buffer size should be <a href="#SkCanvas_MakeRasterDirect_info">info</a> height times computed <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a>. +Pixels are not initialized. +To access <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> after drawing, call <a href="#SkCanvas_flush">flush</a> or <a href="#SkCanvas_peekPixels">peekPixels</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_MakeRasterDirect_info"> <code><strong>info </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, <a href="#Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, of <a href="undocumented#Raster_Surface">Raster Surface</a>; +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, of <a href="undocumented#Raster_Surface">Raster Surface</a>; width, or height, or both, may be zero</td> </tr> <tr> <td><a name="SkCanvas_MakeRasterDirect_pixels"> <code><strong>pixels </strong></code> </a></td> <td> pointer to destination <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> buffer</td> </tr> <tr> <td><a name="SkCanvas_MakeRasterDirect_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> -interval from one <a href="undocumented#Surface">Surface</a> row to the next, or zero</td> +interval from one <a href="SkSurface_Reference#Surface">Surface</a> row to the next, or zero</td> + </tr> <tr> <td><a name="SkCanvas_MakeRasterDirect_props"> <code><strong>props </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts; +may be nullptr</td> </tr> </table> @@ -189,7 +194,7 @@ interval from one <a href="undocumented#Surface">Surface</a> row to the next, or ### Example -<div><fiddle-embed name="11be884b8b4213a450b6dc43673bf807"><div>Allocates a three by three bitmap, clears it to white, and draws a black pixel +<div><fiddle-embed name="525285073aae7e53eb8f454a398f880c"><div>Allocates a three by three bitmap, clears it to white, and draws a black pixel in the center.</div> #### Example Output @@ -211,16 +216,15 @@ in the center.</div> <a name="SkCanvas_MakeRasterDirectN32"></a> ## MakeRasterDirectN32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, - SkPMColor* pixels, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, SkPMColor* pixels, size_t rowBytes) </pre> Allocates raster <a href="#Canvas">Canvas</a> specified by inline image specification. Subsequent <a href="#Canvas">Canvas</a> calls draw into <a href="#SkCanvas_MakeRasterDirectN32_pixels">pixels</a>. -<a href="#Color_Type">Image Color Type</a> is set to <a href="undocumented#SkColorType">kN32 SkColorType</a>. -<a href="#Alpha_Type">Image Alpha Type</a> is set to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. +<a href="undocumented#Image_Color_Type">Image Color Type</a> is set to <a href="undocumented#SkColorType">kN32 SkColorType</a>. +<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> is set to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. To access <a href="#SkCanvas_MakeRasterDirectN32_pixels">pixels</a> after drawing, call <a href="#SkCanvas_flush">flush</a> or <a href="#SkCanvas_peekPixels">peekPixels</a>. <a href="#Canvas">Canvas</a> is returned if all parameters are valid. @@ -231,7 +235,7 @@ Valid parameters include: Pass zero for <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirectN32_width">width</a> and size of pixel. If <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> is greater than zero, it must be equal to or greater than -<a href="#SkCanvas_MakeRasterDirectN32_width">width</a> times bytes required for <a href="#Color_Type">Image Color Type</a>. +<a href="#SkCanvas_MakeRasterDirectN32_width">width</a> times bytes required for <a href="undocumented#Image_Color_Type">Image Color Type</a>. <a href="undocumented#Pixel">Pixel</a> buffer size should be <a href="#SkCanvas_MakeRasterDirectN32_height">height</a> times <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a>. @@ -245,7 +249,7 @@ pixel row count on <a href="undocumented#Raster_Surface">Raster Surface</a> crea 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> </tr> <tr> <td><a name="SkCanvas_MakeRasterDirectN32_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> -interval from one <a href="undocumented#Surface">Surface</a> row to the next, or zero</td> +interval from one <a href="SkSurface_Reference#Surface">Surface</a> row to the next, or zero</td> </tr> </table> @@ -277,7 +281,7 @@ in the center.</div> <a name="SkCanvas_empty_constructor"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkCanvas() </pre> @@ -311,15 +315,15 @@ paint draws text top to bottom <a name="SkCanvas_int_int_const_SkSurfaceProps_star"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkCanvas(int width, int height, const SkSurfaceProps* props = nullptr) </pre> -Creates <a href="#Canvas">Canvas</a> of the specified dimensions without a <a href="undocumented#Surface">Surface</a>. +Creates <a href="#Canvas">Canvas</a> of the specified dimensions without a <a href="SkSurface_Reference#Surface">Surface</a>. Used by <a href="undocumented#Subclasses">Subclasses</a> with custom implementations for draw methods. -If <a href="#SkCanvas_int_int_const_SkSurfaceProps_star_props">props</a> equals nullptr, <a href="#Properties">Surface Properties</a> are created with -<a href="#Properties_Legacy_Font_Host">Surface Properties Legacy Font Host</a> settings, which choose the pixel striping +If <a href="#SkCanvas_int_int_const_SkSurfaceProps_star_props">props</a> equals nullptr, <a href="undocumented#Surface_Properties">Surface Properties</a> are created with +<a href="undocumented#Surface_Properties_Legacy_Font_Host">Surface Properties Legacy Font Host</a> settings, which choose the pixel striping direction and order. Since a platform may dynamically change its direction when the device is rotated, and since a platform may have multiple monitors with different characteristics, it is best not to rely on this legacy behavior. @@ -361,7 +365,7 @@ canvas is empty <a name="SkCanvas_copy_SkBaseDevice_star"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> explicit SkCanvas(SkBaseDevice* device) </pre> @@ -392,12 +396,12 @@ specifies a <a href="#SkCanvas_copy_SkBaseDevice_star_device">device</a> for the <a name="SkCanvas_copy_const_SkBitmap"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> explicit SkCanvas(const SkBitmap& bitmap) </pre> 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>. +Sets <a href="#SkSurfaceProps_kLegacyFontHost_InitType">SkSurfaceProps::kLegacyFontHost InitType</a> in constructed <a href="SkSurface_Reference#Surface">Surface</a>. <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>. @@ -407,7 +411,7 @@ May be deprecated in the future. ### Parameters <table> <tr> <td><a name="SkCanvas_copy_const_SkBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, <a href="#Alpha_Type">Image Alpha Type</a>, and pixel +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and pixel storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td> </tr> </table> @@ -446,7 +450,7 @@ storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td> ## <a name="SkCanvas_ColorBehavior"></a> Enum SkCanvas::ColorBehavior -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum class <a href="#SkCanvas_ColorBehavior">ColorBehavior</a> { <a href="#SkCanvas_ColorBehavior_kLegacy">kLegacy</a>, };</pre> @@ -463,7 +467,7 @@ enum class <a href="#SkCanvas_ColorBehavior">ColorBehavior</a> { <a name="SkCanvas_const_SkBitmap"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkCanvas(const SkBitmap& bitmap, ColorBehavior behavior) </pre> @@ -485,7 +489,7 @@ specializes this constructor; value is unused</td> <a name="SkCanvas_const_SkBitmap_const_SkSurfaceProps"></a> ## SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props) </pre> @@ -498,7 +502,7 @@ constructed <a href="#Canvas">Canvas</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, <a href="#Alpha_Type">Image Alpha Type</a>, +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and pixel storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td> </tr> <tr> <td><a name="SkCanvas_const_SkBitmap_const_SkSurfaceProps_props"> <code><strong>props </strong></code> </a></td> <td> order and orientation of <a href="undocumented#RGB">RGB</a> striping; and whether to use @@ -541,7 +545,7 @@ device independent fonts</td> <a name="SkCanvas_destructor"></a> ## ~SkCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual ~SkCanvas() </pre> @@ -564,7 +568,7 @@ transparent letters.</div></fiddle-embed></div> <a name="SkCanvas_getMetaData"></a> ## getMetaData -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkMetaData& getMetaData() </pre> @@ -598,16 +602,16 @@ after: (null) <a name="SkCanvas_imageInfo"></a> ## imageInfo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkImageInfo imageInfo() const </pre> -Returns <a href="#Info">Image Info</a> for <a href="#Canvas">Canvas</a>. If <a href="#Canvas">Canvas</a> is not associated with <a href="undocumented#Raster_Surface">Raster Surface</a> or -<a href="undocumented#GPU_Surface">GPU Surface</a>, returned <a href="#Color_Type">Image Color Type</a> is set to <a href="undocumented#SkColorType">kUnknown SkColorType</a>. +Returns <a href="undocumented#Image_Info">Image Info</a> for <a href="#Canvas">Canvas</a>. If <a href="#Canvas">Canvas</a> is not associated with <a href="undocumented#Raster_Surface">Raster Surface</a> or +<a href="undocumented#GPU_Surface">GPU Surface</a>, returned <a href="undocumented#Image_Color_Type">Image Color Type</a> is set to <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Return Value -dimensions and <a href="#Color_Type">Image Color Type</a> of <a href="#Canvas">Canvas</a> +dimensions and <a href="undocumented#Image_Color_Type">Image Color Type</a> of <a href="#Canvas">Canvas</a> ### Example @@ -630,12 +634,12 @@ emptyInfo == canvasInfo <a name="SkCanvas_getProps"></a> ## getProps -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool getProps(SkSurfaceProps* props) const </pre> If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#Raster_Surface">Raster Surface</a> or -<a href="undocumented#GPU_Surface">GPU Surface</a>, copies <a href="#Properties">Surface Properties</a> and returns true. Otherwise, +<a href="undocumented#GPU_Surface">GPU Surface</a>, copies <a href="undocumented#Surface_Properties">Surface Properties</a> and returns true. Otherwise, return false and leave <a href="#SkCanvas_getProps_props">props</a> unchanged. ### Parameters @@ -647,7 +651,7 @@ storage for writable <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a></t ### Return Value -true if <a href="#Properties">Surface Properties</a> was copied +true if <a href="undocumented#Surface_Properties">Surface Properties</a> was copied ### Example @@ -671,7 +675,7 @@ isRGB:1 <a name="SkCanvas_flush"></a> ## flush -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void flush() </pre> @@ -693,7 +697,7 @@ operations are never deferred. <a name="SkCanvas_getBaseLayerSize"></a> ## getBaseLayerSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual SkISize getBaseLayerSize() const </pre> @@ -727,29 +731,28 @@ size=20,30 <a name="SkCanvas_makeSurface"></a> ## makeSurface -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkSurface> makeSurface(const SkImageInfo& info, - const SkSurfaceProps* props = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkSurface> makeSurface(const SkImageInfo& info, const SkSurfaceProps* props = nullptr) </pre> -Creates <a href="undocumented#Surface">Surface</a> matching <a href="#SkCanvas_makeSurface_info">info</a> and <a href="#SkCanvas_makeSurface_props">props</a>, and associates it with <a href="#Canvas">Canvas</a>. +Creates <a href="SkSurface_Reference#Surface">Surface</a> matching <a href="#SkCanvas_makeSurface_info">info</a> and <a href="#SkCanvas_makeSurface_props">props</a>, and associates it with <a href="#Canvas">Canvas</a>. Returns nullptr if no match found. -If <a href="#SkCanvas_makeSurface_props">props</a> is nullptr, matches <a href="#Properties">Surface Properties</a> in <a href="#Canvas">Canvas</a>. If <a href="#SkCanvas_makeSurface_props">props</a> is nullptr and <a href="#Canvas">Canvas</a> -does not have <a href="#Properties">Surface Properties</a>, creates <a href="undocumented#Surface">Surface</a> with default <a href="#Properties">Surface Properties</a>. +If <a href="#SkCanvas_makeSurface_props">props</a> is nullptr, matches <a href="undocumented#Surface_Properties">Surface Properties</a> in <a href="#Canvas">Canvas</a>. If <a href="#SkCanvas_makeSurface_props">props</a> is nullptr and <a href="#Canvas">Canvas</a> +does not have <a href="undocumented#Surface_Properties">Surface Properties</a>, creates <a href="SkSurface_Reference#Surface">Surface</a> with default <a href="undocumented#Surface_Properties">Surface Properties</a>. ### Parameters <table> <tr> <td><a name="SkCanvas_makeSurface_info"> <code><strong>info </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, <a href="#Alpha_Type">Image Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a></td> +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a></td> </tr> <tr> <td><a name="SkCanvas_makeSurface_props"> <code><strong>props </strong></code> </a></td> <td> -<a href="#Properties">Surface Properties</a> to match; may be nullptr to match <a href="#Canvas">Canvas</a></td> +<a href="undocumented#Surface_Properties">Surface Properties</a> to match; may be nullptr to match <a href="#Canvas">Canvas</a></td> </tr> </table> ### Return Value -<a href="undocumented#Surface">Surface</a> matching <a href="#SkCanvas_makeSurface_info">info</a> and <a href="#SkCanvas_makeSurface_props">props</a>, or nullptr if no match is available +<a href="SkSurface_Reference#Surface">Surface</a> matching <a href="#SkCanvas_makeSurface_info">info</a> and <a href="#SkCanvas_makeSurface_props">props</a>, or nullptr if no match is available ### Example @@ -766,14 +769,14 @@ size = 3, 4 ### See Also -<a href="undocumented#SkSurface">SkSurface</a> <a href="#SkSurface_makeSurface">SkSurface::makeSurface</a> <a href="undocumented#SkImageInfo">SkImageInfo</a> <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> +<a href="SkSurface_Reference#SkSurface">SkSurface</a> <a href="#SkSurface_makeSurface">SkSurface::makeSurface</a> <a href="undocumented#SkImageInfo">SkImageInfo</a> <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> --- <a name="SkCanvas_getGrContext"></a> ## getGrContext -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual GrContext* getGrContext() </pre> @@ -796,14 +799,13 @@ Returns <a href="undocumented#GPU_Context">GPU Context</a> of the <a href="undoc <a name="SkCanvas_accessTopLayerPixels"></a> ## accessTopLayerPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void* accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, - SkIPoint* origin = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void* accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, SkIPoint* origin = nullptr) </pre> -Returns the pixel base address, <a href="#Info">Image Info</a>, <a href="#SkCanvas_accessTopLayerPixels_rowBytes">rowBytes</a>, and <a href="#SkCanvas_accessTopLayerPixels_origin">origin</a> if the pixels +Returns the pixel base address, <a href="undocumented#Image_Info">Image Info</a>, <a href="#SkCanvas_accessTopLayerPixels_rowBytes">rowBytes</a>, and <a href="#SkCanvas_accessTopLayerPixels_origin">origin</a> if the pixels can be read directly. The returned address is only valid -while <a href="#Canvas">Canvas</a> is in scope and unchanged. Any <a href="#Canvas">Canvas</a> call or <a href="undocumented#Surface">Surface</a> call +while <a href="#Canvas">Canvas</a> is in scope and unchanged. Any <a href="#Canvas">Canvas</a> call or <a href="SkSurface_Reference#Surface">Surface</a> call may invalidate the returned address and other returned values. If pixels are inaccessible, <a href="#SkCanvas_accessTopLayerPixels_info">info</a>, <a href="#SkCanvas_accessTopLayerPixels_rowBytes">rowBytes</a>, and <a href="#SkCanvas_accessTopLayerPixels_origin">origin</a> are unchanged. @@ -811,7 +813,7 @@ If pixels are inaccessible, <a href="#SkCanvas_accessTopLayerPixels_info">info</ ### Parameters <table> <tr> <td><a name="SkCanvas_accessTopLayerPixels_info"> <code><strong>info </strong></code> </a></td> <td> -storage for writable pixels' <a href="#Info">Image Info</a>; may be nullptr</td> +storage for writable pixels' <a href="undocumented#Image_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> @@ -846,7 +848,7 @@ The <a href="#Layer">Layer</a> and blended result appear on the <a href="undocum <a name="SkCanvas_accessTopRasterHandle"></a> ## accessTopRasterHandle -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRasterHandleAllocator::Handle accessTopRasterHandle() const </pre> @@ -882,7 +884,7 @@ context = skia <a name="SkCanvas_peekPixels"></a> ## peekPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool peekPixels(SkPixmap* pixmap) </pre> @@ -894,7 +896,7 @@ is returned from <a href="undocumented#GPU_Surface">GPU Surface</a>, returned by like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. <a href="#SkCanvas_peekPixels_pixmap">pixmap</a> is valid only while <a href="#Canvas">Canvas</a> is in scope and unchanged. Any -<a href="#Canvas">Canvas</a> or <a href="undocumented#Surface">Surface</a> call may invalidate the <a href="#SkCanvas_peekPixels_pixmap">pixmap</a> values. +<a href="#Canvas">Canvas</a> or <a href="SkSurface_Reference#Surface">Surface</a> call may invalidate the <a href="#SkCanvas_peekPixels_pixmap">pixmap</a> values. ### Parameters @@ -928,16 +930,15 @@ width=256 height=256 <a name="SkCanvas_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) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY) </pre> Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_dstPixels">dstPixels</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are -ignored. Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_srcX">srcX</a>, <a href="#SkCanvas_readPixels_srcY">srcY</a>) and -(<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). +ignored. -Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (bitmap.width(), bitmap.height()). +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_srcX">srcX</a>, <a href="#SkCanvas_readPixels_srcY">srcY</a>) and (<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). +Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.width(), <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.height()). Copies each readable pixel intersecting both rectangles, without scaling, converting to <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.colorType() and <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.alphaType() if required. @@ -948,7 +949,7 @@ class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. The destination pixel storage must be allocated by the caller. -<a href="undocumented#Pixel">Pixel</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="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> do not match. Only pixels within both source and destination rectangles are copied. <a href="#SkCanvas_readPixels_dstPixels">dstPixels</a> contents outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. @@ -966,7 +967,7 @@ Does not copy, and returns false if: ### Parameters <table> <tr> <td><a name="SkCanvas_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, and <a href="#Alpha_Type">Image Alpha Type</a> of <a href="#SkCanvas_readPixels_dstPixels">dstPixels</a></td> +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> of <a href="#SkCanvas_readPixels_dstPixels">dstPixels</a></td> </tr> <tr> <td><a name="SkCanvas_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> storage for pixels; <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.height() times <a href="#SkCanvas_readPixels_dstRowBytes">dstRowBytes</a>, or larger</td> </tr> <tr> <td><a name="SkCanvas_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> @@ -986,7 +987,7 @@ true if pixels were copied <div><fiddle-embed name="2964297993747769b0760874c19e0168"><div>A black circle drawn on a blue background provides an image to copy. <a href="#SkCanvas_readPixels">readPixels</a> copies one quarter of the canvas into each of the four corners. -The <a href="#Layer">Layer</a> draws over the image.</div></fiddle-embed></div> +The copied quarter circles overdraw the original circle.</div></fiddle-embed></div> ### Example @@ -1011,15 +1012,15 @@ pixel = 8056a9ff --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool readPixels(const SkPixmap& pixmap, int srcX, int srcY) </pre> Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are -ignored. Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_2_srcX">srcX</a>, <a href="#SkCanvas_readPixels_2_srcY">srcY</a>) and -(<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). +ignored. -Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (bitmap.width(), bitmap.height()). +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_2_srcX">srcX</a>, <a href="#SkCanvas_readPixels_2_srcY">srcY</a>) and (<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). +Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.width(), <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.height()). Copies each readable pixel intersecting both rectangles, without scaling, converting to <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.colorType() and <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.alphaType() if required. @@ -1030,7 +1031,7 @@ class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. Caller must allocate pixel storage in <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a> if needed. -<a href="undocumented#Pixel">Pixel</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="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> do not match. Only pixels within both source and destination <a href="#Rect">Rects</a> are copied. <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a> pixels contents outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. @@ -1081,14 +1082,14 @@ pixel = 802b5580 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool readPixels(const SkBitmap& bitmap, int srcX, int srcY) </pre> Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are -ignored. Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_3_srcX">srcX</a>, <a href="#SkCanvas_readPixels_3_srcY">srcY</a>) and -(<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). +ignored. +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_3_srcX">srcX</a>, <a href="#SkCanvas_readPixels_3_srcY">srcY</a>) and (<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()). Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.width(), <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.height()). Copies each readable pixel intersecting both rectangles, without scaling, converting to <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.colorType() and <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.alphaType() if required. @@ -1100,7 +1101,7 @@ 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="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> +<a href="SkBitmap_Reference#Bitmap">Bitmap</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> do not match. Only pixels within both source and destination rectangles are copied. <a href="SkBitmap_Reference#Bitmap">Bitmap</a> pixels outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. @@ -1154,9 +1155,8 @@ pixel = 802b5580 <a name="SkCanvas_writePixels"></a> ## writePixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool writePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes, - int x, int y) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool writePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes, int x, int y) </pre> Copies <a href="SkRect_Reference#Rect">Rect</a> from <a href="#SkCanvas_writePixels_pixels">pixels</a> to <a href="#Canvas">Canvas</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are ignored. @@ -1172,7 +1172,7 @@ Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. -<a href="undocumented#Pixel">Pixel</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="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> do not match. Only <a href="#SkCanvas_writePixels_pixels">pixels</a> within both source and destination rectangles are copied. <a href="#Canvas">Canvas</a> <a href="#SkCanvas_writePixels_pixels">pixels</a> outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. @@ -1192,7 +1192,7 @@ this-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType().</td> </tr> <tr> ### Parameters <table> <tr> <td><a name="SkCanvas_writePixels_info"> <code><strong>info </strong></code> </a></td> <td> -width, height, <a href="#Color_Type">Image Color Type</a>, and <a href="#Alpha_Type">Image Alpha Type</a> of <a href="#SkCanvas_writePixels_pixels">pixels</a></td> +width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> of <a href="#SkCanvas_writePixels_pixels">pixels</a></td> </tr> <tr> <td><a name="SkCanvas_writePixels_pixels"> <code><strong>pixels </strong></code> </a></td> <td> <a href="#SkCanvas_writePixels_pixels">pixels</a> to copy, of size <a href="#SkCanvas_writePixels_info">info</a>.height() times <a href="#SkCanvas_writePixels_rowBytes">rowBytes</a>, or larger</td> </tr> <tr> <td><a name="SkCanvas_writePixels_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> @@ -1218,7 +1218,7 @@ true if <a href="#SkCanvas_writePixels_pixels">pixels</a> were written to <a hre --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool writePixels(const SkBitmap& bitmap, int x, int y) </pre> @@ -1236,7 +1236,7 @@ Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>. -<a href="undocumented#Pixel">Pixel</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="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> do not match. Only pixels within both source and destination rectangles are copied. <a href="#Canvas">Canvas</a> pixels outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. @@ -1283,7 +1283,7 @@ true if pixels were written to <a href="#Canvas">Canvas</a> <a href="#Canvas">Canvas</a> maintains a stack of state that allows hierarchical drawing, commonly used to implement windows and views. The initial state has an identity matrix and and an infinite clip. Even with a wide-open clip, drawing is constrained by the -bounds of the <a href="#Canvas">Canvas</a> <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. +bounds of the <a href="#Canvas">Canvas</a> <a href="SkSurface_Reference#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. <a href="#Canvas">Canvas</a> savable state consists of <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>. <a href="#Clip">Clip</a> describes the area that may be drawn to. @@ -1314,7 +1314,7 @@ Each <a href="#Clip">Clip</a> uses the current <a href="#Matrix">Matrix</a> for <a name="SkCanvas_save"></a> ## save -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int save() </pre> @@ -1349,7 +1349,7 @@ the red square is not translated, and is drawn at the origin.</div></fiddle-embe <a name="SkCanvas_restore"></a> ## restore -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void restore() </pre> @@ -1371,7 +1371,7 @@ Does nothing if the stack is empty. <a name="SkCanvas_getSaveCount"></a> ## getSaveCount -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int getSaveCount() const </pre> @@ -1406,7 +1406,7 @@ depth = 1 <a name="SkCanvas_restoreToCount"></a> ## restoreToCount -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void restoreToCount(int saveCount) </pre> @@ -1457,7 +1457,7 @@ restored, its <a href="SkBitmap_Reference#Bitmap">Bitmap</a> can be modified by <a name="SkCanvas_saveLayer"></a> ## saveLayer -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int saveLayer(const SkRect* bounds, const SkPaint* paint) </pre> @@ -1493,7 +1493,7 @@ depth of saved stack ### Example -<div><fiddle-embed name="05f9b6fa6b5007aea89dfe66c306855d"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main +<div><fiddle-embed name="1a025d6018f64140af2dc36acad59008"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main <a href="#Canvas">Canvas</a>.</div></fiddle-embed></div> ### See Also @@ -1502,7 +1502,7 @@ depth of saved stack --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int saveLayer(const SkRect& bounds, const SkPaint* paint) </pre> @@ -1538,7 +1538,7 @@ depth of saved stack ### Example -<div><fiddle-embed name="812f3c8f8b93e8c7e55528c7a22887bf"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main <a href="#Canvas">Canvas</a>. +<div><fiddle-embed name="5b59231feae0c09cb1ab6a292229d7a4"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main <a href="#Canvas">Canvas</a>. The red rectangle is clipped; it does not fully fit on <a href="#Layer">Layer</a>. <a href="undocumented#Image_Filter">Image Filter</a> blurs past edge of <a href="#Layer">Layer</a> so red rectangle is blurred on all sides.</div></fiddle-embed></div> @@ -1551,7 +1551,7 @@ The red rectangle is clipped; it does not fully fit on <a href="#Layer">Layer</a <a name="SkCanvas_saveLayerPreserveLCDTextRequests"></a> ## saveLayerPreserveLCDTextRequests -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPaint* paint) </pre> @@ -1603,7 +1603,7 @@ depth of saved stack <a name="SkCanvas_saveLayerAlpha"></a> ## saveLayerAlpha -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int saveLayerAlpha(const SkRect* bounds, U8CPU alpha) </pre> @@ -1649,17 +1649,15 @@ depth of saved stack ## <a name="SkCanvas__anonymous"></a> Enum SkCanvas::_anonymous -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum { <a href="#SkCanvas_kIsOpaque_SaveLayerFlag">kIsOpaque SaveLayerFlag</a> = 1 << 0, <a href="#SkCanvas_kPreserveLCDText_SaveLayerFlag">kPreserveLCDText SaveLayerFlag</a> = 1 << 1, <a href="#SkCanvas_kInitWithPrevious_SaveLayerFlag">kInitWithPrevious SaveLayerFlag</a> = 1 << 2, <a href="#SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag">kDontClipToLayer Legacy SaveLayerFlag</a> = kDontClipToLayer_PrivateSaveLayerFlag, -}; - -typedef uint32_t <a href="undocumented#SaveLayerFlags">SaveLayerFlags</a>;</pre> +};</pre> -<a href="undocumented#SaveLayerFlags">SaveLayerFlags</a> provides options that may be used in any combination in <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>, +SaveLayerFlags provides options that may be used in any combination in <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>, defining how <a href="#Layer">Layer</a> allocated by <a href="#SkCanvas_saveLayer">saveLayer</a> operates. ### Constants @@ -1695,14 +1693,14 @@ scalePaint blends <a href="#Layer">Layer</a> back with transparency.</div></fidd # <a name="SkCanvas_SaveLayerRec"></a> Struct SkCanvas::SaveLayerRec -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> struct <a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> { <a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</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>; +<a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>; };</pre> <a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> contains the state used to create the <a href="#Layer">Layer</a>. @@ -1744,14 +1742,14 @@ contents of the previous <a href="#Layer">Layer</a>. ### Example -<div><fiddle-embed name="7b18146582fc2440656b839a173ed500"><div><a href="#Canvas">Canvas</a> <a href="#Layer">Layer</a> captures a red <a href="undocumented#Anti_alias">Anti-aliased</a> circle and a blue <a href="#Alias">Aliased</a> circle scaled +<div><fiddle-embed name="7b18146582fc2440656b839a173ed500"><div><a href="#Canvas">Canvas</a> <a href="#Layer">Layer</a> captures a red Anti-aliased circle and a blue <a href="#Alias">Aliased</a> circle scaled up by four. After drawing another red circle without scaling on top, the <a href="#Layer">Layer</a> is transferred to the main canvas.</div></fiddle-embed></div> <a name="SkCanvas_SaveLayerRec_SaveLayerRec"></a> ## SaveLayerRec -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SaveLayerRec() </pre> @@ -1779,9 +1777,8 @@ rec1 == rec2 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SaveLayerRec(const SkRect* bounds, const SkPaint* paint, - SaveLayerFlags saveLayerFlags = 0) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0) </pre> Sets <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds</a>, <a href="#SkCanvas_SaveLayerRec_fPaint">fPaint</a>, and <a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>; sets <a href="#SkCanvas_SaveLayerRec_fBackdrop">fBackdrop</a> to nullptr. @@ -1819,9 +1816,9 @@ rec1 == rec2 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SaveLayerRec(const SkRect* bounds, const SkPaint* paint, - const SkImageFilter* backdrop, SaveLayerFlags saveLayerFlags) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + SaveLayerFlags saveLayerFlags) </pre> Sets <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds</a>, <a href="#SkCanvas_SaveLayerRec_fPaint">fPaint</a>, <a href="#SkCanvas_SaveLayerRec_fBackdrop">fBackdrop</a>, and <a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>. @@ -1862,17 +1859,16 @@ rec1 == rec2 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SaveLayerRec(const SkRect* bounds, const SkPaint* paint, - const SkImageFilter* backdrop, const SkImage* clipMask, - const SkMatrix* clipMatrix, SaveLayerFlags saveLayerFlags) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + const SkImage* clipMask, const SkMatrix* clipMatrix, SaveLayerFlags saveLayerFlags) </pre> Not ready for general use.Sets <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds</a>, <a href="#SkCanvas_SaveLayerRec_fPaint">fPaint</a>, <a href="#SkCanvas_SaveLayerRec_fBackdrop">fBackdrop</a>, <a href="#SkCanvas_SaveLayerRec_fClipMask">fClipMask</a>, <a href="#SkCanvas_SaveLayerRec_fClipMatrix">fClipMatrix</a>, and <a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>. <a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a> uses <a href="#Alpha">Color Alpha</a> channel of image, transformed by <a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a>, to clip <a href="#Layer">Layer</a> when drawn to <a href="#Canvas">Canvas</a>. -Implementation is not complete; has no effect if <a href="undocumented#Device">Device</a> is <a href="undocumented#GPU_backed">GPU-backed</a>. +Implementation is not complete; has no effect if <a href="undocumented#Device">Device</a> is <a href="undocumented#GPU">GPU</a>-backed. ### Parameters @@ -1904,7 +1900,7 @@ identity matrix</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int saveLayer(const SaveLayerRec& layerRec) </pre> @@ -1951,7 +1947,7 @@ Outside of the circle the mandrill is brightened.</div></fiddle-embed></div> <a name="SkCanvas_translate"></a> ## translate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void translate(SkScalar dx, SkScalar dy) </pre> @@ -1991,7 +1987,7 @@ follows <a href="#SkCanvas_translate">translate</a> of (50, 50).</div></fiddle-e <a name="SkCanvas_scale"></a> ## scale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void scale(SkScalar sx, SkScalar sy) </pre> @@ -2025,7 +2021,7 @@ amount to <a href="#SkCanvas_scale">scale</a> in y</td> <a name="SkCanvas_rotate"></a> ## rotate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rotate(SkScalar degrees) </pre> @@ -2055,7 +2051,7 @@ are rotated clockwise.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rotate(SkScalar degrees, SkScalar px, SkScalar py) </pre> @@ -2093,7 +2089,7 @@ y-coordinate of the point to <a href="#SkCanvas_rotate">rotate</a> about</td> <a name="SkCanvas_skew"></a> ## skew -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void skew(SkScalar sx, SkScalar sy) </pre> @@ -2132,7 +2128,7 @@ increase. <a name="SkCanvas_concat"></a> ## concat -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void concat(const SkMatrix& matrix) </pre> @@ -2161,7 +2157,7 @@ transforming the result with existing <a href="#Matrix">Matrix</a>. <a name="SkCanvas_setMatrix"></a> ## setMatrix -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setMatrix(const SkMatrix& matrix) </pre> @@ -2188,7 +2184,7 @@ Unlike <a href="#SkCanvas_concat">concat</a>, any prior <a href="#SkCanvas_setMa <a name="SkCanvas_resetMatrix"></a> ## resetMatrix -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void resetMatrix() </pre> @@ -2208,12 +2204,12 @@ Any prior matrix state is overwritten. <a name="SkCanvas_getTotalMatrix"></a> ## getTotalMatrix -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkMatrix& getTotalMatrix() const </pre> Returns <a href="#Matrix">Matrix</a>. -This does not account for translation by <a href="undocumented#Device">Device</a> or <a href="undocumented#Surface">Surface</a>. +This does not account for translation by <a href="undocumented#Device">Device</a> or <a href="SkSurface_Reference#Surface">Surface</a>. ### Return Value @@ -2250,14 +2246,14 @@ prior <a href="#Clip">Clip</a> to form the replacement <a href="#Clip">Clip</a>. to subtract <a href="SkPath_Reference#Path">Path</a> from <a href="#Clip">Clip</a>; use <a href="#SkClipOp_kIntersect">SkClipOp::kIntersect</a> to intersect <a href="SkPath_Reference#Path">Path</a> with <a href="#Clip">Clip</a>. -A clipping <a href="SkPath_Reference#Path">Path</a> may be <a href="undocumented#Anti_alias">Anti-aliased</a>; if <a href="SkPath_Reference#Path">Path</a>, after transformation, is -composed of horizontal and vertical lines, clearing <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> allows whole pixels +A clipping <a href="SkPath_Reference#Path">Path</a> may be Anti-aliased; if <a href="SkPath_Reference#Path">Path</a>, after transformation, is +composed of horizontal and vertical lines, clearing Anti-alias allows whole pixels to either be inside or outside the clip. The fastest drawing has a <a href="#Alias">Aliased</a>, rectangular clip. -If clipping <a href="SkPath_Reference#Path">Path</a> has <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> set, clip may partially clip a pixel, requiring +If clipping <a href="SkPath_Reference#Path">Path</a> has Anti-alias set, clip may partially clip a pixel, requiring 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. +rectangular Anti-aliased clip looks smoother but draws slower. <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>. @@ -2267,20 +2263,20 @@ and is unaffected by <a href="#Matrix">Matrix</a>. ### Example -<div><fiddle-embed name="d2e60e5171f26ff9ddefae48387f889b"><div>Draw a red circle with an <a href="#Alias">Aliased</a> clip and an <a href="undocumented#Anti_alias">Anti-aliased</a> clip. +<div><fiddle-embed name="d2e60e5171f26ff9ddefae48387f889b"><div>Draw a red circle with an <a href="#Alias">Aliased</a> clip and an Anti-aliased clip. Use an image filter to zoom into the pixels drawn. The edge of the <a href="#Alias">Aliased</a> clip fully draws pixels in the red circle. -The edge of the <a href="undocumented#Anti_alias">Anti-aliased</a> clip partially draws pixels in the red circle.</div></fiddle-embed></div> +The edge of the Anti-aliased clip partially draws pixels in the red circle.</div></fiddle-embed></div> <a name="SkCanvas_clipRect"></a> ## clipRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRect(const SkRect& rect, SkClipOp op, bool doAntiAlias) </pre> Replace <a href="#Clip">Clip</a> with the intersection or difference of <a href="#Clip">Clip</a> and <a href="#SkCanvas_clipRect_rect">rect</a>, -with an <a href="#Alias">Aliased</a> or <a href="undocumented#Anti_alias">Anti-aliased</a> clip edge. <a href="#SkCanvas_clipRect_rect">rect</a> is transformed by <a href="#Matrix">Matrix</a> +with an <a href="#Alias">Aliased</a> or Anti-aliased clip edge. <a href="#SkCanvas_clipRect_rect">rect</a> is transformed by <a href="#Matrix">Matrix</a> before it is combined with <a href="#Clip">Clip</a>. ### Parameters @@ -2290,7 +2286,7 @@ before it is combined with <a href="#Clip">Clip</a>. </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> -true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti-aliased</a></td> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> @@ -2304,7 +2300,7 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRect(const SkRect& rect, SkClipOp op) </pre> @@ -2331,7 +2327,7 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRect(const SkRect& rect, bool doAntiAlias = false) </pre> @@ -2345,14 +2341,14 @@ before it is combined with <a href="#Clip">Clip</a>. <table> <tr> <td><a name="SkCanvas_clipRect_3_rect"> <code><strong>rect </strong></code> </a></td> <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> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> ### Example <div><fiddle-embed name="1d4e0632c97e42692775d834fe10aa99"><div>A circle drawn in pieces looks uniform when drawn <a href="#Alias">Aliased</a>. -The same circle pieces blend with pixels more than once when <a href="undocumented#Anti_alias">Anti-aliased</a>, +The same circle pieces blend with pixels more than once when Anti-aliased, visible as a thin pair of lines through the right circle.</div></fiddle-embed></div> ### See Also @@ -2364,7 +2360,7 @@ visible as a thin pair of lines through the right circle.</div></fiddle-embed></ <a name="SkCanvas_androidFramework_setDeviceClipRestriction"></a> ## androidFramework_setDeviceClipRestriction -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void androidFramework_setDeviceClipRestriction(const SkIRect& rect) </pre> @@ -2389,12 +2385,12 @@ maximum allowed clip in device coordinates</td> <a name="SkCanvas_clipRRect"></a> ## clipRRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRRect(const SkRRect& rrect, SkClipOp op, bool doAntiAlias) </pre> Replace <a href="#Clip">Clip</a> with the intersection or difference of <a href="#Clip">Clip</a> and <a href="#SkCanvas_clipRRect_rrect">rrect</a>, -with an <a href="#Alias">Aliased</a> or <a href="undocumented#Anti_alias">Anti-aliased</a> clip edge. +with an <a href="#Alias">Aliased</a> or Anti-aliased clip edge. <a href="#SkCanvas_clipRRect_rrect">rrect</a> is transformed by <a href="#Matrix">Matrix</a> before it is combined with <a href="#Clip">Clip</a>. @@ -2405,7 +2401,7 @@ before it is combined with <a href="#Clip">Clip</a>. </tr> <tr> <td><a name="SkCanvas_clipRRect_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_clipRRect_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> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> @@ -2419,7 +2415,7 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRRect(const SkRRect& rrect, SkClipOp op) </pre> @@ -2446,12 +2442,12 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRRect(const SkRRect& rrect, bool doAntiAlias = false) </pre> Replace <a href="#Clip">Clip</a> with the intersection of <a href="#Clip">Clip</a> and <a href="#SkCanvas_clipRRect_3_rrect">rrect</a>, -with an <a href="#Alias">Aliased</a> or <a href="undocumented#Anti_alias">Anti-aliased</a> clip edge. +with an <a href="#Alias">Aliased</a> or Anti-aliased clip edge. <a href="#SkCanvas_clipRRect_3_rrect">rrect</a> is transformed by <a href="#Matrix">Matrix</a> before it is combined with <a href="#Clip">Clip</a>. ### Parameters @@ -2459,7 +2455,7 @@ with an <a href="#Alias">Aliased</a> or <a href="undocumented#Anti_alias">Anti-a <table> <tr> <td><a name="SkCanvas_clipRRect_3_rrect"> <code><strong>rrect </strong></code> </a></td> <td> <a href="undocumented#Round_Rect">Round Rect</a> to combine with <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipRRect_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> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> @@ -2476,12 +2472,12 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti <a name="SkCanvas_clipPath"></a> ## clipPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipPath(const SkPath& path, SkClipOp op, bool doAntiAlias) </pre> Replace <a href="#Clip">Clip</a> with the intersection or difference of <a href="#Clip">Clip</a> and <a href="#SkCanvas_clipPath_path">path</a>, -with an <a href="#Alias">Aliased</a> or <a href="undocumented#Anti_alias">Anti-aliased</a> clip edge. <a href="#Fill_Type">Path Fill Type</a> determines if <a href="#SkCanvas_clipPath_path">path</a> +with an <a href="#Alias">Aliased</a> or Anti-aliased clip edge. <a href="#Fill_Type">Path Fill Type</a> determines if <a href="#SkCanvas_clipPath_path">path</a> describes the area inside or outside its contours; and if <a href="#Contour">Path Contour</a> overlaps itself or another <a href="#Contour">Path Contour</a>, whether the overlaps form part of the area. <a href="#SkCanvas_clipPath_path">path</a> is transformed by <a href="#Matrix">Matrix</a> before it is combined with <a href="#Clip">Clip</a>. @@ -2493,7 +2489,7 @@ itself or another <a href="#Contour">Path Contour</a>, whether the overlaps form </tr> <tr> <td><a name="SkCanvas_clipPath_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_clipPath_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> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> @@ -2511,7 +2507,7 @@ area inside clip is intersected with circle.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipPath(const SkPath& path, SkClipOp op) </pre> @@ -2544,7 +2540,7 @@ before it is combined with <a href="#Clip">Clip</a>. --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipPath(const SkPath& path, bool doAntiAlias = false) </pre> @@ -2560,7 +2556,7 @@ itself or another <a href="#Contour">Path Contour</a>, whether the overlaps form <table> <tr> <td><a name="SkCanvas_clipPath_3_path"> <code><strong>path </strong></code> </a></td> <td> <a href="SkPath_Reference#Path">Path</a> to combine with <a href="#Clip">Clip</a></td> </tr> <tr> <td><a name="SkCanvas_clipPath_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> +true if <a href="#Clip">Clip</a> is to be Anti-aliased</td> </tr> </table> @@ -2579,7 +2575,7 @@ is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the <a name="SkCanvas_setAllowSimplifyClip"></a> ## setAllowSimplifyClip -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setAllowSimplifyClip(bool allow) </pre> @@ -2590,7 +2586,7 @@ Only used for testing.Set to simplify clip stack using <a href="undocumented#Pat <a name="SkCanvas_clipRegion"></a> ## clipRegion -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clipRegion(const SkRegion& deviceRgn, SkClipOp op = SkClipOp::kIntersect) </pre> @@ -2622,7 +2618,7 @@ aligns to pixel boundaries.</div></fiddle-embed></div> <a name="SkCanvas_quickReject"></a> ## quickReject -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool quickReject(const SkRect& rect) const </pre> @@ -2661,7 +2657,7 @@ quickReject false --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool quickReject(const SkPath& path) const </pre> @@ -2703,7 +2699,7 @@ quickReject false <a name="SkCanvas_getLocalClipBounds"></a> ## getLocalClipBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect getLocalClipBounds() const </pre> @@ -2711,7 +2707,7 @@ Return bounds of <a href="#Clip">Clip</a>, transformed by inverse of <a href="#M return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero. <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>. +is Anti-aliased. ### Return Value @@ -2739,7 +2735,7 @@ left:14.5 top:64.5 right:60.5 bottom:115.5 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool getLocalClipBounds(SkRect* bounds) const </pre> @@ -2747,7 +2743,7 @@ Return <a href="#SkCanvas_getLocalClipBounds_2_bounds">bounds</a> of <a href="#C 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>. +is Anti-aliased. ### Parameters @@ -2782,7 +2778,7 @@ local bounds empty = true <a name="SkCanvas_getDeviceClipBounds"></a> ## getDeviceClipBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect getDeviceClipBounds() const </pre> @@ -2817,7 +2813,7 @@ left:15 top:65 right:60 bottom:115 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool getDeviceClipBounds(SkIRect* bounds) const </pre> @@ -2859,7 +2855,7 @@ device bounds empty = true <a name="SkCanvas_drawColor"></a> ## drawColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver) </pre> @@ -2888,7 +2884,7 @@ Fill <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> <a hre <a name="SkCanvas_clear"></a> ## clear -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void clear(SkColor color) </pre> @@ -2915,7 +2911,7 @@ This has the effect of replacing all pixels contained by <a href="#Clip">Clip</a <a name="SkCanvas_discard"></a> ## discard -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void discard() </pre> @@ -2923,13 +2919,13 @@ Make <a href="#Canvas">Canvas</a> contents undefined. Subsequent calls that read such as drawing with <a href="undocumented#SkBlendMode">SkBlendMode</a>, return undefined results. <a href="#SkCanvas_discard">discard</a> does not change <a href="#Clip">Clip</a> or <a href="#Matrix">Matrix</a>. -<a href="#SkCanvas_discard">discard</a> may do nothing, depending on the implementation of <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a> +<a href="#SkCanvas_discard">discard</a> may do nothing, depending on the implementation of <a href="SkSurface_Reference#Surface">Surface</a> or <a href="undocumented#Device">Device</a> that created <a href="#Canvas">Canvas</a>. <a href="#SkCanvas_discard">discard</a> allows optimized performance on subsequent draws by removing -cached data associated with <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. +cached data associated with <a href="SkSurface_Reference#Surface">Surface</a> or <a href="undocumented#Device">Device</a>. It is not necessary to call <a href="#SkCanvas_discard">discard</a> once done with <a href="#Canvas">Canvas</a>; -any cached data is deleted when owning <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a> is deleted. +any cached data is deleted when owning <a href="SkSurface_Reference#Surface">Surface</a> or <a href="undocumented#Device">Device</a> is deleted. ### See Also @@ -2940,7 +2936,7 @@ any cached data is deleted when owning <a href="undocumented#Surface">Surface</a <a name="SkCanvas_drawPaint"></a> ## drawPaint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPaint(const SkPaint& paint) </pre> @@ -2967,7 +2963,7 @@ graphics state used to fill <a href="#Canvas">Canvas</a></td> ## <a name="SkCanvas_PointMode"></a> Enum SkCanvas::PointMode -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkCanvas_PointMode">PointMode</a> { <a href="#SkCanvas_kPoints_PointMode">kPoints PointMode</a>, <a href="#SkCanvas_kLines_PointMode">kLines PointMode</a>, @@ -3007,9 +3003,8 @@ The lower left corner shows two lines with a miter when path contains polygon.</ <a name="SkCanvas_drawPoints"></a> ## drawPoints -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPoints(PointMode mode, size_t count, const SkPoint pts[], - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) </pre> Draw <a href="#SkCanvas_drawPoints_pts">pts</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoints_paint">paint</a>. @@ -3075,7 +3070,7 @@ the path is drawn all at once.</div></fiddle-embed></div> <a name="SkCanvas_drawPoint"></a> ## drawPoint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint) </pre> @@ -3108,7 +3103,7 @@ stroke, blend, color, and so on, used to draw</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPoint(SkPoint p, const SkPaint& paint) </pre> @@ -3142,9 +3137,8 @@ stroke, blend, color, and so on, used to draw</td> <a name="SkCanvas_drawLine"></a> ## drawLine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint& paint) </pre> Draws line segment from (<a href="#SkCanvas_drawLine_x0">x0</a>, <a href="#SkCanvas_drawLine_y0">y0</a>) to (<a href="#SkCanvas_drawLine_x1">x1</a>, <a href="#SkCanvas_drawLine_y1">y1</a>) using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawLine_paint">paint</a>. @@ -3177,7 +3171,7 @@ stroke, blend, color, and so on, used to draw</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawLine(SkPoint p0, SkPoint p1, const SkPaint& paint) </pre> @@ -3210,7 +3204,7 @@ stroke, blend, color, and so on, used to draw</td> <a name="SkCanvas_drawRect"></a> ## drawRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawRect(const SkRect& rect, const SkPaint& paint) </pre> @@ -3241,7 +3235,7 @@ stroke or fill, blend, color, and so on, used to draw</td> <a name="SkCanvas_drawIRect"></a> ## drawIRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawIRect(const SkIRect& rect, const SkPaint& paint) </pre> @@ -3272,7 +3266,7 @@ stroke or fill, blend, color, and so on, used to draw</td> <a name="SkCanvas_drawRegion"></a> ## drawRegion -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawRegion(const SkRegion& region, const SkPaint& paint) </pre> @@ -3303,7 +3297,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th <a name="SkCanvas_drawOval"></a> ## drawOval -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawOval(const SkRect& oval, const SkPaint& paint) </pre> @@ -3333,7 +3327,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th <a name="SkCanvas_drawRRect"></a> ## drawRRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawRRect(const SkRRect& rrect, const SkPaint& paint) </pre> @@ -3366,7 +3360,7 @@ may have any combination of positive non-square radii for the four corners. <a name="SkCanvas_drawDRRect"></a> ## drawDRRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint) </pre> @@ -3378,7 +3372,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th If stroked and <a href="undocumented#Round_Rect">Round Rect</a> corner has zero length radii, <a href="#Stroke_Join">Paint Stroke Join</a> can draw corners rounded or square. -<a href="undocumented#GPU_backed">GPU-backed</a> platforms optimize drawing when both <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a> are +<a href="undocumented#GPU">GPU</a>-backed platforms optimize drawing when both <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a> are concave and <a href="#SkCanvas_drawDRRect_outer">outer</a> contains <a href="#SkCanvas_drawDRRect_inner">inner</a>. These platforms may not be able to draw <a href="SkPath_Reference#Path">Path</a> built with identical data as fast. @@ -3412,7 +3406,7 @@ Stroke join does not affect <a href="#SkCanvas_drawDRRect_inner">inner</a> <a hr <a name="SkCanvas_drawCircle"></a> ## drawCircle -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint) </pre> @@ -3444,7 +3438,7 @@ half the diameter of <a href="undocumented#Circle">Circle</a></td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint) </pre> @@ -3477,9 +3471,9 @@ half the diameter of <a href="undocumented#Circle">Circle</a></td> <a name="SkCanvas_drawArc"></a> ## drawArc -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, - bool useCenter, const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool useCenter, + const SkPaint& paint) </pre> Draw <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_drawArc_paint">paint</a>. @@ -3528,9 +3522,8 @@ if true, include the center of the <a href="#SkCanvas_drawArc_oval">oval</a></td <a name="SkCanvas_drawRoundRect"></a> ## drawRoundRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="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>, @@ -3572,7 +3565,7 @@ DrawRRect <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawDRRec <a name="SkCanvas_drawPath"></a> ## drawPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPath(const SkPath& path, const SkPaint& paint) </pre> @@ -3616,12 +3609,11 @@ a smart pointer as a convenience. The pairs of calls are otherwise identical. <a name="SkCanvas_drawImage"></a> ## drawImage -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImage(const SkImage* image, SkScalar left, SkScalar top, - const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImage_image">image</a>, with its top-left corner at (<a href="#SkCanvas_drawImage_left">left</a>, <a href="#SkCanvas_drawImage_top">top</a>), +Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_image">image</a>, with its <a href="#SkCanvas_drawImage_top">top</a>-<a href="#SkCanvas_drawImage_left">left</a> corner at (<a href="#SkCanvas_drawImage_left">left</a>, <a href="#SkCanvas_drawImage_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_drawImage_paint">paint</a>. If <a href="#SkCanvas_drawImage_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>, <a href="undocumented#Blend_Mode">Blend Mode</a>, @@ -3655,12 +3647,12 @@ and so on; or nullptr</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top, const SkPaint* paint = nullptr) </pre> -Draw <a href="undocumented#Image">Image</a> <a href="#SkCanvas_drawImage_2_image">image</a>, with its top-left corner at (<a href="#SkCanvas_drawImage_2_left">left</a>, <a href="#SkCanvas_drawImage_2_top">top</a>), +Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_2_image">image</a>, with its <a href="#SkCanvas_drawImage_2_top">top</a>-<a href="#SkCanvas_drawImage_2_left">left</a> corner at (<a href="#SkCanvas_drawImage_2_left">left</a>, <a href="#SkCanvas_drawImage_2_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_drawImage_2_paint">paint</a>. If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_2_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>, @@ -3696,7 +3688,7 @@ and so on; or nullptr</td> ## <a name="SkCanvas_SrcRectConstraint"></a> Enum SkCanvas::SrcRectConstraint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> { <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a>, <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>, @@ -3740,13 +3732,12 @@ Drawing the checkerboard with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast <a name="SkCanvas_drawImageRect"></a> ## drawImageRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& dst, - const SkPaint* paint, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -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>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_src">src</a> of <a href="SkImage_Reference#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>, @@ -3764,7 +3755,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -3791,13 +3782,12 @@ with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> red --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst, - const SkPaint* paint, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -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>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="SkImage_Reference#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>. @@ -3817,7 +3807,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -3840,12 +3830,12 @@ filter strictly within <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> or draw --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 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="SkRect_Reference#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="SkImage_Reference#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>, @@ -3863,7 +3853,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -3884,13 +3874,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, - const SkRect& dst, const SkPaint* paint, - SrcRectConstraint constraint = kStrict_SrcRectConstraint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawImageRect(const sk_sp<SkImage>& image, const SkRect& src, const SkRect& dst, + const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -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>. +Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_src">src</a> of <a href="SkImage_Reference#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>, @@ -3908,7 +3897,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -3932,13 +3921,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, - const SkRect& dst, const SkPaint* paint, - SrcRectConstraint constraint = kStrict_SrcRectConstraint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawImageRect(const sk_sp<SkImage>& image, const SkIRect& isrc, const SkRect& dst, + const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> -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>. +Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> of <a href="SkImage_Reference#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>. @@ -3957,7 +3945,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -3980,13 +3968,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, - const SkPaint* paint, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_6_dst">dst</a>, +Draw <a href="SkImage_Reference#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>, @@ -4004,7 +3991,7 @@ improve performance. ### Parameters <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> +<a href="SkImage_Reference#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="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> @@ -4028,12 +4015,12 @@ filter strictly within <a href="#SkCanvas_drawImageRect_6_image">image</a> or dr <a name="SkCanvas_drawImageNine"></a> ## drawImageNine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageNine(const SkImage* image, const SkIRect& center, - const SkRect& dst, const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_dst">dst</a>. +Draw <a href="SkImage_Reference#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. @@ -4051,7 +4038,7 @@ replicates the <a href="#SkCanvas_drawImageNine_image">image</a> edge color when ### 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> +<a href="SkImage_Reference#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="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> @@ -4075,12 +4062,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, - const SkRect& dst, const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_2_dst">dst</a>. +Draw <a href="SkImage_Reference#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. @@ -4098,7 +4085,7 @@ replicates the <a href="#SkCanvas_drawImageNine_2_image">image</a> edge color wh ### 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> +<a href="SkImage_Reference#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="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> @@ -4127,15 +4114,14 @@ and below <a href="#SkCanvas_drawImageNine_2_center">center</a> to fill the rema <a name="SkCanvas_drawBitmap"></a> ## drawBitmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, - const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint = nullptr) </pre> -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>), +Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>, with its <a href="#SkCanvas_drawBitmap_top">top</a>-<a href="#SkCanvas_drawBitmap_left">left</a> 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>, +If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmap_paint">paint</a> is not nullptr, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>. If <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, apply <a href="undocumented#Shader">Shader</a>. If <a href="#SkCanvas_drawBitmap_paint">paint</a> contains <a href="undocumented#Mask_Filter">Mask Filter</a>, generate mask from <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> bounds. @@ -4171,10 +4157,9 @@ and so on; or nullptr</td> <a name="SkCanvas_drawBitmapRect"></a> ## drawBitmapRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawBitmapRect(const SkBitmap& bitmap, const SkRect& src, const SkRect& dst, - const SkPaint* paint, - SrcRectConstraint constraint = kStrict_SrcRectConstraint) + const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> 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>. @@ -4219,10 +4204,9 @@ filter strictly within <a href="#SkCanvas_drawBitmapRect_src">src</a> or draw fa --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawBitmapRect(const SkBitmap& bitmap, const SkIRect& isrc, - const SkRect& dst, const SkPaint* paint, - SrcRectConstraint constraint = kStrict_SrcRectConstraint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawBitmapRect(const SkBitmap& bitmap, const SkIRect& isrc, const SkRect& dst, + const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> 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>. @@ -4268,9 +4252,8 @@ sample strictly within <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a>, or dr --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, - const SkPaint* paint, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint) </pre> @@ -4318,9 +4301,9 @@ filter strictly within <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> or <a name="SkCanvas_drawBitmapNine"></a> ## drawBitmapNine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, - const SkRect& dst, const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, + const SkPaint* paint = nullptr) </pre> 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>. @@ -4371,7 +4354,7 @@ and below <a href="#SkCanvas_drawBitmapNine_center">center</a> to fill the remai # <a name="SkCanvas_Lattice"></a> Struct SkCanvas::Lattice -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> struct <a href="#SkCanvas_Lattice">Lattice</a> { enum <a href="#SkCanvas_Lattice_Flags">Flags</a> {... @@ -4383,7 +4366,7 @@ int <a href="#SkCanvas_Lattice_fYCount">fYCount</a>; const <a href="SkIRect_Reference#SkIRect">SkIRect</a>* <a href="#SkCanvas_Lattice_fBounds">fBounds</a>; };</pre> -<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. +<a href="#SkCanvas_Lattice">Lattice</a> divides <a href="SkBitmap_Reference#Bitmap">Bitmap</a> or <a href="SkImage_Reference#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 @@ -4393,7 +4376,7 @@ remaining space, if any. ## <a name="SkCanvas_Lattice_Flags"></a> Enum SkCanvas::Lattice::Flags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkCanvas_Lattice_Flags">Flags</a> : uint8_t { <a href="#SkCanvas_Lattice_kTransparent_Flags">kTransparent Flags</a> = 1 << 0, };</pre> @@ -4446,14 +4429,14 @@ divisions. <a name="SkCanvas_Lattice_fBounds"> <code><strong>const SkIRect* fBounds</strong></code> </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>. +If nullptr, source bounds is dimensions of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> or <a href="SkImage_Reference#Image">Image</a>. <a name="SkCanvas_drawBitmapLattice"></a> ## drawBitmapLattice -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, - const SkRect& dst, const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkRect& dst, + const SkPaint* paint = nullptr) </pre> 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>. @@ -4507,12 +4490,12 @@ and below center to fill the remaining space.</div></fiddle-embed></div> <a name="SkCanvas_drawImageLattice"></a> ## drawImageLattice -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawImageLattice(const SkImage* image, const Lattice& lattice, - const SkRect& dst, const SkPaint* paint = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageLattice_dst">dst</a>. +Draw <a href="SkImage_Reference#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 @@ -4534,7 +4517,7 @@ outside of its bounds. ### Parameters <table> <tr> <td><a name="SkCanvas_drawImageLattice_image"> <code><strong>image </strong></code> </a></td> <td> -<a href="undocumented#Image">Image</a> containing pixels, dimensions, and format</td> +<a href="SkImage_Reference#Image">Image</a> containing pixels, dimensions, and format</td> </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> @@ -4561,15 +4544,14 @@ are scaled if needed to take up the remaining space; the center is transparent.< <a name="SkCanvas_drawText"></a> ## drawText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, const SkPaint& paint) </pre> 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> 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>. +UTF-8. <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 left side bearing at <a href="#SkCanvas_drawText_x">x</a> @@ -4586,9 +4568,9 @@ character code points or <a href="#Glyph">Glyphs</a> drawn</td> </tr> <tr> <td><a name="SkCanvas_drawText_byteLength"> <code><strong>byteLength </strong></code> </a></td> <td> byte length of <a href="#SkCanvas_drawText_text">text</a> array</td> </tr> <tr> <td><a name="SkCanvas_drawText_x"> <code><strong>x </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawText_text">text</a> on x-axis</td> +start of <a href="#SkCanvas_drawText_text">text</a> on <a href="#SkCanvas_drawText_x">x</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawText_y"> <code><strong>y </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawText_text">text</a> on y-axis</td> +start of <a href="#SkCanvas_drawText_text">text</a> on <a href="#SkCanvas_drawText_y">y</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawText_paint"> <code><strong>paint </strong></code> </a></td> <td> <a href="#SkCanvas_drawText_text">text</a> size, blend, color, and so on, used to draw</td> </tr> @@ -4608,7 +4590,7 @@ start of <a href="#SkCanvas_drawText_text">text</a> on y-axis</td> <a name="SkCanvas_drawString"></a> ## drawString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawString(const char* string, SkScalar x, SkScalar y, const SkPaint& paint) </pre> @@ -4616,7 +4598,7 @@ Draw null terminated <a href="#SkCanvas_drawString_string">string</a>, with orig <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawString_paint">paint</a>. <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 +as UTF-8. 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 @@ -4633,9 +4615,9 @@ filled 12 point black <a href="#Glyph">Glyphs</a>. character code points or <a href="#Glyph">Glyphs</a> drawn, ending with a char value of zero</td> </tr> <tr> <td><a name="SkCanvas_drawString_x"> <code><strong>x </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawString_string">string</a> on x-axis</td> +start of <a href="#SkCanvas_drawString_string">string</a> on <a href="#SkCanvas_drawString_x">x</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawString_y"> <code><strong>y </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawString_string">string</a> on y-axis</td> +start of <a href="#SkCanvas_drawString_string">string</a> on <a href="#SkCanvas_drawString_y">y</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawString_paint"> <code><strong>paint </strong></code> </a></td> <td> text size, blend, color, and so on, used to draw</td> </tr> @@ -4651,16 +4633,15 @@ text size, blend, color, and so on, used to draw</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawString(const SkString& string, SkScalar x, SkScalar y, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint) </pre> 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> 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 +as UTF-8. 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 @@ -4677,9 +4658,9 @@ filled 12 point black <a href="#Glyph">Glyphs</a>. character code points or <a href="#Glyph">Glyphs</a> drawn, ending with a char value of zero</td> </tr> <tr> <td><a name="SkCanvas_drawString_2_x"> <code><strong>x </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawString_2_string">string</a> on x-axis</td> +start of <a href="#SkCanvas_drawString_2_string">string</a> on <a href="#SkCanvas_drawString_2_x">x</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawString_2_y"> <code><strong>y </strong></code> </a></td> <td> -start of <a href="#SkCanvas_drawString_2_string">string</a> on y-axis</td> +start of <a href="#SkCanvas_drawString_2_string">string</a> on <a href="#SkCanvas_drawString_2_y">y</a>-axis</td> </tr> <tr> <td><a name="SkCanvas_drawString_2_paint"> <code><strong>paint </strong></code> </a></td> <td> text size, blend, color, and so on, used to draw</td> </tr> @@ -4698,9 +4679,8 @@ text size, blend, color, and so on, used to draw</td> <a name="SkCanvas_drawPosText"></a> ## drawPosText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint& paint) </pre> Draw each glyph in <a href="#SkCanvas_drawPosText_text">text</a> with the origin in <a href="#SkCanvas_drawPosText_pos">pos</a> array, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and @@ -4708,7 +4688,7 @@ Draw each glyph in <a href="#SkCanvas_drawPosText_text">text</a> with the origin described by <a href="#SkCanvas_drawPosText_byteLength">byteLength</a> of <a href="#SkCanvas_drawPosText_text">text</a>. <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>; +UTF-8. <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 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>. @@ -4746,9 +4726,9 @@ array of glyph origins</td> <a name="SkCanvas_drawPosTextH"></a> ## drawPosTextH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], - SkScalar constY, const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, + const SkPaint& paint) </pre> Draw each glyph in <a href="#SkCanvas_drawPosTextH_text">text</a> with its (x, y) origin composed from <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> array and @@ -4756,7 +4736,7 @@ Draw each glyph in <a href="#SkCanvas_drawPosTextH_text">text</a> with its (x, y 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> 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>; +UTF-8. <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 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>. @@ -4797,9 +4777,9 @@ shared y coordinate for all of x positions</td> <a name="SkCanvas_drawTextOnPathHV"></a> ## drawTextOnPathHV -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, - SkScalar hOffset, SkScalar vOffset, const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, SkScalar hOffset, + SkScalar vOffset, const SkPaint& paint) </pre> Draw <a href="#SkCanvas_drawTextOnPathHV_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPathHV_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPathHV_paint">paint</a>. @@ -4811,7 +4791,7 @@ mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPathHV_p 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> 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 +UTF-8. 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 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>. @@ -4849,9 +4829,9 @@ offset of <a href="#SkCanvas_drawTextOnPathHV_text">text</a> above (if negative) <a name="SkCanvas_drawTextOnPath"></a> ## drawTextOnPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, - const SkMatrix* matrix, const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, const SkMatrix* matrix, + const SkPaint& paint) </pre> Draw <a href="#SkCanvas_drawTextOnPath_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPath_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPath_paint">paint</a>. @@ -4863,7 +4843,7 @@ mapped to projected points parallel to the <a href="#SkCanvas_drawTextOnPath_pat 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> 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 +UTF-8. 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 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>. @@ -4900,10 +4880,9 @@ to use identity <a href="#Matrix">Matrix</a></td> <a name="SkCanvas_drawTextRSXform"></a> ## drawTextRSXform -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawTextRSXform(const void* text, size_t byteLength, - const SkRSXform xform[], const SkRect* cullRect, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[], + const SkRect* cullRect, const SkPaint& paint) </pre> Draw <a href="#SkCanvas_drawTextRSXform_text">text</a>, transforming each glyph by the corresponding <a href="undocumented#SkRSXform">SkRSXform</a>, @@ -4947,16 +4926,15 @@ byte length of <a href="#SkCanvas_drawTextRSXform_text">text</a> array</td> <a name="SkCanvas_drawTextBlob"></a> ## drawTextBlob -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint) </pre> Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_x">x</a>, <a href="#SkCanvas_drawTextBlob_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_drawTextBlob_paint">paint</a>. <a href="#SkCanvas_drawTextBlob_blob">blob</a> contains <a href="#Glyph">Glyphs</a>, their positions, and <a href="#SkCanvas_drawTextBlob_paint">paint</a> attributes specific to text: <a href="undocumented#Typeface">Typeface</a>, <a href="#Text_Size">Paint Text Size</a>, <a href="#Text_Scale_X">Paint Text Scale X</a>, <a href="#Text_Skew_X">Paint Text Skew X</a>, -<a href="#Text_Align">Paint Text Align</a>, <a href="#Hinting">Paint Hinting</a>, <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Fake_Bold">Paint Fake Bold</a>, +<a href="#Text_Align">Paint Text Align</a>, <a href="#Hinting">Paint Hinting</a>, Anti-alias, <a href="#Fake_Bold">Paint Fake Bold</a>, <a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a>, <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a>, <a href="SkPaint_Reference#LCD_Text">LCD Text</a>, <a href="SkPaint_Reference#Linear_Text">Linear Text</a>, <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a>, and <a href="#Vertical_Text">Paint Vertical Text</a>. @@ -4986,16 +4964,15 @@ 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, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaint& paint) </pre> Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_2_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_2_x">x</a>, <a href="#SkCanvas_drawTextBlob_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_drawTextBlob_2_paint">paint</a>. <a href="#SkCanvas_drawTextBlob_2_blob">blob</a> contains <a href="#Glyph">Glyphs</a>, their positions, and <a href="#SkCanvas_drawTextBlob_2_paint">paint</a> attributes specific to text: <a href="undocumented#Typeface">Typeface</a>, <a href="#Text_Size">Paint Text Size</a>, <a href="#Text_Scale_X">Paint Text Scale X</a>, <a href="#Text_Skew_X">Paint Text Skew X</a>, -<a href="#Text_Align">Paint Text Align</a>, <a href="#Hinting">Paint Hinting</a>, <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>, <a href="#Fake_Bold">Paint Fake Bold</a>, +<a href="#Text_Align">Paint Text Align</a>, <a href="#Hinting">Paint Hinting</a>, Anti-alias, <a href="#Fake_Bold">Paint Fake Bold</a>, <a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a>, <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a>, <a href="SkPaint_Reference#LCD_Text">LCD Text</a>, <a href="SkPaint_Reference#Linear_Text">Linear Text</a>, <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a>, and <a href="#Vertical_Text">Paint Vertical Text</a>. @@ -5029,7 +5006,7 @@ blend, color, stroking, and so on, used to draw</td> <a name="SkCanvas_drawPicture"></a> ## drawPicture -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPicture(const SkPicture* picture) </pre> @@ -5056,7 +5033,7 @@ recorded drawing commands to play</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawPicture(const sk_sp<SkPicture>& picture) </pre> @@ -5083,9 +5060,8 @@ recorded drawing commands to play</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPicture(const SkPicture* picture, const SkMatrix* matrix, - const SkPaint* paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint) </pre> Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_3_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_3_picture">picture</a> with @@ -5116,9 +5092,8 @@ 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, - const SkPaint* paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPicture(const sk_sp<SkPicture>& picture, const SkMatrix* matrix, const SkPaint* paint) </pre> Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_4_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_4_picture">picture</a> with @@ -5152,9 +5127,8 @@ recorded drawing commands to play</td> <a name="SkCanvas_drawVertices"></a> ## drawVertices -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawVertices(const SkVertices* vertices, SkBlendMode mode, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint) </pre> Draw <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. @@ -5182,9 +5156,8 @@ 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, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint) </pre> Draw <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_2_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. @@ -5215,28 +5188,27 @@ specifies the <a href="undocumented#Shader">Shader</a>, used as <a href="undocum <a name="SkCanvas_drawPatch"></a> ## drawPatch -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], SkBlendMode mode, - const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], + SkBlendMode mode, const SkPaint& paint) </pre> -Draws a <a href="undocumented#Coons">Coons</a> patch: the interpolation of four <a href="#SkCanvas_drawPatch_cubics">cubics</a> with shared corners, +Draws a <a href="undocumented#Coons_Patch">Coons Patch</a>: 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="#SkCanvas_drawPatch_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, +<a href="undocumented#Coons_Patch">Coons Patch</a> 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 +as <a href="undocumented#Coons_Patch">Coons Patch</a> 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="SkPoint_Reference#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. -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 +If <a href="#SkCanvas_drawPatch_paint">paint</a> contains <a href="undocumented#Shader">Shader</a>, <a href="SkPoint_Reference#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. ### Parameters @@ -5246,7 +5218,7 @@ corners in top-left, top-right, bottom-right, bottom-left order. </tr> <tr> <td><a name="SkCanvas_drawPatch_colors"> <code><strong>colors </strong></code> </a></td> <td> <a href="undocumented#Color">Color</a> array, one for each corner</td> </tr> <tr> <td><a name="SkCanvas_drawPatch_texCoords"> <code><strong>texCoords </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array of texture coordinates, mapping <a href="undocumented#Shader">Shader</a> to corners; +<a href="SkPoint_Reference#Point">Point</a> array of texture coordinates, mapping <a href="undocumented#Shader">Shader</a> to corners; may be nullptr</td> </tr> # <tr> <td><a name="SkCanvas_drawPatch_mode"> <code><strong>mode </strong></code> </a></td> <td> @@ -5266,27 +5238,27 @@ SeeAlso <a href="#SkCanvas_drawVertices">drawVertices</a> <a href="#SkCanvas_dra --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void drawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], const SkPaint& paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], + const SkPaint& paint) </pre> -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, +Draws <a href="#Cubic">Cubic</a> <a href="undocumented#Coons_Patch">Coons Patch</a>: 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="#SkCanvas_drawPatch_2_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>, +<a href="undocumented#Coons_Patch">Coons Patch</a> 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 +as <a href="undocumented#Coons_Patch">Coons Patch</a> 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="SkPoint_Reference#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. -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 +If <a href="#SkCanvas_drawPatch_2_paint">paint</a> contains <a href="undocumented#Shader">Shader</a>, <a href="SkPoint_Reference#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. ### Parameters @@ -5296,7 +5268,7 @@ corners in top-left, top-right, bottom-right, bottom-left order. </tr> <tr> <td><a name="SkCanvas_drawPatch_2_colors"> <code><strong>colors </strong></code> </a></td> <td> <a href="undocumented#Color">Color</a> array, one for each corner</td> </tr> <tr> <td><a name="SkCanvas_drawPatch_2_texCoords"> <code><strong>texCoords </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array of texture coordinates, mapping <a href="undocumented#Shader">Shader</a> to corners; +<a href="SkPoint_Reference#Point">Point</a> array of texture coordinates, mapping <a href="undocumented#Shader">Shader</a> to corners; may be nullptr</td> </tr> # <tr> <td><a name="SkCanvas_drawPatch_2_paint"> <code><strong>paint </strong></code> </a></td> <td> @@ -5321,14 +5293,14 @@ SeeAlso <a href="#SkCanvas_drawVertices">drawVertices</a> <a href="#SkCanvas_dra <a name="SkCanvas_drawAtlas"></a> ## drawAtlas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[], - const SkColor colors[], int count, SkBlendMode mode, - const SkRect* cullRect, const SkPaint* paint) + const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect, + const SkPaint* paint) </pre> 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> +<a href="#SkCanvas_drawAtlas_paint">paint</a> uses Anti-alias, <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="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. @@ -5340,7 +5312,7 @@ If <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is outside of <a href="#C ### Parameters <table> <tr> <td><a name="SkCanvas_drawAtlas_atlas"> <code><strong>atlas </strong></code> </a></td> <td> -<a href="undocumented#Image">Image</a> containing sprites</td> +<a href="SkImage_Reference#Image">Image</a> containing sprites</td> </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> @@ -5368,14 +5340,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[], - const SkRect tex[], const SkColor colors[], int count, - SkBlendMode mode, const SkRect* cullRect, const SkPaint* paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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> +<a href="#SkCanvas_drawAtlas_2_paint">paint</a> uses Anti-alias, <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="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. @@ -5387,7 +5359,7 @@ If <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is outside of <a href=" ### Parameters <table> <tr> <td><a name="SkCanvas_drawAtlas_2_atlas"> <code><strong>atlas </strong></code> </a></td> <td> -<a href="undocumented#Image">Image</a> containing sprites</td> +<a href="SkImage_Reference#Image">Image</a> containing sprites</td> </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> @@ -5415,13 +5387,13 @@ 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 SkImage* atlas, const SkRSXform xform[], const SkRect tex[], - int count, const SkRect* cullRect, const SkPaint* paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawAtlas(const 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_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> +<a href="#SkCanvas_drawAtlas_3_paint">paint</a> uses Anti-alias, <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="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. @@ -5432,7 +5404,7 @@ If <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is outside of <a href=" ### Parameters <table> <tr> <td><a name="SkCanvas_drawAtlas_3_atlas"> <code><strong>atlas </strong></code> </a></td> <td> -<a href="undocumented#Image">Image</a> containing sprites</td> +<a href="SkImage_Reference#Image">Image</a> containing sprites</td> </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> @@ -5456,14 +5428,13 @@ 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[], - const SkRect tex[], int count, const SkRect* cullRect, - const SkPaint* paint) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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> +<a href="#SkCanvas_drawAtlas_4_paint">paint</a> uses Anti-alias, <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="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. @@ -5474,7 +5445,7 @@ If <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is outside of <a href=" ### Parameters <table> <tr> <td><a name="SkCanvas_drawAtlas_4_atlas"> <code><strong>atlas </strong></code> </a></td> <td> -<a href="undocumented#Image">Image</a> containing sprites</td> +<a href="SkImage_Reference#Image">Image</a> containing sprites</td> </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> @@ -5501,7 +5472,7 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td> <a name="SkCanvas_drawDrawable"></a> ## drawDrawable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr) </pre> @@ -5532,7 +5503,7 @@ transformation applied to drawing; may be nullptr</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y) </pre> @@ -5567,11 +5538,11 @@ offset into <a href="#Canvas">Canvas</a> writable pixels in <a href="#SkCanvas_d <a name="SkCanvas_drawAnnotation"></a> ## drawAnnotation -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void drawAnnotation(const SkRect& rect, const char key[], SkData* value) </pre> -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 +Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a <a href="#SkCanvas_drawAnnotation_key">key</a>-<a href="#SkCanvas_drawAnnotation_value">value</a> 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 @@ -5598,12 +5569,11 @@ 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) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void drawAnnotation(const SkRect& rect, const char key[], const sk_sp<SkData>& value) </pre> -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 +Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a <a href="#SkCanvas_drawAnnotation_2_key">key</a>-<a href="#SkCanvas_drawAnnotation_2_value">value</a> 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 @@ -5633,7 +5603,7 @@ data holding <a href="#SkCanvas_drawAnnotation_2_value">value</a> stored in anno <a name="SkCanvas_getDrawFilter"></a> ## getDrawFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkDrawFilter* getDrawFilter() const </pre> @@ -5644,7 +5614,7 @@ Legacy call to be deprecated. <a name="SkCanvas_setDrawFilter"></a> ## setDrawFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter) </pre> @@ -5655,7 +5625,7 @@ Legacy call to be deprecated. <a name="SkCanvas_isClipEmpty"></a> ## isClipEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual bool isClipEmpty() const </pre> @@ -5691,7 +5661,7 @@ clip is empty <a name="SkCanvas_isClipRect"></a> ## isClipRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual bool isClipRect() const </pre> @@ -5727,7 +5697,7 @@ Stack helper class calls <a name="SkAutoCanvasRestore_SkCanvas_star"></a> ## SkAutoCanvasRestore -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkAutoCanvasRestore(SkCanvas* canvas, bool doSave) </pre> @@ -5759,7 +5729,7 @@ utility to <a href="#SkAutoCanvasRestore_restore">restore</a> <a href="#Canvas"> <a name="SkAutoCanvasRestore_destructor"></a> ## ~SkAutoCanvasRestore -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> ~SkAutoCanvasRestore() </pre> @@ -5775,7 +5745,7 @@ scope. <a name="SkAutoCanvasRestore_restore"></a> ## restore -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void restore() </pre> diff --git a/site/user/api/SkIPoint16_Reference.md b/site/user/api/SkIPoint16_Reference.md new file mode 100644 index 0000000000..1c9f9d7a04 --- /dev/null +++ b/site/user/api/SkIPoint16_Reference.md @@ -0,0 +1,173 @@ +SkIPoint16 Reference +=== + +# <a name="IPoint16"></a> IPoint16 + +# <a name="SkIPoint16"></a> Struct SkIPoint16 +<a href="SkIPoint_Reference#SkIPoint">SkIPoint</a> holds two 16 bit integer coordinates + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkIPoint16_Make">Make</a> | Constructs from integer inputs. | +| <a href="#SkIPoint16_set">set</a> | Sets to integer input. | +| <a href="#SkIPoint16_x">x</a> | Returns <a href="#SkIPoint16_fX">fX</a>. | +| <a href="#SkIPoint16_y">y</a> | Returns <a href="#SkIPoint16_fY">fY</a>. | + +<a name="SkIPoint16_fX"> <code><strong>int16_t fX</strong></code> </a> + +<a href="#SkIPoint16_x">x</a>-axis value used by <a href="#IPoint16">IPoint16</a>. + +<a name="SkIPoint16_fY"> <code><strong>int16_t fY</strong></code> </a> + +<a href="#SkIPoint16_y">y</a>-axis value used by <a href="#IPoint16">IPoint16</a>. + +<a name="SkIPoint16_Make"></a> +## Make + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkIPoint16 Make(int x, int y) +</pre> + +Sets <a href="#SkIPoint16_fX">fX</a> to <a href="#SkIPoint16_x">x</a>, <a href="#SkIPoint16_fY">fY</a> to <a href="#SkIPoint16_y">y</a>. If <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined, asserts +if <a href="#SkIPoint16_x">x</a> or <a href="#SkIPoint16_y">y</a> does not fit in 16 bits. + +### Parameters + +<table> <tr> <td><a name="SkIPoint16_Make_x"> <code><strong>x </strong></code> </a></td> <td> +integer <a href="#SkIPoint16_x">x</a>-axis value of constructed <a href="SkIPoint_Reference#IPoint">IPoint</a></td> + </tr> <tr> <td><a name="SkIPoint16_Make_y"> <code><strong>y </strong></code> </a></td> <td> +integer <a href="#SkIPoint16_y">y</a>-axis value of constructed <a href="SkIPoint_Reference#IPoint">IPoint</a></td> + </tr> +</table> + +### Return Value + +<a href="#IPoint16">IPoint16</a> (<a href="#SkIPoint16_x">x</a>, <a href="#SkIPoint16_y">y</a>) + +### Example + +<div><fiddle-embed name="d815ca04fbf22b5acec6f85b6351f362"> + +#### Example Output + +~~~~ +pt1.fX == pt2.fX +pt1.fY == pt2.fY +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint16_set">set</a> <a href="#SkPoint_iset">SkPoint::iset()</a> <a href="#SkIPoint_Make">SkIPoint::Make</a> + +--- + +<a name="SkIPoint16_x"></a> +## x + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int16_t x() const +</pre> + +Returns <a href="#SkIPoint16_x">x</a>-axis value of <a href="#IPoint16">IPoint16</a>. + +### Return Value + +<a href="#SkIPoint16_fX">fX</a> + +### Example + +<div><fiddle-embed name="f7fd3b3674f042869de3582ab793dbf7"> + +#### Example Output + +~~~~ +pt1.fX == pt1.x() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint16_y">y</a> <a href="#SkIPoint_x">SkIPoint::x()</a> + +--- + +<a name="SkIPoint16_y"></a> +## y + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int16_t y() const +</pre> + +Returns <a href="#SkIPoint16_y">y</a>-axis value of <a href="SkIPoint_Reference#IPoint">IPoint</a>. + +### Return Value + +<a href="#SkIPoint16_fY">fY</a> + +### Example + +<div><fiddle-embed name="3662cedaf1e9924a401f794902da3b1f"> + +#### Example Output + +~~~~ +pt1.fY == pt1.y() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint16_x">x</a> <a href="#SkPoint_y">SkPoint::y()</a> <a href="#SkIPoint_y">SkIPoint::y()</a> + +--- + +<a name="SkIPoint16_set"></a> +## set + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void set(int x, int y) +</pre> + +Sets <a href="#SkIPoint16_fX">fX</a> to <a href="#SkIPoint16_x">x</a> and <a href="#SkIPoint16_fY">fY</a> to <a href="#SkIPoint16_y">y</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint16_set_x"> <code><strong>x </strong></code> </a></td> <td> +new value for <a href="#SkIPoint16_fX">fX</a></td> + </tr> <tr> <td><a name="SkIPoint16_set_y"> <code><strong>y </strong></code> </a></td> <td> +new value for <a href="#SkIPoint16_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="abff78d3f2d97b1284ccb13d0c56b6c8"> + +#### Example Output + +~~~~ +pt1.fX == pt2.fX +pt1.fY == pt2.fY +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint16_Make">Make</a> <a href="#SkPoint_set">SkPoint::set</a> + +--- + diff --git a/site/user/api/SkIPoint_Reference.md b/site/user/api/SkIPoint_Reference.md new file mode 100644 index 0000000000..210104c7bb --- /dev/null +++ b/site/user/api/SkIPoint_Reference.md @@ -0,0 +1,503 @@ +SkIPoint Reference +=== + +# <a name="IVector"></a> IVector + +# <a name="IPoint"></a> IPoint + +# <a name="SkIPoint"></a> Struct SkIPoint +<a href="#SkIPoint">SkIPoint</a> holds two 32 bit integer coordinates + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Operators"></a> Operators + +| description | function | +| --- | --- | +| <a href="#SkIPoint">SkIPoint</a> <a href="#SkIPoint_minus_operator">operator-() const</a> | Reverses sign of <a href="#IPoint">IPoint</a>. | +| <a href="#SkIPoint">SkIPoint</a> <a href="#SkIPoint_add_operator">operator+(const SkIPoint& a, const SkIVector& b)</a> | Returns <a href="#IPoint">IPoint</a> offset by <a href="SkIPoint_Reference#IVector">IVector</a>. | +| <a href="SkIPoint_Reference#SkIVector">SkIVector</a> <a href="#SkIPoint_subtract_operator">operator-(const SkIPoint& a, const SkIPoint& b)</a> | Returns <a href="SkIPoint_Reference#IVector">IVector</a> between <a href="#IPoint">IPoints</a>. | +| bool <a href="#SkIPoint_notequal_operator">operator!=(const SkIPoint& a, const SkIPoint& b)</a> | Returns true if <a href="#IPoint">IPoints</a> are unequal. | +| bool <a href="#SkIPoint_equal_operator">operator==(const SkIPoint& a, const SkIPoint& b)</a> | Returns true if <a href="#IPoint">IPoints</a> are equal. | +| void <a href="#SkIPoint_addto_operator">operator+=(const SkIVector& v)</a> | Adds <a href="SkIPoint_Reference#IVector">IVector</a> to <a href="#IPoint">IPoint</a>. | +| void <a href="#SkIPoint_subtractfrom_operator">operator-=(const SkIVector& v)</a> | Subtracts <a href="SkIPoint_Reference#IVector">IVector</a> from <a href="#IPoint">IPoint</a>. | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkIPoint_Make">Make</a> | Constructs from integer inputs. | +| <a href="#SkIPoint_equals">equals</a> | Returns true if members are equal. | +| <a href="#SkIPoint_isZero">isZero</a> | Returns true if both members equal zero. | +| <a href="#SkIPoint_set">set</a> | Sets to integer input. | +| <a href="#SkIPoint_x">x</a> | Returns <a href="#SkIPoint_fX">fX</a>. | +| <a href="#SkIPoint_y">y</a> | Returns <a href="#SkIPoint_fY">fY</a>. | + +<a name="SkIPoint_fX"> <code><strong>int32_t fX</strong></code> </a> + +<a href="#SkIPoint_x">x</a>-axis value used by <a href="#IPoint">IPoint</a>. + +<a name="SkIPoint_fY"> <code><strong>int32_t fY</strong></code> </a> + +<a href="#SkIPoint_y">y</a>-axis value used by <a href="#IPoint">IPoint</a>. + +<a name="SkIPoint_Make"></a> +## Make + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkIPoint Make(int32_t x, int32_t y) +</pre> + +Sets <a href="#SkIPoint_fX">fX</a> to <a href="#SkIPoint_x">x</a>, <a href="#SkIPoint_fY">fY</a> to <a href="#SkIPoint_y">y</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_Make_x"> <code><strong>x </strong></code> </a></td> <td> +integer <a href="#SkIPoint_x">x</a>-axis value of constructed <a href="#IPoint">IPoint</a></td> + </tr> <tr> <td><a name="SkIPoint_Make_y"> <code><strong>y </strong></code> </a></td> <td> +integer <a href="#SkIPoint_y">y</a>-axis value of constructed <a href="#IPoint">IPoint</a></td> + </tr> +</table> + +### Return Value + +<a href="#IPoint">IPoint</a> (<a href="#SkIPoint_x">x</a>, <a href="#SkIPoint_y">y</a>) + +### Example + +<div><fiddle-embed name="e5cf5159525bd3140f288a95fe641fae"> + +#### Example Output + +~~~~ +pt1 == pt2 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_set">set</a> <a href="#SkPoint_iset">SkPoint::iset()</a> <a href="#SkPoint_Make">SkPoint::Make</a> <a href="#SkIPoint16_Make">SkIPoint16::Make</a> + +--- + +<a name="SkIPoint_x"></a> +## x + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int32_t x() const +</pre> + +Returns <a href="#SkIPoint_x">x</a>-axis value of <a href="#IPoint">IPoint</a>. + +### Return Value + +<a href="#SkIPoint_fX">fX</a> + +### Example + +<div><fiddle-embed name="eed4185294f8a8216fc354e6ee6b2e3a"> + +#### Example Output + +~~~~ +pt1.fX == pt1.x() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_y">y</a> <a href="#SkPoint_x">SkPoint::x()</a> <a href="#SkIPoint16_x">SkIPoint16::x()</a> + +--- + +<a name="SkIPoint_y"></a> +## y + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int32_t y() const +</pre> + +Returns <a href="#SkIPoint_y">y</a>-axis value of <a href="#IPoint">IPoint</a>. + +### Return Value + +<a href="#SkIPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="35c41b8ba7cebf8c9a7a8494e610e14d"> + +#### Example Output + +~~~~ +pt1.fY == pt1.y() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_x">x</a> <a href="#SkPoint_y">SkPoint::y()</a> <a href="#SkIPoint16_y">SkIPoint16::y()</a> + +--- + +<a name="SkIPoint_isZero"></a> +## isZero + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isZero() const +</pre> + +Returns true if <a href="#SkIPoint_fX">fX</a> and <a href="#SkIPoint_fY">fY</a> are both zero. + +### Return Value + +true if <a href="#SkIPoint_fX">fX</a> is zero and <a href="#SkIPoint_fY">fY</a> is zero + +### Example + +<div><fiddle-embed name="658c1df611b4577cc7e0bb384e95737e"> + +#### Example Output + +~~~~ +pt.isZero() == true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_isZero">SkPoint::isZero</a> + +--- + +<a name="SkIPoint_set"></a> +## set + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void set(int32_t x, int32_t y) +</pre> + +Sets <a href="#SkIPoint_fX">fX</a> to <a href="#SkIPoint_x">x</a> and <a href="#SkIPoint_fY">fY</a> to <a href="#SkIPoint_y">y</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_set_x"> <code><strong>x </strong></code> </a></td> <td> +new value for <a href="#SkIPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkIPoint_set_y"> <code><strong>y </strong></code> </a></td> <td> +new value for <a href="#SkIPoint_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="165418b5718d79d8f1682a8a0ee32ba0"> + +#### Example Output + +~~~~ +pt1 == pt2 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_Make">Make</a> <a href="#SkIPoint16_set">SkIPoint16::set</a> + +--- + +<a name="SkIPoint_minus_operator"></a> +## operator- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkIPoint operator-() _const +</pre> + +Returns <a href="#IPoint">IPoint</a> changing the signs of <a href="#SkIPoint_fX">fX</a> and <a href="#SkIPoint_fY">fY</a>. + +### Return Value + +<a href="#IPoint">IPoint</a> as (-<a href="#SkIPoint_fX">fX</a>, -<a href="#SkIPoint_fY">fY</a>) + +### Example + +<div><fiddle-embed name="d283e8876366349aedd85b65cadb3706"> + +#### Example Output + +~~~~ +pt: 0, 0 negate: 0, 0 +pt: -1, -2 negate: 1, 2 +pt: 2147483647, -2147483647 negate: -2147483647, 2147483647 +pt: -2147483648, -2147483648 negate: -2147483648, -2147483648 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_subtract_operator">operator-(const SkIPoint& a, const SkIPoint& b)</a> <a href="#SkIPoint_subtractfrom_operator">operator-=(const SkIVector& v)</a> <a href="#SkPoint_minus_operator">SkPoint::operator-() const</a> + +--- + +<a name="SkIPoint_addto_operator"></a> +## operator+= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void operator+=(const SkIVector& v) +</pre> + +Offsets <a href="#IPoint">IPoint</a> by <a href="SkIPoint_Reference#IVector">IVector</a> <a href="#SkIPoint_addto_operator_v">v</a>. Sets <a href="#IPoint">IPoint</a> to(<a href="#SkIPoint_fX">fX</a> + <a href="#SkIPoint_addto_operator_v">v</a>.<a href="#SkIPoint_fX">fX</a>, <a href="#SkIPoint_fY">fY</a> + <a href="#SkIPoint_addto_operator_v">v</a>.<a href="#SkIPoint_fY">fY</a>). + +### Parameters + +<table> <tr> <td><a name="SkIPoint_addto_operator_v"> <code><strong>v </strong></code> </a></td> <td> +<a href="SkIPoint_Reference#IVector">IVector</a> to add</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="4eb2d95c9e9a66f05296e345bb68bd51"></fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_add_operator">operator+(const SkIPoint& a, const SkIVector& b)</a> <a href="#SkPoint_addto_operator">SkPoint::operator+=(const SkVector& v)</a> + +--- + +<a name="SkIPoint_subtractfrom_operator"></a> +## operator-= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void operator-=(const SkIVector& v) +</pre> + +Subtracts <a href="SkIPoint_Reference#IVector">IVector</a> <a href="#SkIPoint_subtractfrom_operator_v">v</a> from <a href="#IPoint">IPoint</a>. Sets <a href="#IPoint">IPoint</a> to: +(<a href="#SkIPoint_fX">fX</a> - <a href="#SkIPoint_subtractfrom_operator_v">v</a>.<a href="#SkIPoint_fX">fX</a>, <a href="#SkIPoint_fY">fY</a> - <a href="#SkIPoint_subtractfrom_operator_v">v</a>.<a href="#SkIPoint_fY">fY</a>). + +### Parameters + +<table> <tr> <td><a name="SkIPoint_subtractfrom_operator_v"> <code><strong>v </strong></code> </a></td> <td> +<a href="SkIPoint_Reference#IVector">IVector</a> to subtract</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="a01e533dc7ab34ed728dc4e7a5f1f0ee"></fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_subtract_operator">operator-(const SkIPoint& a, const SkIPoint& b)</a> <a href="#SkPoint_subtractfrom_operator">SkPoint::operator-=(const SkVector& v)</a> + +--- + +<a name="SkIPoint_equals"></a> +## equals + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool equals(int32_t x, int32_t y) const +</pre> + +Returns true if <a href="#IPoint">IPoint</a> is equivalent to <a href="#IPoint">IPoint</a> constructed from (<a href="#SkIPoint_x">x</a>, <a href="#SkIPoint_y">y</a>). + +### Parameters + +<table> <tr> <td><a name="SkIPoint_equals_x"> <code><strong>x </strong></code> </a></td> <td> +value compared with <a href="#SkIPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkIPoint_equals_y"> <code><strong>y </strong></code> </a></td> <td> +value compared with <a href="#SkIPoint_fY">fY</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#IPoint">IPoint</a> <a href="#SkIPoint_equals">equals</a> (<a href="#SkIPoint_x">x</a>, <a href="#SkIPoint_y">y</a>) + +### Example + +<div><fiddle-embed name="64f575d36439d5b69aaed14ffeff1cc4"> + +#### Example Output + +~~~~ +pt: 0, 0 == pt +pt: -1, -2 == pt +pt: 2147483647, -1 == pt +pt: -2147483648, -1 == pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_equal_operator">operator==(const SkIPoint& a, const SkIPoint& b)</a> + +--- + +<a name="SkIPoint_equal_operator"></a> +## operator== + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool operator==(const SkIPoint& a, const SkIPoint& b) +</pre> + +Returns true if <a href="#SkIPoint_equal_operator_a">a</a> is equivalent to <a href="#SkIPoint_equal_operator_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> to compare</td> + </tr> <tr> <td><a name="SkIPoint_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> to compare</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkIPoint_equal_operator_a">a</a>.<a href="#SkIPoint_fX">fX</a> == <a href="#SkIPoint_equal_operator_b">b</a>.<a href="#SkIPoint_fX">fX</a> and <a href="#SkIPoint_equal_operator_a">a</a>.<a href="#SkIPoint_fY">fY</a> == <a href="#SkIPoint_equal_operator_b">b</a>.<a href="#SkIPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="37ffe2817d720f99e6c252332ce70460"> + +#### Example Output + +~~~~ +pt: 0, 0 == pt +pt: -1, -2 == pt +pt: 2147483647, -1 == pt +pt: -2147483648, -1 == pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_equals">equals</a> <a href="#SkIPoint_notequal_operator">operator!=(const SkIPoint& a, const SkIPoint& b)</a> + +--- + +<a name="SkIPoint_notequal_operator"></a> +## operator!= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool operator!=(const SkIPoint& a, const SkIPoint& b) +</pre> + +Returns true if <a href="#SkIPoint_notequal_operator_a">a</a> is not equivalent to <a href="#SkIPoint_notequal_operator_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> to compare</td> + </tr> <tr> <td><a name="SkIPoint_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> to compare</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkIPoint_notequal_operator_a">a</a>.<a href="#SkIPoint_fX">fX</a> != <a href="#SkIPoint_notequal_operator_b">b</a>.<a href="#SkIPoint_fX">fX</a> or <a href="#SkIPoint_notequal_operator_a">a</a>.<a href="#SkIPoint_fY">fY</a> != <a href="#SkIPoint_notequal_operator_b">b</a>.<a href="#SkIPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="dd89dc48dff69b53d99530b120f204bc"> + +#### Example Output + +~~~~ +pt: 0, 0 == pt +pt: -1, -2 == pt +pt: 2147483647, -1 == pt +pt: -2147483648, -1 == pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_equal_operator">operator==(const SkIPoint& a, const SkIPoint& b)</a> <a href="#SkIPoint_equals">equals</a> + +--- + +<a name="SkIPoint_subtract_operator"></a> +## operator- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkIVector operator-(const SkIPoint& a, const SkIPoint& b) +</pre> + +Returns <a href="SkIPoint_Reference#IVector">IVector</a> from <a href="#SkIPoint_subtract_operator_b">b</a> to <a href="#SkIPoint_subtract_operator_a">a</a>; computed as(<a href="#SkIPoint_subtract_operator_a">a</a>.<a href="#SkIPoint_fX">fX</a> - <a href="#SkIPoint_subtract_operator_b">b</a>.<a href="#SkIPoint_fX">fX</a>, <a href="#SkIPoint_subtract_operator_a">a</a>.<a href="#SkIPoint_fY">fY</a> - <a href="#SkIPoint_subtract_operator_b">b</a>.<a href="#SkIPoint_fY">fY</a>). + +Can also be used to subtract <a href="SkIPoint_Reference#IVector">IVector</a> from <a href="SkIPoint_Reference#IVector">IVector</a>, returning <a href="SkIPoint_Reference#IVector">IVector</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_subtract_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> or <a href="SkIPoint_Reference#IVector">IVector</a> to subtract from</td> + </tr> <tr> <td><a name="SkIPoint_subtract_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="SkIPoint_Reference#IVector">IVector</a> to subtract</td> + </tr> +</table> + +### Return Value + +<a href="SkIPoint_Reference#IVector">IVector</a> from <a href="#SkIPoint_subtract_operator_b">b</a> to <a href="#SkIPoint_subtract_operator_a">a</a> + +### Example + +<div><fiddle-embed name="e626e26bf557857b824aa7d03f723e0f"></fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_subtractfrom_operator">operator-=(const SkIVector& v)</a> + +--- + +<a name="SkIPoint_add_operator"></a> +## operator+ + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkIPoint operator+(const SkIPoint& a, const SkIVector& b) +</pre> + +Returns <a href="#IPoint">IPoint</a> resulting from <a href="#IPoint">IPoint</a> <a href="#SkIPoint_add_operator_a">a</a> offset by <a href="SkIPoint_Reference#IVector">IVector</a> <a href="#SkIPoint_add_operator_b">b</a>, computed as: +(<a href="#SkIPoint_add_operator_a">a</a>.<a href="#SkIPoint_fX">fX</a> + <a href="#SkIPoint_add_operator_b">b</a>.<a href="#SkIPoint_fX">fX</a>, <a href="#SkIPoint_add_operator_a">a</a>.<a href="#SkIPoint_fY">fY</a> + <a href="#SkIPoint_add_operator_b">b</a>.<a href="#SkIPoint_fY">fY</a>). + +Can also be used to offset <a href="#IPoint">IPoint</a> <a href="#SkIPoint_add_operator_b">b</a> by <a href="SkIPoint_Reference#IVector">IVector</a> <a href="#SkIPoint_add_operator_a">a</a>, returning <a href="#IPoint">IPoint</a>. +Can also be used to add <a href="SkIPoint_Reference#IVector">IVector</a> to <a href="SkIPoint_Reference#IVector">IVector</a>, returning <a href="SkIPoint_Reference#IVector">IVector</a>. + +### Parameters + +<table> <tr> <td><a name="SkIPoint_add_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> or <a href="SkIPoint_Reference#IVector">IVector</a> to add to</td> + </tr> <tr> <td><a name="SkIPoint_add_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#IPoint">IPoint</a> or <a href="SkIPoint_Reference#IVector">IVector</a> to add</td> + </tr> +</table> + +### Return Value + +<a href="#IPoint">IPoint</a> equal to <a href="#SkIPoint_add_operator_a">a</a> offset by <a href="#SkIPoint_add_operator_b">b</a> + +### Example + +<div><fiddle-embed name="63f4cba971c6d8434595906f865b5a29"></fiddle-embed></div> + +### See Also + +<a href="#SkIPoint_addto_operator">operator+=(const SkIVector& v)</a> + +--- + diff --git a/site/user/api/SkIRect_Reference.md b/site/user/api/SkIRect_Reference.md index 7022cc6aec..f7b675c8df 100644 --- a/site/user/api/SkIRect_Reference.md +++ b/site/user/api/SkIRect_Reference.md @@ -21,7 +21,7 @@ its <a href="#SkIRect_top">top</a>, it is considered empty. | description | function | | --- | --- | -| bool <a href="#SkIRect_not_equal_operator">operator!=(const SkIRect& a, const SkIRect& b)</a> | Returns true if members are unequal. | +| bool <a href="#SkIRect_notequal_operator">operator!=(const SkIRect& a, const SkIRect& b)</a> | Returns true if members are unequal. | | bool <a href="#SkIRect_equal_operator">operator==(const SkIRect& a, const SkIRect& b)</a> | Returns true if members are equal. | ## <a name="Member_Functions"></a> Member Functions @@ -96,7 +96,7 @@ When equal to or less than <a href="#SkIRect_fTop">fTop</a>, <a href="#IRect">IR <a name="SkIRect_MakeEmpty"></a> ## MakeEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeEmpty() </pre> @@ -133,7 +133,7 @@ outset rect isEmpty: false <a name="SkIRect_MakeLargest"></a> ## MakeLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkIRect SK_WARN_UNUSED_RESULT MakeLargest() </pre> @@ -168,7 +168,7 @@ outset isEmpty: true <a name="SkIRect_MakeWH"></a> ## MakeWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeWH(int32_t w, int32_t h) </pre> @@ -209,7 +209,7 @@ all equal <a name="SkIRect_MakeSize"></a> ## MakeSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeSize(const SkISize& size) </pre> @@ -249,9 +249,8 @@ floor width: 25 height: 35 <a name="SkIRect_MakeLTRB"></a> ## MakeLTRB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeLTRB(int32_t l, int32_t t, - int32_t r, int32_t b) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeLTRB(int32_t l, int32_t t, int32_t r, int32_t b) </pre> Returns constructed <a href="#IRect">IRect</a> <a href="#SkIRect_set">set</a> to (<a href="#SkIRect_MakeLTRB_l">l</a>, <a href="#SkIRect_MakeLTRB_t">t</a>, <a href="#SkIRect_MakeLTRB_r">r</a>, <a href="#SkIRect_MakeLTRB_b">b</a>). Does not <a href="#SkIRect_sort">sort</a> input; <a href="SkRect_Reference#Rect">Rect</a> may @@ -296,9 +295,8 @@ rect: 5, 25, 15, 35 isEmpty: false <a name="SkIRect_MakeXYWH"></a> ## MakeXYWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeXYWH(int32_t x, int32_t y, - int32_t w, int32_t h) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeXYWH(int32_t x, int32_t y, int32_t w, int32_t h) </pre> Returns constructed <a href="#IRect">IRect</a> <a href="#SkIRect_set">set</a> to: @@ -345,7 +343,7 @@ rect: -10, 35, 5, 60 isEmpty: false <a name="SkIRect_left"></a> ## left -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int left() const </pre> @@ -378,7 +376,7 @@ sorted.fLeft: 10 sorted.left(): 10 <a name="SkIRect_top"></a> ## top -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int top() const </pre> @@ -411,7 +409,7 @@ sorted.fTop: 5 sorted.top(): 5 <a name="SkIRect_right"></a> ## right -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int right() const </pre> @@ -444,7 +442,7 @@ sorted.fRight: 15 sorted.right(): 15 <a name="SkIRect_bottom"></a> ## bottom -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int bottom() const </pre> @@ -477,7 +475,7 @@ sorted.fBottom: 25 sorted.bottom(): 25 <a name="SkIRect_x"></a> ## x -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int x() const </pre> @@ -510,7 +508,7 @@ sorted.fLeft: 10 sorted.x(): 10 <a name="SkIRect_y"></a> ## y -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int y() const </pre> @@ -543,11 +541,11 @@ sorted.fTop: 5 sorted.y(): 5 <a name="SkIRect_width"></a> ## width -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int width() const </pre> -Returns span on the x-axis. This does not check if <a href="#IRect">IRect</a> is sorted, or if +Returns span on the <a href="#SkIRect_x">x</a>-axis. This does not check if <a href="#IRect">IRect</a> is sorted, or if result fits in 32-bit signed integer; result may be negative. ### Return Value @@ -576,11 +574,11 @@ large width: -5 <a name="SkIRect_height"></a> ## height -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int height() const </pre> -Returns span on the y-axis. This does not check if <a href="#IRect">IRect</a> is sorted, or if +Returns span on the <a href="#SkIRect_y">y</a>-axis. This does not check if <a href="#IRect">IRect</a> is sorted, or if result fits in 32-bit signed integer; result may be negative. ### Return Value @@ -609,11 +607,11 @@ large height: -5 <a name="SkIRect_size"></a> ## size -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkISize size() const </pre> -Returns spans on the x-axis and y-axis. This does not check if <a href="#IRect">IRect</a> is sorted, +Returns spans on the <a href="#SkIRect_x">x</a>-axis and <a href="#SkIRect_y">y</a>-axis. This does not check if <a href="#IRect">IRect</a> is sorted, or if result fits in 32-bit signed integer; result may be negative. ### Return Value @@ -643,7 +641,7 @@ outset rect: 20, 30, 80, 90 size: 60, 60 <a name="SkIRect_centerX"></a> ## centerX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int centerX() const </pre> @@ -679,7 +677,7 @@ left: -10 right: 11 centerX: 0 div2: 0 <a name="SkIRect_centerY"></a> ## centerY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int centerY() const </pre> @@ -713,7 +711,7 @@ left: 1073741824 right: 1073741826 centerX: -1073741823 safe mid x: 1073741825 <a name="SkIRect_isEmpty"></a> ## isEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isEmpty() const </pre> @@ -749,7 +747,7 @@ sorted: {20, 40, 20, 50} is empty <a name="SkIRect_isLargest"></a> ## isLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLargest() const </pre> @@ -783,7 +781,7 @@ large is empty: false <a name="SkIRect_equal_operator"></a> ## operator== -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator==(const SkIRect& a, const SkIRect& b) </pre> @@ -817,25 +815,25 @@ test == sorted ### See Also -<a href="#SkIRect_not_equal_operator">operator!=(const SkIRect& a, const SkIRect& b)</a> +<a href="#SkIRect_notequal_operator">operator!=(const SkIRect& a, const SkIRect& b)</a> --- -<a name="SkIRect_not_equal_operator"></a> +<a name="SkIRect_notequal_operator"></a> ## operator!= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator!=(const SkIRect& a, const SkIRect& b) </pre> -Returns true if any member in <a href="#SkIRect_not_equal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; is not -identical to the corresponding member in <a href="#SkIRect_not_equal_operator_b">b</a>. +Returns true if any member in <a href="#SkIRect_notequal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; is not +identical to the corresponding member in <a href="#SkIRect_notequal_operator_b">b</a>. ### Parameters -<table> <tr> <td><a name="SkIRect_not_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkIRect_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> <a href="#IRect">IRect</a> to compare</td> - </tr> <tr> <td><a name="SkIRect_not_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> + </tr> <tr> <td><a name="SkIRect_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> <a href="#IRect">IRect</a> to compare</td> </tr> </table> @@ -865,7 +863,7 @@ test != sorted <a name="SkIRect_is16Bit"></a> ## is16Bit -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool is16Bit() const </pre> @@ -898,7 +896,7 @@ true if members fit in 16-bit word <a name="SkIRect_setEmpty"></a> ## setEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setEmpty() </pre> @@ -930,7 +928,7 @@ rect: {0, 0, 0, 0} is empty <a name="SkIRect_set"></a> ## set -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(int32_t left, int32_t top, int32_t right, int32_t bottom) </pre> @@ -973,7 +971,7 @@ rect2: {3, 4, 1, 2} <a name="SkIRect_setLTRB"></a> ## setLTRB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLTRB(int32_t left, int32_t top, int32_t right, int32_t bottom) </pre> @@ -1016,7 +1014,7 @@ rect2: {3, 4, 1, 2} <a name="SkIRect_setXYWH"></a> ## setXYWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setXYWH(int32_t x, int32_t y, int32_t width, int32_t height) </pre> @@ -1060,7 +1058,7 @@ rect: -10, 35, 5, 60 isEmpty: false <a name="SkIRect_setLargest"></a> ## setLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLargest() </pre> @@ -1091,7 +1089,7 @@ outset isEmpty: true <a name="SkIRect_setLargestInverted"></a> ## setLargestInverted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLargestInverted() </pre> @@ -1108,7 +1106,7 @@ flag that a condition is met, but otherwise has no special purpose. <a name="SkIRect_makeOffset"></a> ## makeOffset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect makeOffset(int32_t dx, int32_t dy) const </pre> @@ -1154,7 +1152,7 @@ rect: 25, 82, 35, 92 isEmpty: false <a name="SkIRect_makeInset"></a> ## makeInset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect makeInset(int32_t dx, int32_t dy) const </pre> @@ -1200,7 +1198,7 @@ rect: 25, 82, 5, 28 isEmpty: true <a name="SkIRect_makeOutset"></a> ## makeOutset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect makeOutset(int32_t dx, int32_t dy) const </pre> @@ -1246,7 +1244,7 @@ rect: -5, 18, 35, 92 isEmpty: false <a name="SkIRect_offset"></a> ## offset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(int32_t dx, int32_t dy) </pre> @@ -1284,7 +1282,7 @@ rect: 15, 27, 55, 86 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(const SkIPoint& delta) </pre> @@ -1324,7 +1322,7 @@ rect: 15, 27, 55, 86 <a name="SkIRect_offsetTo"></a> ## offsetTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offsetTo(int32_t newX, int32_t newY) </pre> @@ -1361,7 +1359,7 @@ rect: 15, 27, 55, 86 <a name="SkIRect_inset"></a> ## inset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void inset(int32_t dx, int32_t dy) </pre> @@ -1402,7 +1400,7 @@ rect: 15, 27, 45, 60 <a name="SkIRect_outset"></a> ## outset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void outset(int32_t dx, int32_t dy) </pre> @@ -1443,7 +1441,7 @@ rect: 5, 1, 55, 86 <a name="SkIRect_quickReject"></a> ## quickReject -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool quickReject(int l, int t, int r, int b) const </pre> @@ -1493,7 +1491,7 @@ rect (7, 11, 13, 17) test(12, 16, 14, 18) quickReject false; intersects true <a name="SkIRect_contains"></a> ## contains -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(int32_t x, int32_t y) const </pre> @@ -1509,9 +1507,9 @@ returns true if constructed area is completely enclosed by <a href="#IRect">IRec ### Parameters <table> <tr> <td><a name="SkIRect_contains_x"> <code><strong>x </strong></code> </a></td> <td> -test <a href="undocumented#Point">Point</a> x-coordinate</td> +test <a href="SkPoint_Reference#Point">Point</a> <a href="#SkIRect_x">x</a>-coordinate</td> </tr> <tr> <td><a name="SkIRect_contains_y"> <code><strong>y </strong></code> </a></td> <td> -test <a href="undocumented#Point">Point</a> y-coordinate</td> +test <a href="SkPoint_Reference#Point">Point</a> <a href="#SkIRect_y">y</a>-coordinate</td> </tr> </table> @@ -1539,7 +1537,7 @@ rect: (30, 50, 40, 60) does not contain (30, 60) --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(int32_t left, int32_t top, int32_t right, int32_t bottom) const </pre> @@ -1586,7 +1584,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(const SkIRect& r) const </pre> @@ -1626,7 +1624,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(const SkRect& r) const </pre> @@ -1669,9 +1667,8 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) <a name="SkIRect_containsNoEmptyCheck"></a> ## containsNoEmptyCheck -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool containsNoEmptyCheck(int32_t left, int32_t top, int32_t right, - int32_t bottom) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool containsNoEmptyCheck(int32_t left, int32_t top, int32_t right, int32_t bottom) const </pre> Constructs <a href="#IRect">IRect</a> from (<a href="#SkIRect_left">left</a>, <a href="#SkIRect_top">top</a>, <a href="#SkIRect_right">right</a>, <a href="#SkIRect_bottom">bottom</a>). Does not <a href="#SkIRect_sort">sort</a> @@ -1719,7 +1716,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool containsNoEmptyCheck(const SkIRect& r) const </pre> @@ -1770,7 +1767,7 @@ describes an area: <a href="#SkIRect_fLeft">fLeft</a> is less than <a href="#SkI <a name="SkIRect_intersect"></a> ## intersect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersect(const SkIRect& r) </pre> @@ -1810,7 +1807,7 @@ intersection: 30, 60, 50, 80 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& a, const SkIRect& b) </pre> @@ -1853,9 +1850,8 @@ intersection: 30, 60, 50, 80 <a name="SkIRect_intersectNoEmptyCheck"></a> ## intersectNoEmptyCheck -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool SK_WARN_UNUSED_RESULT intersectNoEmptyCheck(const SkIRect& a, - const SkIRect& b) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool SK_WARN_UNUSED_RESULT intersectNoEmptyCheck(const SkIRect& a, const SkIRect& b) </pre> Returns true if <a href="#SkIRect_intersectNoEmptyCheck_a">a</a> intersects <a href="#SkIRect_intersectNoEmptyCheck_b">b</a>, and sets <a href="#IRect">IRect</a> to intersection. @@ -1894,7 +1890,7 @@ intersection: 30, 60, 50, 80 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersect(int32_t left, int32_t top, int32_t right, int32_t bottom) </pre> @@ -1946,7 +1942,7 @@ intersection: 30, 60, 50, 80 <a name="SkIRect_Intersects"></a> ## Intersects -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static bool Intersects(const SkIRect& a, const SkIRect& b) </pre> @@ -1987,7 +1983,7 @@ intersection <a name="SkIRect_IntersectsNoEmptyCheck"></a> ## IntersectsNoEmptyCheck -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static bool IntersectsNoEmptyCheck(const SkIRect& a, const SkIRect& b) </pre> @@ -2028,7 +2024,7 @@ intersection <a name="SkIRect_join"></a> ## join -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void join(int32_t left, int32_t top, int32_t right, int32_t bottom) </pre> @@ -2071,7 +2067,7 @@ join: 10, 20, 55, 65 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void join(const SkIRect& r) </pre> @@ -2107,7 +2103,7 @@ join: 10, 20, 55, 65 <a name="SkIRect_sort"></a> ## sort -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void sort() </pre> @@ -2137,7 +2133,7 @@ sorted: 20, 10, 30, 50 <a name="SkIRect_makeSorted"></a> ## makeSorted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect makeSorted() const </pre> @@ -2171,7 +2167,7 @@ sorted: 20, 10, 30, 50 <a name="SkIRect_EmptyIRect"></a> ## EmptyIRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static const SkIRect& SK_WARN_UNUSED_RESULT EmptyIRect() </pre> diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md new file mode 100644 index 0000000000..317215073b --- /dev/null +++ b/site/user/api/SkImage_Reference.md @@ -0,0 +1,1876 @@ +SkImage Reference +=== + +# <a name="Image"></a> Image + +# <a name="SkImage"></a> Class SkImage +<a href="#SkImage">SkImage</a> is an abstraction for drawing a rectangle of pixels, though the +particular type of image could be actually storing its data on the <a href="undocumented#GPU">GPU</a>, or +as drawing commands (picture or <a href="undocumented#PDF">PDF</a> or otherwise), ready to be played back +into another canvas. +The content of <a href="#SkImage">SkImage</a> is always immutable, though the actual storage may +change, if for example that image can be re-created via encoded data or +other means. +<a href="#SkImage">SkImage</a> always has a non-zero <a href="#SkImage_dimensions">dimensions</a>. If there is a request to create a new +image, either directly or via <a href="SkSurface_Reference#SkSurface">SkSurface</a>, and either of the requested <a href="#SkImage_dimensions">dimensions</a> +are zero, then nullptr will be returned. + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Structs"></a> Structs + +| description | struct | +| --- | --- | +| <a href="#SkImage_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams</a> | | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | | +| <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | | +| <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | | +| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | | +| <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | | +| <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | | +| <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | | +| <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | | +| <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | | +| <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | | +| <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | | +| <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | | +| <a href="#SkImage_MakeFromTexture">MakeFromTexture</a> | | +| <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | | +| <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | | +| <a href="#SkImage_MakeRasterData">MakeRasterData</a> | | +| <a href="#SkImage_alphaType">alphaType</a> | | +| <a href="#SkImage_asLegacyBitmap">asLegacyBitmap</a> | | +| <a href="#SkImage_bounds">bounds</a> | | +| <a href="#SkImage_colorSpace">colorSpace</a> | | +| <a href="#SkImage_dimensions">dimensions</a> | | +| <a href="#SkImage_encodeToData">encodeToData</a> | | +| <a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a> | | +| <a href="#SkImage_getTexture">getTexture</a> | | +| <a href="#SkImage_getTextureHandle">getTextureHandle</a> | | +| <a href="#SkImage_height">height</a> | | +| <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> | | +| <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> | | +| <a href="#SkImage_isOpaque">isOpaque</a> | | +| <a href="#SkImage_isTextureBacked">isTextureBacked</a> | | +| <a href="#SkImage_isValid">isValid</a> | | +| <a href="#SkImage_makeColorSpace">makeColorSpace</a> | | +| <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | | +| <a href="#SkImage_makeShader">makeShader</a> | | +| <a href="#SkImage_makeSubset">makeSubset</a> | | +| <a href="#SkImage_makeTextureImage">makeTextureImage</a> | | +| <a href="#SkImage_makeWithFilter">makeWithFilter</a> | | +| <a href="#SkImage_peekPixels">peekPixels</a> | | +| <a href="#SkImage_readPixels">readPixels</a> | | +| <a href="#SkImage_refColorSpace">refColorSpace</a> | | +| <a href="#SkImage_refEncodedData">refEncodedData</a> | | +| <a href="#SkImage_scalePixels">scalePixels</a> | | +| <a href="#SkImage_toString">toString</a> | | +| <a href="#SkImage_uniqueID">uniqueID</a> | | +| <a href="#SkImage_width">width</a> | | + +# <a name="SkImage_DeferredTextureImageUsageParams"></a> Struct SkImage::DeferredTextureImageUsageParams + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +</pre> + +Drawing parameters for which a deferred texture image data should be optimized. */ + +<a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams"></a> +## DeferredTextureImageUsageParams + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +DeferredTextureImageUsageParams(const SkMatrix matrix, const SkFilterQuality quality, + int preScaleMipLevel) +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_matrix"> <code><strong>matrix </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_quality"> <code><strong>quality </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_preScaleMipLevel"> <code><strong>preScaleMipLevel </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_DeferredTextureImageUsageParams_fMatrix"> <code><strong>SkMatrix fMatrix</strong></code> </a> + +<a name="SkImage_DeferredTextureImageUsageParams_fQuality"> <code><strong>SkFilterQuality fQuality</strong></code> </a> + +<a name="SkImage_DeferredTextureImageUsageParams_fPreScaleMipLevel"> <code><strong>int fPreScaleMipLevel</strong></code> </a> + +<a name="SkImage_MakeRasterCopy"></a> +## MakeRasterCopy + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeRasterCopy(const SkPixmap& pixmap) +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeRasterCopy_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeRasterData"></a> +## MakeRasterData + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeRasterData(const Info& info, sk_sp<SkData> pixels, size_t rowBytes) +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeRasterData_info"> <code><strong>info </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeRasterData_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeRasterData_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromRaster"></a> +## MakeFromRaster + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromRaster(const SkPixmap& pixmap, RasterReleaseProc rasterReleaseProc, + ReleaseContext releaseContext) +</pre> + +Return a new <a href="#Image">Image</a> referencing the specified pixels. These must remain valid and unchanged +until the specified release-proc is called, indicating that <a href="undocumented#Skia">Skia</a> no longer has a reference +to the pixels. +Returns nullptr if the requested <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> info is unsupported. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromRaster_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromRaster_rasterReleaseProc"> <code><strong>rasterReleaseProc </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromRaster_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromBitmap"></a> +## MakeFromBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromBitmap(const SkBitmap& bitmap) +</pre> + +Construct a new image from the specified <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>. If the <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> is marked immutable, and +its pixel memory is shareable, it may be shared instead of copied. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromGenerator"></a> +## MakeFromGenerator + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromGenerator(std::unique_ptr<SkImageGenerator> imageGenerator, + const SkIRect* subset = nullptr) +</pre> + +Construct a new <a href="#SkImage">SkImage</a> based on the given ImageGenerator. Returns nullptr on error. +This function will always take ownership of the passed generator. +If a <a href="#SkImage_MakeFromGenerator_subset">subset</a> is specified, it must be contained within the generator's <a href="#SkImage_bounds">bounds</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromGenerator_imageGenerator"> <code><strong>imageGenerator </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromGenerator_subset"> <code><strong>subset </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromEncoded"></a> +## MakeFromEncoded + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset = nullptr) +</pre> + +Construct a new <a href="#SkImage">SkImage</a> based on the specified <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data. Returns nullptr on failure, +which can mean that the format of the <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data was not recognized/supported. +If a <a href="#SkImage_MakeFromEncoded_subset">subset</a> is specified, it must be contained within the <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data's <a href="#SkImage_bounds">bounds</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromEncoded_encoded"> <code><strong>encoded </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromEncoded_subset"> <code><strong>subset </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromTexture"></a> +## MakeFromTexture + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, SkAlphaType alphaType, + sk_sp<SkColorSpace> colorSpace) +</pre> + +Create a new image from the specified descriptor. Note - the caller is responsible for +managing the lifetime of the underlying platform texture. +Will return nullptr if the specified back-end texture is unsupported. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromTexture_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_origin"> <code><strong>origin </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, SkAlphaType alphaType, + sk_sp<SkColorSpace> colorSpace, + TextureReleaseProc textureReleaseProc, + ReleaseContext releaseContext) +</pre> + +Create a new image from the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>. The underlying platform texture must stay +valid and unaltered until the specified release-proc is invoked, indicating that <a href="undocumented#Skia">Skia</a> +no longer is holding a reference to it. +Will return nullptr if the specified back-end texture is unsupported. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromTexture_2_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_origin"> <code><strong>origin </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_textureReleaseProc"> <code><strong>textureReleaseProc </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeCrossContextFromEncoded"></a> +## MakeCrossContextFromEncoded + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeCrossContextFromEncoded(GrContext* context, sk_sp<SkData> data, + bool buildMips, SkColorSpace* dstColorSpace) +</pre> + +Decodes and uploads the encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> to a <a href="undocumented#GPU">GPU</a> backed image using the supplied <a href="undocumented#GrContext">GrContext</a>. +That image can be safely used by other GrContexts, across thread boundaries. The <a href="undocumented#GrContext">GrContext</a> +used here, and the ones used to draw this image later must be in the same <a href="undocumented#OpenGL">OpenGL</a> share group, +or otherwise be able to share resources. +When the image's ref count reaches zero, the original <a href="undocumented#GrContext">GrContext</a> will destroy the texture, +asynchronously. +The texture will be decoded and uploaded to be suitable for use with surfaces that have the +supplied destination color space. The color space of the image itself will be determined +from the encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_data"> <code><strong>data </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromAdoptedTexture"></a> +## MakeFromAdoptedTexture + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin surfaceOrigin, + SkAlphaType alphaType = kPremul_SkAlphaType, + sk_sp<SkColorSpace> colorSpace = nullptr) +</pre> + +Create a new image from the specified descriptor. Note - <a href="undocumented#Skia">Skia</a> will delete or recycle the +texture when the image is released. +Will return nullptr if the specified back-end texture is unsupported. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromYUVTexturesCopy"></a> +## MakeFromYUVTexturesCopy + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, + const GrBackendObject yuvTextureHandles[3], + const SkISize yuvSizes[3], + GrSurfaceOrigin surfaceOrigin, + sk_sp<SkColorSpace> colorSpace = nullptr) +</pre> + +Create a new image by copying the pixels from the specified y, u, v textures. The data +from the textures is immediately ingested into the image and the textures can be modified or +deleted after the function returns. The image will have the <a href="#SkImage_dimensions">dimensions</a> of the y texture. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromNV12TexturesCopy"></a> +## MakeFromNV12TexturesCopy + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, + const GrBackendObject nv12TextureHandles[2], + const SkISize nv12Sizes[2], + GrSurfaceOrigin surfaceOrigin, + sk_sp<SkColorSpace> colorSpace = nullptr) +</pre> + +Create a new image by copying the pixels from the specified y and <a href="undocumented#UV_Mapping">UV Mapping</a>. The data +from the textures is immediately ingested into the image and the textures can be modified or +deleted after the function returns. The image will have the <a href="#SkImage_dimensions">dimensions</a> of the y texture. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +## <a name="SkImage_BitDepth"></a> Enum SkImage::BitDepth + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +enum <a href="#SkImage_BitDepth">BitDepth</a> { +<a href="#SkImage_kU8">kU8</a>, +<a href="#SkImage_kF16">kF16</a>, +};</pre> + +### Constants + +<table> + <tr> + <td><a name="SkImage_kU8"> <code><strong>SkImage::kU8 </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="SkImage_kF16"> <code><strong>SkImage::kF16 </strong></code> </a></td><td>1</td><td></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + + + +<a name="SkImage_MakeFromPicture"></a> +## MakeFromPicture + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromPicture(sk_sp<SkPicture> picture, const SkISize& dimensions, + const SkMatrix* matrix, const SkPaint* paint, + BitDepth bitDepth, sk_sp<SkColorSpace> colorSpace) +</pre> + +Create a new image from the specified <a href="#SkImage_MakeFromPicture_picture">picture</a>. +On creation of the <a href="#SkImage">SkImage</a>, snap the <a href="undocumented#SkPicture">SkPicture</a> to a particular <a href="#SkImage_BitDepth">BitDepth</a> and <a href="undocumented#SkColorSpace">SkColorSpace</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromPicture_picture"> <code><strong>picture </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromPicture_dimensions"> <code><strong>dimensions </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromPicture_matrix"> <code><strong>matrix </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromPicture_paint"> <code><strong>paint </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromPicture_bitDepth"> <code><strong>bitDepth </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromPicture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromAHardwareBuffer"></a> +## MakeFromAHardwareBuffer + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer, + SkAlphaType alphaType = kPremul_SkAlphaType, + sk_sp<SkColorSpace> colorSpace = nullptr) +</pre> + +Create a new image from the an <a href="undocumented#Android">Android</a> hardware buffer. +The new image takes a reference on the buffer. + +Only available on <a href="undocumented#Android">Android</a>, when __<a href="undocumented#ANDROID_API__">ANDROID API </a> is defined to be 26 or greater. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_hardwareBuffer"> <code><strong>hardwareBuffer </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer, + SkAlphaType alphaType = kPremul_SkAlphaType, + sk_sp<SkColorSpace> colorSpace = nullptr) +</pre> + +Create a new image from the an <a href="undocumented#Android">Android</a> hardware buffer. +The new image takes a reference on the buffer. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_2_hardwareBuffer"> <code><strong>hardwareBuffer </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_width"></a> +## width + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int width() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int height() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_dimensions"></a> +## dimensions + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkISize dimensions() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_bounds"></a> +## bounds + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkIRect bounds() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_uniqueID"></a> +## uniqueID + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +uint32_t uniqueID() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_alphaType"></a> +## alphaType + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkAlphaType alphaType() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_colorSpace"></a> +## colorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkColorSpace* colorSpace() const +</pre> + +Returns <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a>. <a href="undocumented#Color_Space">Color Space</a> may have been a parameter when +<a href="#Image">Image</a> was created, or may have been parsed from encoded data. <a href="undocumented#Skia">Skia</a> may not be +able to draw image respecting returned <a href="undocumented#Color_Space">Color Space</a> or draw into <a href="SkSurface_Reference#Surface">Surface</a> with +returned <a href="undocumented#Color_Space">Color Space</a>. + +### Return Value + +<a href="undocumented#Color_Space">Color Space</a> <a href="#Image">Image</a> was created with, or nullptr + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_refColorSpace"></a> +## refColorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkColorSpace> refColorSpace() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_isAlphaOnly"></a> +## isAlphaOnly + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isAlphaOnly() const +</pre> + +Returns true fi the image will be drawn as a mask, with no intrinsic color of its own. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_isOpaque"></a> +## isOpaque + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isOpaque() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeShader"></a> +## makeShader + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkShader> makeShader(SkShader::TileMode tileMode1, SkShader::TileMode tileMode2, + const SkMatrix* localMatrix = nullptr) const +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_makeShader_tileMode1"> <code><strong>tileMode1 </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeShader_tileMode2"> <code><strong>tileMode2 </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeShader_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkShader> makeShader(const SkMatrix* localMatrix = nullptr) const +</pre> + +Helper version of + +### Parameters + +<table> <tr> <td><a name="SkImage_makeShader_2_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_peekPixels"></a> +## peekPixels + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool peekPixels(SkPixmap* pixmap) const +</pre> + +If the image has direct access to its pixels (i.e. they are in local RAM) +return true, and if not null, return in the <a href="#SkImage_peekPixels_pixmap">pixmap</a> parameter the info about the +images pixels. +On failure, return false and ignore the <a href="#SkImage_peekPixels_pixmap">pixmap</a> parameter. + +### Parameters + +<table> <tr> <td><a name="SkImage_peekPixels_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_getTexture"></a> +## getTexture + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +GrTexture* getTexture() const +</pre> + +DEPRECATED - + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_isTextureBacked"></a> +## isTextureBacked + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isTextureBacked() const +</pre> + +Returns true if the image is texture backed. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_isValid"></a> +## isValid + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isValid(GrContext* context) const +</pre> + +Returns true if <a href="#Image">Image</a> can be drawn. If <a href="#SkImage_isValid_context">context</a> +is nullptr, tests if <a href="#Image">Image</a> draws on <a href="undocumented#Raster_Surface">Raster Surface</a>; Otherwise, tests if <a href="#Image">Image</a> +draws on <a href="undocumented#GPU_Surface">GPU Surface</a> associated with <a href="#SkImage_isValid_context">context</a>. + +<a href="undocumented#Texture">Texture</a>-backed images may become invalid if their underlying <a href="undocumented#GrContext">GrContext</a> is abandoned. Some +generator-backed images may be invalid for <a href="undocumented#CPU">CPU</a> and/or <a href="undocumented#GPU">GPU</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_isValid_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_getTextureHandle"></a> +## getTextureHandle + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +GrBackendObject getTextureHandle(bool flushPendingGrContextIO, GrSurfaceOrigin* origin = nullptr) const +</pre> + +Retrieves the back-end <a href="undocumented#API">API</a> handle of the texture. If <a href="#SkImage_getTextureHandle_flushPendingGrContextIO">flushPendingGrContextIO</a> then the +<a href="undocumented#GrContext">GrContext</a> will issue to the back-end <a href="undocumented#API">API</a> any deferred <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a> operations on the texture before +returning. +If '<a href="#SkImage_getTextureHandle_origin">origin</a>' is supplied it will be filled in with the <a href="#SkImage_getTextureHandle_origin">origin</a> of the content drawn +into the image. + +### Parameters + +<table> <tr> <td><a name="SkImage_getTextureHandle_flushPendingGrContextIO"> <code><strong>flushPendingGrContextIO </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getTextureHandle_origin"> <code><strong>origin </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +## <a name="SkImage_CachingHint"></a> Enum SkImage::CachingHint + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +enum <a href="#SkImage_CachingHint">CachingHint</a> { +<a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, +<a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, +};</pre> + +Hints to image calls where the system might cache computed intermediates (e.g. the results +of decoding or a read-back from the <a href="undocumented#GPU">GPU</a>. Passing <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a> signals that the system's default +behavior is fine. Passing <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a> signals that caching should be avoided. + +### Constants + +<table> + <tr> + <td><a name="SkImage_kAllow_CachingHint"> <code><strong>SkImage::kAllow_CachingHint </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="SkImage_kDisallow_CachingHint"> <code><strong>SkImage::kDisallow_CachingHint </strong></code> </a></td><td>1</td><td></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + + + +<a name="SkImage_readPixels"></a> +## readPixels + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY, + CachingHint cachingHint = kAllow_CachingHint) const +</pre> + +Copy the pixels from the image into the specified buffer (<a href="#SkImage_readPixels_dstPixels">dstPixels</a> + <a href="#SkImage_readPixels_dstRowBytes">dstRowBytes</a>), +converting them into the requested format (<a href="#SkImage_readPixels_dstInfo">dstInfo</a>). The image pixels are read +starting at the specified (<a href="#SkImage_readPixels_srcX">srcX</a>, <a href="#SkImage_readPixels_srcY">srcY</a>) location. +<a href="#SkImage_readPixels_dstInfo">dstInfo</a> and (<a href="#SkImage_readPixels_srcX">srcX</a>, <a href="#SkImage_readPixels_srcY">srcY</a>) offset specifies a source rectangle: + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +<a href="SkRect_Reference#SkRect">SkRect</a> srcR; +srcR.setXYWH(srcX, srcY, dstInfo.width(), <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_height">height</a>);</pre> + +The source rectangle is intersected with the <a href="#SkImage_bounds">bounds</a> of the image. If this intersection is not empty, +then we have two sets of pixels (of equal size). Replace <a href="#SkImage_readPixels_dstPixels">dstPixels</a> with the +corresponding <a href="#Image">Image</a> pixels, performing any <a href="#Color_Type">Color Type</a>/<a href="#Alpha_Type">Alpha Type</a> transformations needed +(in the case where <a href="#Image">Image</a> and <a href="#SkImage_readPixels_dstInfo">dstInfo</a> have different <a href="#Color_Type">Color Types</a> or <a href="#Alpha_Type">Alpha Types</a>). +This call can fail, returning false, for several reasons: +if source rectangle does not intersect the image <a href="#SkImage_bounds">bounds</a>; +if the requested <a href="#Color_Type">Color Type</a>/<a href="#Alpha_Type">Alpha Type</a> cannot be converted from the image's types. + +### Parameters + +<table> <tr> <td><a name="SkImage_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkPixmap& dst, int srcX, int srcY, CachingHint cachingHint = kAllow_CachingHint) const +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_readPixels_2_dst"> <code><strong>dst </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_2_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_2_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_readPixels_2_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_scalePixels"></a> +## scalePixels + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality, + CachingHint cachingHint = kAllow_CachingHint) const +</pre> + +Copies <a href="#Image">Image</a> pixels into <a href="#SkImage_scalePixels_dst">dst</a>, converting to <a href="#SkImage_scalePixels_dst">dst</a> <a href="#Color_Type">Color Type</a> and <a href="#Alpha_Type">Alpha Type</a>. +If the conversion cannot be performed, false is returned. +If <a href="#SkImage_scalePixels_dst">dst</a> <a href="#SkImage_dimensions">dimensions</a> differ from <a href="#Image">Image</a> <a href="#SkImage_dimensions">dimensions</a>, <a href="#Image">Image</a> is scaled, applying +<a href="#SkImage_scalePixels_filterQuality">filterQuality</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_scalePixels_dst"> <code><strong>dst </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_scalePixels_filterQuality"> <code><strong>filterQuality </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_scalePixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_encodeToData"></a> +## encodeToData + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkData> encodeToData(SkEncodedImageFormat encodedImageFormat, int quality) const +</pre> + +Encode the image's pixels and return the result as <a href="undocumented#SkData">SkData</a>. +If the image type cannot be encoded, or the requested encoder format is +not supported, this will return nullptr. + +### Parameters + +<table> <tr> <td><a name="SkImage_encodeToData_encodedImageFormat"> <code><strong>encodedImageFormat </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_encodeToData_quality"> <code><strong>quality </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkData> encodeToData(SkPixelSerializer* pixelSerializer = nullptr) const +</pre> + +Encodes <a href="#Image">Image</a> and returns result as <a href="undocumented#SkData">SkData</a>. Will reuse existing encoded data +if present, as returned by <a href="#SkImage_refEncodedData">refEncodedData</a>. <a href="#SkImage_encodeToData_2_pixelSerializer">pixelSerializer</a> validates existing +encoded data, and encodes <a href="#Image">Image</a> when existing encoded data is missing or +invalid. + +Passing nullptr for <a href="#SkImage_encodeToData_2_pixelSerializer">pixelSerializer</a> selects default serialization which +accepts all data and encodes to PNG. + +Returns nullptr if existing encoded data is missing or invalid and +encoding fails. + +### Parameters + +<table> <tr> <td><a name="SkImage_encodeToData_2_pixelSerializer"> <code><strong>pixelSerializer </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_refEncodedData"></a> +## refEncodedData + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkData> refEncodedData() const +</pre> + +If the image already has its contents in encoded form (e.g. PNG or JPEG), return that +as <a href="undocumented#SkData">SkData</a>. If the image does not already has its contents in encoded form, return nullptr. + +To force the image to return its contents as encoded data, call <a href="#SkImage_encodeToData">encodeToData</a>. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_toString"></a> +## toString + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +const char* toString(SkString* string) const +</pre> + +### Parameters + +<table> <tr> <td><a name="SkImage_toString_string"> <code><strong>string </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeSubset"></a> +## makeSubset + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeSubset(const SkIRect& subset) const +</pre> + +Return a new image that is a <a href="#SkImage_makeSubset_subset">subset</a> of this image. The underlying implementation may +share the pixels, or it may make a copy. +If <a href="#SkImage_makeSubset_subset">subset</a> does not intersect the <a href="#SkImage_bounds">bounds</a> of this image, or the copy/share cannot be made, +nullptr will be returned. + +### Parameters + +<table> <tr> <td><a name="SkImage_makeSubset_subset"> <code><strong>subset </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeTextureImage"></a> +## makeTextureImage + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeTextureImage(GrContext* context, SkColorSpace* dstColorSpace) const +</pre> + +Ensures that an image is backed by a texture (when <a href="undocumented#GrContext">GrContext</a> is non-null), suitable for use +with surfaces that have the supplied destination color space. If no transformation is +required, the returned image may be the same as this image. If this image is from a +different <a href="undocumented#GrContext">GrContext</a>, this will fail. + +### Parameters + +<table> <tr> <td><a name="SkImage_makeTextureImage_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeTextureImage_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeNonTextureImage"></a> +## makeNonTextureImage + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeNonTextureImage() const +</pre> + +If the image is texture-backed this will make a raster copy of it (or nullptr if reading back +the pixels fails). Otherwise, it returns the original image. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeWithFilter"></a> +## makeWithFilter + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeWithFilter(const SkImageFilter* filter, const SkIRect& subset, + const SkIRect& clipBounds, SkIRect* outSubset, SkIPoint* offset) const +</pre> + +Apply a given image <a href="#SkImage_makeWithFilter_filter">filter</a> to this image, and return the filtered result. +The <a href="#SkImage_makeWithFilter_subset">subset</a> represents the active portion of this image. The return value is similarly an +<a href="#SkImage">SkImage</a>, with an active <a href="#SkImage_makeWithFilter_subset">subset</a> (<a href="#SkImage_makeWithFilter_outSubset">outSubset</a>). This is usually used with texture-backed +images, where the texture may be approx-match and thus larger than the required size. +<a href="#SkImage_makeWithFilter_clipBounds">clipBounds</a> constrains the device-space extent of the image, stored in <a href="#SkImage_makeWithFilter_outSubset">outSubset</a>. +<a href="#SkImage_makeWithFilter_offset">offset</a> is storage, set to the amount to translate the result when drawn. +If the result image cannot be created, or the result would be transparent black, null +is returned, in which case the <a href="#SkImage_makeWithFilter_offset">offset</a> and <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> parameters should be ignored by the +caller. + +### Parameters + +<table> <tr> <td><a name="SkImage_makeWithFilter_filter"> <code><strong>filter </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeWithFilter_subset"> <code><strong>subset </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeWithFilter_clipBounds"> <code><strong>clipBounds </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeWithFilter_outSubset"> <code><strong>outSubset </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeWithFilter_offset"> <code><strong>offset </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_getDeferredTextureImageData"></a> +## getDeferredTextureImageData + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +size_t getDeferredTextureImageData(const GrContextThreadSafeProxy& contextThreadSafeProxy, + const DeferredTextureImageUsageParams deferredTextureImageUsageParams[], + int paramCnt, void* buffer, SkColorSpace* dstColorSpace = nullptr, + SkColorType dstColorType = kN32_SkColorType) const +</pre> + +This method allows clients to capture the data necessary to turn a <a href="#SkImage">SkImage</a> into a texture- +backed image. If the original image is codec-backed this will decode into a format optimized +for the context represented by the proxy. This method is thread safe with respect to the +<a href="undocumented#GrContext">GrContext</a> whence the proxy came. Clients allocate and manage the storage of the deferred +texture data and control its lifetime. No cleanup is required, thus it is safe to simply free +the memory out from under the data. + +The same method is used both for getting the size necessary for uploading +and retrieving texture data. The <a href="#SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams">deferredTextureImageUsageParams</a> array represents the set of +draws over which to optimize the texture data prior to uploading. + +When called with a null <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> this returns the size that the client must allocate in order +to create deferred texture data for this image (or zero if this is an inappropriate +candidate). The <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> allocated by the client should be 8 byte aligned. +When <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is not null this fills in the deferred texture data for this image in the +provided <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> (assuming this is an appropriate candidate image and the <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is +appropriately aligned). Upon success the size written is returned, otherwise 0. +<a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> is the color space of the surface where this texture will ultimately be used. +If the method determines that <a href="undocumented#Mip_Map">Mip Maps</a> are needed, this helps determine the correct strategy +for building them (gamma-correct or not). + +<a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> is the color type of the surface where this texture will ultimately be used. +This determines the format with which the image will be uploaded to the <a href="undocumented#GPU">GPU</a>. If <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> +does not support color spaces (low bit depth types such as <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>), then <a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> +must be null. + +### Parameters + +<table> <tr> <td><a name="SkImage_getDeferredTextureImageData_contextThreadSafeProxy"> <code><strong>contextThreadSafeProxy </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams"> <code><strong>deferredTextureImageUsageParams </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_paramCnt"> <code><strong>paramCnt </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_buffer"> <code><strong>buffer </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorType"> <code><strong>dstColorType </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_MakeFromDeferredTextureImageData"></a> +## MakeFromDeferredTextureImageData + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkImage> MakeFromDeferredTextureImageData(GrContext* context, const void* data, + SkBudgeted budgeted) +</pre> + +Returns a texture-backed image from <a href="#SkImage_MakeFromDeferredTextureImageData_data">data</a> produced in <a href="#SkImage_getDeferredTextureImageData">SkImage::getDeferredTextureImageData</a>. +The <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> must be the <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> that provided the proxy passed to +<a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a>. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_data"> <code><strong>data </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a href="SkImage_Reference#BackendTextureReleaseProc">BackendTextureReleaseProc</a> + +<a name="SkImage_MakeBackendTextureFromSkImage"></a> +## MakeBackendTextureFromSkImage + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static bool MakeBackendTextureFromSkImage(GrContext* context, sk_sp<SkImage> image, + GrBackendTexture* backendTexture, + BackendTextureReleaseProc* backendTextureReleaseProc) +</pre> + +Creates a <a href="undocumented#GrBackendTexture">GrBackendTexture</a> from the provided <a href="#SkImage">SkImage</a>. Returns true on success. The +<a href="undocumented#GrBackendTexture">GrBackendTexture</a> and <a href="SkImage_Reference#BackendTextureReleaseProc">BackendTextureReleaseProc</a> are populated on success. It is the callers +responsibility to call the <a href="SkImage_Reference#BackendTextureReleaseProc">BackendTextureReleaseProc</a> once they have deleted the texture. +Note that the <a href="SkImage_Reference#BackendTextureReleaseProc">BackendTextureReleaseProc</a> allows <a href="undocumented#Skia">Skia</a> to clean up auxiliary data related +to the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>, and is not a substitute for the client deleting the <a href="undocumented#GrBackendTexture">GrBackendTexture</a> +themselves. + +If <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is both texture backed and singly referenced; that is, its only +reference was transferred using std::move(): <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is returned in <a href="#SkImage_MakeBackendTextureFromSkImage_backendTexture">backendTexture</a> +without conversion or making a copy. + +If the <a href="#SkImage">SkImage</a> is not texture backed, this function will generate a texture with the <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a>'s +contents and return that. + +### Parameters + +<table> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_context"> <code><strong>context </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_image"> <code><strong>image </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTextureReleaseProc"> <code><strong>backendTextureReleaseProc </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +## <a name="SkImage_LegacyBitmapMode"></a> Enum SkImage::LegacyBitmapMode + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +enum <a href="#SkImage_LegacyBitmapMode">LegacyBitmapMode</a> { +<a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, +<a href="#SkImage_kRW_LegacyBitmapMode">kRW LegacyBitmapMode</a>, +};</pre> + +Helper functions to convert to <a href="SkBitmap_Reference#SkBitmap">SkBitmap</a> + +### Constants + +<table> + <tr> + <td><a name="SkImage_kRO_LegacyBitmapMode"> <code><strong>SkImage::kRO_LegacyBitmapMode </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="SkImage_kRW_LegacyBitmapMode"> <code><strong>SkImage::kRW_LegacyBitmapMode </strong></code> </a></td><td>1</td><td></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + + + +<a name="SkImage_asLegacyBitmap"></a> +## asLegacyBitmap + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode) const +</pre> + +Attempt to create a <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> with the same pixels as the image. The result will always be +a raster-backed <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> (texture-backed bitmaps are DEPRECATED, and not supported here). +If the mode is <a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a> (read-only), the resulting <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> will be marked as immutable. +On success, returns true. On failure, returns false and the <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> parameter will be reset +to empty. + +### Parameters + +<table> <tr> <td><a name="SkImage_asLegacyBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_asLegacyBitmap_legacyBitmapMode"> <code><strong>legacyBitmapMode </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_isLazyGenerated"></a> +## isLazyGenerated + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isLazyGenerated() const +</pre> + +Returns true if <a href="#Image">Image</a> is backed by an image-generator or other service that creates +and caches its pixels or texture on-demand. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name="SkImage_makeColorSpace"></a> +## makeColorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeColorSpace(sk_sp<SkColorSpace> target, SkTransferFunctionBehavior premulBehavior) const +</pre> + +If <a href="#SkImage_makeColorSpace_target">target</a> is supported, returns an <a href="#SkImage">SkImage</a> in <a href="#SkImage_makeColorSpace_target">target</a> color space. +Otherwise, returns nullptr. +This will leave the image as is if it already in <a href="#SkImage_makeColorSpace_target">target</a> color space. +Otherwise, it will convert the pixels from <a href="#Image">Image</a> color space to <a href="#SkImage_makeColorSpace_target">target</a> +color space. If this-><a href="#SkImage_colorSpace">colorSpace</a> is nullptr, <a href="#Image">Image</a> color space will be +treated as <a href="undocumented#sRGB">sRGB</a>. + +If <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts <a href="#Image">Image</a> +pixels to a linear space before converting to match destination <a href="#Color_Type">Color Type</a> +and <a href="undocumented#Color_Space">Color Space</a>. +If <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> is <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a>: <a href="#Image">Image</a> +pixels are treated as if they are linear, regardless of how they are encoded. + +### Parameters + +<table> <tr> <td><a name="SkImage_makeColorSpace_target"> <code><strong>target </strong></code> </a></td> <td> +incomplete</td> + </tr> <tr> <td><a name="SkImage_makeColorSpace_premulBehavior"> <code><strong>premulBehavior </strong></code> </a></td> <td> +incomplete</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md index 4fb273ca0f..ede24fc933 100644 --- a/site/user/api/SkMatrix_Reference.md +++ b/site/user/api/SkMatrix_Reference.md @@ -27,17 +27,17 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h | function | description | | --- | --- | -| <a href="#SkMatrix_not_equal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> | Returns true if members are unequal. | +| <a href="#SkMatrix_notequal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> | Returns true if members are unequal. | | <a href="#SkMatrix_equal_operator">operator==(const SkMatrix& a, const SkMatrix& b)</a> | Returns true if members are equal. | -| <a href="#SkMatrix_subscript_operator_const">operator[](int index)</a> const | Returns <a href="#Matrix">Matrix</a> value. | -| <a href="#SkMatrix_subscript_operator_const">operator[](int index)</a> | Returns writable reference to <a href="#Matrix">Matrix</a> value. | +| <a href="#SkMatrix_array_operator">operator[](int index) const</a> | Returns <a href="#Matrix">Matrix</a> value. | +| <a href="#SkMatrix_array1_operator">operator[](int index)</a> | Returns writable reference to <a href="#Matrix">Matrix</a> value. | ## <a name="Member_Functions"></a> Member Functions | function | description | | --- | --- | | <a href="#SkMatrix_Concat">Concat</a> | Returns the concatenation of <a href="#Matrix">Matrix</a> pair. | -| <a href="#SkMatrix_I">I</a> | Returns a reference to a const identity <a href="#Matrix">Matrix</a>. | +| <a href="undocumented#I">I</a> | Returns a reference to a const identity <a href="#Matrix">Matrix</a>. | | <a href="#SkMatrix_InvalidMatrix">InvalidMatrix</a> | Returns a reference to a const invalid <a href="#Matrix">Matrix</a>. | | <a href="#SkMatrix_MakeAll">MakeAll</a> | Constructs all nine values. | | <a href="#SkMatrix_MakeRectToRect">MakeRectToRect</a> | Constructs from source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a>. | @@ -73,15 +73,15 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h | <a href="#SkMatrix_isSimilarity">isSimilarity</a> | Returns if transform is limited to square scale and rotation. | | <a href="#SkMatrix_isTranslate">isTranslate</a> | Returns if transform is limited to translate. | | <a href="#SkMatrix_mapHomogeneousPoints">mapHomogeneousPoints</a> | Maps <a href="undocumented#Point3">Point3</a> array. | -| <a href="#SkMatrix_mapPoints">mapPoints</a> | Maps <a href="undocumented#Point">Point</a> array. | -| <a href="#SkMatrix_mapPointsWithStride">mapPointsWithStride</a> | Maps <a href="undocumented#Point">Point</a> array with padding. | +| <a href="#SkMatrix_mapPoints">mapPoints</a> | Maps <a href="SkPoint_Reference#Point">Point</a> array. | +| <a href="#SkMatrix_mapPointsWithStride">mapPointsWithStride</a> | Maps <a href="SkPoint_Reference#Point">Point</a> array with padding. | | <a href="#SkMatrix_mapRadius">mapRadius</a> | Returns mean radius of mapped <a href="undocumented#Circle">Circle</a>. | | <a href="#SkMatrix_mapRect">mapRect</a> | Returns bounds of mapped <a href="SkRect_Reference#Rect">Rect</a>. | | <a href="#SkMatrix_mapRectScaleTranslate">mapRectScaleTranslate</a> | Returns bounds of mapped <a href="SkRect_Reference#Rect">Rect</a>. | -| <a href="#SkMatrix_mapRectToQuad">mapRectToQuad</a> | Maps <a href="SkRect_Reference#Rect">Rect</a> to <a href="undocumented#Point">Point</a> array. | -| <a href="#SkMatrix_mapVector">mapVector</a> | Maps <a href="undocumented#Vector">Vector</a>. | -| <a href="#SkMatrix_mapVectors">mapVectors</a> | Maps <a href="undocumented#Vector">Vector</a> array. | -| <a href="#SkMatrix_mapXY">mapXY</a> | Maps <a href="undocumented#Point">Point</a>. | +| <a href="#SkMatrix_mapRectToQuad">mapRectToQuad</a> | Maps <a href="SkRect_Reference#Rect">Rect</a> to <a href="SkPoint_Reference#Point">Point</a> array. | +| <a href="#SkMatrix_mapVector">mapVector</a> | Maps <a href="SkPoint_Reference#Vector">Vector</a>. | +| <a href="#SkMatrix_mapVectors">mapVectors</a> | Maps <a href="SkPoint_Reference#Vector">Vector</a> array. | +| <a href="#SkMatrix_mapXY">mapXY</a> | Maps <a href="SkPoint_Reference#Point">Point</a>. | | <a href="#SkMatrix_postConcat">postConcat</a> | Post-multiplies <a href="#Matrix">Matrix</a> by <a href="#Matrix">Matrix</a> parameter. | | <a href="#SkMatrix_postIDiv">postIDiv</a> | Post-multiplies <a href="#Matrix">Matrix</a> by inverse scale. | | <a href="#SkMatrix_postRotate">postRotate</a> | Post-multiplies <a href="#Matrix">Matrix</a> by rotation. | @@ -125,13 +125,13 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h <a name="SkMatrix_MakeScale"></a> ## MakeScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkMatrix SK_WARN_UNUSED_RESULT MakeScale(SkScalar sx, SkScalar sy) </pre> Sets <a href="#Matrix">Matrix</a> to scale by (<a href="#SkMatrix_MakeScale_sx">sx</a>, <a href="#SkMatrix_MakeScale_sy">sy</a>). Returned matrix is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | sx 0 0 | | 0 sy 0 | | 0 0 1 |</pre> @@ -159,13 +159,13 @@ vertical scale factor</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkMatrix SK_WARN_UNUSED_RESULT MakeScale(SkScalar scale) </pre> Sets <a href="#Matrix">Matrix</a> to <a href="#SkMatrix_MakeScale_2_scale">scale</a> by (<a href="#SkMatrix_MakeScale_2_scale">scale</a>, <a href="#SkMatrix_MakeScale_2_scale">scale</a>). Returned matrix is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale 0 0 | | 0 scale 0 | | 0 0 1 |</pre> @@ -194,13 +194,13 @@ horizontal and vertical <a href="#SkMatrix_MakeScale_2_scale">scale</a> factor</ <a name="SkMatrix_MakeTrans"></a> ## MakeTrans -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkMatrix SK_WARN_UNUSED_RESULT MakeTrans(SkScalar dx, SkScalar dy) </pre> Sets <a href="#Matrix">Matrix</a> to translate by (<a href="#SkMatrix_MakeTrans_dx">dx</a>, <a href="#SkMatrix_MakeTrans_dy">dy</a>). Returned matrix is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 dx | | 0 1 dy | | 0 0 1 |</pre> @@ -231,17 +231,15 @@ vertical translation</td> <a name="SkMatrix_MakeAll"></a> ## MakeAll -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static SkMatrix SK_WARN_UNUSED_RESULT MakeAll(SkScalar scaleX, SkScalar skewX, - SkScalar transX, SkScalar skewY, - SkScalar scaleY, SkScalar transY, - SkScalar pers0, SkScalar pers1, - SkScalar pers2) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkMatrix SK_WARN_UNUSED_RESULT MakeAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, + SkScalar skewY, SkScalar scaleY, SkScalar transY, + SkScalar pers0, SkScalar pers1, SkScalar pers2) </pre> Sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scaleX skewX transX | | skewY scaleY transY | | pers0 pers1 pers2 |</pre> @@ -285,7 +283,7 @@ perspective scale factor</td> ## <a name="SkMatrix_TypeMask"></a> Enum SkMatrix::TypeMask -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkMatrix_TypeMask">TypeMask</a> { <a href="#SkMatrix_kIdentity_Mask">kIdentity Mask</a> = 0, <a href="#SkMatrix_kTranslate_Mask">kTranslate Mask</a> = 0x01, @@ -342,7 +340,7 @@ after setPolyToPoly: kTranslate_Mask kScale_Mask kAffine_Mask kPerspective_Mask <a name="SkMatrix_getType"></a> ## getType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> TypeMask getType() const </pre> @@ -378,13 +376,13 @@ set all flags hex: f decimal: 15 <a name="SkMatrix_isIdentity"></a> ## isIdentity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isIdentity() const </pre> Returns true if <a href="#Matrix">Matrix</a> is identity. Identity matrix is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 0 | | 0 1 0 | | 0 0 1 |</pre> @@ -415,14 +413,14 @@ is identity: false <a name="SkMatrix_isScaleTranslate"></a> ## isScaleTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isScaleTranslate() const </pre> Returns true if <a href="#Matrix">Matrix</a> at most scales and translates. <a href="#Matrix">Matrix</a> may be identity, contain only scale elements, only translate elements, or both. <a href="#Matrix">Matrix</a> form is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x 0 translate-x | | 0 scale-y translate-y | | 0 0 1 |</pre> @@ -455,13 +453,13 @@ is scale-translate: true <a name="SkMatrix_isTranslate"></a> ## isTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isTranslate() const </pre> Returns true if <a href="#Matrix">Matrix</a> is identity, or translates. <a href="#Matrix">Matrix</a> form is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 translate-x | | 0 1 translate-y | | 0 0 1 |</pre> @@ -494,7 +492,7 @@ is translate: false <a name="SkMatrix_rectStaysRect"></a> ## rectStaysRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool rectStaysRect() const </pre> @@ -502,14 +500,14 @@ Returns true <a href="#Matrix">Matrix</a> maps <a href="SkRect_Reference#Rect">R or scales, or rotates a multiple of 90 degrees, or mirrors in x or y. In all cases, <a href="#Matrix">Matrix</a> may also have translation. <a href="#Matrix">Matrix</a> form is either: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x 0 translate-x | | 0 scale-y translate-y | | 0 0 1 |</pre> or -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 0 rotate-x translate-x | | rotate-y 0 translate-y | | 0 0 1 |</pre> @@ -547,7 +545,7 @@ rectStaysRect: true <a name="SkMatrix_preservesAxisAlignment"></a> ## preservesAxisAlignment -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool preservesAxisAlignment() const </pre> @@ -555,14 +553,14 @@ Returns true <a href="#Matrix">Matrix</a> maps <a href="SkRect_Reference#Rect">R or scales, or rotates a multiple of 90 degrees, or mirrors in x or y. In all cases, <a href="#Matrix">Matrix</a> may also have translation. <a href="#Matrix">Matrix</a> form is either: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x 0 translate-x | | 0 scale-y translate-y | | 0 0 1 |</pre> or -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 0 rotate-x translate-x | | rotate-y 0 translate-y | | 0 0 1 |</pre> @@ -600,13 +598,13 @@ preservesAxisAlignment: true <a name="SkMatrix_hasPerspective"></a> ## hasPerspective -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasPerspective() const </pre> Returns true if the matrix contains perspective elements. <a href="#Matrix">Matrix</a> form is: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | -- -- -- | | -- -- -- | | perspective-x perspective-y perspective-scale |</pre> @@ -631,7 +629,7 @@ true if <a href="#Matrix">Matrix</a> is in most general form <a name="SkMatrix_isSimilarity"></a> ## isSimilarity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isSimilarity(SkScalar tol = SK_ScalarNearlyZero) const </pre> @@ -642,7 +640,7 @@ degenerate forms that collapse to a line or point. Describes that the <a href="#Matrix">Matrix</a> makes rendering with and without the matrix are visually alike; a transformed circle remains a circle. Mathematically, this is -referred to as similarity of a <a href="undocumented#Euclidean">Euclidean</a> space, or a similarity transformation. +referred to as similarity of a <a href="undocumented#Euclidean_Space">Euclidean Space</a>, or a similarity transformation. Preserves right angles, keeping the arms of the angle equal lengths. @@ -671,7 +669,7 @@ with <a href="#SkMatrix_isSimilarity">isSimilarity</a> false reveals the pair no <a name="SkMatrix_preservesRightAngles"></a> ## preservesRightAngles -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool preservesRightAngles(SkScalar tol = SK_ScalarNearlyZero) const </pre> @@ -708,7 +706,7 @@ Skews are not similar and do not preserve right angles.</div></fiddle-embed></di ## <a name="SkMatrix__anonymous"></a> Enum SkMatrix::_anonymous -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum { <a href="#SkMatrix_kMScaleX">kMScaleX</a>, <a href="#SkMatrix_kMSkewX">kMSkewX</a>, @@ -768,7 +766,7 @@ each value in <a href="#Matrix">Matrix</a>. ## <a name="SkMatrix__anonymous_2"></a> Enum SkMatrix::_anonymous_2 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum { <a href="#SkMatrix_kAScaleX">kAScaleX</a>, <a href="#SkMatrix_kASkewY">kASkewY</a>, @@ -810,19 +808,19 @@ Affine arrays are in column major order to match the matrix used by -<a name="SkMatrix_subscript_operator_const"></a> +<a name="SkMatrix_array_operator"></a> ## operator[] -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkScalar operator[](int index) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar operator[](int index) _const </pre> -Returns one matrix value. Asserts if <a href="#SkMatrix_subscript_operator_const_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is +Returns one matrix value. Asserts if <a href="#SkMatrix_array_operator_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined. ### Parameters -<table> <tr> <td><a name="SkMatrix_subscript_operator_const_index"> <code><strong>index </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkMatrix_array_operator_index"> <code><strong>index </strong></code> </a></td> <td> one of: <a href="#SkMatrix_kMScaleX">kMScaleX</a>, <a href="#SkMatrix_kMSkewX">kMSkewX</a>, <a href="#SkMatrix_kMTransX">kMTransX</a>, <a href="#SkMatrix_kMSkewY">kMSkewY</a>, <a href="#SkMatrix_kMScaleY">kMScaleY</a>, <a href="#SkMatrix_kMTransY">kMTransY</a>, <a href="#SkMatrix_kMPersp0">kMPersp0</a>, <a href="#SkMatrix_kMPersp1">kMPersp1</a>, <a href="#SkMatrix_kMPersp2">kMPersp2</a></td> </tr> @@ -830,7 +828,7 @@ one of: <a href="#SkMatrix_kMScaleX">kMScaleX</a>, <a href="#SkMatrix_kMSkewX">k ### Return Value -value corresponding to <a href="#SkMatrix_subscript_operator_const_index">index</a> +value corresponding to <a href="#SkMatrix_array_operator_index">index</a> ### Example @@ -854,7 +852,7 @@ matrix[SkMatrix::kMScaleY] == 24 <a name="SkMatrix_get"></a> ## get -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar get(int index) const </pre> @@ -888,14 +886,14 @@ matrix.get(SkMatrix::kMSkewY) == 24 ### See Also -<a href="#SkMatrix_subscript_operator_const">operator[](int index)</a> <a href="#SkMatrix_set">set</a> +<a href="#SkMatrix_array1_operator">operator[](int index)</a> <a href="#SkMatrix_set">set</a> --- <a name="SkMatrix_getScaleX"></a> ## getScaleX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getScaleX() const </pre> @@ -927,7 +925,7 @@ matrix.getScaleX() == 42 <a name="SkMatrix_getScaleY"></a> ## getScaleY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getScaleY() const </pre> @@ -959,7 +957,7 @@ matrix.getScaleY() == 24 <a name="SkMatrix_getSkewY"></a> ## getSkewY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getSkewY() const </pre> @@ -992,7 +990,7 @@ matrix.getSkewY() == 24 <a name="SkMatrix_getSkewX"></a> ## getSkewX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getSkewX() const </pre> @@ -1025,7 +1023,7 @@ matrix.getSkewX() == 42 <a name="SkMatrix_getTranslateX"></a> ## getTranslateX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getTranslateX() const </pre> @@ -1057,7 +1055,7 @@ matrix.getTranslateX() == 42 <a name="SkMatrix_getTranslateY"></a> ## getTranslateY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getTranslateY() const </pre> @@ -1089,7 +1087,7 @@ matrix.getTranslateY() == 24 <a name="SkMatrix_getPerspX"></a> ## getPerspX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getPerspX() const </pre> @@ -1112,7 +1110,7 @@ input x perspective factor <a name="SkMatrix_getPerspY"></a> ## getPerspY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getPerspY() const </pre> @@ -1132,11 +1130,14 @@ input y perspective factor --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<a name="SkMatrix_array1_operator"></a> +## operator[] + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar& operator[](int index) </pre> -Returns writable <a href="#Matrix">Matrix</a> value. Asserts if <a href="#SkMatrix_subscript_operator_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is +Returns writable <a href="#Matrix">Matrix</a> value. Asserts if <a href="#SkMatrix_array1_operator_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined. Clears internal cache anticipating that caller will change <a href="#Matrix">Matrix</a> value. Next call to read <a href="#Matrix">Matrix</a> state may recompute cache; subsequent writes to <a href="#Matrix">Matrix</a> @@ -1144,7 +1145,7 @@ value must be followed by <a href="#SkMatrix_dirtyMatrixTypeCache">dirtyMatrixTy ### Parameters -<table> <tr> <td><a name="SkMatrix_subscript_operator_index"> <code><strong>index </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkMatrix_array1_operator_index"> <code><strong>index </strong></code> </a></td> <td> one of: <a href="#SkMatrix_kMScaleX">kMScaleX</a>, <a href="#SkMatrix_kMSkewX">kMSkewX</a>, <a href="#SkMatrix_kMTransX">kMTransX</a>, <a href="#SkMatrix_kMSkewY">kMSkewY</a>, <a href="#SkMatrix_kMScaleY">kMScaleY</a>, <a href="#SkMatrix_kMTransY">kMTransY</a>, <a href="#SkMatrix_kMPersp0">kMPersp0</a>, <a href="#SkMatrix_kMPersp1">kMPersp1</a>, <a href="#SkMatrix_kMPersp2">kMPersp2</a></td> </tr> @@ -1152,7 +1153,7 @@ one of: <a href="#SkMatrix_kMScaleX">kMScaleX</a>, <a href="#SkMatrix_kMSkewX">k ### Return Value -writable value corresponding to <a href="#SkMatrix_subscript_operator_index">index</a> +writable value corresponding to <a href="#SkMatrix_array1_operator_index">index</a> ### Example @@ -1178,7 +1179,7 @@ after dirty cache: x = 66 <a name="SkMatrix_set"></a> ## set -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(int index, SkScalar value) </pre> @@ -1218,7 +1219,7 @@ operator[] <a href="#SkMatrix_get">get</a> <a name="SkMatrix_setScaleX"></a> ## setScaleX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setScaleX(SkScalar v) </pre> @@ -1244,7 +1245,7 @@ horizontal scale factor to store</td> <a name="SkMatrix_setScaleY"></a> ## setScaleY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setScaleY(SkScalar v) </pre> @@ -1270,7 +1271,7 @@ vertical scale factor to store</td> <a name="SkMatrix_setSkewY"></a> ## setSkewY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSkewY(SkScalar v) </pre> @@ -1296,7 +1297,7 @@ vertical skew factor to store</td> <a name="SkMatrix_setSkewX"></a> ## setSkewX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSkewX(SkScalar v) </pre> @@ -1322,7 +1323,7 @@ horizontal skew factor to store</td> <a name="SkMatrix_setTranslateX"></a> ## setTranslateX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTranslateX(SkScalar v) </pre> @@ -1348,7 +1349,7 @@ horizontal translation to store</td> <a name="SkMatrix_setTranslateY"></a> ## setTranslateY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTranslateY(SkScalar v) </pre> @@ -1374,7 +1375,7 @@ vertical translation to store</td> <a name="SkMatrix_setPerspX"></a> ## setPerspX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPerspX(SkScalar v) </pre> @@ -1401,7 +1402,7 @@ perspective factor</td> <a name="SkMatrix_setPerspY"></a> ## setPerspY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPerspY(SkScalar v) </pre> @@ -1428,15 +1429,14 @@ perspective factor</td> <a name="SkMatrix_setAll"></a> ## setAll -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void setAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, SkScalar skewY, - SkScalar scaleY, SkScalar transY, SkScalar persp0, SkScalar persp1, - SkScalar persp2) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void setAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, SkScalar skewY, SkScalar scaleY, + SkScalar transY, SkScalar persp0, SkScalar persp1, SkScalar persp2) </pre> Sets all values from parameters. Sets matrix to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scaleX skewX transX | | skewY scaleY transY | | persp0 persp1 persp2 |</pre> @@ -1477,7 +1477,7 @@ perspective scale factor to store</td> <a name="SkMatrix_get9"></a> ## get9 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void get9(SkScalar buffer[9]) const </pre> @@ -1515,7 +1515,7 @@ storage for nine <a href="#Scalar">Scalar</a> values</td> <a name="SkMatrix_set9"></a> ## set9 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set9(const SkScalar buffer[9]) </pre> @@ -1525,7 +1525,7 @@ Sets <a href="#Matrix">Matrix</a> to nine <a href="#Scalar">Scalar</a> values in Sets matrix to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | buffer[0] buffer[1] buffer[2] | | buffer[3] buffer[4] buffer[5] | | buffer[6] buffer[7] buffer[8] |</pre> @@ -1554,13 +1554,13 @@ nine <a href="#Scalar">Scalar</a> values</td> <a name="SkMatrix_reset"></a> ## reset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset() </pre> Sets <a href="#Matrix">Matrix</a> to identity; which has no effect on mapped <a href="#Point">Points</a>. Sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 0 | | 0 1 0 | | 0 0 1 |</pre> @@ -1589,13 +1589,13 @@ m.isIdentity(): true <a name="SkMatrix_setIdentity"></a> ## setIdentity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setIdentity() </pre> Sets <a href="#Matrix">Matrix</a> to identity; which has no effect on mapped <a href="#Point">Points</a>. Sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 0 | | 0 1 0 | | 0 0 1 |</pre> @@ -1624,7 +1624,7 @@ m.isIdentity(): true <a name="SkMatrix_setTranslate"></a> ## setTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTranslate(SkScalar dx, SkScalar dy) </pre> @@ -1649,7 +1649,7 @@ vertical translation</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTranslate(const SkVector& v) </pre> @@ -1658,7 +1658,7 @@ Sets <a href="#Matrix">Matrix</a> to translate by (<a href="#SkMatrix_setTransla ### Parameters <table> <tr> <td><a name="SkMatrix_setTranslate_2_v"> <code><strong>v </strong></code> </a></td> <td> -<a href="undocumented#Vector">Vector</a> containing horizontal and vertical translation</td> +<a href="SkPoint_Reference#Vector">Vector</a> containing horizontal and vertical translation</td> </tr> </table> @@ -1675,7 +1675,7 @@ Sets <a href="#Matrix">Matrix</a> to translate by (<a href="#SkMatrix_setTransla <a name="SkMatrix_setScale"></a> ## setScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py) </pre> @@ -1705,7 +1705,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setScale(SkScalar sx, SkScalar sy) </pre> @@ -1733,7 +1733,7 @@ vertical scale factor</td> <a name="SkMatrix_setRotate"></a> ## setRotate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setRotate(SkScalar degrees, SkScalar px, SkScalar py) </pre> @@ -1763,7 +1763,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setRotate(SkScalar degrees) </pre> @@ -1790,15 +1790,15 @@ angle of axes relative to upright axes</td> <a name="SkMatrix_setSinCos"></a> ## setSinCos -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSinCos(SkScalar sinValue, SkScalar cosValue, SkScalar px, SkScalar py) </pre> Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>, about a pivot point at (<a href="#SkMatrix_setSinCos_px">px</a>, <a href="#SkMatrix_setSinCos_py">py</a>). The pivot point is unchanged when mapped with <a href="#Matrix">Matrix</a>. -<a href="undocumented#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1). -<a href="undocumented#Vector">Vector</a> length specifies scale. +<a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1). +<a href="SkPoint_Reference#Vector">Vector</a> length specifies scale. ### Parameters @@ -1823,14 +1823,14 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSinCos(SkScalar sinValue, SkScalar cosValue) </pre> Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>, about a pivot point at (0, 0). -<a href="undocumented#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1). -<a href="undocumented#Vector">Vector</a> length specifies scale. +<a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1). +<a href="SkPoint_Reference#Vector">Vector</a> length specifies scale. ### Parameters @@ -1854,15 +1854,15 @@ rotation vector y component</td> <a name="SkMatrix_setRSXform"></a> ## setRSXform -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkMatrix& setRSXform(const SkRSXform& rsxForm) </pre> Sets <a href="#Matrix">Matrix</a> to rotate, scale, and translate using a compressed matrix form. -<a href="undocumented#Vector">Vector</a> (<a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fSSin, <a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fSCos) describes the angle of rotation relative -to (0, 1). <a href="undocumented#Vector">Vector</a> length specifies scale. Mapped point is rotated and scaled -by <a href="undocumented#Vector">Vector</a>, then translated by (<a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fTx, <a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fTy). +<a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fSSin, <a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fSCos) describes the angle of rotation relative +to (0, 1). <a href="SkPoint_Reference#Vector">Vector</a> length specifies scale. Mapped point is rotated and scaled +by <a href="SkPoint_Reference#Vector">Vector</a>, then translated by (<a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fTx, <a href="#SkMatrix_setRSXform_rsxForm">rsxForm</a>.fTy). ### Parameters @@ -1888,7 +1888,7 @@ reference to <a href="#Matrix">Matrix</a> <a name="SkMatrix_setSkew"></a> ## setSkew -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py) </pre> @@ -1918,7 +1918,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSkew(SkScalar kx, SkScalar ky) </pre> @@ -1946,7 +1946,7 @@ vertical skew factor</td> <a name="SkMatrix_setConcat"></a> ## setConcat -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setConcat(const SkMatrix& a, const SkMatrix& b) </pre> @@ -1954,14 +1954,14 @@ Sets <a href="#Matrix">Matrix</a> to <a href="#Matrix">Matrix</a> <a href="#SkMa Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | a = | D E F |, b = | M N O | | G H I | | P Q R |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |</pre> @@ -1989,7 +1989,7 @@ Multiplying the matrix by its inverse turns into an identity matrix.</div></fidd <a name="SkMatrix_preTranslate"></a> ## preTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preTranslate(SkScalar dx, SkScalar dy) </pre> @@ -1998,14 +1998,14 @@ This can be thought of as moving the point to be mapped before applying <a href= Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 0 dx | Matrix = | D E F |, T(dx, dy) = | 0 1 dy | | G H I | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 0 dx | | A B A*dx+B*dy+C | Matrix * T(dx, dy) = | D E F | | 0 1 dy | = | D E D*dx+E*dy+F | | G H I | | 0 0 1 | | G H G*dx+H*dy+I |</pre> @@ -2032,7 +2032,7 @@ y translation before applying <a href="#Matrix">Matrix</a></td> <a name="SkMatrix_preScale"></a> ## preScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py) </pre> @@ -2042,20 +2042,20 @@ This can be thought of as scaling about a pivot point before applying <a href="# Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | sx 0 dx | Matrix = | D E F |, S(sx, sy, px, py) = | 0 sy dy | | G H I | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> dx = px - sx * px dy = py - sy * py</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | sx 0 dx | | A*sx B*sy A*dx+B*dy+C | Matrix * S(sx, sy, px, py) = | D E F | | 0 sy dy | = | D*sx E*sy D*dx+E*dy+F | | G H I | | 0 0 1 | | G*sx H*sy G*dx+H*dy+I |</pre> @@ -2083,7 +2083,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preScale(SkScalar sx, SkScalar sy) </pre> @@ -2093,14 +2093,14 @@ This can be thought of as scaling about the origin before applying <a href="#Mat Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | sx 0 0 | Matrix = | D E F |, S(sx, sy) = | 0 sy 0 | | G H I | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | sx 0 0 | | A*sx B*sy C | Matrix * S(sx, sy) = | D E F | | 0 sy 0 | = | D*sx E*sy F | | G H I | | 0 0 1 | | G*sx H*sy I |</pre> @@ -2127,7 +2127,7 @@ vertical scale factor</td> <a name="SkMatrix_preRotate"></a> ## preRotate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preRotate(SkScalar degrees, SkScalar px, SkScalar py) </pre> @@ -2139,14 +2139,14 @@ Positive <a href="#SkMatrix_preRotate_degrees">degrees</a> rotates clockwise. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | c -s dx | Matrix = | D E F |, R(degrees, px, py) = | s c dy | | G H I | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> c = cos(degrees) s = sin(degrees) dx = s * py + (1 - c) * px @@ -2154,7 +2154,7 @@ dy = -s * px + (1 - c) * py</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | c -s dx | | Ac+Bs -As+Bc A*dx+B*dy+C | Matrix * R(degrees, px, py) = | D E F | | s c dy | = | Dc+Es -Ds+Ec D*dx+E*dy+F | | G H I | | 0 0 1 | | Gc+Hs -Gs+Hc G*dx+H*dy+I |</pre> @@ -2180,7 +2180,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preRotate(SkScalar degrees) </pre> @@ -2192,20 +2192,20 @@ Positive <a href="#SkMatrix_preRotate_2_degrees">degrees</a> rotates clockwise. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | c -s 0 | Matrix = | D E F |, R(degrees, px, py) = | s c 0 | | G H I | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> c = cos(degrees) s = sin(degrees)</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | c -s 0 | | Ac+Bs -As+Bc C | Matrix * R(degrees, px, py) = | D E F | | s c 0 | = | Dc+Es -Ds+Ec F | | G H I | | 0 0 1 | | Gc+Hs -Gs+Hc I |</pre> @@ -2230,7 +2230,7 @@ angle of axes relative to upright axes</td> <a name="SkMatrix_preSkew"></a> ## preSkew -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py) </pre> @@ -2240,20 +2240,20 @@ This can be thought of as skewing about a pivot point before applying <a href="# Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 kx dx | Matrix = | D E F |, K(kx, ky, px, py) = | ky 1 dy | | G H I | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> dx = -kx * py dy = -ky * px</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 kx dx | | A+B*ky A*kx+B A*dx+B*dy+C | Matrix * K(kx, ky, px, py) = | D E F | | ky 1 dy | = | D+E*ky D*kx+E D*dx+E*dy+F | | G H I | | 0 0 1 | | G+H*ky G*kx+H G*dx+H*dy+I |</pre> @@ -2281,7 +2281,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preSkew(SkScalar kx, SkScalar ky) </pre> @@ -2291,14 +2291,14 @@ This can be thought of as skewing about the origin before applying <a href="#Mat Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 kx 0 | Matrix = | D E F |, K(kx, ky) = | ky 1 0 | | G H I | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | 1 kx 0 | | A+B*ky A*kx+B C | Matrix * K(kx, ky) = | D E F | | ky 1 0 | = | D+E*ky D*kx+E F | | G H I | | 0 0 1 | | G+H*ky G*kx+H I |</pre> @@ -2325,7 +2325,7 @@ vertical skew factor</td> <a name="SkMatrix_preConcat"></a> ## preConcat -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void preConcat(const SkMatrix& other) </pre> @@ -2334,14 +2334,14 @@ This can be thought of mapping by <a href="#SkMatrix_preConcat_other">other</a> Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | Matrix = | D E F |, other = | M N O | | G H I | | P Q R |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | Matrix * other = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |</pre> @@ -2367,7 +2367,7 @@ Multiplying the matrix by its inverse turns into an identity matrix.</div></fidd <a name="SkMatrix_postTranslate"></a> ## postTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postTranslate(SkScalar dx, SkScalar dy) </pre> @@ -2376,14 +2376,14 @@ This can be thought of as moving the point to be mapped after applying <a href=" Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | 1 0 dx | Matrix = | M N O |, T(dx, dy) = | 0 1 dy | | P Q R | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 dx | | J K L | | J+dx*P K+dx*Q L+dx*R | T(dx, dy) * Matrix = | 0 1 dy | | M N O | = | M+dy*P N+dy*Q O+dy*R | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2410,7 +2410,7 @@ y translation after applying <a href="#Matrix">Matrix</a></td> <a name="SkMatrix_postScale"></a> ## postScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py) </pre> @@ -2420,20 +2420,20 @@ This can be thought of as scaling about a pivot point after applying <a href="#M Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | sx 0 dx | Matrix = | M N O |, S(sx, sy, px, py) = | 0 sy dy | | P Q R | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> dx = px - sx * px dy = py - sy * py</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | sx 0 dx | | J K L | | sx*J+dx*P sx*K+dx*Q sx*L+dx+R | S(sx, sy, px, py) * Matrix = | 0 sy dy | | M N O | = | sy*M+dy*P sy*N+dy*Q sy*O+dy*R | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2461,7 +2461,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postScale(SkScalar sx, SkScalar sy) </pre> @@ -2471,14 +2471,14 @@ This can be thought of as scaling about the origin after applying <a href="#Matr Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | sx 0 0 | Matrix = | M N O |, S(sx, sy) = | 0 sy 0 | | P Q R | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | sx 0 0 | | J K L | | sx*J sx*K sx*L | S(sx, sy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2505,7 +2505,7 @@ vertical scale factor</td> <a name="SkMatrix_postIDiv"></a> ## postIDiv -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool postIDiv(int divx, int divy) </pre> @@ -2515,20 +2515,20 @@ Returns false if either <a href="#SkMatrix_postIDiv_divx">divx</a> or <a href="# Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | sx 0 0 | Matrix = | M N O |, I(divx, divy) = | 0 sy 0 | | P Q R | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sx = 1 / divx sy = 1 / divy</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | sx 0 0 | | J K L | | sx*J sx*K sx*L | I(divx, divy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2559,7 +2559,7 @@ true on successful scale <a name="SkMatrix_postRotate"></a> ## postRotate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postRotate(SkScalar degrees, SkScalar px, SkScalar py) </pre> @@ -2571,14 +2571,14 @@ Positive <a href="#SkMatrix_postRotate_degrees">degrees</a> rotates clockwise. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | c -s dx | Matrix = | M N O |, R(degrees, px, py) = | s c dy | | P Q R | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> c = cos(degrees) s = sin(degrees) dx = s * py + (1 - c) * px @@ -2586,7 +2586,7 @@ dy = -s * px + (1 - c) * py</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |c -s dx| |J K L| |cJ-sM+dx*P cK-sN+dx*Q cL-sO+dx+R| R(degrees, px, py) * Matrix = |s c dy| |M N O| = |sJ+cM+dy*P sK+cN+dy*Q sL+cO+dy*R| |0 0 1| |P Q R| | P Q R|</pre> @@ -2612,7 +2612,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postRotate(SkScalar degrees) </pre> @@ -2624,20 +2624,20 @@ Positive <a href="#SkMatrix_postRotate_2_degrees">degrees</a> rotates clockwise. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | c -s 0 | Matrix = | M N O |, R(degrees, px, py) = | s c 0 | | P Q R | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> c = cos(degrees) s = sin(degrees)</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | c -s dx | | J K L | | cJ-sM cK-sN cL-sO | R(degrees, px, py) * Matrix = | s c dy | | M N O | = | sJ+cM sK+cN sL+cO | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2662,7 +2662,7 @@ angle of axes relative to upright axes</td> <a name="SkMatrix_postSkew"></a> ## postSkew -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py) </pre> @@ -2672,20 +2672,20 @@ This can be thought of as skewing about a pivot point after applying <a href="#M Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | 1 kx dx | Matrix = | M N O |, K(kx, ky, px, py) = | ky 1 dy | | P Q R | | 0 0 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> dx = -kx * py dy = -ky * px</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 kx dx| |J K L| |J+kx*M+dx*P K+kx*N+dx*Q L+kx*O+dx+R| K(kx, ky, px, py) * Matrix = |ky 1 dy| |M N O| = |ky*J+M+dy*P ky*K+N+dy*Q ky*L+O+dy*R| | 0 0 1| |P Q R| | P Q R|</pre> @@ -2713,7 +2713,7 @@ pivot y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postSkew(SkScalar kx, SkScalar ky) </pre> @@ -2723,14 +2723,14 @@ This can be thought of as skewing about the origin after applying <a href="#Matr Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | 1 kx 0 | Matrix = | M N O |, K(kx, ky) = | ky 1 0 | | P Q R | | 0 0 1 |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 kx 0 | | J K L | | J+kx*M K+kx*N L+kx*O | K(kx, ky) * Matrix = | ky 1 0 | | M N O | = | ky*J+M ky*K+N ky*L+O | | 0 0 1 | | P Q R | | P Q R |</pre> @@ -2757,7 +2757,7 @@ vertical skew factor</td> <a name="SkMatrix_postConcat"></a> ## postConcat -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void postConcat(const SkMatrix& other) </pre> @@ -2766,14 +2766,14 @@ This can be thought of mapping by <a href="#SkMatrix_postConcat_other">other</a> Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | J K L | | A B C | Matrix = | M N O |, other = | D E F | | P Q R | | G H I |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |</pre> @@ -2797,7 +2797,7 @@ other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | ## <a name="SkMatrix_ScaleToFit"></a> Enum SkMatrix::ScaleToFit -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkMatrix_ScaleToFit">ScaleToFit</a> { <a href="#SkMatrix_kFill_ScaleToFit">kFill ScaleToFit</a>, <a href="#SkMatrix_kStart_ScaleToFit">kStart ScaleToFit</a>, @@ -2848,7 +2848,7 @@ edges of destination <a href="SkRect_Reference#Rect">Rect</a>.</td> <a name="SkMatrix_setRectToRect"></a> ## setRectToRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool setRectToRect(const SkRect& src, const SkRect& dst, ScaleToFit stf) </pre> @@ -2857,7 +2857,7 @@ mapping completely fills <a href="#SkMatrix_setRectToRect_dst">dst</a> or preser <a href="#SkMatrix_setRectToRect_src">src</a> within <a href="#SkMatrix_setRectToRect_dst">dst</a>. Returns false if <a href="#SkMatrix_setRectToRect_src">src</a> is empty, and sets <a href="#Matrix">Matrix</a> to identity. Returns true if <a href="#SkMatrix_setRectToRect_dst">dst</a> is empty, and sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 0 0 0 | | 0 0 0 | | 0 0 1 |</pre> @@ -2906,9 +2906,8 @@ src: 1, 2, 3, 4 dst: 5, 6, 8, 9 success: true <a name="SkMatrix_MakeRectToRect"></a> ## MakeRectToRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static SkMatrix MakeRectToRect(const SkRect& src, const SkRect& dst, - ScaleToFit stf) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkMatrix MakeRectToRect(const SkRect& src, const SkRect& dst, ScaleToFit stf) </pre> Returns <a href="#Matrix">Matrix</a> <a href="#SkMatrix_set">set</a> to scale and translate <a href="#SkMatrix_MakeRectToRect_src">src</a> <a href="SkRect_Reference#Rect">Rect</a> to <a href="#SkMatrix_MakeRectToRect_dst">dst</a> <a href="SkRect_Reference#Rect">Rect</a>. <a href="#SkMatrix_MakeRectToRect_stf">stf</a> selects @@ -2916,7 +2915,7 @@ whether mapping completely fills <a href="#SkMatrix_MakeRectToRect_dst">dst</a> align <a href="#SkMatrix_MakeRectToRect_src">src</a> within <a href="#SkMatrix_MakeRectToRect_dst">dst</a>. Returns the identity <a href="#Matrix">Matrix</a> if <a href="#SkMatrix_MakeRectToRect_src">src</a> is empty. If <a href="#SkMatrix_MakeRectToRect_dst">dst</a> is empty, returns <a href="#Matrix">Matrix</a> <a href="#SkMatrix_set">set</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 0 0 0 | | 0 0 0 | | 0 0 1 |</pre> @@ -2965,7 +2964,7 @@ src: 1, 2, 3, 4 dst: 5, 6, 8, 9 <a name="SkMatrix_setPolyToPoly"></a> ## setPolyToPoly -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool setPolyToPoly(const SkPoint src[], const SkPoint dst[], int count) </pre> @@ -3005,7 +3004,7 @@ true if <a href="#Matrix">Matrix</a> was constructed successfully <a name="SkMatrix_invert"></a> ## invert -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT invert(SkMatrix* inverse) const </pre> @@ -3038,14 +3037,14 @@ true if <a href="#Matrix">Matrix</a> can be inverted <a name="SkMatrix_SetAffineIdentity"></a> ## SetAffineIdentity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static void SetAffineIdentity(SkScalar affine[6]) </pre> Fills <a href="#SkMatrix_SetAffineIdentity_affine">affine</a> with identity values in column major order. Sets <a href="#SkMatrix_SetAffineIdentity_affine">affine</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 0 | | 0 1 0 |</pre> @@ -3079,13 +3078,13 @@ ScaleX: 1 SkewY: 0 SkewX: 0 ScaleY: 1 TransX: 0 TransY: 0 <a name="SkMatrix_asAffine"></a> ## asAffine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT asAffine(SkScalar affine[6]) const </pre> Fills <a href="#SkMatrix_asAffine_affine">affine</a> in column major order. Sets <a href="#SkMatrix_asAffine_affine">affine</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x skew-x translate-x | | skew-y scale-y translate-y |</pre> @@ -3123,20 +3122,20 @@ ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7 <a name="SkMatrix_setAffine"></a> ## setAffine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setAffine(const SkScalar affine[6]) </pre> Sets <a href="#Matrix">Matrix</a> to <a href="#SkMatrix_setAffine_affine">affine</a> values, passed in column major order. Given <a href="#SkMatrix_setAffine_affine">affine</a>, column, then row, as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x skew-x translate-x | | skew-y scale-y translate-y |</pre> <a href="#Matrix">Matrix</a> is <a href="#SkMatrix_set">set</a>, row, then column, to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | scale-x skew-x translate-x | | skew-y scale-y translate-y | | 0 0 1 |</pre> @@ -3170,29 +3169,29 @@ ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7 <a name="SkMatrix_mapPoints"></a> ## mapPoints -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapPoints(SkPoint dst[], const SkPoint src[], int count) const </pre> -Maps <a href="#SkMatrix_mapPoints_src">src</a> <a href="undocumented#Point">Point</a> array of length <a href="#SkMatrix_mapPoints_count">count</a> to <a href="#SkMatrix_mapPoints_dst">dst</a> <a href="undocumented#Point">Point</a> array of equal or greater -length. <a href="#Point">Points</a> are mapped by multiplying each <a href="undocumented#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: +Maps <a href="#SkMatrix_mapPoints_src">src</a> <a href="SkPoint_Reference#Point">Point</a> array of length <a href="#SkMatrix_mapPoints_count">count</a> to <a href="#SkMatrix_mapPoints_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> array of equal or greater +length. <a href="#Point">Points</a> are mapped by multiplying each <a href="SkPoint_Reference#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> for (i = 0; i < count; ++i) { x = src[i].fX y = src[i].fY }</pre> -each <a href="#SkMatrix_mapPoints_dst">dst</a> <a href="undocumented#Point">Point</a> is computed as: +each <a href="#SkMatrix_mapPoints_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3220,29 +3219,29 @@ number of <a href="#Point">Points</a> to transform</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapPoints(SkPoint pts[], int count) const </pre> -Maps <a href="#SkMatrix_mapPoints_2_pts">pts</a> <a href="undocumented#Point">Point</a> array of length <a href="#SkMatrix_mapPoints_2_count">count</a> in place. <a href="#Point">Points</a> are mapped by multiplying -each <a href="undocumented#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: +Maps <a href="#SkMatrix_mapPoints_2_pts">pts</a> <a href="SkPoint_Reference#Point">Point</a> array of length <a href="#SkMatrix_mapPoints_2_count">count</a> in place. <a href="#Point">Points</a> are mapped by multiplying +each <a href="SkPoint_Reference#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> for (i = 0; i < count; ++i) { x = pts[i].fX y = pts[i].fY }</pre> -each resulting <a href="#SkMatrix_mapPoints_2_pts">pts</a> <a href="undocumented#Point">Point</a> is computed as: +each resulting <a href="#SkMatrix_mapPoints_2_pts">pts</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3269,21 +3268,21 @@ number of <a href="#Point">Points</a> to transform</td> <a name="SkMatrix_mapPointsWithStride"></a> ## mapPointsWithStride -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapPointsWithStride(SkPoint pts[], size_t stride, int count) const </pre> -Maps <a href="#SkMatrix_mapPointsWithStride_count">count</a> <a href="#SkMatrix_mapPointsWithStride_pts">pts</a>, skipping <a href="#SkMatrix_mapPointsWithStride_stride">stride</a> bytes to advance from one <a href="undocumented#Point">Point</a> to the next. -<a href="#Point">Points</a> are mapped by multiplying each <a href="undocumented#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: +Maps <a href="#SkMatrix_mapPointsWithStride_count">count</a> <a href="#SkMatrix_mapPointsWithStride_pts">pts</a>, skipping <a href="#SkMatrix_mapPointsWithStride_stride">stride</a> bytes to advance from one <a href="SkPoint_Reference#Point">Point</a> to the next. +<a href="#Point">Points</a> are mapped by multiplying each <a href="SkPoint_Reference#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> -each resulting <a href="#SkMatrix_mapPointsWithStride_pts">pts</a> <a href="undocumented#Point">Point</a> is computed as: +each resulting <a href="#SkMatrix_mapPointsWithStride_pts">pts</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3293,7 +3292,7 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- <table> <tr> <td><a name="SkMatrix_mapPointsWithStride_pts"> <code><strong>pts </strong></code> </a></td> <td> storage for mapped <a href="#Point">Points</a></td> </tr> <tr> <td><a name="SkMatrix_mapPointsWithStride_stride"> <code><strong>stride </strong></code> </a></td> <td> -size of record starting with <a href="undocumented#Point">Point</a>, in bytes</td> +size of record starting with <a href="SkPoint_Reference#Point">Point</a>, in bytes</td> </tr> <tr> <td><a name="SkMatrix_mapPointsWithStride_count"> <code><strong>count </strong></code> </a></td> <td> number of <a href="#Point">Points</a> to transform</td> </tr> @@ -3309,23 +3308,22 @@ number of <a href="#Point">Points</a> to transform</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void mapPointsWithStride(SkPoint dst[], const SkPoint src[], size_t stride, - int count) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void mapPointsWithStride(SkPoint dst[], const SkPoint src[], size_t stride, int count) const </pre> -Maps <a href="#SkMatrix_mapPointsWithStride_2_src">src</a> <a href="undocumented#Point">Point</a> array of length <a href="#SkMatrix_mapPointsWithStride_2_count">count</a> to <a href="#SkMatrix_mapPointsWithStride_2_dst">dst</a> <a href="undocumented#Point">Point</a> array, skipping <a href="#SkMatrix_mapPointsWithStride_2_stride">stride</a> bytes -to advance from one <a href="undocumented#Point">Point</a> to the next. -<a href="#Point">Points</a> are mapped by multiplying each <a href="undocumented#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: +Maps <a href="#SkMatrix_mapPointsWithStride_2_src">src</a> <a href="SkPoint_Reference#Point">Point</a> array of length <a href="#SkMatrix_mapPointsWithStride_2_count">count</a> to <a href="#SkMatrix_mapPointsWithStride_2_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> array, skipping <a href="#SkMatrix_mapPointsWithStride_2_stride">stride</a> bytes +to advance from one <a href="SkPoint_Reference#Point">Point</a> to the next. +<a href="#Point">Points</a> are mapped by multiplying each <a href="SkPoint_Reference#Point">Point</a> by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, src = | y | | G H I | | 1 |</pre> -each resulting <a href="#SkMatrix_mapPointsWithStride_2_dst">dst</a> <a href="undocumented#Point">Point</a> is computed as: +each resulting <a href="#SkMatrix_mapPointsWithStride_2_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3337,7 +3335,7 @@ storage for mapped <a href="#Point">Points</a></td> </tr> <tr> <td><a name="SkMatrix_mapPointsWithStride_2_src"> <code><strong>src </strong></code> </a></td> <td> <a href="#Point">Points</a> to transform</td> </tr> <tr> <td><a name="SkMatrix_mapPointsWithStride_2_stride"> <code><strong>stride </strong></code> </a></td> <td> -size of record starting with <a href="undocumented#Point">Point</a>, in bytes</td> +size of record starting with <a href="SkPoint_Reference#Point">Point</a>, in bytes</td> </tr> <tr> <td><a name="SkMatrix_mapPointsWithStride_2_count"> <code><strong>count </strong></code> </a></td> <td> number of <a href="#Point">Points</a> to transform</td> </tr> @@ -3356,21 +3354,21 @@ number of <a href="#Point">Points</a> to transform</td> <a name="SkMatrix_mapHomogeneousPoints"></a> ## mapHomogeneousPoints -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapHomogeneousPoints(SkPoint3 dst[], const SkPoint3 src[], int count) const </pre> Maps <a href="#SkMatrix_mapHomogeneousPoints_src">src</a> <a href="undocumented#Point3">Point3</a> array of length <a href="#SkMatrix_mapHomogeneousPoints_count">count</a> to <a href="#SkMatrix_mapHomogeneousPoints_dst">dst</a> <a href="undocumented#Point3">Point3</a> array, which must of length <a href="#SkMatrix_mapHomogeneousPoints_count">count</a> or greater. <a href="undocumented#Point3">Point3</a> array is mapped by multiplying each <a href="undocumented#Point3">Point3</a> by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, src = | y | | G H I | | z |</pre> -each resulting <a href="#SkMatrix_mapHomogeneousPoints_dst">dst</a> <a href="undocumented#Point">Point</a> is computed as: +each resulting <a href="#SkMatrix_mapHomogeneousPoints_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Matrix * src = |D E F| |y| = |Ax+By+Cz Dx+Ey+Fz Gx+Hy+Iz| |G H I| |z|</pre> @@ -3388,7 +3386,7 @@ items in <a href="undocumented#Point3">Point3</a> array to transform</td> ### Example -<div><fiddle-embed name="0d8c7aa7249048f2b83d32cf13f88560"></fiddle-embed></div> +<div><fiddle-embed name="d56f93e4bc763c7ba4914321ed07a8b5"></fiddle-embed></div> ### See Also @@ -3399,20 +3397,20 @@ items in <a href="undocumented#Point3">Point3</a> array to transform</td> <a name="SkMatrix_mapXY"></a> ## mapXY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapXY(SkScalar x, SkScalar y, SkPoint* result) const </pre> -Maps <a href="undocumented#Point">Point</a> (<a href="#SkMatrix_mapXY_x">x</a>, <a href="#SkMatrix_mapXY_y">y</a>) to <a href="#SkMatrix_mapXY_result">result</a>. <a href="undocumented#Point">Point</a> is mapped by multiplying by <a href="#Matrix">Matrix</a>. Given: +Maps <a href="SkPoint_Reference#Point">Point</a> (<a href="#SkMatrix_mapXY_x">x</a>, <a href="#SkMatrix_mapXY_y">y</a>) to <a href="#SkMatrix_mapXY_result">result</a>. <a href="SkPoint_Reference#Point">Point</a> is mapped by multiplying by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> <a href="#SkMatrix_mapXY_result">result</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3420,11 +3418,11 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- ### Parameters <table> <tr> <td><a name="SkMatrix_mapXY_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of <a href="undocumented#Point">Point</a> to map</td> +<a href="#SkMatrix_mapXY_x">x</a>-coordinate of <a href="SkPoint_Reference#Point">Point</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapXY_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of <a href="undocumented#Point">Point</a> to map</td> +<a href="#SkMatrix_mapXY_y">y</a>-coordinate of <a href="SkPoint_Reference#Point">Point</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapXY_result"> <code><strong>result </strong></code> </a></td> <td> -storage for mapped <a href="undocumented#Point">Point</a></td> +storage for mapped <a href="SkPoint_Reference#Point">Point</a></td> </tr> </table> @@ -3438,20 +3436,20 @@ storage for mapped <a href="undocumented#Point">Point</a></td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPoint mapXY(SkScalar x, SkScalar y) const </pre> -Returns <a href="undocumented#Point">Point</a> (<a href="#SkMatrix_mapXY_2_x">x</a>, <a href="#SkMatrix_mapXY_2_y">y</a>) multiplied by <a href="#Matrix">Matrix</a>. Given: +Returns <a href="SkPoint_Reference#Point">Point</a> (<a href="#SkMatrix_mapXY_2_x">x</a>, <a href="#SkMatrix_mapXY_2_y">y</a>) multiplied by <a href="#Matrix">Matrix</a>. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> result is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3459,15 +3457,15 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- ### Parameters <table> <tr> <td><a name="SkMatrix_mapXY_2_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of <a href="undocumented#Point">Point</a> to map</td> +<a href="#SkMatrix_mapXY_2_x">x</a>-coordinate of <a href="SkPoint_Reference#Point">Point</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapXY_2_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of <a href="undocumented#Point">Point</a> to map</td> +<a href="#SkMatrix_mapXY_2_y">y</a>-coordinate of <a href="SkPoint_Reference#Point">Point</a> to map</td> </tr> </table> ### Return Value -mapped <a href="undocumented#Point">Point</a> +mapped <a href="SkPoint_Reference#Point">Point</a> ### Example @@ -3482,30 +3480,30 @@ mapped <a href="undocumented#Point">Point</a> <a name="SkMatrix_mapVectors"></a> ## mapVectors -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapVectors(SkVector dst[], const SkVector src[], int count) const </pre> -Maps <a href="#SkMatrix_mapVectors_src">src</a> <a href="undocumented#Vector">Vector</a> array of length <a href="#SkMatrix_mapVectors_count">count</a> to <a href="undocumented#Vector">Vector</a> <a href="undocumented#Point">Point</a> array of equal or greater -length. <a href="#Vector">Vectors</a> are mapped by multiplying each <a href="undocumented#Vector">Vector</a> by <a href="#Matrix">Matrix</a>, treating +Maps <a href="#SkMatrix_mapVectors_src">src</a> <a href="SkPoint_Reference#Vector">Vector</a> array of length <a href="#SkMatrix_mapVectors_count">count</a> to <a href="SkPoint_Reference#Vector">Vector</a> <a href="SkPoint_Reference#Point">Point</a> array of equal or greater +length. <a href="#Vector">Vectors</a> are mapped by multiplying each <a href="SkPoint_Reference#Vector">Vector</a> by <a href="#Matrix">Matrix</a>, treating <a href="#Matrix">Matrix</a> translation as zero. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B 0 | | x | Matrix = | D E 0 |, src = | y | | G H I | | 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> for (i = 0; i < count; ++i) { x = src[i].fX y = src[i].fY }</pre> -each <a href="#SkMatrix_mapVectors_dst">dst</a> <a href="undocumented#Vector">Vector</a> is computed as: +each <a href="#SkMatrix_mapVectors_dst">dst</a> <a href="SkPoint_Reference#Vector">Vector</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B 0| |x| Ax+By Dx+Ey Matrix * src = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3533,29 +3531,29 @@ number of <a href="#Vector">Vectors</a> to transform</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapVectors(SkVector vecs[], int count) const </pre> -Maps <a href="#SkMatrix_mapVectors_2_vecs">vecs</a> <a href="undocumented#Vector">Vector</a> array of length <a href="#SkMatrix_mapVectors_2_count">count</a> in place, multiplying each <a href="undocumented#Vector">Vector</a> by +Maps <a href="#SkMatrix_mapVectors_2_vecs">vecs</a> <a href="SkPoint_Reference#Vector">Vector</a> array of length <a href="#SkMatrix_mapVectors_2_count">count</a> in place, multiplying each <a href="SkPoint_Reference#Vector">Vector</a> by <a href="#Matrix">Matrix</a>, treating <a href="#Matrix">Matrix</a> translation as zero. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B 0 | | x | Matrix = | D E 0 |, vec = | y | | G H I | | 1 |</pre> where -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> for (i = 0; i < count; ++i) { x = vecs[i].fX y = vecs[i].fY }</pre> -each result <a href="undocumented#Vector">Vector</a> is computed as: +each result <a href="SkPoint_Reference#Vector">Vector</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B 0| |x| Ax+By Dx+Ey Matrix * vec = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3582,21 +3580,21 @@ number of <a href="#Vector">Vectors</a> to transform</td> <a name="SkMatrix_mapVector"></a> ## mapVector -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapVector(SkScalar dx, SkScalar dy, SkVector* result) const </pre> -Maps <a href="undocumented#Vector">Vector</a> (x, y) to <a href="#SkMatrix_mapVector_result">result</a>. <a href="undocumented#Vector">Vector</a> is mapped by multiplying by <a href="#Matrix">Matrix</a>, +Maps <a href="SkPoint_Reference#Vector">Vector</a> (x, y) to <a href="#SkMatrix_mapVector_result">result</a>. <a href="SkPoint_Reference#Vector">Vector</a> is mapped by multiplying by <a href="#Matrix">Matrix</a>, treating <a href="#Matrix">Matrix</a> translation as zero. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B 0 | | dx | Matrix = | D E 0 |, vec = | dy | | G H I | | 1 |</pre> -each <a href="#SkMatrix_mapVector_result">result</a> <a href="undocumented#Vector">Vector</a> is computed as: +each <a href="#SkMatrix_mapVector_result">result</a> <a href="SkPoint_Reference#Vector">Vector</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B 0| |dx| A*dx+B*dy D*dx+E*dy Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , ----------- |G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I</pre> @@ -3604,11 +3602,11 @@ Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , ### Parameters <table> <tr> <td><a name="SkMatrix_mapVector_dx"> <code><strong>dx </strong></code> </a></td> <td> -x-coordinate of <a href="undocumented#Vector">Vector</a> to map</td> +x-coordinate of <a href="SkPoint_Reference#Vector">Vector</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapVector_dy"> <code><strong>dy </strong></code> </a></td> <td> -y-coordinate of <a href="undocumented#Vector">Vector</a> to map</td> +y-coordinate of <a href="SkPoint_Reference#Vector">Vector</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapVector_result"> <code><strong>result </strong></code> </a></td> <td> -storage for mapped <a href="undocumented#Vector">Vector</a></td> +storage for mapped <a href="SkPoint_Reference#Vector">Vector</a></td> </tr> </table> @@ -3622,21 +3620,21 @@ storage for mapped <a href="undocumented#Vector">Vector</a></td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkVector mapVector(SkScalar dx, SkScalar dy) const </pre> -Returns <a href="undocumented#Vector">Vector</a> (x, y) multiplied by <a href="#Matrix">Matrix</a>, treating <a href="#Matrix">Matrix</a> translation as zero. +Returns <a href="SkPoint_Reference#Vector">Vector</a> (x, y) multiplied by <a href="#Matrix">Matrix</a>, treating <a href="#Matrix">Matrix</a> translation as zero. Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B 0 | | dx | Matrix = | D E 0 |, vec = | dy | | G H I | | 1 |</pre> -each result <a href="undocumented#Vector">Vector</a> is computed as: +each result <a href="SkPoint_Reference#Vector">Vector</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B 0| |dx| A*dx+B*dy D*dx+E*dy Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , ----------- |G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I</pre> @@ -3644,15 +3642,15 @@ Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , ### Parameters <table> <tr> <td><a name="SkMatrix_mapVector_2_dx"> <code><strong>dx </strong></code> </a></td> <td> -x-coordinate of <a href="undocumented#Vector">Vector</a> to map</td> +x-coordinate of <a href="SkPoint_Reference#Vector">Vector</a> to map</td> </tr> <tr> <td><a name="SkMatrix_mapVector_2_dy"> <code><strong>dy </strong></code> </a></td> <td> -y-coordinate of <a href="undocumented#Vector">Vector</a> to map</td> +y-coordinate of <a href="SkPoint_Reference#Vector">Vector</a> to map</td> </tr> </table> ### Return Value -mapped <a href="undocumented#Vector">Vector</a> +mapped <a href="SkPoint_Reference#Vector">Vector</a> ### Example @@ -3667,7 +3665,7 @@ mapped <a href="undocumented#Vector">Vector</a> <a name="SkMatrix_mapRect"></a> ## mapRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool mapRect(SkRect* dst, const SkRect& src) const </pre> @@ -3699,7 +3697,7 @@ true if <a href="#SkMatrix_mapRect_dst">dst</a> is equivalent to mapped <a href= --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool mapRect(SkRect* rect) const </pre> @@ -3732,7 +3730,7 @@ true if result is equivalent to mapped src <a name="SkMatrix_mapRectToQuad"></a> ## mapRectToQuad -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapRectToQuad(SkPoint dst[4], const SkRect& rect) const </pre> @@ -3746,16 +3744,16 @@ Maps four corners of <a href="#SkMatrix_mapRectToQuad_rect">rect</a> to <a href= Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | x | Matrix = | D E F |, pt = | y | | G H I | | 1 |</pre> where pt is initialized from each of (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fTop), (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fRight, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fTop), (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fRight, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom), (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom), -each <a href="#SkMatrix_mapRectToQuad_dst">dst</a> <a href="undocumented#Point">Point</a> is computed as: +each <a href="#SkMatrix_mapRectToQuad_dst">dst</a> <a href="SkPoint_Reference#Point">Point</a> is computed as: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> |A B C| |x| Ax+By+C Dx+Ey+F Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- |G H I| |1| Gx+Hy+I Gx+Hy+I</pre> @@ -3782,7 +3780,7 @@ storage for mapped corner <a href="#Point">Points</a></td> <a name="SkMatrix_mapRectScaleTranslate"></a> ## mapRectScaleTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void mapRectScaleTranslate(SkRect* dst, const SkRect& src) const </pre> @@ -3812,7 +3810,7 @@ storage for bounds of mapped <a href="#Point">Points</a></td> <a name="SkMatrix_mapRadius"></a> ## mapRadius -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar mapRadius(SkScalar radius) const </pre> @@ -3846,12 +3844,12 @@ the area enclosed by the ellipse major and minor axes.</div></fiddle-embed></div <a name="SkMatrix_isFixedStepInX"></a> ## isFixedStepInX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isFixedStepInX() const </pre> Returns true if a unit step in x at some y mapped through <a href="#Matrix">Matrix</a> can be -represented by a constant <a href="undocumented#Vector">Vector</a>. Returns true if <a href="#SkMatrix_getType">getType</a> returns <a href="#SkMatrix_kIdentity_Mask">kIdentity Mask</a>, +represented by a constant <a href="SkPoint_Reference#Vector">Vector</a>. Returns true if <a href="#SkMatrix_getType">getType</a> returns <a href="#SkMatrix_kIdentity_Mask">kIdentity Mask</a>, or combinations of: <a href="#SkMatrix_kTranslate_Mask">kTranslate Mask</a>, <a href="#SkMatrix_kScale_Mask">kScale Mask</a>, and <a href="#SkMatrix_kAffine_Mask">kAffine Mask</a>. May return true if <a href="#SkMatrix_getType">getType</a> returns <a href="#SkMatrix_kPerspective_Mask">kPerspective Mask</a>, but only when <a href="#Matrix">Matrix</a> @@ -3897,11 +3895,11 @@ isFixedStepInX: false <a name="SkMatrix_fixedStepInX"></a> ## fixedStepInX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkVector fixedStepInX(SkScalar y) const </pre> -Returns <a href="undocumented#Vector">Vector</a> representing a unit step in x at <a href="#SkMatrix_fixedStepInX_y">y</a> mapped through <a href="#Matrix">Matrix</a>. +Returns <a href="SkPoint_Reference#Vector">Vector</a> representing a unit step in x at <a href="#SkMatrix_fixedStepInX_y">y</a> mapped through <a href="#Matrix">Matrix</a>. If <a href="#SkMatrix_isFixedStepInX">isFixedStepInX</a> is false, returned value is undefined. ### Parameters @@ -3913,7 +3911,7 @@ position of line parallel to x-axis</td> ### Return Value -<a href="undocumented#Vector">Vector</a> advance of mapped unit step in x +<a href="SkPoint_Reference#Vector">Vector</a> advance of mapped unit step in x ### Example @@ -3928,7 +3926,7 @@ position of line parallel to x-axis</td> <a name="SkMatrix_cheapEqualTo"></a> ## cheapEqualTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool cheapEqualTo(const SkMatrix& m) const </pre> @@ -3977,7 +3975,7 @@ both NaN: a != b a.cheapEqualTo(b): true <a name="SkMatrix_equal_operator"></a> ## operator== -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator==(const SkMatrix& a, const SkMatrix& b) </pre> @@ -4012,26 +4010,26 @@ identity: a == b a.cheapEqualTo(b): true ### See Also -<a href="#SkMatrix_cheapEqualTo">cheapEqualTo</a> <a href="#SkMatrix_not_equal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> +<a href="#SkMatrix_cheapEqualTo">cheapEqualTo</a> <a href="#SkMatrix_notequal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> --- -<a name="SkMatrix_not_equal_operator"></a> +<a name="SkMatrix_notequal_operator"></a> ## operator!= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator!=(const SkMatrix& a, const SkMatrix& b) </pre> -Compares <a href="#SkMatrix_not_equal_operator_a">a</a> and <a href="#SkMatrix_not_equal_operator_b">b</a>; returns true if <a href="#SkMatrix_not_equal_operator_a">a</a> and <a href="#SkMatrix_not_equal_operator_b">b</a> are not numerically equal. Returns false +Compares <a href="#SkMatrix_notequal_operator_a">a</a> and <a href="#SkMatrix_notequal_operator_b">b</a>; returns true if <a href="#SkMatrix_notequal_operator_a">a</a> and <a href="#SkMatrix_notequal_operator_b">b</a> are not numerically equal. Returns false even if sign of zero values are different. Returns true if either <a href="#Matrix">Matrix</a> contains <a href="undocumented#NaN">NaN</a>, even if the other <a href="#Matrix">Matrix</a> also contains <a href="undocumented#NaN">NaN</a>. ### Parameters -<table> <tr> <td><a name="SkMatrix_not_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkMatrix_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> <a href="#Matrix">Matrix</a> to compare</td> - </tr> <tr> <td><a name="SkMatrix_not_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> + </tr> <tr> <td><a name="SkMatrix_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> <a href="#Matrix">Matrix</a> to compare</td> </tr> </table> @@ -4053,7 +4051,7 @@ true if m and <a href="#Matrix">Matrix</a> are numerically not equal <a name="SkMatrix_dump"></a> ## dump -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump() const </pre> @@ -4084,7 +4082,7 @@ matrix != nearlyEqual <a name="SkMatrix_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const </pre> @@ -4122,7 +4120,7 @@ matrix != nearlyEqual <a name="SkMatrix_getMinScale"></a> ## getMinScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getMinScale() const </pre> @@ -4155,7 +4153,7 @@ matrix.getMinScale() 24 <a name="SkMatrix_getMaxScale"></a> ## getMaxScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getMaxScale() const </pre> @@ -4188,7 +4186,7 @@ matrix.getMaxScale() 42 <a name="SkMatrix_getMinMaxScales"></a> ## getMinMaxScales -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT getMinMaxScales(SkScalar scaleFactors[2]) const </pre> @@ -4231,7 +4229,7 @@ matrix.getMinMaxScales() false 2 2 <a name="SkMatrix_decomposeScale"></a> ## decomposeScale -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool decomposeScale(SkSize* scale, SkMatrix* remaining = nullptr) const </pre> @@ -4285,13 +4283,13 @@ success: true scale: 0.5, 0.25 <a name="SkMatrix_I"></a> ## I -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static const SkMatrix& I() </pre> Returns reference to const identity <a href="#Matrix">Matrix</a>. Returned <a href="#Matrix">Matrix</a> is <a href="#SkMatrix_set">set</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | 1 0 0 | | 0 1 0 | | 0 0 1 |</pre> @@ -4322,14 +4320,14 @@ m2 == m3 <a name="SkMatrix_InvalidMatrix"></a> ## InvalidMatrix -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static const SkMatrix& InvalidMatrix() </pre> Returns reference to a const <a href="#Matrix">Matrix</a> with invalid values. Returned <a href="#Matrix">Matrix</a> is <a href="#SkMatrix_set">set</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | SK_ScalarMax SK_ScalarMax SK_ScalarMax | | SK_ScalarMax SK_ScalarMax SK_ScalarMax | | SK_ScalarMax SK_ScalarMax SK_ScalarMax |</pre> @@ -4359,7 +4357,7 @@ SeeAlso <a href="#SkMatrix_getType">getType</a> <a name="SkMatrix_Concat"></a> ## Concat -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkMatrix Concat(const SkMatrix& a, const SkMatrix& b) </pre> @@ -4367,14 +4365,14 @@ Returns <a href="#Matrix">Matrix</a> <a href="#SkMatrix_Concat_a">a</a> multipli Given: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | a = | D E F |, b = | M N O | | G H I | | P Q R |</pre> sets <a href="#Matrix">Matrix</a> to: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |</pre> @@ -4406,12 +4404,12 @@ Multiplying the matrix by its inverse turns into an identity matrix.</div></fidd <a name="SkMatrix_dirtyMatrixTypeCache"></a> ## dirtyMatrixTypeCache -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dirtyMatrixTypeCache() </pre> Sets internal cache to unknown state. Use to force update after repeated -modifications to <a href="#Matrix">Matrix</a> element reference returned by <a href="#SkMatrix_subscript_operator_const">operator[](int index)</a>. +modifications to <a href="#Matrix">Matrix</a> element reference returned by <a href="#SkMatrix_array1_operator">operator[](int index)</a>. ### Example @@ -4430,20 +4428,20 @@ after dirty cache: x = 66 ### See Also -<a href="#SkMatrix_subscript_operator_const">operator[](int index)</a> <a href="#SkMatrix_getType">getType</a> +<a href="#SkMatrix_array1_operator">operator[](int index)</a> <a href="#SkMatrix_getType">getType</a> --- <a name="SkMatrix_setScaleTranslate"></a> ## setScaleTranslate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setScaleTranslate(SkScalar sx, SkScalar sy, SkScalar tx, SkScalar ty) </pre> Initializes <a href="#Matrix">Matrix</a> with scale and translate elements. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> | sx 0 tx | | 0 sy ty | | 0 0 1 |</pre> @@ -4482,7 +4480,7 @@ vertical translation to store</td> <a name="SkMatrix_isFinite"></a> ## isFinite -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isFinite() const </pre> diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md index c3c4063298..0442705bc1 100644 --- a/site/user/api/SkPaint_Reference.md +++ b/site/user/api/SkPaint_Reference.md @@ -23,7 +23,7 @@ algorithms that alter the drawing geometry, color, and transparency. For instanc The objects contained by <a href="#Paint">Paint</a> are opaque, and cannot be edited outside of the <a href="#Paint">Paint</a> to affect it. The implementation is free to defer computations associated with the <a href="#Paint">Paint</a>, or ignore them altogether. For instance, some <a href="undocumented#GPU">GPU</a> implementations draw all -<a href="SkPath_Reference#Path">Path</a> geometries with <a href="undocumented#Anti_alias">Anti-aliasing</a>, regardless of how <a href="#SkPaint_kAntiAlias_Flag">SkPaint::kAntiAlias Flag</a> +<a href="SkPath_Reference#Path">Path</a> geometries with Anti-aliasing, regardless of how <a href="#SkPaint_kAntiAlias_Flag">SkPaint::kAntiAlias Flag</a> is set in <a href="#Paint">Paint</a>. <a href="#Paint">Paint</a> describes a single color, a single font, a single image quality, and so on. @@ -41,7 +41,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#Management">Management</a> | <a href="#Paint">Paint</a> copying, moving, comparing. | | <a href="#SkPaint_Hinting">Hinting</a> | <a href="undocumented#Glyph">Glyph</a> outline adjustment. | | <a href="#SkPaint_Flags">Flags</a> | Attributes represented by single bits. | -| <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> | Approximating coverage with transparency. | +| Anti-alias | Approximating coverage with transparency. | | <a href="#Dither">Dither</a> | Distributing color error. | | <a href="#Device_Text">Device Text</a> | Increase precision of glyph position. | | <a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a> | Custom sized bitmap <a href="#Glyph">Glyphs</a>. | @@ -109,10 +109,10 @@ Multiple colors are drawn either by using multiple paints or with objects like | operator | description | | --- | --- | -| <a href="#SkPaint_copy_assignment_operator">operator=(const SkPaint& paint)</a> | Makes a shallow copy. | -| <a href="#SkPaint_move_assignment_operator">operator=(SkPaint&& paint)</a> | Moves paint without copying it. | +| <a href="#SkPaint_copy_operator">operator=(const SkPaint& paint)</a> | Makes a shallow copy. | +| <a href="#SkPaint_move_operator">operator=(SkPaint&& paint)</a> | Moves paint without copying it. | | <a href="#SkPaint_equal_operator">operator==(const SkPaint& a, const SkPaint& b)</a> | Compares paints for equality. | -| <a href="#SkPaint_not_equal_operator">operator!=(const SkPaint& a, const SkPaint& b)</a> | Compares paints for inequality. | +| <a href="#SkPaint_notequal_operator">operator!=(const SkPaint& a, const SkPaint& b)</a> | Compares paints for inequality. | ## <a name="Member_Functions"></a> Member Functions @@ -163,7 +163,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#SkPaint_getTextWidths">getTextWidths</a> | Returns advance and bounds for each glyph in text. | | <a href="#SkPaint_getTypeface">getTypeface</a> | Returns <a href="undocumented#Typeface">Typeface</a>, font description. | | <a href="#SkPaint_glyphsToUnichars">glyphsToUnichars</a> | Converts <a href="#Glyph">Glyphs</a> into text. | -| <a href="#SkPaint_isAntiAlias">isAntiAlias</a> | Returns true if <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> is set. | +| <a href="#SkPaint_isAntiAlias">isAntiAlias</a> | Returns true if Anti-alias is set. | | <a href="#SkPaint_isAutohinted">isAutohinted</a> | Returns true if <a href="#Glyph">Glyphs</a> are always hinted. | | <a href="#SkPaint_isDevKernText">isDevKernText</a> | Returns true if <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> is set. | | <a href="#SkPaint_isDither">isDither</a> | Returns true if <a href="#Dither">Dither</a> is set. | @@ -185,7 +185,7 @@ Multiple colors are drawn either by using multiple paints or with objects like | <a href="#SkPaint_refTypeface">refTypeface</a> | References <a href="undocumented#Typeface">Typeface</a>, font description. | | <a href="#SkPaint_reset">reset</a> | Sets to default values. | | <a href="#SkPaint_setAlpha">setAlpha</a> | Sets <a href="#Alpha">Color Alpha</a>, color opacity. | -| <a href="#SkPaint_setAntiAlias">setAntiAlias</a> | Sets or clears <a href="SkPaint_Reference#Anti_alias">Anti-alias</a>. | +| <a href="#SkPaint_setAntiAlias">setAntiAlias</a> | Sets or clears Anti-alias. | | <a href="#SkPaint_setARGB">setARGB</a> | Sets color by component. | | <a href="#SkPaint_setAutohinted">setAutohinted</a> | Sets <a href="#Glyph">Glyphs</a> to always be hinted. | | <a href="#SkPaint_setBlendMode">setBlendMode</a> | Sets <a href="undocumented#Blend_Mode">Blend Mode</a>, how colors combine with destination. | @@ -227,7 +227,7 @@ Multiple colors are drawn either by using multiple paints or with objects like <a name="SkPaint_empty_constructor"></a> ## SkPaint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPaint() </pre> @@ -235,7 +235,7 @@ Constructs <a href="#Paint">Paint</a> with default values. | attribute | default value | | --- | --- | -| <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> | false | +| Anti-alias | false | | <a href="undocumented#Blend_Mode">Blend Mode</a> | <a href="#SkBlendMode_kSrcOver">SkBlendMode::kSrcOver</a> | | <a href="undocumented#Color">Color</a> | <a href="undocumented#SK_ColorBLACK">SK ColorBLACK</a> | | <a href="#Alpha">Color Alpha</a> | 255 | @@ -286,7 +286,7 @@ default initialized <a href="#Paint">Paint</a> <a name="SkPaint_copy_const_SkPaint"></a> ## SkPaint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPaint(const SkPaint& paint) </pre> @@ -328,7 +328,7 @@ SK_ColorBLUE == paint2.getColor() <a name="SkPaint_move_SkPaint"></a> ## SkPaint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPaint(SkPaint&& paint) </pre> @@ -365,7 +365,7 @@ path effect unique: true <a name="SkPaint_reset"></a> ## reset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset() </pre> @@ -391,7 +391,7 @@ paint1 == paint2 <a name="SkPaint_destructor"></a> ## ~SkPaint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> ~SkPaint() </pre> @@ -403,30 +403,30 @@ objects containing <a href="undocumented#Reference_Count">Reference Count</a> go # <a name="Management"></a> Management -<a name="SkPaint_copy_assignment_operator"></a> +<a name="SkPaint_copy_operator"></a> ## operator= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPaint& operator=(const SkPaint& paint) </pre> Makes a shallow copy of <a href="#Paint">Paint</a>. <a href="undocumented#Typeface">Typeface</a>, <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Draw_Looper">Draw Looper</a>, and <a href="undocumented#Image_Filter">Image Filter</a> are shared -between the original <a href="#SkPaint_copy_assignment_operator_paint">paint</a> and the copy. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the +between the original <a href="#SkPaint_copy_operator_paint">paint</a> and the copy. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the prior destination are decreased by one, and the referenced objects are deleted if the -resulting count is zero. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the parameter <a href="#SkPaint_copy_assignment_operator_paint">paint</a> -are increased by one. <a href="#SkPaint_copy_assignment_operator_paint">paint</a> is unmodified. +resulting count is zero. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the parameter <a href="#SkPaint_copy_operator_paint">paint</a> +are increased by one. <a href="#SkPaint_copy_operator_paint">paint</a> is unmodified. ### Parameters -<table> <tr> <td><a name="SkPaint_copy_assignment_operator_paint"> <code><strong>paint </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkPaint_copy_operator_paint"> <code><strong>paint </strong></code> </a></td> <td> original to copy</td> </tr> </table> ### Return Value -content of <a href="#SkPaint_copy_assignment_operator_paint">paint</a> +content of <a href="#SkPaint_copy_operator_paint">paint</a> ### Example @@ -443,30 +443,30 @@ SK_ColorRED == paint2.getColor() --- -<a name="SkPaint_move_assignment_operator"></a> +<a name="SkPaint_move_operator"></a> ## operator= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPaint& operator=(SkPaint&& paint) </pre> -Moves the <a href="#SkPaint_move_assignment_operator_paint">paint</a> to avoid increasing the reference counts -of objects referenced by the <a href="#SkPaint_move_assignment_operator_paint">paint</a> parameter. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the +Moves the <a href="#SkPaint_move_operator_paint">paint</a> to avoid increasing the reference counts +of objects referenced by the <a href="#SkPaint_move_operator_paint">paint</a> parameter. Objects containing <a href="undocumented#Reference_Count">Reference Count</a> in the prior destination are decreased by one; those objects are deleted if the resulting count is zero. -After the call, <a href="#SkPaint_move_assignment_operator_paint">paint</a> is undefined, and can be safely destructed. +After the call, <a href="#SkPaint_move_operator_paint">paint</a> is undefined, and can be safely destructed. ### Parameters -<table> <tr> <td><a name="SkPaint_move_assignment_operator_paint"> <code><strong>paint </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkPaint_move_operator_paint"> <code><strong>paint </strong></code> </a></td> <td> original to move</td> </tr> </table> ### Return Value -content of <a href="#SkPaint_move_assignment_operator_paint">paint</a> +content of <a href="#SkPaint_move_operator_paint">paint</a> ### Example @@ -485,7 +485,7 @@ SK_ColorRED == paint2.getColor() <a name="SkPaint_equal_operator"></a> ## operator== -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator==(const SkPaint& a, const SkPaint& b) </pre> @@ -521,22 +521,22 @@ paint1 != paint2 --- -<a name="SkPaint_not_equal_operator"></a> +<a name="SkPaint_notequal_operator"></a> ## operator!= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator!=(const SkPaint& a, const SkPaint& b) </pre> -Compares <a href="#SkPaint_not_equal_operator_a">a</a> and <a href="#SkPaint_not_equal_operator_b">b</a>, and returns true if <a href="#SkPaint_not_equal_operator_a">a</a> and <a href="#SkPaint_not_equal_operator_b">b</a> are not equivalent. May return true +Compares <a href="#SkPaint_notequal_operator_a">a</a> and <a href="#SkPaint_notequal_operator_b">b</a>, and returns true if <a href="#SkPaint_notequal_operator_a">a</a> and <a href="#SkPaint_notequal_operator_b">b</a> are not equivalent. May return true if <a href="undocumented#Typeface">Typeface</a>, <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Draw_Looper">Draw Looper</a>, or <a href="undocumented#Image_Filter">Image Filter</a> have identical contents but different pointers. ### Parameters -<table> <tr> <td><a name="SkPaint_not_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkPaint_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> <a href="#Paint">Paint</a> to compare</td> - </tr> <tr> <td><a name="SkPaint_not_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> + </tr> <tr> <td><a name="SkPaint_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> <a href="#Paint">Paint</a> to compare</td> </tr> </table> @@ -563,7 +563,7 @@ paint1 == paint2 <a name="SkPaint_getHash"></a> ## getHash -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t getHash() const </pre> @@ -599,7 +599,7 @@ paint1.getHash() == paint2.getHash() <a name="SkPaint_flatten"></a> ## flatten -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void flatten(SkWriteBuffer& buffer) const </pre> @@ -630,7 +630,7 @@ color = 0xffff0000 <a name="SkPaint_unflatten"></a> ## unflatten -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void unflatten(SkReadBuffer& buffer) </pre> @@ -657,7 +657,7 @@ serialized data describing <a href="#Paint">Paint</a> content</td> ## <a name="SkPaint_Hinting"></a> Enum SkPaint::Hinting -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#Hinting">Hinting</a> { <a href="#SkPaint_kNo_Hinting">kNo Hinting</a> = 0, <a href="#SkPaint_kSlight_Hinting">kSlight Hinting</a> = 1, @@ -714,7 +714,7 @@ Set <a href="undocumented#SkPaintDefaults_Hinting">SkPaintDefaults Hinting</a> a <a name="SkPaint_getHinting"></a> ## getHinting -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Hinting getHinting() const </pre> @@ -741,7 +741,7 @@ SkPaint::kNormal_Hinting == paint.getHinting() <a name="SkPaint_setHinting"></a> ## setHinting -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setHinting(Hinting hintingLevel) </pre> @@ -780,7 +780,7 @@ paint1 == paint2 ## <a name="SkPaint_Flags"></a> Enum SkPaint::Flags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#Flags">Flags</a> { <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> = 0x01, <a href="#SkPaint_kDither_Flag">kDither Flag</a> = 0x04, @@ -808,7 +808,7 @@ multiple settings at once. <table> <tr> - <td><a name="SkPaint_kAntiAlias_Flag"> <code><strong>SkPaint::kAntiAlias_Flag </strong></code> </a></td><td>0x0001 </td><td>mask for setting <a href="SkPaint_Reference#Anti_alias">Anti-alias</a></td> + <td><a name="SkPaint_kAntiAlias_Flag"> <code><strong>SkPaint::kAntiAlias_Flag </strong></code> </a></td><td>0x0001 </td><td>mask for setting Anti-alias</td> </tr> <tr> <td><a name="SkPaint_kDither_Flag"> <code><strong>SkPaint::kDither_Flag </strong></code> </a></td><td>0x0004</td><td>mask for setting <a href="#Dither">Dither</a></td> @@ -849,7 +849,7 @@ multiple settings at once. ## <a name="SkPaint_ReserveFlags"></a> Enum SkPaint::ReserveFlags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_ReserveFlags">ReserveFlags</a> { <a href="#SkPaint_kUnderlineText_ReserveFlag">kUnderlineText ReserveFlag</a> = 0x08, <a href="#SkPaint_kStrikeThruText_ReserveFlag">kStrikeThruText ReserveFlag</a> = 0x10, @@ -875,7 +875,7 @@ enum <a href="#SkPaint_ReserveFlags">ReserveFlags</a> { <a name="SkPaint_getFlags"></a> ## getFlags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t getFlags() const </pre> @@ -903,7 +903,7 @@ zero, one, or more bits described by <a href="#Flags">Flags</a> <a name="SkPaint_setFlags"></a> ## setFlags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setFlags(uint32_t flags) </pre> @@ -933,7 +933,7 @@ paint.isDither() --- # <a name="Anti-alias"></a> Anti-alias -<a href="SkPaint_Reference#Anti_alias">Anti-alias</a> drawing approximates partial pixel coverage with transparency. +Anti-alias drawing approximates partial pixel coverage with transparency. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is clear, pixel centers contained by the shape edge are drawn opaque. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is set, pixels are drawn with <a href="#Alpha">Color Alpha</a> equal to their coverage. @@ -943,14 +943,14 @@ passing through the pixel center may, but is not required to, draw the pixel. <a href="undocumented#Raster_Engine">Raster Engine</a> draws <a href="#Alias">Aliased</a> pixels whose centers are on or to the right of the start of an active <a href="SkPath_Reference#Path">Path</a> edge, and whose center is to the left of the end of the active <a href="SkPath_Reference#Path">Path</a> edge. -A platform may only support <a href="undocumented#Anti_alias">Anti-aliased</a> drawing. Some <a href="undocumented#GPU_backed">GPU-backed</a> platforms use -<a href="undocumented#Supersampling">Supersampling</a> to <a href="SkPaint_Reference#Anti_alias">Anti-alias</a> all drawing, and have no mechanism to selectively +A platform may only support Anti-aliased drawing. Some <a href="undocumented#GPU">GPU</a>-backed platforms use +<a href="undocumented#Supersampling">Supersampling</a> to Anti-alias all drawing, and have no mechanism to selectively <a href="undocumented#Alias">Alias</a>. -The amount of coverage computed for <a href="undocumented#Anti_alias">Anti-aliased</a> pixels also varies across platforms. +The amount of coverage computed for Anti-aliased pixels also varies across platforms. -<a href="SkPaint_Reference#Anti_alias">Anti-alias</a> is disabled by default. -<a href="SkPaint_Reference#Anti_alias">Anti-alias</a> can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> +Anti-alias is disabled by default. +Anti-alias can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> at compile time. ### Example @@ -963,7 +963,7 @@ The lines are drawn into <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, then dr <a name="SkPaint_isAntiAlias"></a> ## isAntiAlias -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isAntiAlias() const </pre> @@ -993,7 +993,7 @@ paint.isAntiAlias() == !!(paint.getFlags() & SkPaint::kAntiAlias_Flag) <a name="SkPaint_setAntiAlias"></a> ## setAntiAlias -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setAntiAlias(bool aa) </pre> @@ -1029,12 +1029,12 @@ paint1 == paint2 This can help to smooth color transitions and reducing banding in gradients. Dithering lessens visible banding from <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> and <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> gradients, -and improves rendering into a <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> <a href="undocumented#Surface">Surface</a>. +and improves rendering into a <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a>. Dithering is always enabled for linear gradients drawing into -<a href="undocumented#SkColorType">kRGB 565 SkColorType</a> <a href="undocumented#Surface">Surface</a> and <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> <a href="undocumented#Surface">Surface</a>. -<a href="#Dither">Dither</a> cannot be enabled for <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> <a href="undocumented#Surface">Surface</a> and -<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> <a href="undocumented#Surface">Surface</a>. +<a href="undocumented#SkColorType">kRGB 565 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a> and <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a>. +<a href="#Dither">Dither</a> cannot be enabled for <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a> and +<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a>. <a href="#Dither">Dither</a> is disabled by default. <a href="#Dither">Dither</a> can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to <a href="#SkPaint_kDither_Flag">kDither Flag</a> @@ -1056,7 +1056,7 @@ dither, making it easier to see.</div></fiddle-embed></div> <a name="SkPaint_isDither"></a> ## isDither -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isDither() const </pre> @@ -1085,7 +1085,7 @@ paint.isDither() == !!(paint.getFlags() & SkPaint::kDither_Flag) <a name="SkPaint_setDither"></a> ## setDither -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setDither(bool dither) </pre> @@ -1121,7 +1121,7 @@ paint1 == paint2 ### See Also -Gradient <a href="undocumented#RGB_565">Color RGB-565</a> +Gradient <a href="#RGB">Color RGB</a>-565 # <a name="Device_Text"></a> Device Text <a href="SkPaint_Reference#LCD_Text">LCD Text</a> and <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a> increase the precision of glyph position. @@ -1156,7 +1156,7 @@ If <a href="#SkPaint_kLinearText_Flag">kLinearText Flag</a> is clear, it is the <a name="SkPaint_isLinearText"></a> ## isLinearText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLinearText() const </pre> @@ -1181,7 +1181,7 @@ Equivalent to <a href="#SkPaint_getFlags">getFlags</a> masked with <a href="#SkP <a name="SkPaint_setLinearText"></a> ## setLinearText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLinearText(bool linearText) </pre> @@ -1217,7 +1217,7 @@ of the color increases, the edge of the glyph appears to move towards the outsid <a name="SkPaint_isSubpixelText"></a> ## isSubpixelText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isSubpixelText() const </pre> @@ -1247,7 +1247,7 @@ paint.isSubpixelText() == !!(paint.getFlags() & SkPaint::kSubpixelText_Flag) <a name="SkPaint_setSubpixelText"></a> ## setSubpixelText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setSubpixelText(bool subpixelText) </pre> @@ -1288,7 +1288,7 @@ the color components as <a href="#RGB">Color RGB</a> or <a href="#RBG">Color RBG <a name="SkPaint_isLCDRenderText"></a> ## isLCDRenderText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLCDRenderText() const </pre> @@ -1318,7 +1318,7 @@ paint.isLCDRenderText() == !!(paint.getFlags() & SkPaint::kLCDRenderText_Flag) <a name="SkPaint_setLCDRenderText"></a> ## setLCDRenderText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLCDRenderText(bool lcdText) </pre> @@ -1364,22 +1364,33 @@ the outline glyph if <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmap ### Example -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -<div>The "" <a href="undocumented#TrueType">TrueType</a> font in the <a href="undocumented#Skia">Skia</a> resources/fonts directory -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="SkBitmap_Reference#SkBitmap">SkBitmap</a> bitmap; -bitmap.allocN32Pixels(30, 15); -bitmap.eraseColor(0); -<a href="SkCanvas_Reference#SkCanvas">SkCanvas</a> offscreen(bitmap); -<a href="#SkPaint">SkPaint</a> paint; -paint.</pre> +<pre style="padding: 1em 1em 1em 1em; font-size: 13px width: 62.5em; background-color: #f0f0f0"> +void draw(SkCanvas* canvas) {<div>The "hintgasp" TrueType font in the Skia resources/fonts directory + includes an embedded bitmap Glyph at odd font sizes. This example works + on platforms that use FreeType as their Font_Engine. + Windows may, but is not required to, return a bitmap glyph if + kEmbeddedBitmapText_Flag is set.</div>SkBitmap bitmap; + bitmap.allocN32Pixels(30, 15); + bitmap.eraseColor(0); + SkCanvas offscreen(bitmap); + SkPaint paint; + paint.setAntiAlias(true); + paint.setTextSize(13); + paint.setTypeface(MakeResourceAsTypeface("/fonts/hintgasp.ttf")); + for (bool embedded : { false, true}) { + paint.setEmbeddedBitmapText(embedded); + offscreen.drawString("A", embedded ? 5 : 15, 15, paint); + } + canvas->drawBitmap(bitmap, 0, 0); + canvas->scale(10, 10); + canvas->drawBitmap(bitmap, -2, 1); +} +</pre> <a name="SkPaint_isEmbeddedBitmapText"></a> ## isEmbeddedBitmapText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isEmbeddedBitmapText() const </pre> @@ -1409,7 +1420,7 @@ paint.isEmbeddedBitmapText() == !!(paint.getFlags() & SkPaint::kEmbeddedBitmapTe <a name="SkPaint_setEmbeddedBitmapText"></a> ## setEmbeddedBitmapText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setEmbeddedBitmapText(bool useEmbeddedBitmapText) </pre> @@ -1450,7 +1461,7 @@ instructs the <a href="undocumented#Font_Manager">Font Manager</a> to always hin <a name="SkPaint_isAutohinted"></a> ## isAutohinted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isAutohinted() const </pre> @@ -1486,7 +1497,7 @@ paint.isAutohinted() == !!(paint.getFlags() & SkPaint::kAutoHinting_Flag) <a name="SkPaint_setAutohinted"></a> ## setAutohinted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setAutohinted(bool useAutohinter) </pre> @@ -1545,7 +1556,7 @@ into glyph series. <a name="SkPaint_isVerticalText"></a> ## isVerticalText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isVerticalText() const </pre> @@ -1575,7 +1586,7 @@ paint.isVerticalText() == !!(paint.getFlags() & SkPaint::kVerticalText_Flag) <a name="SkPaint_setVerticalText"></a> ## setVerticalText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setVerticalText(bool verticalText) </pre> @@ -1627,7 +1638,7 @@ by increasing the stroke width and setting the <a href="#SkPaint_Style">Style</a <a name="SkPaint_isFakeBoldText"></a> ## isFakeBoldText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isFakeBoldText() const </pre> @@ -1658,7 +1669,7 @@ paint.isFakeBoldText() == !!(paint.getFlags() & SkPaint::kFakeBoldText_Flag) <a name="SkPaint_setFakeBoldText"></a> ## setFakeBoldText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setFakeBoldText(bool fakeBoldText) </pre> @@ -1700,7 +1711,7 @@ a specific pair of characters is adjusted using data in the font <a href="undocu <a name="SkPaint_isDevKernText"></a> ## isDevKernText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isDevKernText() const </pre> @@ -1721,7 +1732,7 @@ Equivalent to <a href="#SkPaint_getFlags">getFlags</a> masked with <a href="#SkP <a name="SkPaint_setDevKernText"></a> ## setDevKernText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setDevKernText(bool devKernText) </pre> @@ -1767,7 +1778,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="SkBitmap_Reference#Bitmap">Bitmap</a>. +and when <a href="#Paint">Paint</a> has a <a href="undocumented#Shader">Shader</a> specialization that uses <a href="SkImage_Reference#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. @@ -1778,7 +1789,7 @@ and when <a href="#Paint">Paint</a> has a <a href="undocumented#Shader">Shader</ <a name="SkPaint_getFilterQuality"></a> ## getFilterQuality -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkFilterQuality getFilterQuality() const </pre> @@ -1807,7 +1818,7 @@ kNone_SkFilterQuality == paint.getFilterQuality() <a name="SkPaint_setFilterQuality"></a> ## setFilterQuality -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setFilterQuality(SkFilterQuality quality) </pre> @@ -1864,7 +1875,7 @@ on the output device, which may have more or fewer bits, and may have a differen <a name="SkPaint_getColor"></a> ## getColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkColor getColor() const </pre> @@ -1897,7 +1908,7 @@ Yellow is 100% red, 100% green, and 0% blue. <a name="SkPaint_setColor"></a> ## setColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setColor(SkColor color) </pre> @@ -1936,7 +1947,7 @@ green1 == green2 <a name="SkPaint_getAlpha"></a> ## getAlpha -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint8_t getAlpha() const </pre> @@ -1963,7 +1974,7 @@ Retrieves <a href="#Alpha">Alpha</a> from the <a href="undocumented#Color">Color <a name="SkPaint_setAlpha"></a> ## setAlpha -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setAlpha(U8CPU a) </pre> @@ -1997,7 +2008,7 @@ fully opaque. <a name="SkPaint_setARGB"></a> ## setARGB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) </pre> @@ -2069,12 +2080,12 @@ flow horizontally, vertically,or diagonally. <a href="SkPath_Reference#Path">Path</a> drawing with <a href="#Hairline">Hairline</a> may hit the same pixel more than once. For instance, <a href="SkPath_Reference#Path">Path</a> containing two lines in one <a href="#Contour">Path Contour</a> will draw the corner point once, but may both lines may draw the adjacent pixel. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is set, transparency is applied twice, resulting in a darker pixel. Some -<a href="undocumented#GPU_backed">GPU-backed</a> implementations apply transparency at a later drawing stage, avoiding double hit pixels +<a href="undocumented#GPU">GPU</a>-backed implementations apply transparency at a later drawing stage, avoiding double hit pixels while stroking. ## <a name="SkPaint_Style"></a> Enum SkPaint::Style -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_Style">Style</a> { <a href="#SkPaint_kFill_Style">kFill Style</a>, <a href="#SkPaint_kStroke_Style">kStroke Style</a>, @@ -2094,7 +2105,7 @@ a fill draw. <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="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="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkImage_Reference#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. @@ -2118,7 +2129,7 @@ and the set <a href="#Fill_Type">Path Fill Type</a> is ignored.</td> ## <a name="SkPaint__anonymous"></a> Enum SkPaint::_anonymous -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum { <a href="#SkPaint_kStyleCount">kStyleCount</a> = <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a> + 1, };</pre> @@ -2136,7 +2147,7 @@ May be used to verify that <a href="#SkPaint_Style">Style</a> is a legal value.< <a name="SkPaint_getStyle"></a> ## getStyle -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Style getStyle() const </pre> @@ -2167,7 +2178,7 @@ SkPaint::kFill_Style == paint.getStyle() <a name="SkPaint_setStyle"></a> ## setStyle -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setStyle(Style style) </pre> @@ -2211,13 +2222,13 @@ 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 +<div><fiddle-embed name="01e3e08a3022a351628ff54e84887756"gpu="true"><div>The pixels hit to represent thin lines vary with the angle of the line and the platform implementation.</div></fiddle-embed></div> <a name="SkPaint_getStrokeWidth"></a> ## getStrokeWidth -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getStrokeWidth() const </pre> @@ -2245,7 +2256,7 @@ zero for <a href="#Hairline">Hairline</a>, greater than zero for pen thickness <a name="SkPaint_setStrokeWidth"></a> ## setStrokeWidth -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setStrokeWidth(SkScalar width) </pre> @@ -2315,7 +2326,7 @@ by a bevel join.</div></fiddle-embed></div> <a name="SkPaint_getStrokeMiter"></a> ## getStrokeMiter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getStrokeMiter() const </pre> @@ -2346,7 +2357,7 @@ default miter limit == 4 <a name="SkPaint_setStrokeMiter"></a> ## setStrokeMiter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setStrokeMiter(SkScalar miter) </pre> @@ -2383,7 +2394,7 @@ default miter limit == 8 ## <a name="SkPaint_Cap"></a> Enum SkPaint::Cap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_Cap">Cap</a> { <a href="#SkPaint_kButt_Cap">kButt Cap</a>, <a href="#SkPaint_kRound_Cap">kRound Cap</a>, @@ -2449,7 +2460,7 @@ at the contour point. <a name="SkPaint_getStrokeCap"></a> ## getStrokeCap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Cap getStrokeCap() const </pre> @@ -2480,7 +2491,7 @@ kButt_Cap == default stroke cap <a name="SkPaint_setStrokeCap"></a> ## setStrokeCap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setStrokeCap(Cap cap) </pre> @@ -2528,7 +2539,7 @@ the following curve, the pair of curves meet at <a href="#Stroke_Join">Stroke Jo ## <a name="SkPaint_Join"></a> Enum SkPaint::Join -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_Join">Join</a> { <a href="#SkPaint_kMiter_Join">kMiter Join</a>, <a href="#SkPaint_kRound_Join">kRound Join</a>, @@ -2591,7 +2602,7 @@ May be used to verify that <a href="#Stroke_Join">Stroke Join</a> is a legal val <a name="SkPaint_getStrokeJoin"></a> ## getStrokeJoin -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Join getStrokeJoin() const </pre> @@ -2622,7 +2633,7 @@ kMiter_Join == default stroke join <a name="SkPaint_setStrokeJoin"></a> ## setStrokeJoin -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setStrokeJoin(Join join) </pre> @@ -2680,9 +2691,8 @@ returns false since <a href="#Hairline">Hairline</a> has no filled equivalent. <a name="SkPaint_getFillPath"></a> ## getFillPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect, - SkScalar resScale = 1) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect, SkScalar resScale = 1) const </pre> The filled equivalent of the stroked path. @@ -2713,7 +2723,7 @@ At the highest precision, the filled path has high fidelity compared to the orig --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool getFillPath(const SkPath& src, SkPath* dst) const </pre> @@ -2769,7 +2779,7 @@ If <a href="undocumented#Shader">Shader</a> generates only <a href="#Alpha">Colo <a name="SkPaint_getShader"></a> ## getShader -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkShader* getShader() const </pre> @@ -2799,7 +2809,7 @@ nullptr != shader <a name="SkPaint_refShader"></a> ## refShader -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkShader> refShader() const </pre> @@ -2829,7 +2839,7 @@ shader unique: false <a name="SkPaint_setShader"></a> ## setShader -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setShader(sk_sp<SkShader> shader) </pre> @@ -2865,7 +2875,7 @@ The drawn transparency can be modified without altering <a href="undocumented#Co <a name="SkPaint_getColorFilter"></a> ## getColorFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkColorFilter* getColorFilter() const </pre> @@ -2894,7 +2904,7 @@ nullptr != color filter <a name="SkPaint_refColorFilter"></a> ## refColorFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkColorFilter> refColorFilter() const </pre> @@ -2923,7 +2933,7 @@ color filter unique: false <a name="SkPaint_setColorFilter"></a> ## setColorFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setColorFilter(sk_sp<SkColorFilter> colorFilter) </pre> @@ -2961,7 +2971,7 @@ over the destination color. <a name="SkPaint_getBlendMode"></a> ## getBlendMode -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkBlendMode getBlendMode() const </pre> @@ -2990,7 +3000,7 @@ kSrcOver != getBlendMode <a name="SkPaint_isSrcOver"></a> ## isSrcOver -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isSrcOver() const </pre> @@ -3018,7 +3028,7 @@ isSrcOver != true <a name="SkPaint_setBlendMode"></a> ## setBlendMode -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setBlendMode(SkBlendMode mode) </pre> @@ -3063,7 +3073,7 @@ If <a href="#Paint">Paint</a> has no <a href="undocumented#Path_Effect">Path Eff <a name="SkPaint_getPathEffect"></a> ## getPathEffect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPathEffect* getPathEffect() const </pre> @@ -3092,7 +3102,7 @@ nullptr != path effect <a name="SkPaint_refPathEffect"></a> ## refPathEffect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkPathEffect> refPathEffect() const </pre> @@ -3105,7 +3115,7 @@ Increases <a href="undocumented#Path_Effect">Path Effect</a> <a href="undocument ### Example -<div><fiddle-embed name="c55c74f8f581870bd2c18f2f99765579"> +<div><fiddle-embed name="f56039b94c702c2704c8c5100e623aca"> #### Example Output @@ -3121,7 +3131,7 @@ path effect unique: false <a name="SkPaint_setPathEffect"></a> ## setPathEffect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPathEffect(sk_sp<SkPathEffect> pathEffect) </pre> @@ -3159,7 +3169,7 @@ modifying the draw. <a name="SkPaint_getMaskFilter"></a> ## getMaskFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkMaskFilter* getMaskFilter() const </pre> @@ -3188,7 +3198,7 @@ nullptr != mask filter <a name="SkPaint_refMaskFilter"></a> ## refMaskFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkMaskFilter> refMaskFilter() const </pre> @@ -3218,7 +3228,7 @@ mask filter unique: false <a name="SkPaint_setMaskFilter"></a> ## setMaskFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setMaskFilter(sk_sp<SkMaskFilter> maskFilter) </pre> @@ -3255,7 +3265,7 @@ implementation. <a name="SkPaint_getTypeface"></a> ## getTypeface -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkTypeface* getTypeface() const </pre> @@ -3284,7 +3294,7 @@ nullptr != typeface <a name="SkPaint_refTypeface"></a> ## refTypeface -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkTypeface> refTypeface() const </pre> @@ -3312,7 +3322,7 @@ typeface1 == typeface2 <a name="SkPaint_setTypeface"></a> ## setTypeface -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTypeface(sk_sp<SkTypeface> typeface) </pre> @@ -3352,7 +3362,7 @@ creates effects like embossing and outlining. <a name="SkPaint_getRasterizer"></a> ## getRasterizer -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRasterizer* getRasterizer() const </pre> @@ -3381,7 +3391,7 @@ nullptr != rasterizer <a name="SkPaint_refRasterizer"></a> ## refRasterizer -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkRasterizer> refRasterizer() const </pre> @@ -3410,7 +3420,7 @@ rasterizer unique: false <a name="SkPaint_setRasterizer"></a> ## setRasterizer -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setRasterizer(sk_sp<SkRasterizer> rasterizer) </pre> @@ -3446,12 +3456,12 @@ can operate on all channels of <a href="undocumented#Color">Color</a>, while <a ### Example -<div><fiddle-embed name="88804938b49eb4f7c7f01ad52f4db0d8"></fiddle-embed></div> +<div><fiddle-embed name="0b2eec148d6397d6231e1fa0b3d1496d"></fiddle-embed></div> <a name="SkPaint_getImageFilter"></a> ## getImageFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkImageFilter* getImageFilter() const </pre> @@ -3464,7 +3474,7 @@ Does not alter <a href="undocumented#Image_Filter">Image Filter</a> <a href="und ### Example -<div><fiddle-embed name="38788d42772641606e08c60d9dd418a2"> +<div><fiddle-embed name="7b8118ff57fcb84e6bc82380d155b62e"> #### Example Output @@ -3480,7 +3490,7 @@ nullptr != image filter <a name="SkPaint_refImageFilter"></a> ## refImageFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkImageFilter> refImageFilter() const </pre> @@ -3509,7 +3519,7 @@ image filter unique: false <a name="SkPaint_setImageFilter"></a> ## setImageFilter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setImageFilter(sk_sp<SkImageFilter> imageFilter) </pre> @@ -3523,7 +3533,7 @@ Increments <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a> <a href ### Parameters <table> <tr> <td><a name="SkPaint_setImageFilter_imageFilter"> <code><strong>imageFilter </strong></code> </a></td> <td> -how <a href="undocumented#Image">Image</a> is sampled when transformed</td> +how <a href="SkImage_Reference#Image">Image</a> is sampled when transformed</td> </tr> </table> @@ -3548,7 +3558,7 @@ Set <a href="undocumented#Draw_Looper">Draw Looper</a> to nullptr to prevent <a <a name="SkPaint_getDrawLooper"></a> ## getDrawLooper -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkDrawLooper* getDrawLooper() const </pre> @@ -3577,7 +3587,7 @@ nullptr != draw looper <a name="SkPaint_refDrawLooper"></a> ## refDrawLooper -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkDrawLooper> refDrawLooper() const </pre> @@ -3606,7 +3616,7 @@ draw looper unique: false <a name="SkPaint_getLooper"></a> ## getLooper -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkDrawLooper* getLooper() const </pre> @@ -3623,7 +3633,7 @@ Deprecated. <a name="SkPaint_setDrawLooper"></a> ## setDrawLooper -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setDrawLooper(sk_sp<SkDrawLooper> drawLooper) </pre> @@ -3649,7 +3659,7 @@ iterates through drawing one or more time, altering <a href="#Paint">Paint</a></ <a name="SkPaint_setLooper"></a> ## setLooper -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLooper(sk_sp<SkDrawLooper> drawLooper) </pre> @@ -3671,7 +3681,7 @@ sets <a href="undocumented#Draw_Looper">Draw Looper</a> to <a href="#SkPaint_set ## <a name="SkPaint_Align"></a> Enum SkPaint::Align -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_Align">Align</a> { <a href="#SkPaint_kLeft_Align">kLeft Align</a>, <a href="#SkPaint_kCenter_Align">kCenter Align</a>, @@ -3714,7 +3724,7 @@ and by its height if <a href="#SkPaint_Flags">Flags</a> has <a href="#SkPaint_kV ## <a name="SkPaint__anonymous_2"></a> Enum SkPaint::_anonymous_2 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum { <a href="#SkPaint_kAlignCount">kAlignCount</a> = 3, };</pre> @@ -3739,7 +3749,7 @@ enum { <a name="SkPaint_getTextAlign"></a> ## getTextAlign -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Align getTextAlign() const </pre> @@ -3767,7 +3777,7 @@ kLeft_Align == default <a name="SkPaint_setTextAlign"></a> ## setTextAlign -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTextAlign(Align align) </pre> @@ -3801,7 +3811,7 @@ Set <a href="undocumented#SkPaintDefaults_TextSize">SkPaintDefaults TextSize</a> <a name="SkPaint_getTextSize"></a> ## getTextSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getTextSize() const </pre> @@ -3820,7 +3830,7 @@ typographic height of text <a name="SkPaint_setTextSize"></a> ## setTextSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTextSize(SkScalar textSize) </pre> @@ -3854,7 +3864,7 @@ is not available. <a name="SkPaint_getTextScaleX"></a> ## getTextScaleX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getTextScaleX() const </pre> @@ -3874,7 +3884,7 @@ text horizontal scale <a name="SkPaint_setTextScaleX"></a> ## setTextScaleX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTextScaleX(SkScalar scaleX) </pre> @@ -3908,7 +3918,7 @@ is not available. <a name="SkPaint_getTextSkewX"></a> ## getTextSkewX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getTextSkewX() const </pre> @@ -3928,7 +3938,7 @@ additional shear in x-axis relative to y-axis <a name="SkPaint_setTextSkewX"></a> ## setTextSkewX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTextSkewX(SkScalar skewX) </pre> @@ -3952,7 +3962,7 @@ additional shear in x-axis relative to y-axis</td> ## <a name="SkPaint_TextEncoding"></a> Enum SkPaint::TextEncoding -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_TextEncoding">TextEncoding</a> { <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#SkPaint_kUTF16_TextEncoding">kUTF16 TextEncoding</a>, @@ -3963,15 +3973,15 @@ enum <a href="#SkPaint_TextEncoding">TextEncoding</a> { <a href="#SkPaint_TextEncoding">TextEncoding</a> determines whether text specifies character codes and their encoded 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>. +Character codes encoded size are specified by UTF-8, UTF-16, or UTF-32. 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. +UTF-8 (<a href="undocumented#RFC">RFC</a> 3629)encodes each character as one or more 8-bit bytes. -<a href="undocumented#UTF_16">UTF-16</a> (<a href="undocumented#RFC">RFC</a> 2781)encodes each character as one or two 16-bit words. +UTF-16 (<a href="undocumented#RFC">RFC</a> 2781)encodes each character as one or two 16-bit words. -<a href="undocumented#UTF_32">UTF-32</a>encodes each character as one 32-bit word. +UTF-32encodes each character as one 32-bit word. <a href="undocumented#Font_Manager">Font Manager</a> uses font data to convert character code points into glyph indices. A glyph index is a 16-bit word. @@ -3982,7 +3992,7 @@ A glyph index is a 16-bit word. <table> <tr> - <td><a name="SkPaint_kUTF8_TextEncoding"> <code><strong>SkPaint::kUTF8_TextEncoding </strong></code> </a></td><td>0</td><td>Uses bytes to represent <a href="undocumented#UTF_8">UTF-8</a> or <a href="undocumented#ASCII">ASCII</a>.</td> + <td><a name="SkPaint_kUTF8_TextEncoding"> <code><strong>SkPaint::kUTF8_TextEncoding </strong></code> </a></td><td>0</td><td>Uses bytes to represent UTF-8 or <a href="undocumented#ASCII">ASCII</a>.</td> </tr> <tr> <td><a name="SkPaint_kUTF16_TextEncoding"> <code><strong>SkPaint::kUTF16_TextEncoding </strong></code> </a></td><td>1</td><td>Uses two byte words to represent most of <a href="undocumented#Unicode">Unicode</a>.</td> @@ -3998,15 +4008,15 @@ A glyph index is a 16-bit word. ### Example -<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>. +<div><fiddle-embed name="b29294e7f29d160a1b46abf2dcec9d2a"><div>First line is encoded in UTF-8. +Second line is encoded in UTF-16. +Third line is encoded in UTF-32. Fourth line has 16 bit glyph indices.</div></fiddle-embed></div> <a name="SkPaint_getTextEncoding"></a> ## getTextEncoding -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> TextEncoding getTextEncoding() const </pre> @@ -4036,7 +4046,7 @@ kGlyphID_TextEncoding == text encoding <a name="SkPaint_setTextEncoding"></a> ## setTextEncoding -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setTextEncoding(TextEncoding encoding) </pre> @@ -4084,7 +4094,7 @@ Y-axis values above the baseline are negative, and below the baseline are positi # <a name="SkPaint_FontMetrics"></a> Struct SkPaint::FontMetrics -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> struct <a href="#SkPaint_FontMetrics">FontMetrics</a> { enum <a href="#SkPaint_FontMetrics_FontMetricsFlags">FontMetricsFlags</a> { <a href="#SkPaint_FontMetrics_kUnderlineThicknessIsValid_Flag">kUnderlineThicknessIsValid Flag</a> = 1 << 0, @@ -4132,7 +4142,7 @@ are valid, since their value may be zero. ## <a name="SkPaint_FontMetrics_FontMetricsFlags"></a> Enum SkPaint::FontMetrics::FontMetricsFlags -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPaint_FontMetrics_FontMetricsFlags">FontMetricsFlags</a> { <a href="#SkPaint_FontMetrics_kUnderlineThicknessIsValid_Flag">kUnderlineThicknessIsValid Flag</a> = 1 << 0, <a href="#SkPaint_FontMetrics_kUnderlinePositionIsValid_Flag">kUnderlinePositionIsValid Flag</a> = 1 << 1, @@ -4253,7 +4263,7 @@ If <a href="#SkPaint_FontMetrics_kStrikeoutPositionIsValid_Flag">kStrikeoutPosit <a name="SkPaint_FontMetrics_hasUnderlineThickness"></a> ## hasUnderlineThickness -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasUnderlineThickness(SkScalar* thickness) const </pre> @@ -4277,7 +4287,7 @@ true if font specifies underline width <a name="SkPaint_FontMetrics_hasUnderlinePosition"></a> ## hasUnderlinePosition -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasUnderlinePosition(SkScalar* position) const </pre> @@ -4301,7 +4311,7 @@ true if font specifies underline <a href="#SkPaint_FontMetrics_hasUnderlinePosit <a name="SkPaint_FontMetrics_hasStrikeoutThickness"></a> ## hasStrikeoutThickness -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasStrikeoutThickness(SkScalar* thickness) const </pre> @@ -4325,7 +4335,7 @@ true if font specifies strikeout width <a name="SkPaint_FontMetrics_hasStrikeoutPosition"></a> ## hasStrikeoutPosition -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool hasStrikeoutPosition(SkScalar* position) const </pre> @@ -4349,7 +4359,7 @@ true if font specifies strikeout <a href="#SkPaint_FontMetrics_hasStrikeoutPosit <a name="SkPaint_getFontMetrics"></a> ## getFontMetrics -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getFontMetrics(FontMetrics* metrics, SkScalar scale = 0) const </pre> @@ -4389,7 +4399,7 @@ recommended spacing between lines <a name="SkPaint_getFontSpacing"></a> ## getFontSpacing -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar getFontSpacing() const </pre> @@ -4423,7 +4433,7 @@ textSize: 32 fontSpacing: 37.25 <a name="SkPaint_getFontBounds"></a> ## getFontBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect getFontBounds() const </pre> @@ -4458,7 +4468,7 @@ font bounds = { -12.2461, -14.7891, 21.5215, 5.55469 } <a name="SkPaint_textToGlyphs"></a> ## textToGlyphs -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int textToGlyphs(const void* text, size_t byteLength, SkGlyphID glyphs[]) const </pre> @@ -4473,7 +4483,7 @@ If <a href="#SkPaint_textToGlyphs_byteLength">byteLength</a> equals zero, return If <a href="#SkPaint_textToGlyphs_byteLength">byteLength</a> includes a partial character, the partial character is ignored. If <a href="#Text_Encoding">Text Encoding</a> is <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a> and -<a href="#SkPaint_textToGlyphs_text">text</a> contains an invalid <a href="undocumented#UTF_8">UTF-8</a> sequence, zero is returned. +<a href="#SkPaint_textToGlyphs_text">text</a> contains an invalid UTF-8 sequence, zero is returned. ### Parameters @@ -4499,7 +4509,7 @@ number of <a href="#SkPaint_textToGlyphs_glyphs">glyphs</a> represented by <a hr <a name="SkPaint_countText"></a> ## countText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int countText(const void* text, size_t byteLength) const </pre> @@ -4537,7 +4547,7 @@ count = 5 <a name="SkPaint_containsText"></a> ## containsText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool containsText(const void* text, size_t byteLength) const </pre> @@ -4602,7 +4612,7 @@ that it corresponds to an entry in <a href="undocumented#Typeface">Typeface</a>. <a name="SkPaint_glyphsToUnichars"></a> ## glyphsToUnichars -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void glyphsToUnichars(const SkGlyphID glyphs[], int count, SkUnichar text[]) const </pre> @@ -4626,7 +4636,7 @@ storage for character codes, one per glyph</td> ### Example -<div><fiddle-embed name="c12686b0b3e0a87d0a248bbfc57e9492"><div>Convert <a href="undocumented#UTF_8">UTF-8</a> <a href="#SkPaint_glyphsToUnichars_text">text</a> to <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a>; then convert <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> to <a href="undocumented#Unichar">Unichar</a> code points.</div></fiddle-embed></div> +<div><fiddle-embed name="c12686b0b3e0a87d0a248bbfc57e9492"><div>Convert UTF-8 <a href="#SkPaint_glyphsToUnichars_text">text</a> to <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a>; then convert <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> to <a href="undocumented#Unichar">Unichar</a> code points.</div></fiddle-embed></div> --- @@ -4635,7 +4645,7 @@ storage for character codes, one per glyph</td> <a name="SkPaint_measureText"></a> ## measureText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar measureText(const void* text, size_t length, SkRect* bounds) const </pre> @@ -4669,7 +4679,7 @@ advance width or height --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar measureText(const void* text, size_t length) const </pre> @@ -4711,7 +4721,7 @@ double width = 10 <a name="SkPaint_breakText"></a> ## breakText -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t breakText(const void* text, size_t length, SkScalar maxWidth, SkScalar* measuredWidth = nullptr) const </pre> @@ -4754,9 +4764,8 @@ bytes of <a href="#SkPaint_breakText_text">text</a> that fit, always less than o <a name="SkPaint_getTextWidths"></a> ## getTextWidths -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -int getTextWidths(const void* text, size_t byteLength, SkScalar widths[], - SkRect bounds[] = nullptr) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int getTextWidths(const void* text, size_t byteLength, SkScalar widths[], SkRect bounds[] = nullptr) const </pre> Retrieves the advance and <a href="#SkPaint_getTextWidths_bounds">bounds</a> for each glyph in <a href="#SkPaint_getTextWidths_text">text</a>, and returns @@ -4801,9 +4810,8 @@ The underlines show the <a href="#SkPaint_getTextWidths_text">text</a> advance, <a name="SkPaint_getTextPath"></a> ## getTextPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void getTextPath(const void* text, size_t length, SkScalar x, SkScalar y, - SkPath* path) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void getTextPath(const void* text, size_t length, SkScalar x, SkScalar y, SkPath* path) const </pre> Returns the geometry as <a href="SkPath_Reference#Path">Path</a> equivalent to the drawn <a href="#SkPaint_getTextPath_text">text</a>. @@ -4819,9 +4827,9 @@ character codes or glyph indices</td> </tr> <tr> <td><a name="SkPaint_getTextPath_length"> <code><strong>length </strong></code> </a></td> <td> number of bytes of <a href="#SkPaint_getTextPath_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextPath_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of the origin of the <a href="#SkPaint_getTextPath_text">text</a></td> +<a href="#SkPaint_getTextPath_x">x</a>-coordinate of the origin of the <a href="#SkPaint_getTextPath_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextPath_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of the origin of the <a href="#SkPaint_getTextPath_text">text</a></td> +<a href="#SkPaint_getTextPath_y">y</a>-coordinate of the origin of the <a href="#SkPaint_getTextPath_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextPath_path"> <code><strong>path </strong></code> </a></td> <td> geometry of the <a href="#Glyph">Glyphs</a></td> </tr> @@ -4837,9 +4845,8 @@ the offset location. The result is rendered with one draw call.</div></fiddle-em <a name="SkPaint_getPosTextPath"></a> ## getPosTextPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void getPosTextPath(const void* text, size_t length, const SkPoint pos[], - SkPath* path) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void getPosTextPath(const void* text, size_t length, const SkPoint pos[], SkPath* path) const </pre> Returns the geometry as <a href="SkPath_Reference#Path">Path</a> equivalent to the drawn <a href="#SkPaint_getPosTextPath_text">text</a>. @@ -4876,7 +4883,7 @@ underline that skips <a href="undocumented#Descenders">Descenders</a>. <a name="SkPaint_getTextIntercepts"></a> ## getTextIntercepts -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int getTextIntercepts(const void* text, size_t length, SkScalar x, SkScalar y, const SkScalar bounds[2], SkScalar* intervals) const </pre> @@ -4898,9 +4905,9 @@ character codes or glyph indices</td> </tr> <tr> <td><a name="SkPaint_getTextIntercepts_length"> <code><strong>length </strong></code> </a></td> <td> number of bytes of <a href="#SkPaint_getTextIntercepts_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextIntercepts_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of the origin of the <a href="#SkPaint_getTextIntercepts_text">text</a></td> +<a href="#SkPaint_getTextIntercepts_x">x</a>-coordinate of the origin of the <a href="#SkPaint_getTextIntercepts_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextIntercepts_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of the origin of the <a href="#SkPaint_getTextIntercepts_text">text</a></td> +<a href="#SkPaint_getTextIntercepts_y">y</a>-coordinate of the origin of the <a href="#SkPaint_getTextIntercepts_text">text</a></td> </tr> <tr> <td><a name="SkPaint_getTextIntercepts_bounds"> <code><strong>bounds </strong></code> </a></td> <td> lower and upper line parallel to the advance</td> </tr> <tr> <td><a name="SkPaint_getTextIntercepts_intervals"> <code><strong>intervals </strong></code> </a></td> <td> @@ -4921,7 +4928,7 @@ number of intersections; may be zero <a name="SkPaint_getPosTextIntercepts"></a> ## getPosTextIntercepts -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int getPosTextIntercepts(const void* text, size_t length, const SkPoint pos[], const SkScalar bounds[2], SkScalar* intervals) const </pre> @@ -4964,10 +4971,9 @@ number of intersections; may be zero <a name="SkPaint_getPosTextHIntercepts"></a> ## getPosTextHIntercepts -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -int getPosTextHIntercepts(const void* text, size_t length, const SkScalar xpos[], - SkScalar constY, const SkScalar bounds[2], - SkScalar* intervals) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int getPosTextHIntercepts(const void* text, size_t length, const SkScalar xpos[], SkScalar constY, + const SkScalar bounds[2], SkScalar* intervals) const </pre> Returns the number of <a href="#SkPaint_getPosTextHIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getPosTextHIntercepts_bounds">bounds</a>. @@ -5010,9 +5016,8 @@ number of intersections; may be zero <a name="SkPaint_getTextBlobIntercepts"></a> ## getTextBlobIntercepts -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -int getTextBlobIntercepts(const SkTextBlob* blob, const SkScalar bounds[2], - SkScalar* intervals) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int getTextBlobIntercepts(const SkTextBlob* blob, const SkScalar bounds[2], SkScalar* intervals) const </pre> Returns the number of <a href="#SkPaint_getTextBlobIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getTextBlobIntercepts_bounds">bounds</a>. @@ -5049,7 +5054,7 @@ number of intersections; may be zero <a name="SkPaint_nothingToDraw"></a> ## nothingToDraw -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool nothingToDraw() const </pre> @@ -5087,7 +5092,7 @@ alpha 0 nothing to draw: true <a name="SkPaint_canComputeFastBounds"></a> ## canComputeFastBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool canComputeFastBounds() const </pre> @@ -5104,7 +5109,7 @@ true if <a href="#Paint">Paint</a> allows for fast computation of bounds <a name="SkPaint_computeFastBounds"></a> ## computeFastBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkRect& computeFastBounds(const SkRect& orig, SkRect* storage) const </pre> @@ -5137,7 +5142,7 @@ fast computed bounds <a name="SkPaint_computeFastStrokeBounds"></a> ## computeFastStrokeBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkRect& computeFastStrokeBounds(const SkRect& orig, SkRect* storage) const </pre> @@ -5159,9 +5164,8 @@ fast computed bounds <a name="SkPaint_doComputeFastBounds"></a> ## doComputeFastBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -const SkRect& doComputeFastBounds(const SkRect& orig, SkRect* storage, - Style style) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +const SkRect& doComputeFastBounds(const SkRect& orig, SkRect* storage, Style style) const </pre> Computes the bounds, overriding the <a href="#Paint">Paint</a> <a href="#SkPaint_Style">Style</a>. This can be used to @@ -5188,7 +5192,7 @@ fast computed bounds <a name="SkPaint_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const; </pre> diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md index d0bb7e0d50..0ac5ae02c9 100644 --- a/site/user/api/SkPath_Reference.md +++ b/site/user/api/SkPath_Reference.md @@ -7,9 +7,9 @@ composed of a series of connected <a href="#Line">Lines</a> and <a href="#Curve" one, or more <a href="#Contour">Contours</a>. Each <a href="undocumented#Line">Line</a> and <a href="undocumented#Curve">Curve</a> are described by <a href="#Verb">Verb</a>, <a href="#Point">Points</a>, and optional <a href="#Conic_Weight">Conic Weight</a>. -Each pair of connected <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> share common <a href="undocumented#Point">Point</a>; for instance, <a href="#Path">Path</a> +Each pair of connected <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> share common <a href="SkPoint_Reference#Point">Point</a>; for instance, <a href="#Path">Path</a> containing two connected <a href="#Line">Lines</a> are described the <a href="#Verb">Verb</a> sequence: -<a href="#SkPath_kMove_Verb">SkPath::kMove Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>; and a <a href="undocumented#Point">Point</a> sequence +<a href="#SkPath_kMove_Verb">SkPath::kMove Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>; and a <a href="SkPoint_Reference#Point">Point</a> sequence 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>. @@ -52,15 +52,15 @@ are required to satisfy <a href="#Verb_Array">Verb Array</a>. First <a href="#Ve <div><fiddle-embed name="0374f2dcd7effeb1dd435205a6c2de6f"><div>Each <a href="#SkPath_moveTo">SkPath::moveTo</a> starts a new <a href="#Contour">Contour</a>, and content after <a href="#SkPath_close">SkPath::close()</a> also starts a new <a href="#Contour">Contour</a>. Since <a href="#SkPath_conicTo">SkPath::conicTo</a> is not preceded by -<a href="#SkPath_moveTo">SkPath::moveTo</a>, the first <a href="undocumented#Point">Point</a> of the third <a href="#Contour">Contour</a> starts at the last <a href="undocumented#Point">Point</a> +<a href="#SkPath_moveTo">SkPath::moveTo</a>, the first <a href="SkPoint_Reference#Point">Point</a> of the third <a href="#Contour">Contour</a> starts at the last <a href="SkPoint_Reference#Point">Point</a> of the second <a href="#Contour">Contour</a>.</div></fiddle-embed></div> If final <a href="#Verb">Verb</a> in <a href="#Contour">Contour</a> is <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a>, <a href="undocumented#Line">Line</a> connects <a href="#Last_Point">Last Point</a> in -<a href="#Contour">Contour</a> with first <a href="undocumented#Point">Point</a>. A closed <a href="#Contour">Contour</a>, stroked, draws -<a href="#Stroke_Join">Paint Stroke Join</a> at <a href="#Last_Point">Last Point</a> and first <a href="undocumented#Point">Point</a>. Without <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a> -as final <a href="#Verb">Verb</a>, <a href="#Last_Point">Last Point</a> and first <a href="undocumented#Point">Point</a> are not connected; <a href="#Contour">Contour</a> +<a href="#Contour">Contour</a> with first <a href="SkPoint_Reference#Point">Point</a>. A closed <a href="#Contour">Contour</a>, stroked, draws +<a href="#Stroke_Join">Paint Stroke Join</a> at <a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a>. Without <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a> +as final <a href="#Verb">Verb</a>, <a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a> are not connected; <a href="#Contour">Contour</a> remains open. An open <a href="#Contour">Contour</a>, stroked, draws <a href="#Stroke_Cap">Paint Stroke Cap</a> at -<a href="#Last_Point">Last Point</a> and first <a href="undocumented#Point">Point</a>. +<a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a>. ### Example @@ -68,8 +68,8 @@ remains open. An open <a href="#Contour">Contour</a>, stroked, draws <a href="#S ## <a name="Zero_Length"></a> Zero Length -<a href="#Contour">Contour</a> length is distance traveled from first <a href="undocumented#Point">Point</a> to <a href="#Last_Point">Last Point</a>, -plus, if <a href="#Contour">Contour</a> is closed, distance from <a href="#Last_Point">Last Point</a> to first <a href="undocumented#Point">Point</a>. +<a href="#Contour">Contour</a> length is distance traveled from first <a href="SkPoint_Reference#Point">Point</a> to <a href="#Last_Point">Last Point</a>, +plus, if <a href="#Contour">Contour</a> is closed, distance from <a href="#Last_Point">Last Point</a> to first <a href="SkPoint_Reference#Point">Point</a>. Even if <a href="#Contour">Contour</a> length is zero, stroked <a href="#Line">Lines</a> are drawn if <a href="#Stroke_Cap">Paint Stroke Cap</a> makes them visible. @@ -79,8 +79,8 @@ makes them visible. # <a name="SkPath"></a> Class SkPath <a href="#Path">Paths</a> contain geometry. <a href="#Path">Paths</a> may be empty, or contain one or more <a href="#Verb">Verbs</a> that -outline a figure. <a href="#Path">Path</a> always starts with a move verb to a <a href="undocumented#Cartesian">Cartesian</a> -coordinate, and may be followed by additional verbs that add lines or curves. +outline a figure. <a href="#Path">Path</a> always starts with a move verb to a <a href="undocumented#Cartesian_Coordinate">Cartesian Coordinate</a>, +and may be followed by additional verbs that add lines or curves. Adding a <a href="#SkPath_close">close</a> verb makes the geometry into a continuous loop, a closed contour. <a href="#Path">Paths</a> may contain any number of contours, each beginning with a move verb. @@ -128,9 +128,9 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | operator | description | | --- | --- | -| <a href="#SkPath_copy_assignment_operator">operator=(const SkPath& path)</a> | Makes a shallow copy. | +| <a href="#SkPath_copy_operator">operator=(const SkPath& path)</a> | Makes a shallow copy. | | <a href="#SkPath_equal_operator">operator==(const SkPath& a, const SkPath& b)</a> | Compares paths for equality. | -| <a href="#SkPath_not_equal_operator">operator!=(const SkPath& a, const SkPath& b)</a> | Compares paths for inequality. | +| <a href="#SkPath_notequal_operator">operator!=(const SkPath& a, const SkPath& b)</a> | Compares paths for inequality. | ## <a name="Member_Functions"></a> Member Functions @@ -155,7 +155,7 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | <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="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_contains">contains</a> | Returns if <a href="SkPoint_Reference#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. | | <a href="#SkPath_cubicTo">cubicTo</a> | Appends <a href="#Cubic">Cubic</a>. | @@ -175,7 +175,7 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co | <a href="#SkPath_interpolate">interpolate</a> | Interpolates between <a href="#Path">Path</a> pair. | | <a href="#SkPath_isConvex">isConvex</a> | Returns if geometry is convex. | | <a href="#SkPath_isEmpty">isEmpty</a> | Returns if verb count is zero. | -| <a href="#SkPath_isFinite">isFinite</a> | Returns if all <a href="undocumented#Point">Point</a> values are finite. | +| <a href="#SkPath_isFinite">isFinite</a> | Returns if all <a href="SkPoint_Reference#Point">Point</a> values are finite. | | <a href="#SkPath_isInterpolatable">isInterpolatable</a> | Returns if pair <a href="#SkPath_contains">contains</a> equal counts of <a href="#Verb_Array">Verb Array</a> and <a href="#Weight">Weights</a>. | | <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. | @@ -217,7 +217,7 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co ## <a name="SkPath_Verb"></a> Enum SkPath::Verb -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#Verb">Verb</a> { <a href="#SkPath_kMove_Verb">kMove Verb</a>, <a href="#SkPath_kLine_Verb">kLine Verb</a>, @@ -228,38 +228,38 @@ enum <a href="#Verb">Verb</a> { <a href="#SkPath_kDone_Verb">kDone Verb</a>, };</pre> -<a href="#Verb">Verb</a> instructs <a href="#Path">Path</a> how to interpret one or more <a href="undocumented#Point">Point</a> and optional <a href="#Conic_Weight">Conic Weight</a>; +<a href="#Verb">Verb</a> instructs <a href="#Path">Path</a> how to interpret one or more <a href="SkPoint_Reference#Point">Point</a> and optional <a href="#Conic_Weight">Conic Weight</a>; manage <a href="#Contour">Contour</a>, and terminate <a href="#Path">Path</a>. ### Constants <table> <tr> - <td><a name="SkPath_kMove_Verb"> <code><strong>SkPath::kMove_Verb </strong></code> </a></td><td>0</td><td>Starts new <a href="#Contour">Contour</a> at next <a href="undocumented#Point">Point</a>.</td> + <td><a name="SkPath_kMove_Verb"> <code><strong>SkPath::kMove_Verb </strong></code> </a></td><td>0</td><td>Starts new <a href="#Contour">Contour</a> at next <a href="SkPoint_Reference#Point">Point</a>.</td> </tr> <tr> - <td><a name="SkPath_kLine_Verb"> <code><strong>SkPath::kLine_Verb </strong></code> </a></td><td>1</td><td>Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to next <a href="undocumented#Point">Point</a>. -<a href="undocumented#Line">Line</a> is a straight segment from <a href="undocumented#Point">Point</a> to <a href="undocumented#Point">Point</a>.</td> + <td><a name="SkPath_kLine_Verb"> <code><strong>SkPath::kLine_Verb </strong></code> </a></td><td>1</td><td>Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to next <a href="SkPoint_Reference#Point">Point</a>. +<a href="undocumented#Line">Line</a> is a straight segment from <a href="SkPoint_Reference#Point">Point</a> to <a href="SkPoint_Reference#Point">Point</a>.</td> </tr> <tr> - <td><a name="SkPath_kQuad_Verb"> <code><strong>SkPath::kQuad_Verb </strong></code> </a></td><td>2</td><td>Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a>, using control <a href="undocumented#Point">Point</a>, and end <a href="undocumented#Point">Point</a>. -<a href="#Quad">Quad</a> is a parabolic section within tangents from <a href="#Last_Point">Last Point</a> to control <a href="undocumented#Point">Point</a>, -and control <a href="undocumented#Point">Point</a> to end <a href="undocumented#Point">Point</a>.</td> + <td><a name="SkPath_kQuad_Verb"> <code><strong>SkPath::kQuad_Verb </strong></code> </a></td><td>2</td><td>Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a>, using control <a href="SkPoint_Reference#Point">Point</a>, and end <a href="SkPoint_Reference#Point">Point</a>. +<a href="#Quad">Quad</a> is a parabolic section within tangents from <a href="#Last_Point">Last Point</a> to control <a href="SkPoint_Reference#Point">Point</a>, +and control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>.</td> </tr> <tr> - <td><a name="SkPath_kConic_Verb"> <code><strong>SkPath::kConic_Verb </strong></code> </a></td><td>3</td><td>Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a>, using control <a href="undocumented#Point">Point</a>, end <a href="undocumented#Point">Point</a>, and <a href="#Conic_Weight">Conic Weight</a>. + <td><a name="SkPath_kConic_Verb"> <code><strong>SkPath::kConic_Verb </strong></code> </a></td><td>3</td><td>Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a>, using control <a href="SkPoint_Reference#Point">Point</a>, end <a href="SkPoint_Reference#Point">Point</a>, and <a href="#Conic_Weight">Conic Weight</a>. <a href="#Conic">Conic</a> is a elliptical, parabolic, or hyperbolic section within tangents -from <a href="#Last_Point">Last Point</a> to control <a href="undocumented#Point">Point</a>, and control <a href="undocumented#Point">Point</a> to end <a href="undocumented#Point">Point</a>, constrained +from <a href="#Last_Point">Last Point</a> to control <a href="SkPoint_Reference#Point">Point</a>, and control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>, constrained by <a href="#Conic_Weight">Conic Weight</a>. <a href="#Conic_Weight">Conic Weight</a> less than one is elliptical; equal to one is parabolic (and identical to <a href="#Quad">Quad</a>); greater than one hyperbolic.</td> </tr> <tr> - <td><a name="SkPath_kCubic_Verb"> <code><strong>SkPath::kCubic_Verb </strong></code> </a></td><td>4</td><td>Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a>, using two control <a href="#Point">Points</a>, and end <a href="undocumented#Point">Point</a>. -<a href="#Cubic">Cubic</a> is a third-order <a href="undocumented#Bezier">Bezier</a> section within tangents from <a href="#Last_Point">Last Point</a> to -first control <a href="undocumented#Point">Point</a>, and from second control <a href="undocumented#Point">Point</a> to end <a href="undocumented#Point">Point</a>.</td> + <td><a name="SkPath_kCubic_Verb"> <code><strong>SkPath::kCubic_Verb </strong></code> </a></td><td>4</td><td>Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a>, using two control <a href="#Point">Points</a>, and end <a href="SkPoint_Reference#Point">Point</a>. +<a href="#Cubic">Cubic</a> is a third-order <a href="undocumented#Bezier_Curve">Bezier Curve</a> section within tangents from <a href="#Last_Point">Last Point</a> +to first control <a href="SkPoint_Reference#Point">Point</a>, and from second control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>.</td> </tr> <tr> - <td><a name="SkPath_kClose_Verb"> <code><strong>SkPath::kClose_Verb </strong></code> </a></td><td>5</td><td>Closes <a href="#Contour">Contour</a>, connecting <a href="#Last_Point">Last Point</a> to <a href="#SkPath_kMove_Verb">kMove Verb</a> <a href="undocumented#Point">Point</a>.</td> + <td><a name="SkPath_kClose_Verb"> <code><strong>SkPath::kClose_Verb </strong></code> </a></td><td>5</td><td>Closes <a href="#Contour">Contour</a>, connecting <a href="#Last_Point">Last Point</a> to <a href="#SkPath_kMove_Verb">kMove Verb</a> <a href="SkPoint_Reference#Point">Point</a>.</td> </tr> <tr> <td><a name="SkPath_kDone_Verb"> <code><strong>SkPath::kDone_Verb </strong></code> </a></td><td>6</td><td>Terminates <a href="#Path">Path</a>. Not in <a href="#Verb_Array">Verb Array</a>, but returned by <a href="#Path">Path</a> iterator.</td> @@ -299,7 +299,7 @@ verbs: kMove_Verb kLine_Verb kQuad_Verb kClose_Verb kMove_Verb kCubic_Verb kConi ## <a name="SkPath_Direction"></a> Enum SkPath::Direction -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#Direction">Direction</a> { <a href="#SkPath_kCW_Direction">kCW Direction</a>, <a href="#SkPath_kCCW_Direction">kCCW Direction</a>, @@ -341,7 +341,7 @@ travel counterclockwise. <a name="SkPath_empty_constructor"></a> ## SkPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPath() </pre> @@ -373,7 +373,7 @@ path is empty <a name="SkPath_copy_const_SkPath"></a> ## SkPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPath(const SkPath& path) </pre> @@ -415,14 +415,14 @@ path2 verbs: 3 ### See Also -<a href="#SkPath_copy_assignment_operator">operator=(const SkPath& path)</a> +<a href="#SkPath_copy_operator">operator=(const SkPath& path)</a> --- <a name="SkPath_destructor"></a> ## ~SkPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> ~SkPath() </pre> @@ -434,14 +434,14 @@ Releases ownership of any shared data and deletes data if <a href="#Path">Path</ ### See Also -<a href="#SkPath_empty_constructor">SkPath()</a> <a href="#SkPath_copy_const_SkPath">SkPath(const SkPath& path)</a> <a href="#SkPath_copy_assignment_operator">operator=(const SkPath& path)</a> +<a href="#SkPath_empty_constructor">SkPath()</a> <a href="#SkPath_copy_const_SkPath">SkPath(const SkPath& path)</a> <a href="#SkPath_copy_operator">operator=(const SkPath& path)</a> --- -<a name="SkPath_copy_assignment_operator"></a> +<a name="SkPath_copy_operator"></a> ## operator= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPath& operator=(const SkPath& path) </pre> @@ -455,7 +455,7 @@ pointers are not exposed. ### Parameters -<table> <tr> <td><a name="SkPath_copy_assignment_operator_path"> <code><strong>path </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkPath_copy_operator_path"> <code><strong>path </strong></code> </a></td> <td> <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, <a href="#Weight">Weights</a>, and <a href="#Fill_Type">Fill Type</a> to copy</td> </tr> </table> @@ -486,7 +486,7 @@ path2 bounds = 10, 20, 30, 40 <a name="SkPath_equal_operator"></a> ## operator== -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator==(const SkPath& a, const SkPath& b) </pre> @@ -524,21 +524,21 @@ reset one == two --- -<a name="SkPath_not_equal_operator"></a> +<a name="SkPath_notequal_operator"></a> ## operator!= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator!=(const SkPath& a, const SkPath& b) </pre> -Compares <a href="#SkPath_not_equal_operator_a">a</a> and <a href="#SkPath_not_equal_operator_b">b</a>; returns true if <a href="#Fill_Type">Fill Type</a>, <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Weight">Weights</a> +Compares <a href="#SkPath_notequal_operator_a">a</a> and <a href="#SkPath_notequal_operator_b">b</a>; returns true if <a href="#Fill_Type">Fill Type</a>, <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Weight">Weights</a> are not equivalent. ### Parameters -<table> <tr> <td><a name="SkPath_not_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkPath_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> <a href="#Path">Path</a> to compare</td> - </tr> <tr> <td><a name="SkPath_not_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> + </tr> <tr> <td><a name="SkPath_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> <a href="#Path">Path</a> to compare</td> </tr> </table> @@ -567,7 +567,7 @@ convexity != <a name="SkPath_isInterpolatable"></a> ## isInterpolatable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isInterpolatable(const SkPath& compare) const </pre> @@ -610,7 +610,7 @@ paths are interpolatable <a name="SkPath_interpolate"></a> ## interpolate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const </pre> @@ -618,7 +618,7 @@ Interpolate between <a href="#Path">Paths</a> with equal sized <a href="SkPath_R Copy <a href="#Verb_Array">Verb Array</a> and <a href="#Weight">Weights</a> to <a href="#SkPath_interpolate_out">out</a>, and set <a href="#SkPath_interpolate_out">out</a> <a href="#Point_Array">Point Array</a> to a weighted average of this <a href="#Point_Array">Point Array</a> and <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>, using the formula: -(this->points * <a href="#SkPath_interpolate_weight">weight</a>) + ending->points * (1 - <a href="#SkPath_interpolate_weight">weight</a>). +(this->points * <a href="#SkPath_interpolate_weight">weight</a>) + <a href="#SkPath_interpolate_ending">ending</a>->points * (1 - <a href="#SkPath_interpolate_weight">weight</a>). <a href="#SkPath_interpolate_weight">weight</a> is most useful when between zero (<a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>) and one (this <a href="#Point_Array">Point Array</a>); will work with values outside of this @@ -657,7 +657,7 @@ true if <a href="#Path">Paths</a> contain same number of <a href="#Point">Points <a name="SkPath_unique"></a> ## unique -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool unique() const </pre> @@ -671,7 +671,7 @@ true if <a href="#Path">Path</a> has one owner ## <a name="SkPath_FillType"></a> Enum SkPath::FillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPath_FillType">FillType</a> { <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>, @@ -724,7 +724,7 @@ same as the outer parts of the top rectangles, which have a winding of 1.</div>< <a name="SkPath_getFillType"></a> ## getFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> FillType getFillType() const </pre> @@ -757,7 +757,7 @@ default path fill type is kWinding_FillType <a name="SkPath_setFillType"></a> ## setFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setFillType(FillType ft) </pre> @@ -785,7 +785,7 @@ one of: <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkP <a name="SkPath_isInverseFillType"></a> ## isInverseFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isInverseFillType() const </pre> @@ -817,7 +817,7 @@ default path fill type is inverse: false <a name="SkPath_toggleInverseFillType"></a> ## toggleInverseFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toggleInverseFillType() </pre> @@ -845,7 +845,7 @@ unmodified by the original <a href="#SkPath_FillType">FillType</a>. ## <a name="SkPath_Convexity"></a> Enum SkPath::Convexity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#Convexity">Convexity</a> : uint8_t { <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>, <a href="#SkPath_kConvex_Convexity">kConvex Convexity</a>, @@ -861,7 +861,7 @@ another is counterclockwise, or the sum of the changes in <a href="#SkPath_Direc degrees. Initially <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>. <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is computed -if needed by destination <a href="undocumented#Surface">Surface</a>. +if needed by destination <a href="SkSurface_Reference#Surface">Surface</a>. ### Constants @@ -890,7 +890,7 @@ if needed by destination <a href="undocumented#Surface">Surface</a>. <a name="SkPath_getConvexity"></a> ## getConvexity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Convexity getConvexity() const </pre> @@ -915,7 +915,7 @@ computed or stored <a href="#Convexity">Convexity</a> <a name="SkPath_getConvexityOrUnknown"></a> ## getConvexityOrUnknown -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Convexity getConvexityOrUnknown() const </pre> @@ -940,7 +940,7 @@ that alters the path.</div></fiddle-embed></div> <a name="SkPath_setConvexity"></a> ## setConvexity -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setConvexity(Convexity convexity) </pre> @@ -975,7 +975,7 @@ one of: <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>, <a href="#S <a name="SkPath_isConvex"></a> ## isConvex -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isConvex() const </pre> @@ -1001,7 +1001,7 @@ true if <a href="#Convexity">Convexity</a> stored or computed is <a href="#SkPat <a name="SkPath_setIsConvex"></a> ## setIsConvex -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setIsConvex(bool isConvex) </pre> @@ -1016,7 +1016,7 @@ Deprecated. Use <a href="#SkPath_setConvexity">setConvexity</a>. <a name="SkPath_isOval"></a> ## isOval -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isOval(SkRect* rect, Direction* dir = nullptr, unsigned* start = nullptr) const </pre> @@ -1061,7 +1061,7 @@ true if <a href="#Path">Path</a> was constructed by method that reduces to <a hr <a name="SkPath_isRRect"></a> ## isRRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isRRect(SkRRect* rrect, Direction* dir = nullptr, unsigned* start = nullptr) const </pre> @@ -1107,7 +1107,7 @@ rectangle starts and its direction.</div></fiddle-embed></div> <a name="SkPath_reset"></a> ## reset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset() </pre> @@ -1128,7 +1128,7 @@ Internal storage associated with <a href="#Path">Path</a> is released. <a name="SkPath_rewind"></a> ## rewind -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rewind() </pre> @@ -1153,11 +1153,11 @@ a newly initialized path.</div></fiddle-embed></div> <a name="SkPath_isEmpty"></a> ## isEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isEmpty() const </pre> -Empty <a href="#Path">Path</a> may have <a href="#SkPath_FillType">FillType</a> but has no <a href="undocumented#SkPoint">SkPoint</a>, <a href="#SkPath_Verb">Verb</a>, or <a href="#Conic_Weight">Conic Weight</a>. +Empty <a href="#Path">Path</a> may have <a href="#SkPath_FillType">FillType</a> but has no <a href="SkPoint_Reference#SkPoint">SkPoint</a>, <a href="#SkPath_Verb">Verb</a>, or <a href="#Conic_Weight">Conic Weight</a>. <a href="#SkPath_empty_constructor">SkPath()</a> constructs empty <a href="#Path">Path</a>; <a href="#SkPath_reset">reset</a> and (<a href="#SkPath_rewind">rewind</a>) make <a href="#Path">Path</a> empty. ### Return Value @@ -1189,12 +1189,12 @@ after reset path is empty <a name="SkPath_isLastContourClosed"></a> ## isLastContourClosed -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLastContourClosed() const </pre> <a href="#Contour">Contour</a> is closed if <a href="#Path">Path</a> <a href="#SkPath_Verb">Verb</a> array was last modified by <a href="#SkPath_close">close</a>. When stroked, -closed <a href="#Contour">Contour</a> draws <a href="#Stroke_Join">Paint Stroke Join</a> instead of <a href="#Stroke_Cap">Paint Stroke Cap</a> at first and last <a href="undocumented#Point">Point</a>. +closed <a href="#Contour">Contour</a> draws <a href="#Stroke_Join">Paint Stroke Join</a> instead of <a href="#Stroke_Cap">Paint Stroke Cap</a> at first and last <a href="SkPoint_Reference#Point">Point</a>. ### Return Value @@ -1225,17 +1225,17 @@ after close last contour is closed <a name="SkPath_isFinite"></a> ## isFinite -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isFinite() const </pre> -Returns true for finite <a href="undocumented#Point">Point</a> array values between negative <a href="undocumented#SK_ScalarMax">SK ScalarMax</a> and -positive <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>. Returns false for any <a href="undocumented#Point">Point</a> array value of +Returns true for finite <a href="SkPoint_Reference#Point">Point</a> array values between negative <a href="undocumented#SK_ScalarMax">SK ScalarMax</a> and +positive <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>. Returns false for any <a href="SkPoint_Reference#Point">Point</a> array value of <a href="undocumented#SK_ScalarInfinity">SK ScalarInfinity</a>, <a href="undocumented#SK_ScalarNegativeInfinity">SK ScalarNegativeInfinity</a>, or <a href="undocumented#SK_ScalarNaN">SK ScalarNaN</a>. ### Return Value -true if all <a href="undocumented#Point">Point</a> values are finite +true if all <a href="SkPoint_Reference#Point">Point</a> values are finite ### Example @@ -1260,13 +1260,13 @@ after scale path is not finite <a name="SkPath_isVolatile"></a> ## isVolatile -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isVolatile() const </pre> Returns true if the path is volatile; it will not be altered or discarded by the caller after it is drawn. <a href="#Path">Paths</a> by default have volatile set false, allowing -<a href="undocumented#Surface">Surface</a> to attach a cache of data which speeds repeated drawing. If true, <a href="undocumented#Surface">Surface</a> +<a href="SkSurface_Reference#Surface">Surface</a> to attach a cache of data which speeds repeated drawing. If true, <a href="SkSurface_Reference#Surface">Surface</a> may not speed repeated drawing. ### Return Value @@ -1294,7 +1294,7 @@ volatile by default is false <a name="SkPath_setIsVolatile"></a> ## setIsVolatile -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setIsVolatile(bool isVolatile) </pre> @@ -1331,11 +1331,11 @@ true if caller will alter <a href="#Path">Path</a> after drawing</td> <a name="SkPath_IsLineDegenerate"></a> ## IsLineDegenerate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact) </pre> -Test if <a href="undocumented#Line">Line</a> between <a href="undocumented#Point">Point</a> pair is degenerate. +Test if <a href="undocumented#Line">Line</a> between <a href="SkPoint_Reference#Point">Point</a> pair is degenerate. <a href="undocumented#Line">Line</a> with no length or that moves a very short distance is degenerate; it is treated as a point. @@ -1376,16 +1376,15 @@ line from (100,100) to (100.0001,100.0001) is not degenerate, exactly ### See Also -<a href="#SkPath_IsQuadDegenerate">IsQuadDegenerate</a> <a href="#SkPath_IsCubicDegenerate">IsCubicDegenerate</a> <a href="#SkPoint_equalsWithinTolerance">SkPoint::equalsWithinTolerance</a> +<a href="#SkPath_IsQuadDegenerate">IsQuadDegenerate</a> <a href="#SkPath_IsCubicDegenerate">IsCubicDegenerate</a> --- <a name="SkPath_IsQuadDegenerate"></a> ## IsQuadDegenerate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2, - const SkPoint& p3, bool exact) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2, const SkPoint& p3, bool exact) </pre> Test if <a href="#Quad">Quad</a> is degenerate. @@ -1429,16 +1428,16 @@ quad (1100,1100), (1100,1100), (1100,1100) is degenerate, exactly ### See Also -<a href="#SkPath_IsLineDegenerate">IsLineDegenerate</a> <a href="#SkPath_IsCubicDegenerate">IsCubicDegenerate</a> <a href="#SkPoint_equalsWithinTolerance">SkPoint::equalsWithinTolerance</a> +<a href="#SkPath_IsLineDegenerate">IsLineDegenerate</a> <a href="#SkPath_IsCubicDegenerate">IsCubicDegenerate</a> --- <a name="SkPath_IsCubicDegenerate"></a> ## IsCubicDegenerate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static bool IsCubicDegenerate(const SkPoint& p1, const SkPoint& p2, - const SkPoint& p3, const SkPoint& p4, bool exact) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static bool IsCubicDegenerate(const SkPoint& p1, const SkPoint& p2, const SkPoint& p3, + const SkPoint& p4, bool exact) </pre> Test if <a href="#Cubic">Cubic</a> is degenerate. @@ -1483,7 +1482,7 @@ true if <a href="#Cubic">Cubic</a> is degenerate; its length is effectively zero <a name="SkPath_isLine"></a> ## isLine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLine(SkPoint line[2]) const </pre> @@ -1526,7 +1525,7 @@ second move is not line <a href="#Point_Array">Point Array</a> <a href="#SkPath_contains">contains</a> <a href="#Point">Points</a> satisfying the allocated <a href="#Point">Points</a> for each <a href="#SkPath_Verb">Verb</a> in <a href="#Verb_Array">Verb Array</a>. For instance, <a href="#Path">Path</a> containing one <a href="#Contour">Contour</a> with <a href="undocumented#Line">Line</a> and <a href="#Quad">Quad</a> is described by <a href="#Verb_Array">Verb Array</a>: Verb::kMoveTo, Verb::kLineTo, Verb::kQuadTo; and -one <a href="undocumented#Point">Point</a> for move, one <a href="undocumented#Point">Point</a> for <a href="undocumented#Line">Line</a>, two <a href="#Point">Points</a> for <a href="#Quad">Quad</a>; totaling four <a href="#Point">Points</a>. +one <a href="SkPoint_Reference#Point">Point</a> for move, one <a href="SkPoint_Reference#Point">Point</a> for <a href="undocumented#Line">Line</a>, two <a href="#Point">Points</a> for <a href="#Quad">Quad</a>; totaling four <a href="#Point">Points</a>. <a href="#Point_Array">Point Array</a> may be read directly from <a href="#Path">Path</a> with <a href="#SkPath_getPoints">getPoints</a>, or inspected with <a href="#SkPath_getPoint">getPoint</a>, with <a href="#SkPath_Iter">Iter</a>, or with <a href="#SkPath_RawIter">RawIter</a>. @@ -1534,7 +1533,7 @@ one <a href="undocumented#Point">Point</a> for move, one <a href="undocumented#P <a name="SkPath_getPoints"></a> ## getPoints -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int getPoints(SkPoint points[], int max) const </pre> @@ -1545,7 +1544,7 @@ If <a href="#SkPath_getPoints_max">max</a> is greater than number of <a href="#S ### Parameters <table> <tr> <td><a name="SkPath_getPoints_points"> <code><strong>points </strong></code> </a></td> <td> -storage for <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> array. May be nullptr</td> +storage for <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> array. May be nullptr</td> </tr> <tr> <td><a name="SkPath_getPoints_max"> <code><strong>max </strong></code> </a></td> <td> maximum to copy; must be greater than or equal to zero</td> </tr> @@ -1553,7 +1552,7 @@ maximum to copy; must be greater than or equal to zero</td> ### Return Value -<a href="#Path">Path</a> <a href="undocumented#Point">Point</a> array length +<a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> array length ### Example @@ -1579,16 +1578,16 @@ just right point count: 3 (0,0) (20,20) (-10,-10) <a name="SkPath_countPoints"></a> ## countPoints -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int countPoints() const </pre> Returns the number of points in <a href="#Path">Path</a>. -<a href="undocumented#Point">Point</a> count is initially zero. +<a href="SkPoint_Reference#Point">Point</a> count is initially zero. ### Return Value -<a href="#Path">Path</a> <a href="undocumented#Point">Point</a> array length +<a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> array length ### Example @@ -1614,24 +1613,24 @@ second move point count: 3 <a name="SkPath_getPoint"></a> ## getPoint -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPoint getPoint(int index) const </pre> -Returns <a href="undocumented#Point">Point</a> at <a href="#SkPath_getPoint_index">index</a> in <a href="#Point_Array">Point Array</a>. Valid range for <a href="#SkPath_getPoint_index">index</a> is +Returns <a href="SkPoint_Reference#Point">Point</a> at <a href="#SkPath_getPoint_index">index</a> in <a href="#Point_Array">Point Array</a>. Valid range for <a href="#SkPath_getPoint_index">index</a> is 0 to <a href="#SkPath_countPoints">countPoints</a> - 1. Returns (0, 0) if <a href="#SkPath_getPoint_index">index</a> is out of range. ### Parameters <table> <tr> <td><a name="SkPath_getPoint_index"> <code><strong>index </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array element selector</td> +<a href="SkPoint_Reference#Point">Point</a> array element selector</td> </tr> </table> ### Return Value -<a href="undocumented#Point">Point</a> array value or (0, 0) +<a href="SkPoint_Reference#Point">Point</a> array value or (0, 0) ### Example @@ -1666,7 +1665,7 @@ or with <a href="#SkPath_RawIter">RawIter</a>. <a name="SkPath_countVerbs"></a> ## countVerbs -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int countVerbs() const </pre> @@ -1699,7 +1698,7 @@ round rect verb count: 10 <a name="SkPath_getVerbs"></a> ## getVerbs -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int getVerbs(uint8_t verbs[], int max) const </pre> @@ -1743,7 +1742,7 @@ just right verb count: 3 move line line <a name="SkPath_swap"></a> ## swap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void swap(SkPath& other) </pre> @@ -1751,7 +1750,7 @@ Exchanges the <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Cached state is also exchanged. <a href="#SkPath_swap">swap</a> internally exchanges pointers, so it is lightweight and does not allocate memory. -<a href="#SkPath_swap">swap</a> usage has largely been replaced by <a href="#SkPath_copy_assignment_operator">operator=(const SkPath& path)</a>. +<a href="#SkPath_swap">swap</a> usage has largely been replaced by <a href="#SkPath_copy_operator">operator=(const SkPath& path)</a>. <a href="#Path">Paths</a> do not copy their content on assignment until they are written to, making assignment as efficient as <a href="#SkPath_swap">swap</a>. @@ -1777,14 +1776,14 @@ path2 bounds = 10, 20, 30, 40 ### See Also -<a href="#SkPath_copy_assignment_operator">operator=(const SkPath& path)</a> +<a href="#SkPath_copy_operator">operator=(const SkPath& path)</a> --- <a name="SkPath_getBounds"></a> ## getBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkRect& getBounds() const </pre> @@ -1823,7 +1822,7 @@ rotated circle bounds = 14.6447, 9.64466, 85.3553, 80.3553 <a name="SkPath_updateBoundsCache"></a> ## updateBoundsCache -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void updateBoundsCache() const </pre> @@ -1858,7 +1857,7 @@ cached avg: 0.182784 ms <a name="SkPath_computeTightBounds"></a> ## computeTightBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect computeTightBounds() const </pre> @@ -1902,7 +1901,7 @@ rotated circle bounds = 25, 20, 75, 70 <a name="SkPath_conservativelyContainsRect"></a> ## conservativelyContainsRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool conservativelyContainsRect(const SkRect& rect) const </pre> @@ -1912,12 +1911,12 @@ May return false when <a href="#SkPath_conservativelyContainsRect_rect">rect</a> For now, only returns true if <a href="#Path">Path</a> has one <a href="#Contour">Contour</a> and is convex. <a href="#SkPath_conservativelyContainsRect_rect">rect</a> may share points and edges with <a href="#Path">Path</a> and be contained. Returns true if <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is empty, that is, it has zero width or height; and -the <a href="undocumented#Point">Point</a> or <a href="undocumented#Line">Line</a> described by <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained by <a href="#Path">Path</a>. +the <a href="SkPoint_Reference#Point">Point</a> or <a href="undocumented#Line">Line</a> described by <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained by <a href="#Path">Path</a>. ### Parameters <table> <tr> <td><a name="SkPath_conservativelyContainsRect_rect"> <code><strong>rect </strong></code> </a></td> <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> +<a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Line">Line</a>, or <a href="SkPoint_Reference#Point">Point</a> checked for containment</td> </tr> </table> @@ -1938,7 +1937,7 @@ true if <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained <a name="SkPath_incReserve"></a> ## incReserve -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void incReserve(unsigned extraPtCount) </pre> @@ -1966,18 +1965,18 @@ number of additional <a href="#Point">Points</a> to allocate</td> <a name="SkPath_moveTo"></a> ## moveTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void moveTo(SkScalar x, SkScalar y) </pre> -Adds beginning of <a href="#Contour">Contour</a> at <a href="undocumented#Point">Point</a> (<a href="#SkPath_moveTo_x">x</a>, <a href="#SkPath_moveTo_y">y</a>). +Adds beginning of <a href="#Contour">Contour</a> at <a href="SkPoint_Reference#Point">Point</a> (<a href="#SkPath_moveTo_x">x</a>, <a href="#SkPath_moveTo_y">y</a>). ### Parameters <table> <tr> <td><a name="SkPath_moveTo_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of <a href="#Contour">Contour</a> start</td> +<a href="#SkPath_moveTo_x">x</a>-coordinate of <a href="#Contour">Contour</a> start</td> </tr> <tr> <td><a name="SkPath_moveTo_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of <a href="#Contour">Contour</a> start</td> +<a href="#SkPath_moveTo_y">y</a>-coordinate of <a href="#Contour">Contour</a> start</td> </tr> </table> @@ -1991,11 +1990,11 @@ y-coordinate of <a href="#Contour">Contour</a> start</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void moveTo(const SkPoint& p) </pre> -Adds beginning of <a href="#Contour">Contour</a> at <a href="undocumented#Point">Point</a> <a href="#SkPath_moveTo_2_p">p</a>. +Adds beginning of <a href="#Contour">Contour</a> at <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_moveTo_2_p">p</a>. ### Parameters @@ -2017,7 +2016,7 @@ contour start</td> <a name="SkPath_rMoveTo"></a> ## rMoveTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rMoveTo(SkScalar dx, SkScalar dy) </pre> @@ -2048,7 +2047,7 @@ Function name stands for "relative move to". <a name="SkPath_lineTo"></a> ## lineTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void lineTo(SkScalar x, SkScalar y) </pre> @@ -2077,20 +2076,20 @@ end of added <a href="undocumented#Line">Line</a> in <a href="#SkPath_lineTo_y"> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void lineTo(const SkPoint& p) </pre> -Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to <a href="undocumented#Point">Point</a> <a href="#SkPath_lineTo_2_p">p</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is +Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_lineTo_2_p">p</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="undocumented#Line">Line</a>. <a href="#SkPath_lineTo">lineTo</a> first appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>, if needed. -<a href="#SkPath_lineTo">lineTo</a> then appends <a href="#SkPath_kLine_Verb">kLine Verb</a> to <a href="#Verb_Array">Verb Array</a> and <a href="undocumented#Point">Point</a> <a href="#SkPath_lineTo_2_p">p</a> to <a href="#Point_Array">Point Array</a>. +<a href="#SkPath_lineTo">lineTo</a> then appends <a href="#SkPath_kLine_Verb">kLine Verb</a> to <a href="#Verb_Array">Verb Array</a> and <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_lineTo_2_p">p</a> to <a href="#Point_Array">Point Array</a>. ### Parameters <table> <tr> <td><a name="SkPath_lineTo_2_p"> <code><strong>p </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of added <a href="undocumented#Line">Line</a></td> +end <a href="SkPoint_Reference#Point">Point</a> of added <a href="undocumented#Line">Line</a></td> </tr> </table> @@ -2107,16 +2106,16 @@ end <a href="undocumented#Point">Point</a> of added <a href="undocumented#Line"> <a name="SkPath_rLineTo"></a> ## rLineTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rLineTo(SkScalar dx, SkScalar dy) </pre> -Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rLineTo_dx">dx</a>, <a href="#SkPath_rLineTo_dy">dy</a>). If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is +Adds <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rLineTo_dx">dx</a>, <a href="#SkPath_rLineTo_dy">dy</a>). If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="undocumented#Line">Line</a>. Appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>, if needed; then appends <a href="#SkPath_kLine_Verb">kLine Verb</a> to <a href="#Verb_Array">Verb Array</a> and <a href="undocumented#Line">Line</a> end to <a href="#Point_Array">Point Array</a>. -<a href="undocumented#Line">Line</a> end is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rLineTo_dx">dx</a>, <a href="#SkPath_rLineTo_dy">dy</a>). +<a href="undocumented#Line">Line</a> end is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rLineTo_dx">dx</a>, <a href="#SkPath_rLineTo_dy">dy</a>). Function name stands for "relative line to". ### Parameters @@ -2139,9 +2138,9 @@ Function name stands for "relative line to". --- # <a name="Quad"></a> Quad -<a href="#Quad">Quad</a> describes a quadratic <a href="undocumented#Bezier">Bezier</a>, a second-order curve identical to a section -of a parabola. <a href="#Quad">Quad</a> begins at a start <a href="undocumented#Point">Point</a>, curves towards a control <a href="undocumented#Point">Point</a>, -and then curves to an end <a href="undocumented#Point">Point</a>. +<a href="#Quad">Quad</a> describes a quadratic Bezier, a second-order curve identical to a section +of a parabola. <a href="#Quad">Quad</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, curves towards a control <a href="SkPoint_Reference#Point">Point</a>, +and then curves to an end <a href="SkPoint_Reference#Point">Point</a>. ### Example @@ -2150,8 +2149,8 @@ and then curves to an end <a href="undocumented#Point">Point</a>. <a href="#Quad">Quad</a> is a special case of <a href="#Conic">Conic</a> where <a href="#Conic_Weight">Conic Weight</a> is set to one. <a href="#Quad">Quad</a> is always contained by the triangle connecting its three <a href="#Point">Points</a>. <a href="#Quad">Quad</a> -begins tangent to the line between start <a href="undocumented#Point">Point</a> and control <a href="undocumented#Point">Point</a>, and ends -tangent to the line between control <a href="undocumented#Point">Point</a> and end <a href="undocumented#Point">Point</a>. +begins tangent to the line between start <a href="SkPoint_Reference#Point">Point</a> and control <a href="SkPoint_Reference#Point">Point</a>, and ends +tangent to the line between control <a href="SkPoint_Reference#Point">Point</a> and end <a href="SkPoint_Reference#Point">Point</a>. ### Example @@ -2160,7 +2159,7 @@ tangent to the line between control <a href="undocumented#Point">Point</a> and e <a name="SkPath_quadTo"></a> ## quadTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2) </pre> @@ -2175,13 +2174,13 @@ to <a href="#Point_Array">Point Array</a>. ### Parameters <table> <tr> <td><a name="SkPath_quadTo_x1"> <code><strong>x1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of <a href="#Quad">Quad</a> in x</td> +control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Quad">Quad</a> in x</td> </tr> <tr> <td><a name="SkPath_quadTo_y1"> <code><strong>y1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of <a href="#Quad">Quad</a> in y</td> +control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Quad">Quad</a> in y</td> </tr> <tr> <td><a name="SkPath_quadTo_x2"> <code><strong>x2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Quad">Quad</a> in x</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Quad">Quad</a> in x</td> </tr> <tr> <td><a name="SkPath_quadTo_y2"> <code><strong>y2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Quad">Quad</a> in y</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Quad">Quad</a> in y</td> </tr> </table> @@ -2195,11 +2194,11 @@ end <a href="undocumented#Point">Point</a> of <a href="#Quad">Quad</a> in y</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void quadTo(const SkPoint& p1, const SkPoint& p2) </pre> -Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Point">Point</a> <a href="#SkPath_quadTo_2_p1">p1</a>, to <a href="undocumented#Point">Point</a> <a href="#SkPath_quadTo_2_p2">p2</a>. +Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p2">p2</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Quad">Quad</a>. @@ -2210,9 +2209,9 @@ to <a href="#Point_Array">Point Array</a>. ### Parameters <table> <tr> <td><a name="SkPath_quadTo_2_p1"> <code><strong>p1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of added <a href="#Quad">Quad</a></td> +control <a href="SkPoint_Reference#Point">Point</a> of added <a href="#Quad">Quad</a></td> </tr> <tr> <td><a name="SkPath_quadTo_2_p2"> <code><strong>p2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of added <a href="#Quad">Quad</a></td> +end <a href="SkPoint_Reference#Point">Point</a> of added <a href="#Quad">Quad</a></td> </tr> </table> @@ -2229,19 +2228,19 @@ end <a href="undocumented#Point">Point</a> of added <a href="#Quad">Quad</a></td <a name="SkPath_rQuadTo"></a> ## rQuadTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rQuadTo(SkScalar dx1, SkScalar dy1, SkScalar dx2, SkScalar dy2) </pre> -Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx1">dx1</a>, <a href="#SkPath_rQuadTo_dy1">dy1</a>), to <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx2">dx2</a>, <a href="#SkPath_rQuadTo_dy2">dy2</a>). +Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx1">dx1</a>, <a href="#SkPath_rQuadTo_dy1">dy1</a>), to <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx2">dx2</a>, <a href="#SkPath_rQuadTo_dy2">dy2</a>). If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Quad">Quad</a>. Appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>, if needed; then appends <a href="#SkPath_kQuad_Verb">kQuad Verb</a> to <a href="#Verb_Array">Verb Array</a>; and appends <a href="#Quad">Quad</a> control and <a href="#Quad">Quad</a> end to <a href="#Point_Array">Point Array</a>. -<a href="#Quad">Quad</a> control is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx1">dx1</a>, <a href="#SkPath_rQuadTo_dy1">dy1</a>). -<a href="#Quad">Quad</a> end is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx2">dx2</a>, <a href="#SkPath_rQuadTo_dy2">dy2</a>). +<a href="#Quad">Quad</a> control is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx1">dx1</a>, <a href="#SkPath_rQuadTo_dy1">dy1</a>). +<a href="#Quad">Quad</a> end is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rQuadTo_dx2">dx2</a>, <a href="#SkPath_rQuadTo_dy2">dy2</a>). Function name stands for "relative quad to". ### Parameters @@ -2269,16 +2268,16 @@ Function name stands for "relative quad to". # <a name="Conic"></a> Conic <a href="#Conic">Conic</a> describes a conical section: a piece of an ellipse, or a piece of a -parabola, or a piece of a hyperbola. <a href="#Conic">Conic</a> begins at a start <a href="undocumented#Point">Point</a>, -curves towards a control <a href="undocumented#Point">Point</a>, and then curves to an end <a href="undocumented#Point">Point</a>. The influence -of the control <a href="undocumented#Point">Point</a> is determined by <a href="#Conic_Weight">Conic Weight</a>. +parabola, or a piece of a hyperbola. <a href="#Conic">Conic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, +curves towards a control <a href="SkPoint_Reference#Point">Point</a>, and then curves to an end <a href="SkPoint_Reference#Point">Point</a>. The influence +of the control <a href="SkPoint_Reference#Point">Point</a> is determined by <a href="#Conic_Weight">Conic Weight</a>. Each <a href="#Conic">Conic</a> in <a href="#Path">Path</a> adds two <a href="#Point">Points</a> and one <a href="#Conic_Weight">Conic Weight</a>. <a href="#Weight">Conic Weights</a> in <a href="#Path">Path</a> may be inspected with <a href="#SkPath_Iter">Iter</a>, or with <a href="#SkPath_RawIter">RawIter</a>. ## <a name="Weight"></a> Weight -<a href="#Conic_Weight">Weight</a> determines both the strength of the control <a href="undocumented#Point">Point</a> and the type of <a href="#Conic">Conic</a>. +<a href="#Conic_Weight">Weight</a> determines both the strength of the control <a href="SkPoint_Reference#Point">Point</a> and the type of <a href="#Conic">Conic</a>. If <a href="#Conic_Weight">Weight</a> is exactly one, then <a href="#Conic">Conic</a> is identical to <a href="#Quad">Quad</a>; it is always a parabolic segment. @@ -2314,7 +2313,7 @@ done If weight is greater than one, <a href="#Conic">Conic</a> is a hyperbolic segment. As weight gets large, a hyperbolic segment can be approximated by straight lines connecting the -control <a href="undocumented#Point">Point</a> with the end <a href="#Point">Points</a>. +control <a href="SkPoint_Reference#Point">Point</a> with the end <a href="#Point">Points</a>. ### Example @@ -2334,7 +2333,7 @@ done <a name="SkPath_conicTo"></a> ## conicTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void conicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w) </pre> @@ -2356,13 +2355,13 @@ If <a href="#SkPath_conicTo_w">w</a> is not finite, appends <a href="#SkPath_kLi ### Parameters <table> <tr> <td><a name="SkPath_conicTo_x1"> <code><strong>x1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of <a href="#Conic">Conic</a> in x</td> +control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Conic">Conic</a> in x</td> </tr> <tr> <td><a name="SkPath_conicTo_y1"> <code><strong>y1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of <a href="#Conic">Conic</a> in y</td> +control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Conic">Conic</a> in y</td> </tr> <tr> <td><a name="SkPath_conicTo_x2"> <code><strong>x2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Conic">Conic</a> in x</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Conic">Conic</a> in x</td> </tr> <tr> <td><a name="SkPath_conicTo_y2"> <code><strong>y2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Conic">Conic</a> in y</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Conic">Conic</a> in y</td> </tr> <tr> <td><a name="SkPath_conicTo_w"> <code><strong>w </strong></code> </a></td> <td> weight of added <a href="#Conic">Conic</a></td> </tr> @@ -2380,11 +2379,11 @@ top curve is hyperbolic.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void conicTo(const SkPoint& p1, const SkPoint& p2, SkScalar w) </pre> -Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Point">Point</a> <a href="#SkPath_conicTo_2_p1">p1</a>, to <a href="undocumented#Point">Point</a> <a href="#SkPath_conicTo_2_p2">p2</a>, weighted by <a href="#SkPath_conicTo_2_w">w</a>. +Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p2">p2</a>, weighted by <a href="#SkPath_conicTo_2_w">w</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Conic">Conic</a>. @@ -2402,9 +2401,9 @@ If <a href="#SkPath_conicTo_2_w">w</a> is not finite, appends <a href="#SkPath_k ### Parameters <table> <tr> <td><a name="SkPath_conicTo_2_p1"> <code><strong>p1 </strong></code> </a></td> <td> -control <a href="undocumented#Point">Point</a> of added <a href="#Conic">Conic</a></td> +control <a href="SkPoint_Reference#Point">Point</a> of added <a href="#Conic">Conic</a></td> </tr> <tr> <td><a name="SkPath_conicTo_2_p2"> <code><strong>p2 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of added <a href="#Conic">Conic</a></td> +end <a href="SkPoint_Reference#Point">Point</a> of added <a href="#Conic">Conic</a></td> </tr> <tr> <td><a name="SkPath_conicTo_2_w"> <code><strong>w </strong></code> </a></td> <td> weight of added <a href="#Conic">Conic</a></td> </tr> @@ -2424,11 +2423,11 @@ the <a href="#Conic_Weight">Conic Weight</a> also increases, but remains smaller <a name="SkPath_rConicTo"></a> ## rConicTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void rConicTo(SkScalar dx1, SkScalar dy1, SkScalar dx2, SkScalar dy2, SkScalar w) </pre> -Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx1">dx1</a>, <a href="#SkPath_rConicTo_dy1">dy1</a>), to <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx2">dx2</a>, <a href="#SkPath_rConicTo_dy2">dy2</a>), +Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx1">dx1</a>, <a href="#SkPath_rConicTo_dy1">dy1</a>), to <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx2">dx2</a>, <a href="#SkPath_rConicTo_dy2">dy2</a>), weighted by <a href="#SkPath_rConicTo_w">w</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Conic">Conic</a>. @@ -2440,8 +2439,8 @@ and <a href="#SkPath_rConicTo_w">w</a> is recorded as <a href="#Conic_Weight">Co twice to <a href="#Verb_Array">Verb Array</a>. In all cases appends <a href="#Point">Points</a> control and end to <a href="#Point_Array">Point Array</a>. -control is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx1">dx1</a>, <a href="#SkPath_rConicTo_dy1">dy1</a>). -end is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx2">dx2</a>, <a href="#SkPath_rConicTo_dy2">dy2</a>). +control is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx1">dx1</a>, <a href="#SkPath_rConicTo_dy1">dy1</a>). +end is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkPath_rConicTo_dx2">dx2</a>, <a href="#SkPath_rConicTo_dy2">dy2</a>). Function name stands for "relative conic to". @@ -2471,9 +2470,9 @@ weight of added <a href="#Conic">Conic</a></td> --- # <a name="Cubic"></a> Cubic -<a href="#Cubic">Cubic</a> describes a <a href="undocumented#Bezier">Bezier</a> curve segment described by a third-order polynomial. -<a href="#Cubic">Cubic</a> begins at a start <a href="undocumented#Point">Point</a>, curving towards the first control <a href="undocumented#Point">Point</a>; -and curves from the end <a href="undocumented#Point">Point</a> towards the second control <a href="undocumented#Point">Point</a>. +<a href="#Cubic">Cubic</a> describes a <a href="undocumented#Bezier_Curve">Bezier Curve</a> segment described by a third-order polynomial. +<a href="#Cubic">Cubic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, curving towards the first control <a href="SkPoint_Reference#Point">Point</a>; +and curves from the end <a href="SkPoint_Reference#Point">Point</a> towards the second control <a href="SkPoint_Reference#Point">Point</a>. ### Example @@ -2482,9 +2481,8 @@ and curves from the end <a href="undocumented#Point">Point</a> towards the secon <a name="SkPath_cubicTo"></a> ## cubicTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, - SkScalar y3) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3) </pre> Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a> towards (<a href="#SkPath_cubicTo_x1">x1</a>, <a href="#SkPath_cubicTo_y1">y1</a>), then towards (<a href="#SkPath_cubicTo_x2">x2</a>, <a href="#SkPath_cubicTo_y2">y2</a>), ending at @@ -2498,17 +2496,17 @@ to <a href="#Point_Array">Point Array</a>. ### Parameters <table> <tr> <td><a name="SkPath_cubicTo_x1"> <code><strong>x1 </strong></code> </a></td> <td> -first control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> +first control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> </tr> <tr> <td><a name="SkPath_cubicTo_y1"> <code><strong>y1 </strong></code> </a></td> <td> -first control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> +first control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> </tr> <tr> <td><a name="SkPath_cubicTo_x2"> <code><strong>x2 </strong></code> </a></td> <td> -second control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> +second control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> </tr> <tr> <td><a name="SkPath_cubicTo_y2"> <code><strong>y2 </strong></code> </a></td> <td> -second control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> +second control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> </tr> <tr> <td><a name="SkPath_cubicTo_x3"> <code><strong>x3 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in x</td> </tr> <tr> <td><a name="SkPath_cubicTo_y3"> <code><strong>y3 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</td> </tr> </table> @@ -2522,12 +2520,12 @@ end <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a> in y</t --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void cubicTo(const SkPoint& p1, const SkPoint& p2, const SkPoint& p3) </pre> -Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Point">Point</a> <a href="#SkPath_cubicTo_2_p1">p1</a>, then towards <a href="undocumented#Point">Point</a> <a href="#SkPath_cubicTo_2_p2">p2</a>, ending at -<a href="undocumented#Point">Point</a> <a href="#SkPath_cubicTo_2_p3">p3</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to +Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_cubicTo_2_p1">p1</a>, then towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_cubicTo_2_p2">p2</a>, ending at +<a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_cubicTo_2_p3">p3</a>. If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Cubic">Cubic</a>. Appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>, if needed; @@ -2537,11 +2535,11 @@ to <a href="#Point_Array">Point Array</a>. ### Parameters <table> <tr> <td><a name="SkPath_cubicTo_2_p1"> <code><strong>p1 </strong></code> </a></td> <td> -first control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a></td> +first control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a></td> </tr> <tr> <td><a name="SkPath_cubicTo_2_p2"> <code><strong>p2 </strong></code> </a></td> <td> -second control <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a></td> +second control <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a></td> </tr> <tr> <td><a name="SkPath_cubicTo_2_p3"> <code><strong>p3 </strong></code> </a></td> <td> -end <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a></td> +end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Cubic">Cubic</a></td> </tr> </table> @@ -2558,21 +2556,20 @@ end <a href="undocumented#Point">Point</a> of <a href="#Cubic">Cubic</a></td> <a name="SkPath_rCubicTo"></a> ## rCubicTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, - SkScalar y3) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3) </pre> -Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a> towards <a href="undocumented#Vector">Vector</a> (dx1, dy1), then towards -<a href="undocumented#Vector">Vector</a> (dx2, dy2), to <a href="undocumented#Vector">Vector</a> (dx3, dy3). +Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Vector">Vector</a> (dx1, dy1), then towards +<a href="SkPoint_Reference#Vector">Vector</a> (dx2, dy2), to <a href="SkPoint_Reference#Vector">Vector</a> (dx3, dy3). If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Cubic">Cubic</a>. Appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>, if needed; then appends <a href="#SkPath_kCubic_Verb">kCubic Verb</a> to <a href="#Verb_Array">Verb Array</a>; and appends <a href="#Cubic">Cubic</a> control and <a href="#Cubic">Cubic</a> end to <a href="#Point_Array">Point Array</a>. -<a href="#Cubic">Cubic</a> control is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (dx1, dy1). -<a href="#Cubic">Cubic</a> end is <a href="#Last_Point">Last Point</a> plus <a href="undocumented#Vector">Vector</a> (dx2, dy2). +<a href="#Cubic">Cubic</a> control is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (dx1, dy1). +<a href="#Cubic">Cubic</a> end is <a href="#Last_Point">Last Point</a> plus <a href="SkPoint_Reference#Vector">Vector</a> (dx2, dy2). Function name stands for "relative cubic to". ### Parameters @@ -2618,13 +2615,13 @@ requiring <a href="#Path">Path</a>. <a href="#SkPath_arcTo_2">arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius)</a> describes <a href="#Arc">Arc</a> as tangent to the line (x0, y0), (x1, y1) and tangent to the line (x1, y1), (x2, y2) -where (x0, y0) is the last <a href="undocumented#Point">Point</a> added to <a href="#Path">Path</a>. This construction is similar to <a href="undocumented#PostScript">PostScript</a> and +where (x0, y0) is the last <a href="SkPoint_Reference#Point">Point</a> added to <a href="#Path">Path</a>. This construction is similar to <a href="undocumented#PostScript">PostScript</a> and <a href="undocumented#HTML_Canvas">HTML Canvas</a> arcs. <a href="#SkPath_arcTo_4">arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep, SkScalar x, SkScalar y)</a> describes <a href="#Arc">Arc</a> as part of <a href="undocumented#Oval">Oval</a> with radii (rx, ry), beginning at -last <a href="undocumented#Point">Point</a> added to <a href="#Path">Path</a> and ending at (x, y). More than one <a href="#Arc">Arc</a> satisfies this criteria, +last <a href="SkPoint_Reference#Point">Point</a> added to <a href="#Path">Path</a> and ending at (x, y). More than one <a href="#Arc">Arc</a> satisfies this criteria, so additional values choose a single solution. This construction is similar to <a href="undocumented#SVG">SVG</a> arcs. <a href="#SkPath_conicTo">conicTo</a> describes <a href="#Arc">Arc</a> of less than 180 degrees as a pair of tangent lines and <a href="#Conic_Weight">Conic Weight</a>. @@ -2652,15 +2649,14 @@ Direction sweep, SkScalar x, SkScalar y)</a></td> </tr> 2 is similar to 1, but does not require building a path to draw. 3 is similar to 1, but always begins new <a href="#Contour">Contour</a>. 4 describes an arc from a pair of tangent lines and a radius. -5 describes an arc from <a href="undocumented#Oval">Oval</a> center, arc start <a href="undocumented#Point">Point</a> and arc end <a href="undocumented#Point">Point</a>. +5 describes an arc from <a href="undocumented#Oval">Oval</a> center, arc start <a href="SkPoint_Reference#Point">Point</a> and arc end <a href="SkPoint_Reference#Point">Point</a>. 6 describes an arc from a pair of tangent lines and a <a href="#Conic_Weight">Conic Weight</a>.</div></fiddle-embed></div> <a name="SkPath_arcTo"></a> ## arcTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, - bool forceMoveTo) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool forceMoveTo) </pre> Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>. <a href="#Arc">Arc</a> added is part of ellipse @@ -2668,7 +2664,7 @@ bounded by <a href="#SkPath_arcTo_oval">oval</a>, from <a href="#SkPath_arcTo_st <a href="#SkPath_arcTo_sweepAngle">sweepAngle</a> are measured in degrees, where zero degrees is aligned with the positive x-axis, and positive sweeps extends <a href="#Arc">Arc</a> clockwise. -<a href="#SkPath_arcTo">arcTo</a> adds <a href="undocumented#Line">Line</a> connecting <a href="#Path">Path</a> last <a href="undocumented#Point">Point</a> to initial <a href="#Arc">Arc</a> <a href="undocumented#Point">Point</a> if <a href="#SkPath_arcTo_forceMoveTo">forceMoveTo</a> +<a href="#SkPath_arcTo">arcTo</a> adds <a href="undocumented#Line">Line</a> connecting <a href="#Path">Path</a> last <a href="SkPoint_Reference#Point">Point</a> to initial <a href="#Arc">Arc</a> <a href="SkPoint_Reference#Point">Point</a> if <a href="#SkPath_arcTo_forceMoveTo">forceMoveTo</a> is false and <a href="#Path">Path</a> is not empty. Otherwise, added <a href="#Contour">Contour</a> begins with first point of <a href="#Arc">Arc</a>. Angles greater than -360 and less than 360 are treated modulo 360. @@ -2696,7 +2692,7 @@ is not empty.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius) </pre> @@ -2709,15 +2705,15 @@ is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_ar <div><fiddle-embed name="d9c6435f26f37b3d63c664a99028f77f"></fiddle-embed></div> -If last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> does not start <a href="#Arc">Arc</a>, <a href="#SkPath_arcTo">arcTo</a> appends connecting <a href="undocumented#Line">Line</a> to <a href="#Path">Path</a>. -The length of <a href="undocumented#Vector">Vector</a> from (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>) to (<a href="#SkPath_arcTo_2_x2">x2</a>, <a href="#SkPath_arcTo_2_y2">y2</a>) does not affect <a href="#Arc">Arc</a>. +If last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> does not start <a href="#Arc">Arc</a>, <a href="#SkPath_arcTo">arcTo</a> appends connecting <a href="undocumented#Line">Line</a> to <a href="#Path">Path</a>. +The length of <a href="SkPoint_Reference#Vector">Vector</a> from (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>) to (<a href="#SkPath_arcTo_2_x2">x2</a>, <a href="#SkPath_arcTo_2_y2">y2</a>) does not affect <a href="#Arc">Arc</a>. ### Example <div><fiddle-embed name="01d2ddfd539ab86a86989e210640dffc"></fiddle-embed></div> <a href="#Arc">Arc</a> sweep is always less than 180 degrees. If <a href="#SkPath_arcTo_2_radius">radius</a> is zero, or if -tangents are nearly parallel, <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> to (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>). +tangents are nearly parallel, <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> to (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>). <a href="#SkPath_arcTo">arcTo</a> appends at most one <a href="undocumented#Line">Line</a> and one <a href="#Conic">Conic</a>. <a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arct">PostScript Arct</a> and <a href="undocumented#HTML_Canvas_ArcTo">HTML Canvas ArcTo</a>. @@ -2757,7 +2753,7 @@ conic (79.2893,20),(200,20),(114.645,105.355) weight 0.382683 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void arcTo(const SkPoint p1, const SkPoint p2, SkScalar radius) </pre> @@ -2766,11 +2762,11 @@ weighted to describe part of <a href="undocumented#Circle">Circle</a>. <a href=" last <a href="#Path">Path</a> point to <a href="#SkPath_arcTo_3_p1">p1</a>, and tangent from <a href="#SkPath_arcTo_3_p1">p1</a> to <a href="#SkPath_arcTo_3_p2">p2</a>. <a href="#Arc">Arc</a> is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_arcTo_3_radius">radius</a>, positioned so it touches both tangent lines. -If last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> does not start <a href="#Arc">Arc</a>, <a href="#SkPath_arcTo">arcTo</a> appends connecting <a href="undocumented#Line">Line</a> to <a href="#Path">Path</a>. -The length of <a href="undocumented#Vector">Vector</a> from <a href="#SkPath_arcTo_3_p1">p1</a> to <a href="#SkPath_arcTo_3_p2">p2</a> does not affect <a href="#Arc">Arc</a>. +If last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> does not start <a href="#Arc">Arc</a>, <a href="#SkPath_arcTo">arcTo</a> appends connecting <a href="undocumented#Line">Line</a> to <a href="#Path">Path</a>. +The length of <a href="SkPoint_Reference#Vector">Vector</a> from <a href="#SkPath_arcTo_3_p1">p1</a> to <a href="#SkPath_arcTo_3_p2">p2</a> does not affect <a href="#Arc">Arc</a>. <a href="#Arc">Arc</a> sweep is always less than 180 degrees. If <a href="#SkPath_arcTo_3_radius">radius</a> is zero, or if -tangents are nearly parallel, <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> to <a href="#SkPath_arcTo_3_p1">p1</a>. +tangents are nearly parallel, <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> to <a href="#SkPath_arcTo_3_p1">p1</a>. <a href="#SkPath_arcTo">arcTo</a> appends at most one <a href="undocumented#Line">Line</a> and one <a href="#Conic">Conic</a>. <a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arct">PostScript Arct</a> and <a href="undocumented#HTML_Canvas_ArcTo">HTML Canvas ArcTo</a>. @@ -2778,7 +2774,7 @@ tangents are nearly parallel, <a href="#SkPath_arcTo">arcTo</a> appends <a href= ### Parameters <table> <tr> <td><a name="SkPath_arcTo_3_p1"> <code><strong>p1 </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> common to pair of tangents</td> +<a href="SkPoint_Reference#Point">Point</a> common to pair of tangents</td> </tr> <tr> <td><a name="SkPath_arcTo_3_p2"> <code><strong>p2 </strong></code> </a></td> <td> end of second tangent</td> </tr> <tr> <td><a name="SkPath_arcTo_3_radius"> <code><strong>radius </strong></code> </a></td> <td> @@ -2788,7 +2784,7 @@ distance from <a href="#Arc">Arc</a> to <a href="undocumented#Circle">Circle</a> ### Example -<div><fiddle-embed name="0c056264a361579c18e5d02d3172d4d4"><div>Because tangent lines are parallel, <a href="#SkPath_arcTo">arcTo</a> appends line from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> to +<div><fiddle-embed name="0c056264a361579c18e5d02d3172d4d4"><div>Because tangent lines are parallel, <a href="#SkPath_arcTo">arcTo</a> appends line from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> to <a href="#SkPath_arcTo_3_p1">p1</a>, but does not append a circular <a href="#Conic">Conic</a>.</div> #### Example Output @@ -2808,13 +2804,13 @@ line (156,20),(200,20) ## <a name="SkPath_ArcSize"></a> Enum SkPath::ArcSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPath_ArcSize">ArcSize</a> { <a href="#SkPath_kSmall_ArcSize">kSmall ArcSize</a>, <a href="#SkPath_kLarge_ArcSize">kLarge ArcSize</a>, };</pre> -Four <a href="undocumented#Oval">Oval</a> parts with radii (rx, ry) start at last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> and ends at (x, y). +Four <a href="undocumented#Oval">Oval</a> parts with radii (rx, ry) start at last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> and ends at (x, y). <a href="#SkPath_ArcSize">ArcSize</a> and <a href="#SkPath_Direction">Direction</a> select one of the four <a href="undocumented#Oval">Oval</a> parts. ### Constants @@ -2838,34 +2834,34 @@ and counterclockwise is blue.</div></fiddle-embed></div> <a href="#SkPath_arcTo">arcTo</a> <a href="#SkPath_Direction">Direction</a> -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, - Direction sweep, SkScalar x, SkScalar y) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep, + SkScalar x, SkScalar y) </pre> Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>. <a href="#Arc">Arc</a> is implemented by one or more <a href="#Conic">Conics</a> weighted to describe part of <a href="undocumented#Oval">Oval</a> with radii (<a href="#SkPath_arcTo_4_rx">rx</a>, <a href="#SkPath_arcTo_4_ry">ry</a>) rotated by <a href="#SkPath_arcTo_4_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> -curves from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> to (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>), choosing one of four possible routes: +curves from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> to (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>), choosing one of four possible routes: clockwise or counterclockwise, and smaller or larger. <a href="#Arc">Arc</a> <a href="#SkPath_arcTo_4_sweep">sweep</a> is always less than 360 degrees. <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> to (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>) if -either radii are zero, or if last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> equals (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>). <a href="#SkPath_arcTo">arcTo</a> scales radii -(<a href="#SkPath_arcTo_4_rx">rx</a>, <a href="#SkPath_arcTo_4_ry">ry</a>) to fit last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> and (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>) if both are greater than zero but +either radii are zero, or if last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> equals (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>). <a href="#SkPath_arcTo">arcTo</a> scales radii +(<a href="#SkPath_arcTo_4_rx">rx</a>, <a href="#SkPath_arcTo_4_ry">ry</a>) to fit last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> and (<a href="#SkPath_arcTo_4_x">x</a>, <a href="#SkPath_arcTo_4_y">y</a>) if both are greater than zero but too small. <a href="#SkPath_arcTo">arcTo</a> appends up to four <a href="#Conic">Conic</a> curves. -<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "" value -is opposite the integer value of <a href="#SkPath_arcTo_4_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "" uses 1 for clockwise, +<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_arcTo_4_sweep">sweep</a>-flag" value +is opposite the integer value of <a href="#SkPath_arcTo_4_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_arcTo_4_sweep">sweep</a>-flag" uses 1 for clockwise, while <a href="#SkPath_kCW_Direction">kCW Direction</a> cast to int is zero. ### Parameters <table> <tr> <td><a name="SkPath_arcTo_4_rx"> <code><strong>rx </strong></code> </a></td> <td> -radius in <a href="#SkPath_arcTo_4_x">x</a> before x-axis rotation</td> +radius in <a href="#SkPath_arcTo_4_x">x</a> before <a href="#SkPath_arcTo_4_x">x</a>-axis rotation</td> </tr> <tr> <td><a name="SkPath_arcTo_4_ry"> <code><strong>ry </strong></code> </a></td> <td> -radius in <a href="#SkPath_arcTo_4_y">y</a> before x-axis rotation</td> +radius in <a href="#SkPath_arcTo_4_y">y</a> before <a href="#SkPath_arcTo_4_x">x</a>-axis rotation</td> </tr> <tr> <td><a name="SkPath_arcTo_4_xAxisRotate"> <code><strong>xAxisRotate </strong></code> </a></td> <td> -x-axis rotation in degrees; positive values are clockwise</td> +<a href="#SkPath_arcTo_4_x">x</a>-axis rotation in degrees; positive values are clockwise</td> </tr> <tr> <td><a name="SkPath_arcTo_4_largeArc"> <code><strong>largeArc </strong></code> </a></td> <td> chooses smaller or larger <a href="#Arc">Arc</a></td> </tr> <tr> <td><a name="SkPath_arcTo_4_sweep"> <code><strong>sweep </strong></code> </a></td> <td> @@ -2887,23 +2883,22 @@ end of <a href="#Arc">Arc</a></td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void arcTo(const SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, - Direction sweep, const SkPoint xy) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void arcTo(const SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep, const SkPoint xy) </pre> Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>. <a href="#Arc">Arc</a> is implemented by one or more <a href="#Conic">Conic</a> weighted to describe part of <a href="undocumented#Oval">Oval</a> -with radii (<a href="#SkPath_arcTo_5_r">r</a>.fX, <a href="#SkPath_arcTo_5_r">r</a>.fY) rotated by <a href="#SkPath_arcTo_5_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> curves from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> to +with radii (<a href="#SkPath_arcTo_5_r">r</a>.fX, <a href="#SkPath_arcTo_5_r">r</a>.fY) rotated by <a href="#SkPath_arcTo_5_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> curves from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> to (<a href="#SkPath_arcTo_5_xy">xy</a>.fX, <a href="#SkPath_arcTo_5_xy">xy</a>.fY), choosing one of four possible routes: clockwise or counterclockwise, and smaller or larger. <a href="#Arc">Arc</a> <a href="#SkPath_arcTo_5_sweep">sweep</a> is always less than 360 degrees. <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> to <a href="#SkPath_arcTo_5_xy">xy</a> if either radii are zero, -or if last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> equals (x, y). <a href="#SkPath_arcTo">arcTo</a> scales radii <a href="#SkPath_arcTo_5_r">r</a> to fit last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> and +or if last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> equals (x, y). <a href="#SkPath_arcTo">arcTo</a> scales radii <a href="#SkPath_arcTo_5_r">r</a> to fit last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> and <a href="#SkPath_arcTo_5_xy">xy</a> if both are greater than zero but too small to describe an arc. <a href="#SkPath_arcTo">arcTo</a> appends up to four <a href="#Conic">Conic</a> curves. -<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "" value is -opposite the integer value of <a href="#SkPath_arcTo_5_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "" uses 1 for clockwise, while +<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_arcTo_5_sweep">sweep</a>-flag" value is +opposite the integer value of <a href="#SkPath_arcTo_5_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_arcTo_5_sweep">sweep</a>-flag" uses 1 for clockwise, while <a href="#SkPath_kCW_Direction">kCW Direction</a> cast to int is zero. ### Parameters @@ -2934,28 +2929,28 @@ end of <a href="#Arc">Arc</a></td> <a name="SkPath_rArcTo"></a> ## rArcTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, - Direction sweep, SkScalar dx, SkScalar dy) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep, + SkScalar dx, SkScalar dy) </pre> -Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, relative to last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a>. <a href="#Arc">Arc</a> is implemented by one or +Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, relative to last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a>. <a href="#Arc">Arc</a> is implemented by one or more <a href="#Conic">Conic</a>, weighted to describe part of <a href="undocumented#Oval">Oval</a> with radii (<a href="#SkPath_rArcTo_rx">rx</a>, <a href="#SkPath_rArcTo_ry">ry</a>) rotated by -<a href="#SkPath_rArcTo_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> curves from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> (x0, y0) to end <a href="undocumented#Point">Point</a>: +<a href="#SkPath_rArcTo_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> curves from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> (x0, y0) to end <a href="SkPoint_Reference#Point">Point</a>: (x0 + <a href="#SkPath_rArcTo_dx">dx</a>, y0 + <a href="#SkPath_rArcTo_dy">dy</a>), choosing one of four possible routes: clockwise or -counterclockwise, and smaller or larger. If <a href="#Path">Path</a> is empty, the start <a href="#Arc">Arc</a> <a href="undocumented#Point">Point</a> +counterclockwise, and smaller or larger. If <a href="#Path">Path</a> is empty, the start <a href="#Arc">Arc</a> <a href="SkPoint_Reference#Point">Point</a> is (0, 0). -<a href="#Arc">Arc</a> <a href="#SkPath_rArcTo_sweep">sweep</a> is always less than 360 degrees. <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> to end <a href="undocumented#Point">Point</a> -if either radii are zero, or if last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> equals end <a href="undocumented#Point">Point</a>. -<a href="#SkPath_arcTo">arcTo</a> scales radii (<a href="#SkPath_rArcTo_rx">rx</a>, <a href="#SkPath_rArcTo_ry">ry</a>) to fit last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a> and end <a href="undocumented#Point">Point</a> if both are +<a href="#Arc">Arc</a> <a href="#SkPath_rArcTo_sweep">sweep</a> is always less than 360 degrees. <a href="#SkPath_arcTo">arcTo</a> appends <a href="undocumented#Line">Line</a> to end <a href="SkPoint_Reference#Point">Point</a> +if either radii are zero, or if last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> equals end <a href="SkPoint_Reference#Point">Point</a>. +<a href="#SkPath_arcTo">arcTo</a> scales radii (<a href="#SkPath_rArcTo_rx">rx</a>, <a href="#SkPath_rArcTo_ry">ry</a>) to fit last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> and end <a href="SkPoint_Reference#Point">Point</a> if both are greater than zero but too small to describe an arc. <a href="#SkPath_arcTo">arcTo</a> appends up to four <a href="#Conic">Conic</a> curves. -<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "" value is -opposite the integer value of <a href="#SkPath_rArcTo_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "" uses 1 for clockwise, while +<a href="#SkPath_arcTo">arcTo</a> implements the functionality of <a href="#Arc">SVG Arc</a>, although <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_rArcTo_sweep">sweep</a>-flag" value is +opposite the integer value of <a href="#SkPath_rArcTo_sweep">sweep</a>; <a href="undocumented#SVG">SVG</a> "<a href="#SkPath_rArcTo_sweep">sweep</a>-flag" uses 1 for clockwise, while <a href="#SkPath_kCW_Direction">kCW Direction</a> cast to int is zero. ### Parameters @@ -2971,9 +2966,9 @@ chooses smaller or larger <a href="#Arc">Arc</a></td> </tr> <tr> <td><a name="SkPath_rArcTo_sweep"> <code><strong>sweep </strong></code> </a></td> <td> chooses clockwise or counterclockwise <a href="#Arc">Arc</a></td> </tr> <tr> <td><a name="SkPath_rArcTo_dx"> <code><strong>dx </strong></code> </a></td> <td> -x <a href="#SkPath_offset">offset</a> end of <a href="#Arc">Arc</a> from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a></td> +x <a href="#SkPath_offset">offset</a> end of <a href="#Arc">Arc</a> from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkPath_rArcTo_dy"> <code><strong>dy </strong></code> </a></td> <td> -y <a href="#SkPath_offset">offset</a> end of <a href="#Arc">Arc</a> from last <a href="#Path">Path</a> <a href="undocumented#Point">Point</a></td> +y <a href="#SkPath_offset">offset</a> end of <a href="#Arc">Arc</a> from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a></td> </tr> </table> @@ -2990,11 +2985,11 @@ y <a href="#SkPath_offset">offset</a> end of <a href="#Arc">Arc</a> from last <a <a name="SkPath_close"></a> ## close -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void close() </pre> -Append <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>. A closed <a href="#Contour">Contour</a> connects the first and last <a href="undocumented#Point">Point</a> +Append <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>. A closed <a href="#Contour">Contour</a> connects the first and last <a href="SkPoint_Reference#Point">Point</a> with <a href="undocumented#Line">Line</a>, forming a continuous loop. Open and closed <a href="#Contour">Contour</a> draw the same with <a href="#SkPaint_kFill_Style">SkPaint::kFill Style</a>. With <a href="#SkPaint_kStroke_Style">SkPaint::kStroke Style</a>, open <a href="#Contour">Contour</a> draws <a href="#Stroke_Cap">Paint Stroke Cap</a> at <a href="#Contour">Contour</a> start and end; closed <a href="#Contour">Contour</a> draws @@ -3013,7 +3008,7 @@ with <a href="#SkPaint_kFill_Style">SkPaint::kFill Style</a>. With <a href="#SkP <a name="SkPath_IsInverseFillType"></a> ## IsInverseFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static bool IsInverseFillType(FillType fill) </pre> @@ -3063,7 +3058,7 @@ IsInverseFillType(kInverseEvenOdd_FillType) == true <a name="SkPath_ConvertToNonInverseFillType"></a> ## ConvertToNonInverseFillType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static FillType ConvertToNonInverseFillType(FillType fill) </pre> @@ -3113,17 +3108,16 @@ ConvertToNonInverseFillType(kInverseEvenOdd_FillType) == kEvenOdd_FillType <a name="SkPath_ConvertConicToQuads"></a> ## ConvertConicToQuads -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, - const SkPoint& p2, SkScalar w, SkPoint pts[], - int pow2) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPoint& p2, SkScalar w, + SkPoint pts[], int pow2) </pre> -Approximates <a href="#Conic">Conic</a> with <a href="#Quad">Quad</a> array. <a href="#Conic">Conic</a> is constructed from start <a href="undocumented#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p0">p0</a>, -control <a href="undocumented#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p1">p1</a>, end <a href="undocumented#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p2">p2</a>, and weight <a href="#SkPath_ConvertConicToQuads_w">w</a>. +Approximates <a href="#Conic">Conic</a> with <a href="#Quad">Quad</a> array. <a href="#Conic">Conic</a> is constructed from start <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p0">p0</a>, +control <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p1">p1</a>, end <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p2">p2</a>, and weight <a href="#SkPath_ConvertConicToQuads_w">w</a>. <a href="#Quad">Quad</a> array is stored in <a href="#SkPath_ConvertConicToQuads_pts">pts</a>; this storage is supplied by caller. Maximum <a href="#Quad">Quad</a> count is 2 to the <a href="#SkPath_ConvertConicToQuads_pow2">pow2</a>. -Every third point in array shares last <a href="undocumented#Point">Point</a> of previous <a href="#Quad">Quad</a> and first <a href="undocumented#Point">Point</a> of +Every third point in array shares last <a href="SkPoint_Reference#Point">Point</a> of previous <a href="#Quad">Quad</a> and first <a href="SkPoint_Reference#Point">Point</a> of next <a href="#Quad">Quad</a>. Maximum <a href="#SkPath_ConvertConicToQuads_pts">pts</a> storage size is given by: (1 + 2 * (1 << <a href="#SkPath_ConvertConicToQuads_pow2">pow2</a>)) * sizeof(SkPoint). @@ -3139,11 +3133,11 @@ of up to 90 degrees; in this case, set <a href="#SkPath_ConvertConicToQuads_pow2 ### Parameters <table> <tr> <td><a name="SkPath_ConvertConicToQuads_p0"> <code><strong>p0 </strong></code> </a></td> <td> -<a href="#Conic">Conic</a> start <a href="undocumented#Point">Point</a></td> +<a href="#Conic">Conic</a> start <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkPath_ConvertConicToQuads_p1"> <code><strong>p1 </strong></code> </a></td> <td> -<a href="#Conic">Conic</a> control <a href="undocumented#Point">Point</a></td> +<a href="#Conic">Conic</a> control <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkPath_ConvertConicToQuads_p2"> <code><strong>p2 </strong></code> </a></td> <td> -<a href="#Conic">Conic</a> end <a href="undocumented#Point">Point</a></td> +<a href="#Conic">Conic</a> end <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkPath_ConvertConicToQuads_w"> <code><strong>w </strong></code> </a></td> <td> <a href="#Conic">Conic</a> weight</td> </tr> <tr> <td><a name="SkPath_ConvertConicToQuads_pts"> <code><strong>pts </strong></code> </a></td> <td> @@ -3172,9 +3166,8 @@ be drawn exactly with a single <a href="#Quad">Quad</a>.</div></fiddle-embed></d <a name="SkPath_isRect"></a> ## isRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool isRect(SkRect* rect, bool* isClosed = nullptr, - Direction* direction = nullptr) const +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +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="SkRect_Reference#Rect">Rect</a> when filled. @@ -3226,7 +3219,7 @@ addPoly is rect (0, 0, 80, 80); is not closed; direction CCW <a name="SkPath_isNestedFillRects"></a> ## isNestedFillRects -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isNestedFillRects(SkRect rect[2], Direction dirs[2] = nullptr) const </pre> @@ -3272,7 +3265,7 @@ inner (12.5, 22.5, 27.5, 37.5); direction CCW <a name="SkPath_addRect"></a> ## addRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addRect(const SkRect& rect, Direction dir = kCW_Direction) </pre> @@ -3301,7 +3294,7 @@ The right <a href="SkRect_Reference#Rect">Rect</a> dashes starting at the top-le --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addRect(const SkRect& rect, Direction dir, unsigned start) </pre> @@ -3339,16 +3332,16 @@ corner appended to <a href="#Path">Path</a>.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom, Direction dir = kCW_Direction) </pre> 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="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>. +starting with <a href="#SkPath_addRect_3_top">top</a>-<a href="#SkPath_addRect_3_left">left</a> corner of <a href="SkRect_Reference#Rect">Rect</a>; followed by <a href="#SkPath_addRect_3_top">top</a>-<a href="#SkPath_addRect_3_right">right</a>, <a href="#SkPath_addRect_3_bottom">bottom</a>-<a href="#SkPath_addRect_3_right">right</a>, +and <a href="#SkPath_addRect_3_bottom">bottom</a>-<a href="#SkPath_addRect_3_left">left</a> if <a href="#SkPath_addRect_3_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>; or followed by <a href="#SkPath_addRect_3_bottom">bottom</a>-<a href="#SkPath_addRect_3_left">left</a>, +<a href="#SkPath_addRect_3_bottom">bottom</a>-<a href="#SkPath_addRect_3_right">right</a>, and <a href="#SkPath_addRect_3_top">top</a>-<a href="#SkPath_addRect_3_right">right</a> if <a href="#SkPath_addRect_3_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>. ### Parameters @@ -3367,8 +3360,8 @@ larger y of <a href="SkRect_Reference#Rect">Rect</a></td> ### Example -<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> +<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 <a href="#SkPath_addRect_3_top">top</a>-<a href="#SkPath_addRect_3_left">left</a> 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 <a href="#SkPath_addRect_3_top">top</a>-<a href="#SkPath_addRect_3_left">left</a> corner, and continue down.</div></fiddle-embed></div> ### See Also @@ -3379,7 +3372,7 @@ The <a href="#SkPath_addRect_3_right">right</a> <a href="SkRect_Reference#Rect"> <a name="SkPath_addOval"></a> ## addOval -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addOval(const SkRect& oval, Direction dir = kCW_Direction) </pre> @@ -3409,7 +3402,7 @@ bounds of ellipse added</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addOval(const SkRect& oval, Direction dir, unsigned start) </pre> @@ -3418,7 +3411,7 @@ Add <a href="undocumented#Oval">Oval</a> to <a href="#Path">Path</a>, appending 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>. -| <a href="#SkPath_addOval_2_start">start</a> | <a href="undocumented#Point">Point</a> | +| <a href="#SkPath_addOval_2_start">start</a> | <a href="SkPoint_Reference#Point">Point</a> | | --- | --- | | 0 | <a href="#SkPath_addOval_2_oval">oval</a>.centerX(), <a href="#SkPath_addOval_2_oval">oval</a>.fTop | | 1 | <a href="#SkPath_addOval_2_oval">oval</a>.fRight, <a href="#SkPath_addOval_2_oval">oval</a>.centerY() | @@ -3449,9 +3442,8 @@ index of initial point of ellipse</td> <a name="SkPath_addCircle"></a> ## addCircle -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void addCircle(SkScalar x, SkScalar y, SkScalar radius, - Direction dir = kCW_Direction) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void addCircle(SkScalar x, SkScalar y, SkScalar radius, Direction dir = kCW_Direction) </pre> Add <a href="undocumented#Circle">Circle</a> centered at (<a href="#SkPath_addCircle_x">x</a>, <a href="#SkPath_addCircle_y">y</a>) of size <a href="#SkPath_addCircle_radius">radius</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>, @@ -3488,7 +3480,7 @@ distance from center to edge</td> <a name="SkPath_addArc"></a> ## addArc -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle) </pre> @@ -3527,9 +3519,8 @@ and <a href="#SkPath_addArc_startAngle">startAngle</a> modulo 90 is not zero.</d <a name="SkPath_addRoundRect"></a> ## addRoundRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void addRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, - Direction dir = kCW_Direction) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void addRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, Direction dir = kCW_Direction) </pre> Append <a href="undocumented#Round_Rect">Round Rect</a> to <a href="#Path">Path</a>, creating a new closed <a href="#Contour">Contour</a>. <a href="undocumented#Round_Rect">Round Rect</a> has bounds @@ -3571,9 +3562,8 @@ drawn in green.</div></fiddle-embed></div> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void addRoundRect(const SkRect& rect, const SkScalar radii[], - Direction dir = kCW_Direction) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void addRoundRect(const SkRect& rect, const SkScalar radii[], Direction dir = kCW_Direction) </pre> Append <a href="undocumented#Round_Rect">Round Rect</a> to <a href="#Path">Path</a>, creating a new closed <a href="#Contour">Contour</a>. <a href="undocumented#Round_Rect">Round Rect</a> has bounds @@ -3625,7 +3615,7 @@ array of 8 <a href="undocumented#SkScalar">SkScalar</a> values, a radius pair fo <a name="SkPath_addRRect"></a> ## addRRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addRRect(const SkRRect& rrect, Direction dir = kCW_Direction) </pre> @@ -3655,7 +3645,7 @@ bounds and radii of rounded rectangle</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addRRect(const SkRRect& rrect, Direction dir, unsigned start) </pre> @@ -3700,12 +3690,12 @@ index of initial point of <a href="undocumented#Round_Rect">Round Rect</a></td> <a name="SkPath_addPoly"></a> ## addPoly -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addPoly(const SkPoint pts[], int count, bool close) </pre> Add <a href="#Contour">Contour</a> created from <a href="undocumented#Line">Line</a> array, adding (<a href="#SkPath_addPoly_count">count</a> - 1) <a href="undocumented#Line">Line</a> segments. -<a href="#Contour">Contour</a> added starts at <a href="#SkPath_addPoly_pts">pts</a>[0], then adds a line for every additional <a href="undocumented#Point">Point</a> +<a href="#Contour">Contour</a> added starts at <a href="#SkPath_addPoly_pts">pts</a>[0], then adds a line for every additional <a href="SkPoint_Reference#Point">Point</a> in <a href="#SkPath_addPoly_pts">pts</a> array. If <a href="#SkPath_close">close</a> is true,appends <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>, connecting <a href="#SkPath_addPoly_pts">pts</a>[<a href="#SkPath_addPoly_count">count</a> - 1] and <a href="#SkPath_addPoly_pts">pts</a>[0]. @@ -3715,9 +3705,9 @@ Has no effect if <a href="#SkPath_addPoly_count">count</a> is less than one. ### Parameters <table> <tr> <td><a name="SkPath_addPoly_pts"> <code><strong>pts </strong></code> </a></td> <td> -array of <a href="undocumented#Line">Line</a> sharing end and start <a href="undocumented#Point">Point</a></td> +array of <a href="undocumented#Line">Line</a> sharing end and start <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkPath_addPoly_count"> <code><strong>count </strong></code> </a></td> <td> -length of <a href="undocumented#Point">Point</a> array</td> +length of <a href="SkPoint_Reference#Point">Point</a> array</td> </tr> <tr> <td><a name="SkPath_addPoly_close"> <code><strong>close </strong></code> </a></td> <td> true to add <a href="undocumented#Line">Line</a> connecting <a href="#Contour">Contour</a> end and start</td> </tr> @@ -3735,7 +3725,7 @@ true to add <a href="undocumented#Line">Line</a> connecting <a href="#Contour">C ## <a name="SkPath_AddPathMode"></a> Enum SkPath::AddPathMode -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPath_AddPathMode">AddPathMode</a> { <a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>, <a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>, @@ -3752,7 +3742,7 @@ the last <a href="#Contour">Contour</a> or start a new <a href="#Contour">Contou starts a new <a href="#Contour">Contour</a>.</td> </tr> <tr> - <td><a name="SkPath_kExtend_AddPathMode"> <code><strong>SkPath::kExtend_AddPathMode </strong></code> </a></td><td>If destination is closed or empty, start a new Contour. If destination</td><td>is not empty, add <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to added <a href="#Path">Path</a> first <a href="undocumented#Point">Point</a>. Skip added + <td><a name="SkPath_kExtend_AddPathMode"> <code><strong>SkPath::kExtend_AddPathMode </strong></code> </a></td><td>If destination is closed or empty, start a new Contour. If destination</td><td>is not empty, add <a href="undocumented#Line">Line</a> from <a href="#Last_Point">Last Point</a> to added <a href="#Path">Path</a> first <a href="SkPoint_Reference#Point">Point</a>. Skip added <a href="#Path">Path</a> initial <a href="#SkPath_kMove_Verb">kMove Verb</a>, then append remining <a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.</td> </tr> </table> @@ -3772,9 +3762,8 @@ The top right composition is made up of one contour; the other three have two.</ <a name="SkPath_addPath"></a> ## addPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void addPath(const SkPath& src, SkScalar dx, SkScalar dy, - AddPathMode mode = kAppend_AddPathMode) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void addPath(const SkPath& src, SkScalar dx, SkScalar dy, AddPathMode mode = kAppend_AddPathMode) </pre> Append <a href="#SkPath_addPath_src">src</a> to <a href="#Path">Path</a>, <a href="#SkPath_offset">offset</a> by (<a href="#SkPath_addPath_dx">dx</a>, <a href="#SkPath_addPath_dy">dy</a>). @@ -3806,7 +3795,7 @@ added unaltered. If <a href="#SkPath_addPath_mode">mode</a> is <a href="#SkPath_ --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void addPath(const SkPath& src, AddPathMode mode = kAppend_AddPathMode) </pre> @@ -3835,9 +3824,8 @@ added unaltered. If <a href="#SkPath_addPath_2_mode">mode</a> is <a href="#SkPat --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void addPath(const SkPath& src, const SkMatrix& matrix, - AddPathMode mode = kAppend_AddPathMode) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void addPath(const SkPath& src, const SkMatrix& matrix, AddPathMode mode = kAppend_AddPathMode) </pre> Append <a href="#SkPath_addPath_3_src">src</a> to <a href="#Path">Path</a>, transformed by <a href="#SkPath_addPath_3_matrix">matrix</a>. Transformed curves may have different @@ -3871,7 +3859,7 @@ added unaltered. If <a href="#SkPath_addPath_3_mode">mode</a> is <a href="#SkPat <a name="SkPath_reverseAddPath"></a> ## reverseAddPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reverseAddPath(const SkPath& src) </pre> @@ -3898,7 +3886,7 @@ Reversed <a href="#SkPath_reverseAddPath_src">src</a> always appends a new <a hr <a name="SkPath_offset"></a> ## offset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(SkScalar dx, SkScalar dy, SkPath* dst) const </pre> @@ -3926,7 +3914,7 @@ overwritten, translated copy of <a href="#Path">Path</a>; may be nullptr</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(SkScalar dx, SkScalar dy) </pre> @@ -3954,7 +3942,7 @@ Offset <a href="#Point_Array">Point Array</a> by (<a href="#SkPath_offset_2_dx"> <a name="SkPath_transform"></a> ## transform -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void transform(const SkMatrix& matrix, SkPath* dst) const </pre> @@ -3982,7 +3970,7 @@ overwritten, transformed copy of <a href="#Path">Path</a>; may be nullptr</td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void transform(const SkMatrix& matrix) </pre> @@ -4010,13 +3998,13 @@ Transform <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Arr ## <a name="Last_Point"></a> Last Point <a href="#Path">Path</a> is defined cumulatively, often by adding a segment to the end of last -<a href="#Contour">Contour</a>. <a href="#Last_Point">Last Point</a> of <a href="#Contour">Contour</a> is shared as first <a href="undocumented#Point">Point</a> of added <a href="undocumented#Line">Line</a> or <a href="undocumented#Curve">Curve</a>. +<a href="#Contour">Contour</a>. <a href="#Last_Point">Last Point</a> of <a href="#Contour">Contour</a> is shared as first <a href="SkPoint_Reference#Point">Point</a> of added <a href="undocumented#Line">Line</a> or <a href="undocumented#Curve">Curve</a>. <a href="#Last_Point">Last Point</a> can be read and written directly with <a href="#SkPath_getLastPt">getLastPt</a> and <a href="#SkPath_setLastPt">setLastPt</a>. <a name="SkPath_getLastPt"></a> ## getLastPt -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool getLastPt(SkPoint* lastPt) const </pre> @@ -4026,7 +4014,7 @@ storing (0, 0) if <a href="#SkPath_getLastPt_lastPt">lastPt</a> is not nullptr. ### Parameters <table> <tr> <td><a name="SkPath_getLastPt_lastPt"> <code><strong>lastPt </strong></code> </a></td> <td> -storage for final <a href="undocumented#Point">Point</a> in <a href="#Point_Array">Point Array</a>; may be nullptr</td> +storage for final <a href="SkPoint_Reference#Point">Point</a> in <a href="#Point_Array">Point Array</a>; may be nullptr</td> </tr> </table> @@ -4055,7 +4043,7 @@ last point: 35.2786, 52.9772 <a name="SkPath_setLastPt"></a> ## setLastPt -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLastPt(SkScalar x, SkScalar y) </pre> @@ -4065,9 +4053,9 @@ Set <a href="#Last_Point">Last Point</a> to (<a href="#SkPath_setLastPt_x">x</a> ### Parameters <table> <tr> <td><a name="SkPath_setLastPt_x"> <code><strong>x </strong></code> </a></td> <td> -set x-coordinate of <a href="#Last_Point">Last Point</a></td> +set <a href="#SkPath_setLastPt_x">x</a>-coordinate of <a href="#Last_Point">Last Point</a></td> </tr> <tr> <td><a name="SkPath_setLastPt_y"> <code><strong>y </strong></code> </a></td> <td> -set y-coordinate of <a href="#Last_Point">Last Point</a></td> +set <a href="#SkPath_setLastPt_y">y</a>-coordinate of <a href="#Last_Point">Last Point</a></td> </tr> </table> @@ -4081,7 +4069,7 @@ set y-coordinate of <a href="#Last_Point">Last Point</a></td> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLastPt(const SkPoint& p) </pre> @@ -4106,7 +4094,7 @@ set value of <a href="#Last_Point">Last Point</a></td> ## <a name="SkPath_SegmentMask"></a> Enum SkPath::SegmentMask -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> enum <a href="#SkPath_SegmentMask">SegmentMask</a> { <a href="#SkPath_kLine_SegmentMask">kLine SegmentMask</a> = 1 << 0, <a href="#SkPath_kQuad_SegmentMask">kQuad SegmentMask</a> = 1 << 1, @@ -4156,7 +4144,7 @@ Path kQuad_SegmentMask is set <a name="SkPath_getSegmentMasks"></a> ## getSegmentMasks -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t getSegmentMasks() const </pre> @@ -4191,14 +4179,14 @@ mask quad set <a name="SkPath_contains"></a> ## contains -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(SkScalar x, SkScalar y) const </pre> Returns true if the point (<a href="#SkPath_contains_x">x</a>, <a href="#SkPath_contains_y">y</a>) is contained by <a href="#Path">Path</a>, taking into account <a href="#SkPath_FillType">FillType</a>. -| <a href="#SkPath_FillType">FillType</a> | <a href="#SkPath_contains">contains</a> returns true if <a href="undocumented#Point">Point</a> is enclosed by | +| <a href="#SkPath_FillType">FillType</a> | <a href="#SkPath_contains">contains</a> returns true if <a href="SkPoint_Reference#Point">Point</a> is enclosed by | | --- | --- | | <a href="#SkPath_kWinding_FillType">kWinding FillType</a> | a non-zero sum of <a href="#Contour">Contour</a> <a href="#Direction">Directions</a>. | | <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a> | an odd number of <a href="#Contour">Contours</a>. | @@ -4208,15 +4196,15 @@ account <a href="#SkPath_FillType">FillType</a>. ### Parameters <table> <tr> <td><a name="SkPath_contains_x"> <code><strong>x </strong></code> </a></td> <td> -x-coordinate of containment test</td> +<a href="#SkPath_contains_x">x</a>-coordinate of containment test</td> </tr> <tr> <td><a name="SkPath_contains_y"> <code><strong>y </strong></code> </a></td> <td> -y-coordinate of containment test</td> +<a href="#SkPath_contains_y">y</a>-coordinate of containment test</td> </tr> </table> ### Return Value -true if <a href="undocumented#Point">Point</a> is in <a href="#Path">Path</a> +true if <a href="SkPoint_Reference#Point">Point</a> is in <a href="#Path">Path</a> ### Example @@ -4231,7 +4219,7 @@ true if <a href="undocumented#Point">Point</a> is in <a href="#Path">Path</a> <a name="SkPath_dump"></a> ## dump -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump(SkWStream* stream, bool forceClose, bool dumpAsHex) const </pre> @@ -4284,7 +4272,7 @@ path.close(); --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump() const </pre> @@ -4317,7 +4305,7 @@ path is not equal to copy <a name="SkPath_dumpHex"></a> ## dumpHex -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dumpHex() const </pre> @@ -4352,7 +4340,7 @@ path is equal to copy <a name="SkPath_writeToMemory"></a> ## writeToMemory -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t writeToMemory(void* buffer) const </pre> @@ -4397,7 +4385,7 @@ path is equal to copy <a name="SkPath_serialize"></a> ## serialize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> sk_sp<SkData> serialize() const </pre> @@ -4434,7 +4422,7 @@ path is equal to copy <a name="SkPath_readFromMemory"></a> ## readFromMemory -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t readFromMemory(const void* buffer, size_t length) </pre> @@ -4489,7 +4477,7 @@ Empty <a href="#Path">Paths</a> have a <a href="#Generation_ID">Generation ID</a <a name="SkPath_getGenerationID"></a> ## getGenerationID -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t getGenerationID() const </pre> @@ -4528,7 +4516,7 @@ empty genID = 1 <a name="SkPath_isValid"></a> ## isValid -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isValid() const </pre> @@ -4545,7 +4533,7 @@ true if <a href="#Path">Path</a> data is consistent <a name="SkPath_pathRefIsValid"></a> ## pathRefIsValid -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool pathRefIsValid() const </pre> @@ -4564,7 +4552,7 @@ Iterates through <a href="#Verb_Array">Verb Array</a>, and associated <a href="# Provides options to treat open <a href="#Contour">Contours</a> as closed, and to ignore degenerate data. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> class <a href="#SkPath_Iter_Iter">Iter</a> { public: <a href="#SkPath_Iter_Iter">Iter()</a>; @@ -4588,7 +4576,7 @@ path of the glyph.</div></fiddle-embed></div> <a name="SkPath_Iter_Iter"></a> ## Iter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Iter() </pre> @@ -4618,7 +4606,7 @@ iter is done --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Iter(const SkPath& path, bool forceClose) </pre> @@ -4669,7 +4657,7 @@ kDone_Verb <a name="SkPath_Iter_setPath"></a> ## setPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPath(const SkPath& path, bool forceClose) </pre> @@ -4716,7 +4704,7 @@ kDone_Verb <a name="SkPath_Iter_next"></a> ## next -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Verb next(SkPoint pts[4], bool doConsumeDegenerates = true, bool exact = false) </pre> @@ -4734,7 +4722,7 @@ if <a href="#SkPath_Iter_next_doConsumeDegenerates">doConsumeDegenerates</a> is ### Parameters <table> <tr> <td><a name="SkPath_Iter_next_pts"> <code><strong>pts </strong></code> </a></td> <td> -storage for <a href="undocumented#Point">Point</a> data describing returned <a href="#SkPath_Verb">Verb</a></td> +storage for <a href="SkPoint_Reference#Point">Point</a> data describing returned <a href="#SkPath_Verb">Verb</a></td> </tr> <tr> <td><a name="SkPath_Iter_next_doConsumeDegenerates"> <code><strong>doConsumeDegenerates </strong></code> </a></td> <td> if true, skip degenerate <a href="#Verb">Verbs</a></td> </tr> <tr> <td><a name="SkPath_Iter_next_exact"> <code><strong>exact </strong></code> </a></td> <td> @@ -4793,7 +4781,7 @@ kDone_Verb <a name="SkPath_Iter_conicWeight"></a> ## conicWeight -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar conicWeight() const </pre> @@ -4830,7 +4818,7 @@ conic weight: 0.5 <a name="SkPath_Iter_isCloseLine"></a> ## isCloseLine -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isCloseLine() const </pre> @@ -4872,7 +4860,7 @@ line generated by close <a name="SkPath_Iter_isClosedContour"></a> ## isClosedContour -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isClosedContour() const </pre> @@ -4909,7 +4897,7 @@ with close(), forceClose is true : isClosedContour returns true Iterates through <a href="#Verb_Array">Verb Array</a>, and associated <a href="#Point_Array">Point Array</a> and <a href="#Conic_Weight">Conic Weight</a>. <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Conic_Weight">Conic Weight</a> are returned unaltered. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> class <a href="#SkPath_RawIter_RawIter">RawIter</a> { public: <a href="#SkPath_RawIter_RawIter">RawIter()</a>; @@ -4923,7 +4911,7 @@ void <a href="#SkPath_RawIter_setPath">setPath(const SkPath& path)</a>; <a name="SkPath_RawIter_RawIter"></a> ## RawIter -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> RawIter() </pre> @@ -4936,7 +4924,7 @@ Call <a href="#SkPath_RawIter_setPath">setPath</a> to initialize <a href="#SkPat --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> RawIter(const SkPath& path) </pre> @@ -4958,7 +4946,7 @@ Sets <a href="#SkPath_RawIter_RawIter">RawIter</a> to return elements of <a href <a name="SkPath_RawIter_setPath"></a> ## setPath -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setPath(const SkPath& path) </pre> @@ -4976,7 +4964,7 @@ Sets <a href="#SkPath_Iter">Iter</a> to return elements of <a href="#Verb_Array" <a name="SkPath_RawIter_next"></a> ## next -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Verb next(SkPoint pts[4]) </pre> @@ -4987,7 +4975,7 @@ Zero to four <a href="#Point">Points</a> are stored in <a href="#SkPath_RawIter_ ### Parameters <table> <tr> <td><a name="SkPath_RawIter_next_pts"> <code><strong>pts </strong></code> </a></td> <td> -storage for <a href="undocumented#Point">Point</a> data describing returned <a href="#SkPath_Verb">Verb</a></td> +storage for <a href="SkPoint_Reference#Point">Point</a> data describing returned <a href="#SkPath_Verb">Verb</a></td> </tr> </table> @@ -5023,7 +5011,7 @@ kDone_Verb <a name="SkPath_RawIter_peek"></a> ## peek -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> Verb peek() const </pre> @@ -5060,7 +5048,7 @@ peek Done == verb Done <a name="SkPath_RawIter_conicWeight"></a> ## conicWeight -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar conicWeight() const </pre> diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md index 969fdb3ed6..6d85c6ff47 100644 --- a/site/user/api/SkPixmap_Reference.md +++ b/site/user/api/SkPixmap_Reference.md @@ -9,7 +9,7 @@ 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="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 +Use <a href="SkBitmap_Reference#Bitmap">Bitmap</a> to draw pixels referenced by <a href="#Pixmap">Pixmap</a>; use <a href="SkSurface_Reference#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#Pixel_Ref">Pixel Ref</a> @@ -21,7 +21,7 @@ to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe a | topics | description | | --- | --- | -| <a href="#Image_Info_Access">Image Info Access</a> | Returns all or part of <a href="#Info">Image Info</a>. | +| <a href="#Image_Info_Access">Image Info Access</a> | Returns all or part of <a href="undocumented#Image_Info">Image Info</a>. | | <a href="#Initialization">Initialization</a> | Sets fields for use. | | <a href="#Reader">Reader</a> | Examine pixel value. | | <a href="#Writer">Writer</a> | Copy to pixel values. | @@ -33,7 +33,7 @@ to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe a | | description | | --- | --- | | <a href="#SkPixmap_empty_constructor">SkPixmap()</a> | Constructs with default values. | -| <a href="#SkPixmap_const_SkImageInfo_const_star">SkPixmap(const SkImageInfo& info, const void* addr, size t rowBytes)</a> | Constructs from <a href="#Info">Image Info</a>, pixels. | +| <a href="#SkPixmap_const_SkImageInfo_const_star">SkPixmap(const SkImageInfo& info, const void* addr, size t rowBytes)</a> | Constructs from <a href="undocumented#Image_Info">Image Info</a>, pixels. | ## <a name="Member_Functions"></a> Member Functions @@ -45,24 +45,24 @@ to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe a | <a href="#SkPixmap_addr64">addr64</a> | Returns readable pixel address as 64-bit pointer. | | <a href="#SkPixmap_addr8">addr8</a> | Returns readable pixel address as 8-bit pointer. | | <a href="#SkPixmap_addrF16">addrF16</a> | Returns readable pixel component address as 16-bit pointer. | -| <a href="#SkPixmap_alphaType">alphaType</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Alpha_Type">Alpha Type</a>. | +| <a href="#SkPixmap_alphaType">alphaType</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Image_Alpha_Type">Alpha Type</a>. | | <a href="#SkPixmap_bounds">bounds</a> | Returns <a href="#SkPixmap_width">width</a> and <a href="#SkPixmap_height">height</a> as Rectangle. | -| <a href="#SkPixmap_colorSpace">colorSpace</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | -| <a href="#SkPixmap_colorType">colorType</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Type">Color Type</a>. | +| <a href="#SkPixmap_colorSpace">colorSpace</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | +| <a href="#SkPixmap_colorType">colorType</a> | Returns <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Image_Color_Type">Color Type</a>. | | <a href="#SkPixmap_computeByteSize">computeByteSize</a> | Returns size required for pixels. | | <a href="#SkPixmap_computeIsOpaque">computeIsOpaque</a> | Returns true if all pixels are opaque. | | <a href="#SkPixmap_erase">erase</a> | Writes <a href="undocumented#Color">Color</a> to pixels. | | <a href="#SkPixmap_extractSubset">extractSubset</a> | Sets pointer to portion of original. | | <a href="#SkPixmap_getColor">getColor</a> | Returns one pixel as <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>. | | <a href="#SkPixmap_height">height</a> | Returns pixel row count. | -| <a href="#SkPixmap_info">info</a> | Returns <a href="#Info">Image Info</a>. | -| <a href="#SkPixmap_isOpaque">isOpaque</a> | Returns true if <a href="#Info">Image Info</a> describes opaque pixels. | +| <a href="#SkPixmap_info">info</a> | Returns <a href="undocumented#Image_Info">Image Info</a>. | +| <a href="#SkPixmap_isOpaque">isOpaque</a> | Returns true if <a href="undocumented#Image_Info">Image Info</a> describes opaque pixels. | | <a href="#SkPixmap_readPixels">readPixels</a> | Copies and converts pixels. | | <a href="#SkPixmap_reset">reset</a> | Reuses existing <a href="#Pixmap">Pixmap</a> with replacement values. | | <a href="#SkPixmap_rowBytes">rowBytes</a> | Returns interval between rows in bytes. | | <a href="#SkPixmap_rowBytesAsPixels">rowBytesAsPixels</a> | Returns interval between rows in pixels. | | <a href="#SkPixmap_scalePixels">scalePixels</a> | Scales and converts pixels. | -| <a href="#SkPixmap_setColorSpace">setColorSpace</a> | Sets <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | +| <a href="#SkPixmap_setColorSpace">setColorSpace</a> | Sets <a href="undocumented#Image_Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | | <a href="#SkPixmap_shiftPerPixel">shiftPerPixel</a> | Returns bit shift from pixels to bytes. | | <a href="#SkPixmap_width">width</a> | Returns pixel column count. | | <a href="#SkPixmap_writable_addr">writable addr</a> | Returns writable pixel address as void pointer. | @@ -77,7 +77,7 @@ to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe a <a name="SkPixmap_empty_constructor"></a> ## SkPixmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPixmap() </pre> @@ -112,7 +112,7 @@ width: 25 height: 35 color: kRGBA_8888_SkColorType alpha: kOpaque_SkAlphaType <a name="SkPixmap_const_SkImageInfo_const_star"></a> ## SkPixmap -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkPixmap(const SkImageInfo& info, const void* addr, size_t rowBytes) </pre> @@ -132,7 +132,7 @@ storage. ### Parameters <table> <tr> <td><a name="SkPixmap_const_SkImageInfo_const_star_info"> <code><strong>info </strong></code> </a></td> <td> -<a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, <a href="undocumented#SkColorType">SkColorType</a> of <a href="#Info">Image Info</a></td> +<a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, <a href="undocumented#SkColorType">SkColorType</a> of <a href="undocumented#Image_Info">Image Info</a></td> </tr> <tr> <td><a name="SkPixmap_const_SkImageInfo_const_star_addr"> <code><strong>addr </strong></code> </a></td> <td> pointer to pixels allocated by caller; may be nullptr</td> </tr> <tr> <td><a name="SkPixmap_const_SkImageInfo_const_star_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> @@ -167,7 +167,7 @@ copy alpha only = true <a name="SkPixmap_reset"></a> ## reset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset() </pre> @@ -196,7 +196,7 @@ width: 0 height: 0 color: kUnknown_SkColorType alpha: kUnknown_SkAlphaType --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void reset(const SkImageInfo& info, const void* addr, size_t rowBytes) </pre> @@ -214,7 +214,7 @@ out of scope, <a href="#SkPixmap_addr">addr</a> is unaffected. ### Parameters <table> <tr> <td><a name="SkPixmap_reset_2_info"> <code><strong>info </strong></code> </a></td> <td> -<a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, <a href="undocumented#SkColorType">SkColorType</a> of <a href="#Info">Image Info</a></td> +<a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, <a href="undocumented#SkColorType">SkColorType</a> of <a href="undocumented#Image_Info">Image Info</a></td> </tr> <tr> <td><a name="SkPixmap_reset_2_addr"> <code><strong>addr </strong></code> </a></td> <td> pointer to pixels allocated by caller; may be nullptr</td> </tr> <tr> <td><a name="SkPixmap_reset_2_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> @@ -235,18 +235,18 @@ size of one row of <a href="#SkPixmap_addr">addr</a>; <a href="#SkPixmap_width"> <a name="SkPixmap_setColorSpace"></a> ## setColorSpace -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 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 -<a href="undocumented#SkColorType">SkColorType</a> in <a href="undocumented#Image">Image</a>, and leaves pixel address and row bytes unchanged. +Changes <a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_Info">Image Info</a>; preserves <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and +<a href="undocumented#SkColorType">SkColorType</a> in <a href="SkImage_Reference#Image">Image</a>, and leaves pixel address and row bytes unchanged. <a href="undocumented#Color_Space">Color Space</a> reference count is incremented. ### Parameters <table> <tr> <td><a name="SkPixmap_setColorSpace_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> -<a href="undocumented#Color_Space">Color Space</a> moved to <a href="#Info">Image Info</a></td> +<a href="undocumented#Color_Space">Color Space</a> moved to <a href="undocumented#Image_Info">Image Info</a></td> </tr> </table> @@ -269,7 +269,7 @@ is not unique --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT reset(const SkMask& mask) </pre> @@ -313,7 +313,7 @@ success: false width: 0 height: 0 <a name="SkPixmap_extractSubset"></a> ## extractSubset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT extractSubset(SkPixmap* subset, const SkIRect& area) const </pre> @@ -351,11 +351,11 @@ true if intersection of <a href="#Pixmap">Pixmap</a> and <a href="#SkPixmap_extr <a name="SkPixmap_info"></a> ## info -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkImageInfo& info() const </pre> -Returns <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_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>. +Returns <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, and <a href="undocumented#Color_Space">Color Space</a>. ### Return Value @@ -375,14 +375,14 @@ width: 384 height: 384 color: BGRA_8888 alpha: Opaque ### See Also -<a href="#Info">Image Info</a> +<a href="undocumented#Image_Info">Image Info</a> --- <a name="SkPixmap_rowBytes"></a> ## rowBytes -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t rowBytes() const </pre> @@ -419,7 +419,7 @@ rowBytes: 8 minRowBytes: 4 <a name="SkPixmap_addr"></a> ## addr -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const void* addr() const </pre> @@ -454,7 +454,7 @@ inset address: 0x7f2a440fb210 <a name="SkPixmap_width"></a> ## width -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int width() const </pre> @@ -464,7 +464,7 @@ Returns pixel count in each pixel row. Should be equal or less than: ### Return Value -pixel <a href="#SkPixmap_width">width</a> in <a href="#Info">Image Info</a> +pixel <a href="#SkPixmap_width">width</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -487,7 +487,7 @@ pixmap width: 16 info width: 16 <a name="SkPixmap_height"></a> ## height -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int height() const </pre> @@ -495,7 +495,7 @@ Returns pixel row count. ### Return Value -pixel <a href="#SkPixmap_height">height</a> in <a href="#Info">Image Info</a> +pixel <a href="#SkPixmap_height">height</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -518,17 +518,17 @@ pixmap height: 32 info height: 32 <a name="SkPixmap_colorType"></a> ## colorType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>, +Returns <a href="undocumented#Image_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> +<a href="undocumented#Image_Color_Type">Color Type</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -551,16 +551,16 @@ color type: kAlpha_SkColorType <a name="SkPixmap_alphaType"></a> ## alphaType -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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>, +Returns <a href="undocumented#Image_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> +<a href="undocumented#Image_Alpha_Type">Alpha Type</a> in <a href="undocumented#Image_Info">Image Info</a> ### Example @@ -583,22 +583,22 @@ alpha type: kPremul_SkAlphaType <a name="SkPixmap_colorSpace"></a> ## colorSpace -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkColorSpace* colorSpace() const </pre> -Returns <a href="undocumented#Color_Space">Color Space</a> associated with <a href="#Info">Image Info</a>. The +Returns <a href="undocumented#Color_Space">Color Space</a> associated with <a href="undocumented#Image_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>, the range of colors, in <a href="#Info">Image Info</a> +<a href="undocumented#Color_Space">Color Space</a>, the range of colors, in <a href="undocumented#Image_Info">Image Info</a> ### Example <div><fiddle-embed name="34c71f803b8edb48eaf1cd0c55bb212e"><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> +and an <a href="undocumented#sRGB">sRGB</a> gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to <a href="undocumented#sRGB">sRGB</a> gamma.</div> #### Example Output @@ -617,17 +617,17 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false <a name="SkPixmap_isOpaque"></a> ## isOpaque -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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 +Returns true if <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>. +Does not check if <a href="undocumented#Image_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> has opaque <a href="undocumented#Alpha_Type">Alpha Type</a> +true if <a href="undocumented#Image_Info">Image Info</a> has opaque <a href="undocumented#Image_Alpha_Type">Alpha Type</a> ### Example @@ -653,7 +653,7 @@ isOpaque: true <a name="SkPixmap_bounds"></a> ## bounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect bounds() const </pre> @@ -687,7 +687,7 @@ width: 2 height: 2 empty: false <a name="SkPixmap_rowBytesAsPixels"></a> ## rowBytesAsPixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int rowBytesAsPixels() const </pre> @@ -723,7 +723,7 @@ rowBytes: 8 rowBytesAsPixels: 2 <a name="SkPixmap_shiftPerPixel"></a> ## shiftPerPixel -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int shiftPerPixel() const </pre> @@ -762,7 +762,7 @@ color: kRGBA_F16_SkColorType bytesPerPixel: 8 shiftPerPixel: 3 <a name="SkPixmap_computeByteSize"></a> ## computeByteSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> size_t computeByteSize() const </pre> @@ -807,19 +807,19 @@ width: 1000000 height: 1000000 computeByteSize: 4999999000000 <a name="SkPixmap_computeIsOpaque"></a> ## computeIsOpaque -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool computeIsOpaque() const </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 +Returns true if all pixels are opaque. <a href="undocumented#Image_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#Image_Color_Type">Color Types</a> +without alpha in each pixel; for other <a href="undocumented#Image_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>, +For <a href="undocumented#Image_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#Image_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#Image_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. @@ -827,7 +827,7 @@ Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Return Value -true if 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#Image_Color_Type">Color Type</a> is opaque ### Example @@ -846,26 +846,26 @@ computeIsOpaque: true ### See Also -<a href="#SkPixmap_isOpaque">isOpaque</a> <a href="undocumented#Color_Type">Color Type</a> <a href="#Alpha">Alpha</a> +<a href="#SkPixmap_isOpaque">isOpaque</a> <a href="undocumented#Image_Color_Type">Color Type</a> <a href="#Alpha">Alpha</a> --- <a name="SkPixmap_getColor"></a> ## getColor -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkColor getColor(int x, int y) const </pre> Returns pixel at (<a href="#SkPixmap_getColor_x">x</a>, <a href="#SkPixmap_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>. +Returns black with <a href="#Alpha">Alpha</a> if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>. Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_getColor_x">x</a> or <a href="#SkPixmap_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 +<a href="undocumented#SK_RELEASE">SK RELEASE</a> is defined. Fails if <a href="undocumented#Image_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 +<a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_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. @@ -911,14 +911,14 @@ Unpremultiplied: ## <a name="Readable_Address"></a> Readable Address -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 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 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 nullptr 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#Image_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>. @@ -957,12 +957,12 @@ pixmap.addr(1, 2) == &storage[1 + 2 * w] <a name="SkPixmap_addr8"></a> ## addr8 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint8_t* addr8() const </pre> Returns readable base pixel address. Result is addressable as unsigned 8-bit bytes. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One byte corresponds to one pixel. @@ -992,12 +992,12 @@ pixmap.addr8() == storage <a name="SkPixmap_addr16"></a> ## addr16 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint16_t* addr16() const </pre> Returns readable base pixel address. Result is addressable as unsigned 16-bit words. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One word corresponds to one pixel. @@ -1027,12 +1027,12 @@ pixmap.addr16() == storage <a name="SkPixmap_addr32"></a> ## addr32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint32_t* addr32() const </pre> Returns readable base pixel address. Result is addressable as unsigned 32-bit words. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One word corresponds to one pixel. @@ -1062,12 +1062,12 @@ pixmap.addr32() == storage <a name="SkPixmap_addr64"></a> ## addr64 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint64_t* addr64() const </pre> Returns readable base pixel address. Result is addressable as unsigned 64-bit words. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One word corresponds to one pixel. @@ -1097,12 +1097,12 @@ pixmap.addr64() == storage <a name="SkPixmap_addrF16"></a> ## addrF16 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint16_t* addrF16() const </pre> Returns readable base pixel address. Result is addressable as unsigned 16-bit words. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Each word represents one color component encoded as a half float. @@ -1130,7 +1130,7 @@ pixmap.addrF16() == storage --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint8_t* addr8(int x, int y) const </pre> @@ -1139,7 +1139,7 @@ Returns readable pixel address at (<a href="#SkPixmap_addr8_2_x">x</a>, <a href= Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr8_2_x">x</a> or <a href="#SkPixmap_addr8_2_y">y</a> trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. ### Parameters @@ -1173,7 +1173,7 @@ pixmap.addr8(1, 2) == &storage[1 + 2 * w] --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint16_t* addr16(int x, int y) const </pre> @@ -1182,7 +1182,7 @@ Returns readable pixel address at (<a href="#SkPixmap_addr16_2_x">x</a>, <a href Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr16_2_x">x</a> or <a href="#SkPixmap_addr16_2_y">y</a> trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. ### Parameters @@ -1216,7 +1216,7 @@ pixmap.addr16(1, 2) == &storage[1 + 2 * w] --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint32_t* addr32(int x, int y) const </pre> @@ -1225,7 +1225,7 @@ Returns readable pixel address at (<a href="#SkPixmap_addr32_2_x">x</a>, <a href Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr32_2_x">x</a> or <a href="#SkPixmap_addr32_2_y">y</a> trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. ### Parameters @@ -1259,7 +1259,7 @@ pixmap.addr32(1, 2) == &storage[1 + 2 * w] --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint64_t* addr64(int x, int y) const </pre> @@ -1268,7 +1268,7 @@ Returns readable pixel address at (<a href="#SkPixmap_addr64_2_x">x</a>, <a href Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr64_2_x">x</a> or <a href="#SkPixmap_addr64_2_y">y</a> trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. ### Parameters @@ -1302,7 +1302,7 @@ pixmap.addr64(1, 2) == &storage[1 + 2 * w] --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const uint16_t* addrF16(int x, int y) const </pre> @@ -1311,7 +1311,7 @@ Returns readable pixel address at (<a href="#SkPixmap_addrF16_2_x">x</a>, <a hre Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addrF16_2_x">x</a> or <a href="#SkPixmap_addrF16_2_y">y</a> trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. -Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built +Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Each unsigned 16-bit word represents one color component encoded as a half float. @@ -1353,7 +1353,7 @@ pixmap.addrF16(1, 2) == &storage[1 * wordsPerPixel + 2 * rowWords] <a name="SkPixmap_writable_addr"></a> ## writable_addr -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void* writable_addr() const </pre> @@ -1383,14 +1383,14 @@ pixmap.getColor(0, 0) == 0xFFFFFFFF --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void* writable_addr(int x, int y) const </pre> Returns writable pixel address at (<a href="#SkPixmap_writable_addr_2_x">x</a>, <a href="#SkPixmap_writable_addr_2_y">y</a>). Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_writable_addr_2_x">x</a> or <a href="#SkPixmap_writable_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 zero if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>. ### Parameters @@ -1428,12 +1428,12 @@ pixmap.getColor(1, 2) == 0xFFFFFFFF <a name="SkPixmap_writable_addr8"></a> ## writable_addr8 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint8_t* writable_addr8(int x, int y) const </pre> Returns writable pixel address at (<a href="#SkPixmap_writable_addr8_x">x</a>, <a href="#SkPixmap_writable_addr8_y">y</a>). Result is addressable as unsigned -8-bit bytes. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> +8-bit bytes. Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One byte corresponds to one pixel. @@ -1466,12 +1466,12 @@ pixel memory is safer.</div></fiddle-embed></div> <a name="SkPixmap_writable_addr16"></a> ## writable_addr16 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint16_t* writable_addr16(int x, int y) const </pre> Returns <a href="#SkPixmap_writable_addr">writable addr</a> pixel address at (<a href="#SkPixmap_writable_addr16_x">x</a>, <a href="#SkPixmap_writable_addr16_y">y</a>). Result is addressable as unsigned -16-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> +16-bit words. Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One word corresponds to one pixel. @@ -1503,12 +1503,12 @@ The low nibble of the 16-bit word is <a href="#Alpha">Alpha</a>.</div></fiddle-e <a name="SkPixmap_writable_addr32"></a> ## writable_addr32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint32_t* writable_addr32(int x, int y) const </pre> Returns writable pixel address at (<a href="#SkPixmap_writable_addr32_x">x</a>, <a href="#SkPixmap_writable_addr32_y">y</a>). Result is addressable as unsigned -32-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not +32-bit words. Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. @@ -1540,12 +1540,12 @@ writable unsigned 32-bit pointer to pixel <a name="SkPixmap_writable_addr64"></a> ## writable_addr64 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint64_t* writable_addr64(int x, int y) const </pre> Returns writable pixel address at (<a href="#SkPixmap_writable_addr64_x">x</a>, <a href="#SkPixmap_writable_addr64_y">y</a>). Result is addressable as unsigned -64-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not +64-bit words. Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. One word corresponds to one pixel. @@ -1576,12 +1576,12 @@ writable unsigned 64-bit pointer to pixel <a name="SkPixmap_writable_addrF16"></a> ## writable_addrF16 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> uint16_t* writable_addrF16(int x, int y) const </pre> Returns writable pixel address at (<a href="#SkPixmap_writable_addrF16_x">x</a>, <a href="#SkPixmap_writable_addrF16_y">y</a>). Result is addressable as unsigned -16-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not +16-bit words. Will trigger an assert() if <a href="undocumented#Image_Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Each word represents one color component encoded as a half float. @@ -1616,15 +1616,15 @@ is drawn after overwriting bottom half float color with top half float color.</d <a name="SkPixmap_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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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="#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="#SkPixmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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 row to the next. Returns true if pixels are copied. Returns false if <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>. @@ -1649,7 +1649,7 @@ pixels are treated as if they are linear, regardless of how they are encoded. ### Parameters <table> <tr> <td><a name="SkPixmap_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> -destination <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>, <a href="undocumented#Color_Space">Color Space</a></td> +destination <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> </tr> <tr> <td><a name="SkPixmap_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> destination pixel storage</td> </tr> <tr> <td><a name="SkPixmap_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> @@ -1678,14 +1678,14 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_dstPixels">dstPixels< --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes) const </pre> 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 +<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_2_dstRowBytes">dstRowBytes</a> specifics the gap from one destination row to the next. Returns true if pixels are copied. Returns false if <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_2_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>. @@ -1702,7 +1702,7 @@ Returns false if this-><a href="#SkPixmap_width">width</a> or this-><a href="#Sk ### Parameters <table> <tr> <td><a name="SkPixmap_readPixels_2_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> -destination <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>, <a href="undocumented#Color_Space">Color Space</a></td> +destination <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> </tr> <tr> <td><a name="SkPixmap_readPixels_2_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> destination pixel storage</td> </tr> <tr> <td><a name="SkPixmap_readPixels_2_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> @@ -1725,15 +1725,14 @@ creates visible banding.</div></fiddle-embed></div> --- -<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 style="padding: 1em 1em 1em 1em;width: 62.5em; 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="#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 +<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_3_dstRowBytes">dstRowBytes</a> specifics the gap from one destination row to the next. Returns true if pixels are copied. Returns false if <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_3_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>. @@ -1753,7 +1752,7 @@ or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>. ### Parameters <table> <tr> <td><a name="SkPixmap_readPixels_3_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> -destination <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>, <a href="undocumented#Color_Space">Color Space</a></td> +destination <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> </tr> <tr> <td><a name="SkPixmap_readPixels_3_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> destination pixel storage</td> </tr> <tr> <td><a name="SkPixmap_readPixels_3_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> @@ -1779,13 +1778,13 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_3_dstPixels">dstPixel --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; 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="#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. +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#Image_Color_Type">Color Type</a>, +<a href="undocumented#Image_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 <a href="#SkPixmap_readPixels_4_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>. @@ -1804,7 +1803,7 @@ or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>. ### Parameters <table> <tr> <td><a name="SkPixmap_readPixels_4_dst"> <code><strong>dst </strong></code> </a></td> <td> -<a href="#Info">Image Info</a> and pixel address to write to</td> +<a href="undocumented#Image_Info">Image Info</a> and pixel address to write to</td> </tr> <tr> <td><a name="SkPixmap_readPixels_4_srcX"> <code><strong>srcX </strong></code> </a></td> <td> column index whose absolute value is less than <a href="#SkPixmap_width">width</a></td> </tr> <tr> <td><a name="SkPixmap_readPixels_4_srcY"> <code><strong>srcY </strong></code> </a></td> <td> @@ -1826,19 +1825,19 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_4_dst">dst</a> --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool readPixels(const SkPixmap& dst) const </pre> -Copies pixels inside <a href="#SkPixmap_bounds">bounds</a> to <a href="#SkPixmap_readPixels_5_dst">dst</a>. <a href="#SkPixmap_readPixels_5_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. +Copies pixels inside <a href="#SkPixmap_bounds">bounds</a> to <a href="#SkPixmap_readPixels_5_dst">dst</a>. <a href="#SkPixmap_readPixels_5_dst">dst</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, +<a href="undocumented#Image_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_5_dst">dst</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_5_dst">dst</a>.<a href="#SkPixmap_rowBytes">rowBytes</a> is less than <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>. Pixels are copied only if pixel conversion is possible. If this-><a href="#SkPixmap_colorType">colorType</a> is -<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Color_Type">Color Type</a> must match. +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Image_Color_Type">Color Type</a> must match. If this-><a href="#SkPixmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. -If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Image_Alpha_Type">Alpha Type</a> must match. If this-><a href="#SkPixmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns false if pixel conversion is not possible. Returns false if this-><a href="#SkPixmap_width">width</a> or this-><a href="#SkPixmap_height">height</a> is zero or negative. @@ -1846,7 +1845,7 @@ Returns false if this-><a href="#SkPixmap_width">width</a> or this-><a href="#Sk ### Parameters <table> <tr> <td><a name="SkPixmap_readPixels_5_dst"> <code><strong>dst </strong></code> </a></td> <td> -<a href="#Info">Image Info</a> and pixel address to write to</td> +<a href="undocumented#Image_Info">Image Info</a> and pixel address to write to</td> </tr> </table> @@ -1867,7 +1866,7 @@ true if pixels are copied to <a href="#SkPixmap_readPixels_5_dst">dst</a> <a name="SkPixmap_scalePixels"></a> ## scalePixels -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality) const </pre> @@ -1877,9 +1876,9 @@ pixels are copied. Returns false if <a href="#SkPixmap_scalePixels_dst">dst</a>. less than <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>. Pixels are copied only if pixel conversion is possible. If this-><a href="#SkPixmap_colorType">colorType</a> is -<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Color_Type">Color Type</a> must match. +<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, or <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Image_Color_Type">Color Type</a> must match. If this-><a href="#SkPixmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. -If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Alpha_Type">Alpha Type</a> must +If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Image_Alpha_Type">Alpha Type</a> must match. If this-><a href="#SkPixmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns false if pixel conversion is not possible. @@ -1895,7 +1894,7 @@ Scales the image, with <a href="#SkPixmap_scalePixels_filterQuality">filterQuali ### Parameters <table> <tr> <td><a name="SkPixmap_scalePixels_dst"> <code><strong>dst </strong></code> </a></td> <td> -<a href="#Info">Image Info</a> and pixel address to write to</td> +<a href="undocumented#Image_Info">Image Info</a> and pixel address to write to</td> </tr> <tr> <td><a name="SkPixmap_scalePixels_filterQuality"> <code><strong>filterQuality </strong></code> </a></td> <td> one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a></td> @@ -1919,7 +1918,7 @@ true if pixels are copied to <a href="#SkPixmap_scalePixels_dst">dst</a> <a name="SkPixmap_erase"></a> ## erase -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool erase(SkColor color, const SkIRect& subset) const </pre> @@ -1950,7 +1949,7 @@ true if pixels are changed --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool erase(SkColor color) const </pre> @@ -1979,7 +1978,7 @@ true if pixels are changed --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool erase(const SkColor4f& color, const SkIRect* subset = nullptr) const </pre> diff --git a/site/user/api/SkPoint_Reference.md b/site/user/api/SkPoint_Reference.md new file mode 100644 index 0000000000..95c6eebf98 --- /dev/null +++ b/site/user/api/SkPoint_Reference.md @@ -0,0 +1,1313 @@ +SkPoint Reference +=== + +# <a name="Vector"></a> Vector + +# <a name="Point"></a> Point + +# <a name="SkPoint"></a> Struct SkPoint + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Operators"></a> Operators + +| description | function | +| --- | --- | +| <a href="#SkPoint">SkPoint</a> <a href="#SkPoint_multiply_operator">operator*(SkScalar scale) const</a> | Returns <a href="#Point">Point</a> multiplied by <a href="#SkPoint_scale">scale</a>. | +| <a href="#SkPoint">SkPoint</a> <a href="#SkPoint_minus_operator">operator-() const</a> | Reverses sign of <a href="#Point">Point</a>. | +| <a href="#SkPoint">SkPoint</a>& <a href="#SkPoint_multiplyby_operator">operator*=(SkScalar scale)</a> | Multiplies <a href="#Point">Point</a> by <a href="#SkPoint_scale">scale</a> factor. | +| <a href="#SkPoint">SkPoint</a> <a href="#SkPoint_add_operator">operator+(const SkPoint& a, const SkVector& b)</a> | Returns <a href="#Point">Point</a> <a href="#SkPoint_offset">offset</a> by <a href="SkPoint_Reference#Vector">Vector</a>. | +| <a href="SkPoint_Reference#SkVector">SkVector</a> <a href="#SkPoint_subtract_operator">operator-(const SkPoint& a, const SkPoint& b)</a> | Returns <a href="SkPoint_Reference#Vector">Vector</a> between <a href="#Point">Points</a>. | +| bool <a href="#SkPoint_notequal_operator">operator!=(const SkPoint& a, const SkPoint& b)</a> | Returns true if <a href="#Point">Point</a> are unequal. | +| bool <a href="#SkPoint_equal_operator">operator==(const SkPoint& a, const SkPoint& b)</a> | Returns true if <a href="#Point">Point</a> are equal. | +| void <a href="#SkPoint_addto_operator">operator+=(const SkVector& v)</a> | Adds <a href="SkPoint_Reference#Vector">Vector</a> to <a href="#Point">Point</a>. | +| void <a href="#SkPoint_subtractfrom_operator">operator-=(const SkVector& v)</a> | Subtracts <a href="SkPoint_Reference#Vector">Vector</a> from <a href="#Point">Point</a>. | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkPoint_CrossProduct">CrossProduct</a> | Returns <a href="#SkPoint_cross">cross</a> product. | +| <a href="#SkPoint_Distance">Distance</a> | Returns straight-line distance between points. | +| <a href="#SkPoint_DotProduct">DotProduct</a> | Returns <a href="#SkPoint_dot">dot</a> product. | +| <a href="#SkPoint_Length">Length</a> | Returns straight-line distance to origin. | +| <a href="#SkPoint_Make">Make</a> | Constructs from <a href="undocumented#SkScalar">SkScalar</a> inputs. | +| <a href="#SkPoint_Normalize">Normalize</a> | Sets <a href="#SkPoint_length">length</a> to one, and returns prior <a href="#SkPoint_length">length</a>. | +| <a href="#SkPoint_Offset">Offset</a> | Translates <a href="#Point">Point</a> array. | +| <a href="#SkPoint_cross">cross</a> | Returns <a href="#SkPoint_cross">cross</a> product. | +| <a href="#SkPoint_distanceToOrigin">distanceToOrigin</a> | Returns straight-line distance to origin. | +| <a href="#SkPoint_dot">dot</a> | Returns <a href="#SkPoint_dot">dot</a> product. | +| <a href="#SkPoint_equals">equals</a> | Returns true if <a href="#Point">Points</a> are equal. | +| <a href="#SkPoint_isFinite">isFinite</a> | Returns true if no member is infinite or <a href="undocumented#NaN">NaN</a>. | +| <a href="#SkPoint_isZero">isZero</a> | Returns true if both members equal zero. | +| <a href="#SkPoint_iset">iset</a> | Sets to integer input. | +| <a href="#SkPoint_length">length</a> | Returns straight-line distance to origin. | +| <a href="#SkPoint_negate">negate</a> | Reverses the sign of both members. | +| <a href="#SkPoint_normalize">normalize</a> | Sets <a href="#SkPoint_length">length</a> to one, preserving direction. | +| <a href="#SkPoint_offset">offset</a> | Translates <a href="#Point">Point</a>. | +| <a href="#SkPoint_scale">scale</a> | Multiplies <a href="#Point">Point</a> by <a href="#SkPoint_scale">scale</a> factor. | +| <a href="#SkPoint_set">set</a> | Sets to <a href="undocumented#SkScalar">SkScalar</a> input. | +| <a href="#SkPoint_setAbs">setAbs</a> | Sets sign of both members to positive. | +| <a href="#SkPoint_setLength">setLength</a> | Sets straight-line distance to origin. | +| <a href="#SkPoint_setNormalize">setNormalize</a> | Sets <a href="#SkPoint_length">length</a> to one, in direction of (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>). | +| <a href="#SkPoint_x">x</a> | Returns <a href="#SkPoint_fX">fX</a>. | +| <a href="#SkPoint_y">y</a> | Returns <a href="#SkPoint_fY">fY</a>. | + +<a name="SkPoint_fX"> <code><strong>SkScalar fX</strong></code> </a> + +<a href="#SkPoint_x">x</a>-axis value used by both <a href="#Point">Point</a> and <a href="SkPoint_Reference#Vector">Vector</a>. May contain any value, including +infinities and <a href="undocumented#NaN">NaN</a>. + +<a name="SkPoint_fY"> <code><strong>SkScalar fY</strong></code> </a> + +<a href="#SkPoint_y">y</a>-axis value used by both <a href="#Point">Point</a> and <a href="SkPoint_Reference#Vector">Vector</a>. May contain any value, including +infinities and <a href="undocumented#NaN">NaN</a>. + +<a name="SkPoint_Make"></a> +## Make + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkPoint Make(SkScalar x, SkScalar y) +</pre> + +Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_x">x</a>, <a href="#SkPoint_fY">fY</a> to <a href="#SkPoint_y">y</a>. Used both to <a href="#SkPoint_set">set</a> <a href="#Point">Point</a> and <a href="SkPoint_Reference#Vector">Vector</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Make_x"> <code><strong>x </strong></code> </a></td> <td> +<a href="undocumented#SkScalar">SkScalar</a> <a href="#SkPoint_x">x</a>-axis value of constructed <a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a></td> + </tr> <tr> <td><a name="SkPoint_Make_y"> <code><strong>y </strong></code> </a></td> <td> +<a href="undocumented#SkScalar">SkScalar</a> <a href="#SkPoint_y">y</a>-axis value of constructed <a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a></td> + </tr> +</table> + +### Return Value + +<a href="#Point">Point</a> (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) + +### Example + +<div><fiddle-embed name="d266e70977847001f7c42f8a2513bee7"> + +#### Example Output + +~~~~ +all equal +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_set">set</a> <a href="#SkPoint_iset">iset</a> <a href="#SkIPoint_Make">SkIPoint::Make</a> + +--- + +<a name="SkPoint_x"></a> +## x + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar x() const +</pre> + +Returns <a href="#SkPoint_x">x</a>-axis value of <a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a>. + +### Return Value + +<a href="#SkPoint_fX">fX</a> + +### Example + +<div><fiddle-embed name="9f3fe446b800ae1d940785d438634941"> + +#### Example Output + +~~~~ +pt1.fX == pt1.x() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_y">y</a> <a href="#SkIPoint_x">SkIPoint::x()</a> + +--- + +<a name="SkPoint_y"></a> +## y + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar y() const +</pre> + +Returns <a href="#SkPoint_y">y</a>-axis value of <a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a>. + +### Return Value + +<a href="#SkPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="4c962850c2dbea4d2325df469400680e"> + +#### Example Output + +~~~~ +pt1.fY == pt1.y() +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_x">x</a> <a href="#SkIPoint_y">SkIPoint::y()</a> + +--- + +<a name="SkPoint_isZero"></a> +## isZero + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isZero() const +</pre> + +Returns true if <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a> are both zero. + +### Return Value + +true if <a href="#SkPoint_fX">fX</a> is zero and <a href="#SkPoint_fY">fY</a> is zero + +### Example + +<div><fiddle-embed name="81b9665110b88ef6bcbc20464aed7da1"> + +#### Example Output + +~~~~ +pt.fX=+0 pt.fY=-0 +pt.isZero() == true +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_isFinite">isFinite</a> <a href="#SkIPoint_isZero">SkIPoint::isZero</a> + +--- + +<a name="SkPoint_set"></a> +## set + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void set(SkScalar x, SkScalar y) +</pre> + +Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_x">x</a> and <a href="#SkPoint_fY">fY</a> to <a href="#SkPoint_y">y</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_set_x"> <code><strong>x </strong></code> </a></td> <td> +new value for <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_set_y"> <code><strong>y </strong></code> </a></td> <td> +new value for <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="d08d1e7dafcad4342d1619fdbb2f5781"> + +#### Example Output + +~~~~ +pt1 == pt2 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_iset">iset</a> <a href="#SkPoint_Make">Make</a> + +--- + +<a name="SkPoint_iset"></a> +## iset + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void iset(int32_t x, int32_t y) +</pre> + +Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_x">x</a> and <a href="#SkPoint_fY">fY</a> to <a href="#SkPoint_y">y</a>, promoting integers to <a href="undocumented#SkScalar">SkScalar</a> values. + +Assigning a large integer value directly to <a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_fY">fY</a> may cause a compiler +error, triggered by narrowing conversion of int to <a href="undocumented#SkScalar">SkScalar</a>. This safely +casts <a href="#SkPoint_x">x</a> and <a href="#SkPoint_y">y</a> to avoid the error. + +### Parameters + +<table> <tr> <td><a name="SkPoint_iset_x"> <code><strong>x </strong></code> </a></td> <td> +new value for <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_iset_y"> <code><strong>y </strong></code> </a></td> <td> +new value for <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="0d9e8ed734981b5b113f22c7bfde5357"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_set">set</a> <a href="#SkPoint_Make">Make</a> <a href="#SkIPoint_set">SkIPoint::set</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void iset(const SkIPoint& p) +</pre> + +Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a> to <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fY">fY</a>, promoting integers to <a href="undocumented#SkScalar">SkScalar</a> values. + +Assigning an <a href="SkIPoint_Reference#IPoint">IPoint</a> containing a large integer value directly to <a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_fY">fY</a> may +cause a compiler error, triggered by narrowing conversion of int to <a href="undocumented#SkScalar">SkScalar</a>. +This safely casts <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fY">fY</a> to avoid the error. + +### Parameters + +<table> <tr> <td><a name="SkPoint_iset_2_p"> <code><strong>p </strong></code> </a></td> <td> +<a href="SkIPoint_Reference#IPoint">IPoint</a> members promoted to <a href="undocumented#SkScalar">SkScalar</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="12b7164a769e232bb772f19c59600ee7"> + +#### Example Output + +~~~~ +iPt: -2147483647, 2147483647 +fPt: -2.14748e+09, 2.14748e+09 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_set">set</a> <a href="#SkPoint_Make">Make</a> <a href="#SkIPoint_set">SkIPoint::set</a> + +--- + +<a name="SkPoint_setAbs"></a> +## setAbs + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void setAbs(const SkPoint& pt) +</pre> + +Sets <a href="#SkPoint_fX">fX</a> to absolute value of <a href="#SkPoint_setAbs_pt">pt</a>.<a href="#SkPoint_fX">fX</a>; and <a href="#SkPoint_fY">fY</a> to absolute value of <a href="#SkPoint_setAbs_pt">pt</a>.<a href="#SkPoint_fY">fY</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_setAbs_pt"> <code><strong>pt </strong></code> </a></td> <td> +members providing magnitude for <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="7f70860e820b67a347cff03c00488426"> + +#### Example Output + +~~~~ +pt: 0, -0 abs: 0, 0 +pt: -1, -2 abs: 1, 2 +pt: inf, -inf abs: inf, inf +pt: nan, -nan abs: nan, nan +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_set">set</a> <a href="#SkPoint_Make">Make</a> <a href="#SkPoint_negate">negate</a> + +--- + +<a name="SkPoint_Offset"></a> +## Offset + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static void Offset(SkPoint points[], int count, const SkVector& offset) +</pre> + +Adds <a href="#SkPoint_offset">offset</a> to each <a href="#Point">Point</a> in <a href="#SkPoint_Offset_points">points</a> array with <a href="#SkPoint_Offset_count">count</a> entries. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Offset_points"> <code><strong>points </strong></code> </a></td> <td> +<a href="#Point">Point</a> array</td> + </tr> <tr> <td><a name="SkPoint_Offset_count"> <code><strong>count </strong></code> </a></td> <td> +entries in array</td> + </tr> <tr> <td><a name="SkPoint_Offset_offset"> <code><strong>offset </strong></code> </a></td> <td> +<a href="SkPoint_Reference#Vector">Vector</a> added to <a href="#SkPoint_Offset_points">points</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="f0f24726df78a5d797bcf311e694a0a3"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_offset">offset</a> <a href="#SkPoint_addto_operator">operator+=(const SkVector& v)</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static void Offset(SkPoint points[], int count, SkScalar dx, SkScalar dy) +</pre> + +Adds <a href="#SkPoint_offset">offset</a> (<a href="#SkPoint_Offset_2_dx">dx</a>, <a href="#SkPoint_Offset_2_dy">dy</a>) to each <a href="#Point">Point</a> in <a href="#SkPoint_Offset_2_points">points</a> array of <a href="#SkPoint_length">length</a> <a href="#SkPoint_Offset_2_count">count</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Offset_2_points"> <code><strong>points </strong></code> </a></td> <td> +<a href="#Point">Point</a> array</td> + </tr> <tr> <td><a name="SkPoint_Offset_2_count"> <code><strong>count </strong></code> </a></td> <td> +entries in array</td> + </tr> <tr> <td><a name="SkPoint_Offset_2_dx"> <code><strong>dx </strong></code> </a></td> <td> +added to <a href="#SkPoint_fX">fX</a> in <a href="#SkPoint_Offset_2_points">points</a></td> + </tr> <tr> <td><a name="SkPoint_Offset_2_dy"> <code><strong>dy </strong></code> </a></td> <td> +added to <a href="#SkPoint_fY">fY</a> in <a href="#SkPoint_Offset_2_points">points</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="532849faa838de885b86d3ebffae3712"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_offset">offset</a> <a href="#SkPoint_addto_operator">operator+=(const SkVector& v)</a> + +--- + +<a name="SkPoint_offset"></a> +## offset + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void offset(SkScalar dx, SkScalar dy) +</pre> + +Adds <a href="#SkPoint_offset">offset</a> (<a href="#SkPoint_offset_dx">dx</a>, <a href="#SkPoint_offset_dy">dy</a>) to <a href="#Point">Point</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_offset_dx"> <code><strong>dx </strong></code> </a></td> <td> +added to <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_offset_dy"> <code><strong>dy </strong></code> </a></td> <td> +added to <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="02750ceaa874f956e6e6544ef6b858ee"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_Offset">Offset</a> <a href="#SkPoint_addto_operator">operator+=(const SkVector& v)</a> + +--- + +<a name="SkPoint_length"></a> +## length + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar length() const +</pre> + +Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as: + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sqrt(fX * fX + fY * fY)</pre> + +. + +### Return Value + +straight-line distance to origin + +### Example + +<div><fiddle-embed name="8363ab179447ee4b827679e20d3d81eb"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_distanceToOrigin">distanceToOrigin</a> <a href="#SkPoint_Length">Length</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_Distance">Distance</a> + +--- + +<a name="SkPoint_distanceToOrigin"></a> +## distanceToOrigin + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar distanceToOrigin() const +</pre> + +Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as: + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sqrt(fX * fX + fY * fY)</pre> + +. + +### Return Value + +straight-line distance to origin + +### Example + +<div><fiddle-embed name="812cf26d91b1cdcd2c6b9438a8172518"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_length">length</a> <a href="#SkPoint_Length">Length</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_Distance">Distance</a> + +--- + +<a name="SkPoint_normalize"></a> +## normalize + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool normalize() +</pre> + +Scales (<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_fY">fY</a>) so that <a href="#SkPoint_length">length</a> returns one, while preserving ratio of <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_fY">fY</a>, +if possible. If prior <a href="#SkPoint_length">length</a> is nearly zero, sets <a href="SkPoint_Reference#Vector">Vector</a> to (0, 0) and returns +false; otherwise returns true. + +### Return Value + +true if former <a href="#SkPoint_length">length</a> is not zero or nearly zero + +### Example + +<div><fiddle-embed name="d84fce292d86c7d9ef37ae2d179c03c7"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_Normalize">Normalize</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_length">length</a> <a href="#SkPoint_Length">Length</a> + +--- + +<a name="SkPoint_setNormalize"></a> +## setNormalize + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool setNormalize(SkScalar x, SkScalar y) +</pre> + +Sets <a href="SkPoint_Reference#Vector">Vector</a> to (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) scaled so <a href="#SkPoint_length">length</a> returns one, and so that +(<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_fY">fY</a>) is proportional to (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>). If (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) <a href="#SkPoint_length">length</a> is nearly zero, +sets <a href="SkPoint_Reference#Vector">Vector</a> to (0, 0) and returns false; otherwise returns true. + +### Parameters + +<table> <tr> <td><a name="SkPoint_setNormalize_x"> <code><strong>x </strong></code> </a></td> <td> +proportional value for <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_setNormalize_y"> <code><strong>y </strong></code> </a></td> <td> +proportional value for <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Return Value + +true if (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) <a href="#SkPoint_length">length</a> is not zero or nearly zero + +### Example + +<div><fiddle-embed name="3e4f147d143a388802484bf0d26534c2"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_normalize">normalize</a> <a href="#SkPoint_setLength">setLength</a> + +--- + +<a name="SkPoint_setLength"></a> +## setLength + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool setLength(SkScalar length) +</pre> + +Scales <a href="SkPoint_Reference#Vector">Vector</a> so that <a href="#SkPoint_distanceToOrigin">distanceToOrigin</a> returns <a href="#SkPoint_length">length</a>, if possible. If former +<a href="#SkPoint_length">length</a> is nearly zero, sets <a href="SkPoint_Reference#Vector">Vector</a> to (0, 0) and return false; otherwise returns +true. + +### Parameters + +<table> <tr> <td><a name="SkPoint_setLength_length"> <code><strong>length </strong></code> </a></td> <td> +straight-line distance to origin</td> + </tr> +</table> + +### Return Value + +true if former <a href="#SkPoint_length">length</a> is not zero or nearly zero + +### Example + +<div><fiddle-embed name="cbe7db206ece825aa3b9b7c3256aeaf0"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_length">length</a> <a href="#SkPoint_Length">Length</a> <a href="#SkPoint_setNormalize">setNormalize</a> <a href="#SkPoint_setAbs">setAbs</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool setLength(SkScalar x, SkScalar y, SkScalar length) +</pre> + +Sets <a href="SkPoint_Reference#Vector">Vector</a> to (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) scaled to <a href="#SkPoint_length">length</a>, if possible. If former +<a href="#SkPoint_length">length</a> is nearly zero, sets <a href="SkPoint_Reference#Vector">Vector</a> to (0, 0) and return false; otherwise returns +true. + +### Parameters + +<table> <tr> <td><a name="SkPoint_setLength_2_x"> <code><strong>x </strong></code> </a></td> <td> +proportional value for <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_setLength_2_y"> <code><strong>y </strong></code> </a></td> <td> +proportional value for <a href="#SkPoint_fY">fY</a></td> + </tr> <tr> <td><a name="SkPoint_setLength_2_length"> <code><strong>length </strong></code> </a></td> <td> +straight-line distance to origin</td> + </tr> +</table> + +### Return Value + +true if (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) <a href="#SkPoint_length">length</a> is not zero or nearly zero + +### Example + +<div><fiddle-embed name="3cc0662b6fbbee1fe3442a0acfece22c"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_length">length</a> <a href="#SkPoint_Length">Length</a> <a href="#SkPoint_setNormalize">setNormalize</a> <a href="#SkPoint_setAbs">setAbs</a> + +--- + +<a name="SkPoint_scale"></a> +## scale + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void scale(SkScalar scale, SkPoint* dst) const +</pre> + +Sets <a href="#SkPoint_scale_dst">dst</a> to <a href="#Point">Point</a> times <a href="#SkPoint_scale">scale</a>. <a href="#SkPoint_scale_dst">dst</a> may be <a href="#Point">Point</a> to modify <a href="#Point">Point</a> in place. + +### Parameters + +<table> <tr> <td><a name="SkPoint_scale_scale"> <code><strong>scale </strong></code> </a></td> <td> +factor to multiply <a href="#Point">Point</a> by</td> + </tr> <tr> <td><a name="SkPoint_scale_dst"> <code><strong>dst </strong></code> </a></td> <td> +storage for scaled <a href="#Point">Point</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="972e4e230806281adb928e068bcd8551"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_multiply_operator">operator*(SkScalar scale) const</a> <a href="#SkPoint_multiplyby_operator">operator*=(SkScalar scale)</a> <a href="#SkPoint_setLength">setLength</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void scale(SkScalar value) +</pre> + +Scales <a href="#Point">Point</a> in place by <a href="#SkPoint_scale">scale</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_scale_2_value"> <code><strong>value </strong></code> </a></td> <td> +factor to multiply <a href="#Point">Point</a> by</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="1060a4f27d8ef29519e6ac006ce90f2b"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_multiply_operator">operator*(SkScalar scale) const</a> <a href="#SkPoint_multiplyby_operator">operator*=(SkScalar scale)</a> <a href="#SkPoint_setLength">setLength</a> + +--- + +<a name="SkPoint_negate"></a> +## negate + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void negate() +</pre> + +Changes the sign of <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a>. + +### Example + +<div><fiddle-embed name="312c0c8065ab5d0adfda80cccf2d11e6"> + +#### Example Output + +~~~~ +pt: 0, -0 negate: -0, 0 +pt: -1, -2 negate: 1, 2 +pt: inf, -inf negate: -inf, inf +pt: nan, -nan negate: -nan, nan +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_minus_operator">operator-() const</a> <a href="#SkPoint_setAbs">setAbs</a> + +--- + +<a name="SkPoint_minus_operator"></a> +## operator- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkPoint operator-() _const +</pre> + +Returns <a href="#Point">Point</a> changing the signs of <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a>. + +### Return Value + +<a href="#Point">Point</a> as (-<a href="#SkPoint_fX">fX</a>, -<a href="#SkPoint_fY">fY</a>) + +### Example + +<div><fiddle-embed name="9baf247cfcd8272c0ddf6ce93f676b37"> + +#### Example Output + +~~~~ +pt: 0, -0 negate: -0, 0 +pt: -1, -2 negate: 1, 2 +pt: inf, -inf negate: -inf, inf +pt: nan, -nan negate: -nan, nan +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_negate">negate</a> <a href="#SkPoint_subtract_operator">operator-(const SkPoint& a, const SkPoint& b)</a> <a href="#SkPoint_subtractfrom_operator">operator-=(const SkVector& v)</a> <a href="#SkIPoint_minus_operator">SkIPoint::operator-() const</a> + +--- + +<a name="SkPoint_addto_operator"></a> +## operator+= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void operator+=(const SkVector& v) +</pre> + +Adds <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_addto_operator_v">v</a> to <a href="#Point">Point</a>. Sets <a href="#Point">Point</a> to: +(<a href="#SkPoint_fX">fX</a> + <a href="#SkPoint_addto_operator_v">v</a>.<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_fY">fY</a> + <a href="#SkPoint_addto_operator_v">v</a>.<a href="#SkPoint_fY">fY</a>). + +### Parameters + +<table> <tr> <td><a name="SkPoint_addto_operator_v"> <code><strong>v </strong></code> </a></td> <td> +<a href="SkPoint_Reference#Vector">Vector</a> to add</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="8b4e79109e2381345258cb744881b20c"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_offset">offset</a> <a href="#SkPoint_add_operator">operator+(const SkPoint& a, const SkVector& b)</a> <a href="#SkIPoint_addto_operator">SkIPoint::operator+=(const SkIVector& v)</a> + +--- + +<a name="SkPoint_subtractfrom_operator"></a> +## operator-= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void operator-=(const SkVector& v) +</pre> + +Subtracts <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_subtractfrom_operator_v">v</a> from <a href="#Point">Point</a>. Sets <a href="#Point">Point</a> to: +(<a href="#SkPoint_fX">fX</a> - <a href="#SkPoint_subtractfrom_operator_v">v</a>.<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_fY">fY</a> - <a href="#SkPoint_subtractfrom_operator_v">v</a>.<a href="#SkPoint_fY">fY</a>). + +### Parameters + +<table> <tr> <td><a name="SkPoint_subtractfrom_operator_v"> <code><strong>v </strong></code> </a></td> <td> +<a href="SkPoint_Reference#Vector">Vector</a> to subtract</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="86c0399704d8dff4091bf87b8d87d40b"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_offset">offset</a> <a href="#SkPoint_subtract_operator">operator-(const SkPoint& a, const SkPoint& b)</a> <a href="#SkIPoint_subtractfrom_operator">SkIPoint::operator-=(const SkIVector& v)</a> + +--- + +<a name="SkPoint_multiply_operator"></a> +## operator* + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkPoint operator*(SkScalar scale) _const +</pre> + +Returns <a href="#Point">Point</a> multiplied by <a href="#SkPoint_scale">scale</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_multiply_operator_scale"> <code><strong>scale </strong></code> </a></td> <td> +<a href="#Scalar">Scalar</a> to multiply by</td> + </tr> +</table> + +### Return Value + +<a href="#Point">Point</a> as (<a href="#SkPoint_fX">fX</a> * <a href="#SkPoint_scale">scale</a>, <a href="#SkPoint_fY">fY</a> * <a href="#SkPoint_scale">scale</a>) + +### Example + +<div><fiddle-embed name="35b3bc675779de043706ae4817ee950c"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_multiplyby_operator">operator*=(SkScalar scale)</a> <a href="#SkPoint_scale">scale</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_setNormalize">setNormalize</a> + +--- + +<a name="SkPoint_multiplyby_operator"></a> +## operator*= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkPoint& operator*=(SkScalar scale) +</pre> + +Multiplies <a href="#Point">Point</a> by <a href="#SkPoint_scale">scale</a>. Sets <a href="#Point">Point</a> to: +(<a href="#SkPoint_fX">fX</a> * <a href="#SkPoint_scale">scale</a>, <a href="#SkPoint_fY">fY</a> * <a href="#SkPoint_scale">scale</a>) + +### Parameters + +<table> <tr> <td><a name="SkPoint_multiplyby_operator_scale"> <code><strong>scale </strong></code> </a></td> <td> +<a href="#Scalar">Scalar</a> to multiply by</td> + </tr> +</table> + +### Return Value + +reference to <a href="#Point">Point</a> + +### Example + +<div><fiddle-embed name="3ce3db36235d80dbac4d39504cf756da"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_multiply_operator">operator*(SkScalar scale) const</a> <a href="#SkPoint_scale">scale</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_setNormalize">setNormalize</a> + +--- + +<a name="SkPoint_isFinite"></a> +## isFinite + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isFinite() const +</pre> + +Returns true if both <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</a> are measurable values. + +### Return Value + +true for values other than infinities and <a href="undocumented#NaN">NaN</a> + +### Example + +<div><fiddle-embed name="937cc166cc0e220f33fb82501141d0b3"> + +#### Example Output + +~~~~ +pt: 0, -0 finite: true +pt: -1, -2 finite: true +pt: inf, 1 finite: false +pt: nan, -1 finite: false +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkRect_isFinite">SkRect::isFinite</a> <a href="#SkPath_isFinite">SkPath::isFinite</a> + +--- + +<a name="SkPoint_equals"></a> +## equals + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool equals(SkScalar x, SkScalar y) const +</pre> + +Returns true if <a href="#Point">Point</a> is equivalent to <a href="#Point">Point</a> constructed from (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>). + +### Parameters + +<table> <tr> <td><a name="SkPoint_equals_x"> <code><strong>x </strong></code> </a></td> <td> +value compared with <a href="#SkPoint_fX">fX</a></td> + </tr> <tr> <td><a name="SkPoint_equals_y"> <code><strong>y </strong></code> </a></td> <td> +value compared with <a href="#SkPoint_fY">fY</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#Point">Point</a> <a href="#SkPoint_equals">equals</a> (<a href="#SkPoint_x">x</a>, <a href="#SkPoint_y">y</a>) + +### Example + +<div><fiddle-embed name="4cecb878c8b66beffda051f26c00f817"> + +#### Example Output + +~~~~ +pt: 0, -0 == pt +pt: -1, -2 == pt +pt: inf, 1 == pt +pt: nan, -1 != pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_equal_operator">operator==(const SkPoint& a, const SkPoint& b)</a> + +--- + +<a name="SkPoint_equal_operator"></a> +## operator== + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool operator==(const SkPoint& a, const SkPoint& b) +</pre> + +Returns true if <a href="#SkPoint_equal_operator_a">a</a> is equivalent to <a href="#SkPoint_equal_operator_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#Point">Point</a> to compare</td> + </tr> <tr> <td><a name="SkPoint_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#Point">Point</a> to compare</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkPoint_equal_operator_a">a</a>.<a href="#SkPoint_fX">fX</a> == <a href="#SkPoint_equal_operator_b">b</a>.<a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_equal_operator_a">a</a>.<a href="#SkPoint_fY">fY</a> == <a href="#SkPoint_equal_operator_b">b</a>.<a href="#SkPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="741f793334a48a35dadf4310d7ea52cb"> + +#### Example Output + +~~~~ +pt: 0, -0 == pt +pt: -1, -2 == pt +pt: inf, 1 == pt +pt: nan, -1 != pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_equals">equals</a> <a href="#SkPoint_notequal_operator">operator!=(const SkPoint& a, const SkPoint& b)</a> + +--- + +<a name="SkPoint_notequal_operator"></a> +## operator!= + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool operator!=(const SkPoint& a, const SkPoint& b) +</pre> + +Returns true if <a href="#SkPoint_notequal_operator_a">a</a> is not equivalent to <a href="#SkPoint_notequal_operator_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#Point">Point</a> to compare</td> + </tr> <tr> <td><a name="SkPoint_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#Point">Point</a> to compare</td> + </tr> +</table> + +### Return Value + +true if <a href="#SkPoint_notequal_operator_a">a</a>.<a href="#SkPoint_fX">fX</a> != <a href="#SkPoint_notequal_operator_b">b</a>.<a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_notequal_operator_a">a</a>.<a href="#SkPoint_fY">fY</a> != <a href="#SkPoint_notequal_operator_b">b</a>.<a href="#SkPoint_fY">fY</a> + +### Example + +<div><fiddle-embed name="8fe8572685eaa617f25a5a6767a874dc"> + +#### Example Output + +~~~~ +pt: 0, -0 == pt +pt: -1, -2 == pt +pt: inf, 1 == pt +pt: nan, -1 != pt +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkPoint_equal_operator">operator==(const SkPoint& a, const SkPoint& b)</a> <a href="#SkPoint_equals">equals</a> + +--- + +<a name="SkPoint_subtract_operator"></a> +## operator- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkVector operator-(const SkPoint& a, const SkPoint& b) +</pre> + +Returns <a href="SkPoint_Reference#Vector">Vector</a> from <a href="#SkPoint_subtract_operator_b">b</a> to <a href="#SkPoint_subtract_operator_a">a</a>, computed as(<a href="#SkPoint_subtract_operator_a">a</a>.<a href="#SkPoint_fX">fX</a> - <a href="#SkPoint_subtract_operator_b">b</a>.<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_subtract_operator_a">a</a>.<a href="#SkPoint_fY">fY</a> - <a href="#SkPoint_subtract_operator_b">b</a>.<a href="#SkPoint_fY">fY</a>). + +Can also be used to subtract <a href="SkPoint_Reference#Vector">Vector</a> from <a href="#Point">Point</a>, returning <a href="#Point">Point</a>. +Can also be used to subtract <a href="SkPoint_Reference#Vector">Vector</a> from <a href="SkPoint_Reference#Vector">Vector</a>, returning <a href="SkPoint_Reference#Vector">Vector</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_subtract_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#Point">Point</a> to subtract from</td> + </tr> <tr> <td><a name="SkPoint_subtract_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#Point">Point</a> to subtract</td> + </tr> +</table> + +### Return Value + +<a href="SkPoint_Reference#Vector">Vector</a> from <a href="#SkPoint_subtract_operator_b">b</a> to <a href="#SkPoint_subtract_operator_a">a</a> + +### Example + +<div><fiddle-embed name="b6c4943ecd0b2dccf9d220b8944009e0"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_subtractfrom_operator">operator-=(const SkVector& v)</a> <a href="#SkPoint_offset">offset</a> + +--- + +<a name="SkPoint_add_operator"></a> +## operator+ + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkPoint operator+(const SkPoint& a, const SkVector& b) +</pre> + +Returns <a href="#Point">Point</a> resulting from <a href="#Point">Point</a> <a href="#SkPoint_add_operator_a">a</a> <a href="#SkPoint_offset">offset</a> by <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_add_operator_b">b</a>, computed as: +(<a href="#SkPoint_add_operator_a">a</a>.<a href="#SkPoint_fX">fX</a> + <a href="#SkPoint_add_operator_b">b</a>.<a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_add_operator_a">a</a>.<a href="#SkPoint_fY">fY</a> + <a href="#SkPoint_add_operator_b">b</a>.<a href="#SkPoint_fY">fY</a>). + +Can also be used to <a href="#SkPoint_offset">offset</a> <a href="#Point">Point</a> <a href="#SkPoint_add_operator_b">b</a> by <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_add_operator_a">a</a>, returning <a href="#Point">Point</a>. +Can also be used to add <a href="SkPoint_Reference#Vector">Vector</a> to <a href="SkPoint_Reference#Vector">Vector</a>, returning <a href="SkPoint_Reference#Vector">Vector</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_add_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a> to add to</td> + </tr> <tr> <td><a name="SkPoint_add_operator_b"> <code><strong>b </strong></code> </a></td> <td> +<a href="#Point">Point</a> or <a href="SkPoint_Reference#Vector">Vector</a> to add</td> + </tr> +</table> + +### Return Value + +<a href="#Point">Point</a> equal to <a href="#SkPoint_add_operator_a">a</a> <a href="#SkPoint_offset">offset</a> by <a href="#SkPoint_add_operator_b">b</a> + +### Example + +<div><fiddle-embed name="911a84253dfec4dabf94dbe3c71766f0"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_addto_operator">operator+=(const SkVector& v)</a> <a href="#SkPoint_offset">offset</a> + +--- + +<a name="SkPoint_Length"></a> +## Length + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkScalar Length(SkScalar x, SkScalar y) +</pre> + +Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as: + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sqrt(x * x + y * y)</pre> + +. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Length_x"> <code><strong>x </strong></code> </a></td> <td> +component of <a href="#SkPoint_length">length</a></td> + </tr> <tr> <td><a name="SkPoint_Length_y"> <code><strong>y </strong></code> </a></td> <td> +component of <a href="#SkPoint_length">length</a></td> + </tr> +</table> + +### Return Value + +straight-line distance to origin + +### Example + +<div><fiddle-embed name="c98773d8b4509969d78cb8121e4b77f6"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_length">length</a> <a href="#SkPoint_Distance">Distance</a> <a href="#SkPoint_setLength">setLength</a> + +--- + +<a name="SkPoint_Normalize"></a> +## Normalize + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkScalar Normalize(SkVector* vec) +</pre> + +Scales (<a href="#SkPoint_Normalize_vec">vec</a>-><a href="#SkPoint_fX">fX</a>, <a href="#SkPoint_Normalize_vec">vec</a>-><a href="#SkPoint_fY">fY</a>) so that <a href="#SkPoint_length">length</a> returns one, while preserving ratio of <a href="#SkPoint_Normalize_vec">vec</a>-><a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_Normalize_vec">vec</a>-><a href="#SkPoint_fY">fY</a>, +if possible. If original <a href="#SkPoint_length">length</a> is nearly zero, sets <a href="#SkPoint_Normalize_vec">vec</a> to (0, 0) and returns zero; +otherwise, returns <a href="#SkPoint_length">length</a> of <a href="#SkPoint_Normalize_vec">vec</a> before <a href="#SkPoint_Normalize_vec">vec</a> is scaled. + +Returned prior <a href="#SkPoint_length">length</a> may be <a href="undocumented#SK_ScalarInfinity">SK ScalarInfinity</a> if it can not be represented by <a href="undocumented#SkScalar">SkScalar</a>. + +Note that <a href="#SkPoint_normalize">normalize</a> is faster if prior <a href="#SkPoint_length">length</a> is not required. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Normalize_vec"> <code><strong>vec </strong></code> </a></td> <td> +normalized to unit <a href="#SkPoint_length">length</a></td> + </tr> +</table> + +### Return Value + +original <a href="#SkPoint_Normalize_vec">vec</a> <a href="#SkPoint_length">length</a> + +### Example + +<div><fiddle-embed name="60a08f3ce75374fc815384616d114df7"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_normalize">normalize</a> <a href="#SkPoint_setLength">setLength</a> <a href="#SkPoint_Length">Length</a> + +--- + +<a name="SkPoint_Distance"></a> +## Distance + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkScalar Distance(const SkPoint& a, const SkPoint& b) +</pre> + +Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> between <a href="#SkPoint_Distance_a">a</a> and <a href="#SkPoint_Distance_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_Distance_a"> <code><strong>a </strong></code> </a></td> <td> +line end point</td> + </tr> <tr> <td><a name="SkPoint_Distance_b"> <code><strong>b </strong></code> </a></td> <td> +line end point</td> + </tr> +</table> + +### Return Value + +straight-line distance from <a href="#SkPoint_Distance_a">a</a> to <a href="#SkPoint_Distance_b">b</a> + +### Example + +<div><fiddle-embed name="9e0a2de2eb94dba4521d733e73f2bda5"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_length">length</a> <a href="#SkPoint_setLength">setLength</a> + +--- + +<a name="SkPoint_DotProduct"></a> +## DotProduct + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkScalar DotProduct(const SkVector& a, const SkVector& b) +</pre> + +Returns the <a href="#SkPoint_dot">dot</a> product of <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_DotProduct_a">a</a> and <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_DotProduct_b">b</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_DotProduct_a"> <code><strong>a </strong></code> </a></td> <td> +left side of <a href="#SkPoint_dot">dot</a> product</td> + </tr> <tr> <td><a name="SkPoint_DotProduct_b"> <code><strong>b </strong></code> </a></td> <td> +right side of <a href="#SkPoint_dot">dot</a> product</td> + </tr> +</table> + +### Return Value + +product of input magnitudes and cosine of the angle between them + +### Example + +<div><fiddle-embed name="496db0131a003162faba7d7f98b30340"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_dot">dot</a> <a href="#SkPoint_CrossProduct">CrossProduct</a> + +--- + +<a name="SkPoint_CrossProduct"></a> +## CrossProduct + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkScalar CrossProduct(const SkVector& a, const SkVector& b) +</pre> + +Returns the <a href="#SkPoint_cross">cross</a> product of <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_CrossProduct_a">a</a> and <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_CrossProduct_b">b</a>. + +<a href="#SkPoint_CrossProduct_a">a</a> and <a href="#SkPoint_CrossProduct_b">b</a> form three-dimensional vectors with z equal to zero. The <a href="#SkPoint_cross">cross</a> product +is <a href="#SkPoint_CrossProduct_a">a</a> three-dimensional vector with <a href="#SkPoint_x">x</a> and <a href="#SkPoint_y">y</a> equal to zero. The <a href="#SkPoint_cross">cross</a> product z +term <a href="#SkPoint_equals">equals</a> the returned value. + +### Parameters + +<table> <tr> <td><a name="SkPoint_CrossProduct_a"> <code><strong>a </strong></code> </a></td> <td> +left side of <a href="#SkPoint_cross">cross</a> product</td> + </tr> <tr> <td><a name="SkPoint_CrossProduct_b"> <code><strong>b </strong></code> </a></td> <td> +right side of <a href="#SkPoint_cross">cross</a> product</td> + </tr> +</table> + +### Return Value + +area spanned by <a href="#Vector">Vectors</a> signed by angle direction + +### Example + +<div><fiddle-embed name="8b8a4cd8a29d22bb9c5e63b70357bd65"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_cross">cross</a> <a href="#SkPoint_DotProduct">DotProduct</a> + +--- + +<a name="SkPoint_cross"></a> +## cross + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar cross(const SkVector& vec) const +</pre> + +Returns the <a href="#SkPoint_cross">cross</a> product of <a href="SkPoint_Reference#Vector">Vector</a> and <a href="#SkPoint_cross_vec">vec</a>. + +<a href="SkPoint_Reference#Vector">Vector</a> and <a href="#SkPoint_cross_vec">vec</a> form three-dimensional vectors with z equal to zero. The +<a href="#SkPoint_cross">cross</a> product is a three-dimensional vector with <a href="#SkPoint_x">x</a> and <a href="#SkPoint_y">y</a> equal to zero. +The <a href="#SkPoint_cross">cross</a> product z term <a href="#SkPoint_equals">equals</a> the returned value. + +### Parameters + +<table> <tr> <td><a name="SkPoint_cross_vec"> <code><strong>vec </strong></code> </a></td> <td> +right side of <a href="#SkPoint_cross">cross</a> product</td> + </tr> +</table> + +### Return Value + +area spanned by <a href="#Vector">Vectors</a> signed by angle direction + +### Example + +<div><fiddle-embed name="0bc7b3997357e499817278b78bdfbf1d"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_CrossProduct">CrossProduct</a> <a href="#SkPoint_dot">dot</a> + +--- + +<a name="SkPoint_dot"></a> +## dot + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkScalar dot(const SkVector& vec) const +</pre> + +Returns the <a href="#SkPoint_dot">dot</a> product of <a href="SkPoint_Reference#Vector">Vector</a> and <a href="SkPoint_Reference#Vector">Vector</a> <a href="#SkPoint_dot_vec">vec</a>. + +### Parameters + +<table> <tr> <td><a name="SkPoint_dot_vec"> <code><strong>vec </strong></code> </a></td> <td> +right side of <a href="#SkPoint_dot">dot</a> product</td> + </tr> +</table> + +### Return Value + +product of input magnitudes and cosine of the angle between them + +### Example + +<div><fiddle-embed name="56d01ccfedd71d3c504b09afa2875d38"></fiddle-embed></div> + +### See Also + +<a href="#SkPoint_DotProduct">DotProduct</a> <a href="#SkPoint_cross">cross</a> + +--- + diff --git a/site/user/api/SkRect_Reference.md b/site/user/api/SkRect_Reference.md index fe1f090331..569603d9d3 100644 --- a/site/user/api/SkRect_Reference.md +++ b/site/user/api/SkRect_Reference.md @@ -24,8 +24,8 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit | description | function | | --- | --- | -| bool <a href="#SkRect_not_equal_operator">operator!=(const SkRect& a, const SkRect& b)</a> | Returns true if member bits are unequal. | -| bool <a href="#SkRect_equal_operator">operator==(const SkRect& a, const SkRect& b)</a> | Returns true if member bits are equal. | +| bool <a href="#SkRect_notequal_operator">operator!=(const SkRect& a, const SkRect& b)</a> | Returns true if members are unequal. | +| bool <a href="#SkRect_equal_operator">operator==(const SkRect& a, const SkRect& b)</a> | Returns true if members are equal. | ## <a name="Member_Functions"></a> Member Functions @@ -76,8 +76,8 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit | <a href="#SkRect_roundIn">roundIn</a> | Sets members to nearest integer value towards opposite. | | <a href="#SkRect_roundOut">roundOut</a> | Sets members to nearest integer value away from opposite. | | <a href="#SkRect_set">set</a> | Sets to <a href="undocumented#SkScalar">SkScalar</a> input (<a href="#SkRect_left">left</a>, <a href="#SkRect_top">top</a>, <a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>) and others. | -| <a href="#SkRect_setBounds">setBounds</a> | Sets to upper and lower limits of <a href="undocumented#Point">Point</a> array. | -| <a href="#SkRect_setBoundsCheck">setBoundsCheck</a> | Sets to upper and lower limits of <a href="undocumented#Point">Point</a> array. | +| <a href="#SkRect_setBounds">setBounds</a> | Sets to upper and lower limits of <a href="SkPoint_Reference#Point">Point</a> array. | +| <a href="#SkRect_setBoundsCheck">setBoundsCheck</a> | Sets to upper and lower limits of <a href="SkPoint_Reference#Point">Point</a> array. | | <a href="#SkRect_setEmpty">setEmpty</a> | Sets to (0, 0, 0, 0). | | <a href="#SkRect_setLTRB">setLTRB</a> | Sets to <a href="undocumented#SkScalar">SkScalar</a> input (<a href="#SkRect_left">left</a>, <a href="#SkRect_top">top</a>, <a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>). | | <a href="#SkRect_setLargest">setLargest</a> | Sets to (<a href="undocumented#SK_ScalarMin">SK ScalarMin</a>, <a href="undocumented#SK_ScalarMin">SK ScalarMin</a>, <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>, <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>). | @@ -85,7 +85,7 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit | <a href="#SkRect_setWH">setWH</a> | Sets to <a href="undocumented#SkScalar">SkScalar</a> input (0, 0, <a href="#SkRect_width">width</a>, <a href="#SkRect_height">height</a>). | | <a href="#SkRect_setXYWH">setXYWH</a> | Sets to <a href="undocumented#SkScalar">SkScalar</a> input (<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_width">width</a>, <a href="#SkRect_height">height</a>). | | <a href="#SkRect_sort">sort</a> | Orders sides from smaller to larger. | -| <a href="#SkRect_toQuad">toQuad</a> | Returns four corners as <a href="undocumented#Point">Point</a>. | +| <a href="#SkRect_toQuad">toQuad</a> | Returns four corners as <a href="SkPoint_Reference#Point">Point</a>. | | <a href="#SkRect_top">top</a> | Returns smaller bounds in <a href="#SkRect_y">y</a>, if sorted. | | <a href="#SkRect_width">width</a> | Returns span in <a href="#SkRect_x">x</a>. | | <a href="#SkRect_x">x</a> | Returns bounds <a href="#SkRect_left">left</a>. | @@ -114,7 +114,7 @@ vertical values when sorted. When equal to or less than <a href="#SkRect_fTop">f <a name="SkRect_MakeEmpty"></a> ## MakeEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkRect SK_WARN_UNUSED_RESULT MakeEmpty() </pre> @@ -151,7 +151,7 @@ outset rect isEmpty: false <a name="SkRect_MakeLargest"></a> ## MakeLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect SK_WARN_UNUSED_RESULT MakeLargest() </pre> @@ -188,7 +188,7 @@ outset a little more isFinite: false <a name="SkRect_MakeLargestS32"></a> ## MakeLargestS32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect SK_WARN_UNUSED_RESULT MakeLargestS32() </pre> @@ -225,7 +225,7 @@ f_rect == r_rect <a name="SkRect_MakeWH"></a> ## MakeWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkRect SK_WARN_UNUSED_RESULT MakeWH(SkScalar w, SkScalar h) </pre> @@ -269,7 +269,7 @@ all equal <a name="SkRect_MakeIWH"></a> ## MakeIWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect SK_WARN_UNUSED_RESULT MakeIWH(int w, int h) </pre> @@ -314,7 +314,7 @@ i_rect width: 125000111 f_rect width:125000112 <a name="SkRect_MakeSize"></a> ## MakeSize -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static constexpr SkRect SK_WARN_UNUSED_RESULT MakeSize(const SkSize& size) </pre> @@ -354,9 +354,8 @@ floor width: 25 height: 35 <a name="SkRect_MakeLTRB"></a> ## MakeLTRB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static constexpr SkRect SK_WARN_UNUSED_RESULT MakeLTRB(SkScalar l, SkScalar t, - SkScalar r, SkScalar b) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkRect SK_WARN_UNUSED_RESULT MakeLTRB(SkScalar l, SkScalar t, SkScalar r, SkScalar b) </pre> Returns constructed <a href="#Rect">Rect</a> <a href="#SkRect_set">set</a> to (<a href="#SkRect_MakeLTRB_l">l</a>, <a href="#SkRect_MakeLTRB_t">t</a>, <a href="#SkRect_MakeLTRB_r">r</a>, <a href="#SkRect_MakeLTRB_b">b</a>). Does not <a href="#SkRect_sort">sort</a> input; <a href="#Rect">Rect</a> may @@ -401,9 +400,8 @@ rect: 5, 25, 15, 35 isEmpty: false <a name="SkRect_MakeXYWH"></a> ## MakeXYWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static constexpr SkRect SK_WARN_UNUSED_RESULT MakeXYWH(SkScalar x, SkScalar y, - SkScalar w, SkScalar h) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static constexpr SkRect SK_WARN_UNUSED_RESULT MakeXYWH(SkScalar x, SkScalar y, SkScalar w, SkScalar h) </pre> Returns constructed <a href="#Rect">Rect</a> <a href="#SkRect_set">set</a> to(<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_x">x</a> + <a href="#SkRect_MakeXYWH_w">w</a>, <a href="#SkRect_y">y</a> + <a href="#SkRect_MakeXYWH_h">h</a>). @@ -449,7 +447,7 @@ rect: -10, 35, 5, 60 isEmpty: false <a name="SkRect_MakeFromIRect"></a> ## MakeFromIRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect SK_WARN_UNUSED_RESULT MakeFromIRect(const SkIRect& irect) </pre> @@ -475,7 +473,7 @@ integer rect</td> <a name="SkRect_Make"></a> ## Make -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect Make(const SkISize& size) </pre> @@ -511,7 +509,7 @@ rect1 == rect2 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static SkRect SK_WARN_UNUSED_RESULT Make(const SkIRect& irect) </pre> @@ -543,7 +541,7 @@ integer unsorted bounds</td> <a name="SkRect_isEmpty"></a> ## isEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isEmpty() const </pre> @@ -579,7 +577,7 @@ sorted: {20, 40, 20, 50} is empty <a name="SkRect_isSorted"></a> ## isSorted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isSorted() const </pre> @@ -615,7 +613,7 @@ sorted: {20, 40, 20, 50} is sorted <a name="SkRect_isLargest"></a> ## isLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isLargest() const </pre> @@ -650,7 +648,7 @@ large is finite: true <a name="SkRect_isFinite"></a> ## isFinite -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isFinite() const </pre> @@ -684,7 +682,7 @@ widest is finite: false <a name="SkRect_x"></a> ## x -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar x() const </pre> @@ -717,7 +715,7 @@ sorted.fLeft: 10 sorted.x(): 10 <a name="SkRect_y"></a> ## y -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar y() const </pre> @@ -750,7 +748,7 @@ sorted.fTop: 5 sorted.y(): 5 <a name="SkRect_left"></a> ## left -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar left() const </pre> @@ -783,7 +781,7 @@ sorted.fLeft: 10 sorted.left(): 10 <a name="SkRect_top"></a> ## top -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar top() const </pre> @@ -816,7 +814,7 @@ sorted.fTop: 5 sorted.top(): 5 <a name="SkRect_right"></a> ## right -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar right() const </pre> @@ -849,7 +847,7 @@ sorted.fRight: 15 sorted.right(): 15 <a name="SkRect_bottom"></a> ## bottom -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar bottom() const </pre> @@ -882,11 +880,11 @@ sorted.fBottom: 25 sorted.bottom(): 25 <a name="SkRect_width"></a> ## width -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar width() const </pre> -Returns span on the x-axis. This does not check if <a href="#Rect">Rect</a> is sorted, or if +Returns span on the <a href="#SkRect_x">x</a>-axis. This does not check if <a href="#Rect">Rect</a> is sorted, or if result fits in 32-bit float; result may be negative or infinity. ### Return Value @@ -915,11 +913,11 @@ large width: 4294967296 <a name="SkRect_height"></a> ## height -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar height() const </pre> -Returns span on the y-axis. This does not check if <a href="SkIRect_Reference#IRect">IRect</a> is sorted, or if +Returns span on the <a href="#SkRect_y">y</a>-axis. This does not check if <a href="SkIRect_Reference#IRect">IRect</a> is sorted, or if result fits in 32-bit float; result may be negative or infinity. ### Return Value @@ -948,7 +946,7 @@ large height: 4294967296 <a name="SkRect_centerX"></a> ## centerX -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar centerX() const </pre> @@ -983,7 +981,7 @@ left: -41 right: -20 centerX: -30.5 <a name="SkRect_centerY"></a> ## centerY -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalar centerY() const </pre> @@ -1015,7 +1013,7 @@ left: 2e+38 right: 3e+38 centerX: inf safe mid x: 2.5e+38 <a name="SkRect_equal_operator"></a> ## operator== -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator==(const SkRect& a, const SkRect& b) </pre> @@ -1055,28 +1053,28 @@ tests are equal ### See Also -<a href="#SkRect_not_equal_operator">operator!=(const SkRect& a, const SkRect& b)</a> +<a href="#SkRect_notequal_operator">operator!=(const SkRect& a, const SkRect& b)</a> --- -<a name="SkRect_not_equal_operator"></a> +<a name="SkRect_notequal_operator"></a> ## operator!= -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool operator!=(const SkRect& a, const SkRect& b) </pre> -Returns true if any in <a href="#SkRect_not_equal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; does not -equal the corresponding members in <a href="#SkRect_not_equal_operator_b">b</a>. +Returns true if any in <a href="#SkRect_notequal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; does not +equal the corresponding members in <a href="#SkRect_notequal_operator_b">b</a>. -<a href="#SkRect_not_equal_operator_a">a</a> and <a href="#SkRect_not_equal_operator_b">b</a> are not equal if either contain <a href="undocumented#NaN">NaN</a>. <a href="#SkRect_not_equal_operator_a">a</a> and <a href="#SkRect_not_equal_operator_b">b</a> are equal if members +<a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are not equal if either contain <a href="undocumented#NaN">NaN</a>. <a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are equal if members contain zeroes <a href="#SkRect_width">width</a> different signs. ### Parameters -<table> <tr> <td><a name="SkRect_not_equal_operator_a"> <code><strong>a </strong></code> </a></td> <td> +<table> <tr> <td><a name="SkRect_notequal_operator_a"> <code><strong>a </strong></code> </a></td> <td> <a href="#Rect">Rect</a> to compare</td> - </tr> <tr> <td><a name="SkRect_not_equal_operator_b"> <code><strong>b </strong></code> </a></td> <td> + </tr> <tr> <td><a name="SkRect_notequal_operator_b"> <code><strong>b </strong></code> </a></td> <td> <a href="#Rect">Rect</a> to compare</td> </tr> </table> @@ -1106,12 +1104,12 @@ test with NaN is not equal to itself <a name="SkRect_toQuad"></a> ## toQuad -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toQuad(SkPoint quad[4]) const </pre> -Returns four points in <a href="#SkRect_toQuad_quad">quad</a> that enclose <a href="#Rect">Rect</a> ordered as: top-left, top-right, -bottom-right, bottom-left. +Returns four points in <a href="#SkRect_toQuad_quad">quad</a> that enclose <a href="#Rect">Rect</a> ordered as: <a href="#SkRect_top">top</a>-<a href="#SkRect_left">left</a>, <a href="#SkRect_top">top</a>-<a href="#SkRect_right">right</a>, +<a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_left">left</a>. ### Parameters @@ -1142,7 +1140,7 @@ corners: {1, 2} {3, 2} {3, 4} {1, 4} <a name="SkRect_setEmpty"></a> ## setEmpty -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setEmpty() </pre> @@ -1174,7 +1172,7 @@ rect: {0, 0, 0, 0} is empty <a name="SkRect_set"></a> ## set -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(const SkIRect& src) </pre> @@ -1207,7 +1205,7 @@ f_rect: {3, 4, 1, 2} --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) </pre> @@ -1250,7 +1248,7 @@ rect2: {3, 4, 1, 2} <a name="SkRect_setLTRB"></a> ## setLTRB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLTRB(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) </pre> @@ -1293,7 +1291,7 @@ rect2: {3, 4, 1, 2} <a name="SkRect_iset"></a> ## iset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void iset(int left, int top, int right, int bottom) </pre> @@ -1337,7 +1335,7 @@ rect2: {3, 4, 1, 2} <a name="SkRect_isetWH"></a> ## isetWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void isetWH(int width, int height) </pre> @@ -1373,12 +1371,12 @@ rect2: {0, 0, 1, 2} --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(const SkPoint pts[], int count) </pre> -Sets to bounds of <a href="undocumented#Point">Point</a> array with <a href="#SkRect_set_3_count">count</a> entries. If <a href="#SkRect_set_3_count">count</a> is zero or smaller, -or if <a href="undocumented#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets <a href="#Rect">Rect</a> to (0, 0, 0, 0). +Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_set_3_count">count</a> entries. If <a href="#SkRect_set_3_count">count</a> is zero or smaller, +or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets <a href="#Rect">Rect</a> to (0, 0, 0, 0). Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fTop">fTop</a> is less than or equal to <a href="#SkRect_fBottom">fBottom</a>. @@ -1386,7 +1384,7 @@ Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than ### Parameters <table> <tr> <td><a name="SkRect_set_3_pts"> <code><strong>pts </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array</td> +<a href="SkPoint_Reference#Point">Point</a> array</td> </tr> <tr> <td><a name="SkRect_set_3_count"> <code><strong>count </strong></code> </a></td> <td> entries in array</td> </tr> @@ -1417,12 +1415,12 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 <a name="SkRect_setBounds"></a> ## setBounds -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setBounds(const SkPoint pts[], int count) </pre> -Sets to bounds of <a href="undocumented#Point">Point</a> array with <a href="#SkRect_setBounds_count">count</a> entries. If <a href="#SkRect_setBounds_count">count</a> is zero or smaller, -or if <a href="undocumented#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets to (0, 0, 0, 0). +Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_setBounds_count">count</a> entries. If <a href="#SkRect_setBounds_count">count</a> is zero or smaller, +or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets to (0, 0, 0, 0). Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fTop">fTop</a> is less than or equal to <a href="#SkRect_fBottom">fBottom</a>. @@ -1430,7 +1428,7 @@ Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than ### Parameters <table> <tr> <td><a name="SkRect_setBounds_pts"> <code><strong>pts </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array</td> +<a href="SkPoint_Reference#Point">Point</a> array</td> </tr> <tr> <td><a name="SkRect_setBounds_count"> <code><strong>count </strong></code> </a></td> <td> entries in array</td> </tr> @@ -1461,12 +1459,12 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 <a name="SkRect_setBoundsCheck"></a> ## setBoundsCheck -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool setBoundsCheck(const SkPoint pts[], int count) </pre> -Sets to bounds of <a href="undocumented#Point">Point</a> array with <a href="#SkRect_setBoundsCheck_count">count</a> entries. Returns false if <a href="#SkRect_setBoundsCheck_count">count</a> is -zero or smaller, or if <a href="undocumented#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>; in these cases +Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_setBoundsCheck_count">count</a> entries. Returns false if <a href="#SkRect_setBoundsCheck_count">count</a> is +zero or smaller, or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>; in these cases sets <a href="#Rect">Rect</a> to (0, 0, 0, 0). Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and @@ -1475,7 +1473,7 @@ Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than ### Parameters <table> <tr> <td><a name="SkRect_setBoundsCheck_pts"> <code><strong>pts </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array</td> +<a href="SkPoint_Reference#Point">Point</a> array</td> </tr> <tr> <td><a name="SkRect_setBoundsCheck_count"> <code><strong>count </strong></code> </a></td> <td> entries in array</td> </tr> @@ -1483,7 +1481,7 @@ entries in array</td> ### Return Value -true if all <a href="undocumented#Point">Point</a> values are finite +true if all <a href="SkPoint_Reference#Point">Point</a> values are finite ### Example @@ -1507,7 +1505,7 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 success: false --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void set(const SkPoint& p0, const SkPoint& p1) </pre> @@ -1536,7 +1534,7 @@ corner to include</td> <a name="SkRect_setXYWH"></a> ## setXYWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setXYWH(SkScalar x, SkScalar y, SkScalar width, SkScalar height) </pre> @@ -1579,7 +1577,7 @@ rect: -10, 35, 5, 60 isEmpty: false <a name="SkRect_setWH"></a> ## setWH -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setWH(SkScalar width, SkScalar height) </pre> @@ -1617,7 +1615,7 @@ rect: -15, 0, 0, 25 isEmpty: false <a name="SkRect_setLargest"></a> ## setLargest -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLargest() </pre> @@ -1650,7 +1648,7 @@ outset a little more isFinite: false <a name="SkRect_setLargestInverted"></a> ## setLargestInverted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setLargestInverted() </pre> @@ -1681,7 +1679,7 @@ grown rect: 42, 24, 42, 24 isEmpty: true <a name="SkRect_makeOffset"></a> ## makeOffset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect makeOffset(SkScalar dx, SkScalar dy) const </pre> @@ -1727,7 +1725,7 @@ rect: 25, 82, 35, 92 isEmpty: false <a name="SkRect_makeInset"></a> ## makeInset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect makeInset(SkScalar dx, SkScalar dy) const </pre> @@ -1773,7 +1771,7 @@ rect: 25, 82, 5, 28 isEmpty: true <a name="SkRect_makeOutset"></a> ## makeOutset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect makeOutset(SkScalar dx, SkScalar dy) const </pre> @@ -1819,7 +1817,7 @@ rect: -5, 18, 35, 92 isEmpty: false <a name="SkRect_offset"></a> ## offset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(SkScalar dx, SkScalar dy) </pre> @@ -1857,7 +1855,7 @@ rect: 15, 27, 55, 86 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offset(const SkPoint& delta) </pre> @@ -1897,7 +1895,7 @@ rect: 15, 27, 55, 86 <a name="SkRect_offsetTo"></a> ## offsetTo -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void offsetTo(SkScalar newX, SkScalar newY) </pre> @@ -1934,7 +1932,7 @@ rect: 15, 27, 55, 86 <a name="SkRect_inset"></a> ## inset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void inset(SkScalar dx, SkScalar dy) </pre> @@ -1975,7 +1973,7 @@ rect: 15, 27, 45, 60 <a name="SkRect_outset"></a> ## outset -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void outset(SkScalar dx, SkScalar dy) </pre> @@ -2027,7 +2025,7 @@ describes an area: <a href="#SkRect_fLeft">fLeft</a> is less than <a href="#SkRe <a name="SkRect_intersect"></a> ## intersect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersect(const SkRect& r) </pre> @@ -2067,7 +2065,7 @@ intersection: 30, 60, 50, 80 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) </pre> @@ -2116,7 +2114,7 @@ intersection: 30, 60, 50, 80 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_WARN_UNUSED_RESULT intersect(const SkRect& a, const SkRect& b) </pre> @@ -2159,7 +2157,7 @@ intersection: 30, 60, 50, 80 <a name="SkRect_intersects"></a> ## intersects -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersects(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) const </pre> @@ -2204,7 +2202,7 @@ intersection --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool intersects(const SkRect& r) const </pre> @@ -2243,7 +2241,7 @@ intersection <a name="SkRect_Intersects"></a> ## Intersects -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static bool Intersects(const SkRect& a, const SkRect& b) </pre> @@ -2284,7 +2282,7 @@ intersection <a name="SkRect_join"></a> ## join -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void join(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom) </pre> @@ -2327,7 +2325,7 @@ join: 10, 20, 55, 65 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void join(const SkRect& r) </pre> @@ -2364,7 +2362,7 @@ join: 10, 20, 55, 65 <a name="SkRect_joinNonEmptyArg"></a> ## joinNonEmptyArg -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void joinNonEmptyArg(const SkRect& r) </pre> @@ -2404,7 +2402,7 @@ sorted: 10, 0, 55, 100 <a name="SkRect_joinPossiblyEmptyRect"></a> ## joinPossiblyEmptyRect -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void joinPossiblyEmptyRect(const SkRect& r) </pre> @@ -2441,7 +2439,7 @@ sorted: 10, 0, 55, 100 <a name="SkRect_growToInclude"></a> ## growToInclude -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void growToInclude(SkPoint pt) </pre> @@ -2455,7 +2453,7 @@ If <a href="#Rect">Rect</a> is initialized with <a href="#SkRect_setLargestInver ### Parameters <table> <tr> <td><a name="SkRect_growToInclude_pt"> <code><strong>pt </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> to include</td> +<a href="SkPoint_Reference#Point">Point</a> to include</td> </tr> </table> @@ -2477,11 +2475,11 @@ rect: 42, 24, 42, 24 isEmpty: true --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void growToInclude(const SkPoint pts[], int count) </pre> -For each of <a href="#SkRect_growToInclude_2_count">count</a> <a href="undocumented#Point">Point</a> in <a href="#SkRect_growToInclude_2_pts">pts</a>, grows <a href="#Rect">Rect</a> to include (pt.fX, pt.fY), modifying +For each of <a href="#SkRect_growToInclude_2_count">count</a> <a href="SkPoint_Reference#Point">Point</a> in <a href="#SkRect_growToInclude_2_pts">pts</a>, grows <a href="#Rect">Rect</a> to include (pt.fX, pt.fY), modifying it so that: <a href="#SkRect_fLeft">fLeft</a> <= pt.fX <= <a href="#SkRect_fRight">fRight</a> && <a href="#SkRect_fTop">fTop</a> <= pt.fY <= <a href="#SkRect_fBottom">fBottom</a>. @@ -2491,7 +2489,7 @@ If <a href="#Rect">Rect</a> is initialized with <a href="#SkRect_setLargestInver ### Parameters <table> <tr> <td><a name="SkRect_growToInclude_2_pts"> <code><strong>pts </strong></code> </a></td> <td> -<a href="undocumented#Point">Point</a> array</td> +<a href="SkPoint_Reference#Point">Point</a> array</td> </tr> <tr> <td><a name="SkRect_growToInclude_2_count"> <code><strong>count </strong></code> </a></td> <td> number of points in array</td> </tr> @@ -2515,16 +2513,16 @@ rect: 30, 50, 40, 60 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void growToInclude(const SkPoint pts[], size_t stride, int count) </pre> -For each of <a href="#SkRect_growToInclude_3_count">count</a> <a href="undocumented#Point">Point</a> in <a href="#SkRect_growToInclude_3_pts">pts</a>, grows <a href="#Rect">Rect</a> to include (pt.fX, pt.fY), modifying +For each of <a href="#SkRect_growToInclude_3_count">count</a> <a href="SkPoint_Reference#Point">Point</a> in <a href="#SkRect_growToInclude_3_pts">pts</a>, grows <a href="#Rect">Rect</a> to include (pt.fX, pt.fY), modifying it so that: <a href="#SkRect_fLeft">fLeft</a> <= pt.fX <= <a href="#SkRect_fRight">fRight</a> && <a href="#SkRect_fTop">fTop</a> <= pt.fY <= <a href="#SkRect_fBottom">fBottom</a>. -<a href="undocumented#Point">Point</a> may be followed with other data in each array element. <a href="#SkRect_growToInclude_3_stride">stride</a> is number -of bytes in element; the interval to skip to advance from one <a href="undocumented#Point">Point</a> to +<a href="SkPoint_Reference#Point">Point</a> may be followed with other data in each array element. <a href="#SkRect_growToInclude_3_stride">stride</a> is number +of bytes in element; the interval to skip to advance from one <a href="SkPoint_Reference#Point">Point</a> to the next. If <a href="#Rect">Rect</a> is initialized with <a href="#SkRect_setLargestInverted">setLargestInverted</a>, then <a href="#Rect">Rect</a> will contain bounds of @@ -2533,7 +2531,7 @@ If <a href="#Rect">Rect</a> is initialized with <a href="#SkRect_setLargestInver ### Parameters <table> <tr> <td><a name="SkRect_growToInclude_3_pts"> <code><strong>pts </strong></code> </a></td> <td> -array of elements beginning with <a href="undocumented#Point">Point</a></td> +array of elements beginning with <a href="SkPoint_Reference#Point">Point</a></td> </tr> <tr> <td><a name="SkRect_growToInclude_3_stride"> <code><strong>stride </strong></code> </a></td> <td> size of <a href="#SkRect_growToInclude_3_pts">pts</a> elements in 32-bit words; zero or greater</td> </tr> <tr> <td><a name="SkRect_growToInclude_3_count"> <code><strong>count </strong></code> </a></td> <td> @@ -2563,7 +2561,7 @@ rect: 30, 50, 40, 60 <a name="SkRect_contains"></a> ## contains -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(const SkRect& r) const </pre> @@ -2603,7 +2601,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool contains(const SkIRect& r) const </pre> @@ -2648,7 +2646,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60) <a name="SkRect_round"></a> ## round -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void round(SkIRect* dst) const </pre> @@ -2683,7 +2681,7 @@ round: 31, 51, 41, 61 <a name="SkRect_roundOut"></a> ## roundOut -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void roundOut(SkIRect* dst) const </pre> @@ -2715,7 +2713,7 @@ round: 30, 50, 41, 61 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void roundOut(SkRect* dst) const </pre> @@ -2750,7 +2748,7 @@ round: 30, 50, 41, 61 <a name="SkRect_roundIn"></a> ## roundIn -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void roundIn(SkIRect* dst) const </pre> @@ -2782,7 +2780,7 @@ round: 31, 51, 40, 60 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect round() const </pre> @@ -2811,7 +2809,7 @@ round: 31, 51, 41, 61 --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIRect roundOut() const </pre> @@ -2843,7 +2841,7 @@ round: 30, 50, 41, 61 <a name="SkRect_sort"></a> ## sort -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void sort() </pre> @@ -2873,7 +2871,7 @@ sorted: 20.5, 10.5, 30.5, 50.5 <a name="SkRect_makeSorted"></a> ## makeSorted -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkRect makeSorted() const </pre> @@ -2907,7 +2905,7 @@ sorted: 20.5, 10.5, 30.5, 50.5 <a name="SkRect_asScalars"></a> ## asScalars -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> const SkScalar* asScalars() const </pre> @@ -2939,7 +2937,7 @@ rect.asScalars() == &rect.fLeft <a name="SkRect_dump"></a> ## dump -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump(bool asHex) const </pre> @@ -2975,7 +2973,7 @@ SkBits2Float(0x42480000) /* 50.000000 */); --- -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump() const </pre> @@ -3006,7 +3004,7 @@ rect is not equal to copy <a name="SkRect_dumpHex"></a> ## dumpHex -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dumpHex() const </pre> diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md new file mode 100644 index 0000000000..709e3bfb64 --- /dev/null +++ b/site/user/api/SkSurface_Reference.md @@ -0,0 +1,1541 @@ +SkSurface Reference +=== + +# <a name="Surface"></a> Surface + +# <a name="SkSurface"></a> Class SkSurface +<a href="#SkSurface">SkSurface</a> is responsible for managing the pixels that a canvas draws into. The pixels can be +allocated either in <a href="undocumented#CPU">CPU</a> memory (a raster surface) or on the <a href="undocumented#GPU">GPU</a> (a <a href="undocumented#GrRenderTarget">GrRenderTarget</a> surface). +<a href="#SkSurface">SkSurface</a> takes care of allocating a <a href="SkCanvas_Reference#SkCanvas">SkCanvas</a> that will <a href="#SkSurface_draw">draw</a> into the surface. Call +surface-><a href="#SkSurface_getCanvas">getCanvas</a> to use that canvas (but don't delete it, it is owned by the surface). +<a href="#SkSurface">SkSurface</a> always has non-zero dimensions. If there is a request for a new surface, and either +of the requested dimensions are zero, then nullptr will be returned. + +# <a name="Overview"></a> Overview + +## <a name="Subtopics"></a> Subtopics + +| topics | description | +| --- | --- | + +## <a name="Member_Functions"></a> Member Functions + +| description | function | +| --- | --- | +| <a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a> memory buffer. | +| <a href="#SkSurface_MakeFromBackendTexture">MakeFromBackendTexture</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a>-backed texture. | +| <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a>-backed texture. | +| <a href="#SkSurface_MakeNull">MakeNull</a> | Creates <a href="#Surface">Surface</a> without backing pixels. | +| <a href="#SkSurface_MakeRaster">MakeRaster</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a>. | +| <a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="#Storage">Pixel Storage</a>. | +| <a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="#Storage">Pixel Storage</a>. | +| <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> | Creates <a href="#Surface">Surface</a> from <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a> matching output. | +| <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> | Creates <a href="#Surface">Surface</a> pointing to new <a href="undocumented#GPU">GPU</a> memory buffer. | +| <a href="#SkSurface_characterize">characterize</a> | Set up <a href="#Characterization">Surface Characterization</a> for threaded pre-processing. | +| <a href="#SkSurface_draw">draw</a> | Draws <a href="#Surface">Surface</a> contents to canvas. | +| <a href="#SkSurface_flush">flush</a> | Resolve pending <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a>. | +| <a href="#SkSurface_flushAndSignalSemaphores">flushAndSignalSemaphores</a> | Resolve pending <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a>, and signal. | +| <a href="#SkSurface_generationID">generationID</a> | Returns unique ID. | +| <a href="#SkSurface_getCanvas">getCanvas</a> | Returns <a href="SkCanvas_Reference#Canvas">Canvas</a> that draws into <a href="#Surface">Surface</a>. | +| <a href="#SkSurface_getRenderTargetHandle">getRenderTargetHandle</a> | Returns the <a href="undocumented#GPU">GPU</a> reference to render target. | +| <a href="#SkSurface_getTextureHandle">getTextureHandle</a> | Returns the <a href="undocumented#GPU">GPU</a> reference to texture. | +| <a href="#SkSurface_height">height</a> | Returns pixel row count. | +| <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> | Returns <a href="SkImage_Reference#Image">Image</a> capturing <a href="#Surface">Surface</a> contents. | +| <a href="#SkSurface_makeSurface">makeSurface</a> | Returns a compatible <a href="#Surface">Surface</a>. | +| <a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a> | Notifies that contents will be changed outside of <a href="undocumented#Skia">Skia</a>. | +| <a href="#SkSurface_peekPixels">peekPixels</a> | Copies <a href="#Surface">Surface</a> parameters to <a href="SkPixmap_Reference#Pixmap">Pixmap</a>. | +| <a href="#SkSurface_prepareForExternalIO">prepareForExternalIO</a> | To be deprecated. | +| <a href="#SkSurface_props">props</a> | Returns <a href="#Properties">Surface Properties</a>. | +| <a href="#SkSurface_readPixels">readPixels</a> | Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels. | +| <a href="#SkSurface_wait">wait</a> | Pause commands until signaled. | +| <a href="#SkSurface_width">width</a> | Returns pixel column count. | + +<a name="SkSurface_MakeRasterDirect"></a> +## MakeRasterDirect + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRasterDirect(const SkImageInfo& imageInfo, void* pixels, size_t rowBytes, + const SkSurfaceProps* surfaceProps = nullptr) +</pre> + +Allocates raster <a href="#Surface">Surface</a>. <a href="SkCanvas_Reference#Canvas">Canvas</a> returned by <a href="#Surface">Surface</a> draws directly into <a href="#SkSurface_MakeRasterDirect_pixels">pixels</a>. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. +Valid parameters include: +info dimensions are greater than zero; +info contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>; +<a href="#SkSurface_MakeRasterDirect_pixels">pixels</a> is not nullptr; +<a href="#SkSurface_MakeRasterDirect_rowBytes">rowBytes</a> is large enough to contain info <a href="#SkSurface_width">width</a> <a href="#SkSurface_MakeRasterDirect_pixels">pixels</a> of <a href="undocumented#Image_Color_Type">Image Color Type</a>. + +<a href="undocumented#Pixel">Pixel</a> buffer size should be info <a href="#SkSurface_height">height</a> times computed <a href="#SkSurface_MakeRasterDirect_rowBytes">rowBytes</a>. +Pixels are not initialized. +To access <a href="#SkSurface_MakeRasterDirect_pixels">pixels</a> after drawing, call <a href="#SkSurface_flush">flush</a> or <a href="#SkSurface_peekPixels">peekPixels</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRasterDirect_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirect_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +pointer to destination <a href="#SkSurface_MakeRasterDirect_pixels">pixels</a> buffer</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirect_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +interval from one <a href="#Surface">Surface</a> row to the next</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirect_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts; +may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="3f5aeb870104187643197354a7f1d27a"> + +#### Example Output + +~~~~ +--- +-x- +--- +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> <a href="#SkSurface_MakeRaster">MakeRaster</a> <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> <a href="#SkCanvas_MakeRasterDirect">SkCanvas::MakeRasterDirect</a> + +--- + +<a name="SkSurface_MakeRasterDirectReleaseProc"></a> +## MakeRasterDirectReleaseProc + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRasterDirectReleaseProc(const SkImageInfo& imageInfo, void* pixels, + size_t rowBytes, void (*releaseProc) (void* pixels, + void* context) , void* context, + const SkSurfaceProps* surfaceProps = nullptr) +</pre> + +Allocates raster <a href="#Surface">Surface</a>. <a href="SkCanvas_Reference#Canvas">Canvas</a> returned by <a href="#Surface">Surface</a> draws directly into <a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a>. +<a href="#SkSurface_MakeRasterDirectReleaseProc_releaseProc">releaseProc</a> is called with <a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a> and <a href="#SkSurface_MakeRasterDirectReleaseProc_context">context</a> when <a href="#Surface">Surface</a> is deleted. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. +Valid parameters include: +info dimensions are greater than zero; +info contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>; +<a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a> is not nullptr; +<a href="#SkSurface_MakeRasterDirectReleaseProc_rowBytes">rowBytes</a> is large enough to contain info <a href="#SkSurface_width">width</a> <a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a> of <a href="undocumented#Image_Color_Type">Image Color Type</a>. + +<a href="undocumented#Pixel">Pixel</a> buffer size should be info <a href="#SkSurface_height">height</a> times computed <a href="#SkSurface_MakeRasterDirectReleaseProc_rowBytes">rowBytes</a>. +Pixels are not initialized. +To access <a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a> after drawing, call <a href="#SkSurface_flush">flush</a> or <a href="#SkSurface_peekPixels">peekPixels</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_pixels"> <code><strong>pixels </strong></code> </a></td> <td> +pointer to destination <a href="#SkSurface_MakeRasterDirectReleaseProc_pixels">pixels</a> buffer</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +interval from one <a href="#Surface">Surface</a> row to the next</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_releaseProc"> <code><strong>releaseProc </strong></code> </a></td> <td> +called when <a href="#Surface">Surface</a> is deleted; may be nullptr</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_context"> <code><strong>context </strong></code> </a></td> <td> +passed to <a href="#SkSurface_MakeRasterDirectReleaseProc_releaseProc">releaseProc</a>; may be nullptr</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts; +may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="8e6530b26ab4096a9a91cfaadda1c568"> + +#### Example Output + +~~~~ +--- +-x- +--- +expected release context +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> <a href="#SkSurface_MakeRaster">MakeRaster</a> + +--- + +<a name="SkSurface_MakeRaster"></a> +## MakeRaster + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRaster(const SkImageInfo& imageInfo, size_t rowBytes, + const SkSurfaceProps* surfaceProps) +</pre> + +Allocates raster <a href="#Surface">Surface</a>. <a href="SkCanvas_Reference#Canvas">Canvas</a> returned by <a href="#Surface">Surface</a> draws directly into pixels. +Allocates and zeroes pixel memory. <a href="undocumented#Pixel">Pixel</a> memory size is <a href="#SkSurface_MakeRaster_imageInfo">imageInfo</a>.<a href="#SkSurface_height">height</a> times +<a href="#SkSurface_MakeRaster_rowBytes">rowBytes</a>, or times <a href="#SkSurface_MakeRaster_imageInfo">imageInfo</a>.minRowBytes() if <a href="#SkSurface_MakeRaster_rowBytes">rowBytes</a> is zero. +<a href="undocumented#Pixel">Pixel</a> memory is deleted when <a href="#Surface">Surface</a> is deleted. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. +Valid parameters include: +info dimensions are greater than zero; +info contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>; +<a href="#SkSurface_MakeRaster_rowBytes">rowBytes</a> is large enough to contain info <a href="#SkSurface_width">width</a> pixels of <a href="undocumented#Image_Color_Type">Image Color Type</a>, or is zero. + +If <a href="#SkSurface_MakeRaster_rowBytes">rowBytes</a> is not zero, subsequent images returned by <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> +have the same <a href="#SkSurface_MakeRaster_rowBytes">rowBytes</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRaster_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRaster_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> +interval from one <a href="#Surface">Surface</a> row to the next; may be zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRaster_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts; +may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="a803910ada4f8733f0b62456afead55f"> + +#### Example Output + +~~~~ +--- +-x- +--- +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> <a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRaster(const SkImageInfo& imageInfo, + const SkSurfaceProps* props = nullptr) +</pre> + +Allocates raster <a href="#Surface">Surface</a>. <a href="SkCanvas_Reference#Canvas">Canvas</a> returned by <a href="#Surface">Surface</a> draws directly into pixels. +Allocates and zeroes pixel memory. <a href="undocumented#Pixel">Pixel</a> memory size is <a href="#SkSurface_MakeRaster_2_imageInfo">imageInfo</a>.<a href="#SkSurface_height">height</a> times +<a href="#SkSurface_MakeRaster_2_imageInfo">imageInfo</a>.minRowBytes(). +<a href="undocumented#Pixel">Pixel</a> memory is deleted when <a href="#Surface">Surface</a> is deleted. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. +Valid parameters include: +info dimensions are greater than zero; +info contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> supported by <a href="undocumented#Raster_Surface">Raster Surface</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRaster_2_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRaster_2_props"> <code><strong>props </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts; +may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="c6197d204ef9e4ccfb583242651fb2a7"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> <a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> + +--- + +<a name="SkSurface_MakeRasterN32Premul"></a> +## MakeRasterN32Premul + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRasterN32Premul(int width, int height, + const SkSurfaceProps* surfaceProps = nullptr) +</pre> + +Allocates raster <a href="#Surface">Surface</a>. <a href="SkCanvas_Reference#Canvas">Canvas</a> returned by <a href="#Surface">Surface</a> draws directly into pixels. +Allocates and zeroes pixel memory. <a href="undocumented#Pixel">Pixel</a> memory size is <a href="#SkSurface_height">height</a> times <a href="#SkSurface_width">width</a> times +four. <a href="undocumented#Pixel">Pixel</a> memory is deleted when <a href="#Surface">Surface</a> is deleted. + +Internally, sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Native_Color_Type">Native Color Type</a>, and +<a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>. + +<a href="#Surface">Surface</a> is returned if <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> are greater than zero. + +Use to create <a href="#Surface">Surface</a> that matches <a href="undocumented#SkPMColor">SkPMColor</a>, the native pixel arrangement on +the platform. <a href="#Surface">Surface</a> drawn to output device skips converting its pixel format. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRasterN32Premul_width"> <code><strong>width </strong></code> </a></td> <td> +pixel column count; must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterN32Premul_height"> <code><strong>height </strong></code> </a></td> <td> +pixel row count; must be greater than zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRasterN32Premul_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="b932a2bd68455fb0af2e7a1ed19e36b3"> + +#### Example Output + +~~~~ +--- +-x- +--- +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> <a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> + +--- + +<a name="SkSurface_MakeFromBackendTexture"></a> +## MakeFromBackendTexture + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeFromBackendTexture(GrContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, int sampleCnt, + sk_sp<SkColorSpace> colorSpace, + const SkSurfaceProps* surfaceProps) +</pre> + +Wraps a <a href="undocumented#GPU">GPU</a>-backed texture into <a href="#Surface">Surface</a>. Caller must ensure the texture is +valid for the lifetime of returned <a href="#Surface">Surface</a>. If <a href="#SkSurface_MakeFromBackendTexture_sampleCnt">sampleCnt</a> greater than zero, +creates an intermediate <a href="undocumented#MSAA">MSAA</a> <a href="#Surface">Surface</a> which is used for drawing <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a>. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> is valid if +its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendTexture_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendTexture_context">context</a>; for instance, if +<a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendTexture_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>, +and <a href="#SkSurface_MakeFromBackendTexture_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must +not exceed <a href="#SkSurface_MakeFromBackendTexture_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendTexture_context">context</a> must be able to support +back-end textures. + +If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeFromBackendTexture_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +texture residing on <a href="undocumented#GPU">GPU</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_origin"> <code><strong>origin </strong></code> </a></td> <td> +one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td> +samples per pixel, or 0 to disable full scene anti-aliasing</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +range of colors</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<pre style="padding: 1em 1em 1em 1em; font-size: 13px width: 62.5em; background-color: #f0f0f0"> +void draw(SkCanvas* canvas) { + SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeFromBackendTexture(context, + backEndTextureRenderTarget, kTopLeft_GrSurfaceOrigin, 0, nullptr, nullptr); + auto surfaceCanvas = gpuSurface->getCanvas(); + surfaceCanvas->clear(SK_ColorWHITE); + surfaceCanvas->drawString("GPU rocks!", 20, 40, paint); + sk_sp<SkImage> image(gpuSurface->makeImageSnapshot()); + canvas->drawImage(image, 0, 0); +} +</pre> + +### See Also + +<a href="undocumented#GrBackendTexture">GrBackendTexture</a> <a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> + +--- + +<a name="SkSurface_MakeFromBackendRenderTarget"></a> +## MakeFromBackendRenderTarget + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeFromBackendRenderTarget(GrContext* context, + const GrBackendRenderTarget& backendRenderTarget, + GrSurfaceOrigin origin, + sk_sp<SkColorSpace> colorSpace, + const SkSurfaceProps* surfaceProps) +</pre> + +Wraps a <a href="undocumented#GPU">GPU</a>-backed buffer into <a href="#Surface">Surface</a>. Caller must ensure render target is +valid for the lifetime of returned <a href="#Surface">Surface</a>. + +<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> is valid if +its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendRenderTarget_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a>; for instance, if +<a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>, +and <a href="#SkSurface_MakeFromBackendRenderTarget_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must +not exceed <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> must be able to support +back-end render targets. + +If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_backendRenderTarget"> <code><strong>backendRenderTarget </strong></code> </a></td> <td> +<a href="undocumented#GPU">GPU</a> intermediate memory buffer</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_origin"> <code><strong>origin </strong></code> </a></td> <td> +one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +range of colors</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<pre style="padding: 1em 1em 1em 1em; font-size: 13px width: 62.5em; background-color: #f0f0f0"> +void draw(SkCanvas* canvas) { + SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeFromBackendRenderTarget(context, + backEndRenderTarget, kTopLeft_GrSurfaceOrigin, nullptr, nullptr); + auto surfaceCanvas = gpuSurface->getCanvas(); + surfaceCanvas->clear(SK_ColorWHITE); + surfaceCanvas->drawString("GPU rocks!", 20, 40, paint); + sk_sp<SkImage> image(gpuSurface->makeImageSnapshot()); + canvas->drawImage(image, 0, 0); +} +</pre> + +### See Also + +<a href="#SkSurface_MakeFromBackendTexture">MakeFromBackendTexture</a> <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> + +--- + +<a name="SkSurface_MakeFromBackendTextureAsRenderTarget"></a> +## MakeFromBackendTextureAsRenderTarget + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeFromBackendTextureAsRenderTarget(GrContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, int sampleCnt, + sk_sp<SkColorSpace> colorSpace, + const SkSurfaceProps* surfaceProps) +</pre> + +Used to wrap a <a href="undocumented#GPU">GPU</a>-backed texture as a <a href="#SkSurface">SkSurface</a>. <a href="undocumented#Skia">Skia</a> will treat the texture as +a rendering target only, but unlike NewFromBackendRenderTarget, <a href="undocumented#Skia">Skia</a> will manage and own +the associated render target objects (but not the provided texture). <a href="undocumented#Skia">Skia</a> will not assume +ownership of the texture and the client must ensure the texture is valid for the lifetime +of the <a href="#SkSurface">SkSurface</a>. + +If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> +texture residing on <a href="undocumented#GPU">GPU</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_origin"> <code><strong>origin </strong></code> </a></td> <td> +one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td> +samples per pixel, or 0 to disable full scene anti-aliasing</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> +range of colors</td> + </tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<pre style="padding: 1em 1em 1em 1em; font-size: 13px width: 62.5em; background-color: #f0f0f0"> +void draw(SkCanvas* canvas) {SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeFromBackendTextureAsRenderTarget( + context, backEndTextureRenderTarget, kTopLeft_GrSurfaceOrigin, 0, + nullptr, nullptr); + auto surfaceCanvas = gpuSurface->getCanvas(); + surfaceCanvas->clear(SK_ColorWHITE); + surfaceCanvas->drawString("GPU rocks!", 20, 40, paint); + sk_sp<SkImage> image(gpuSurface->makeImageSnapshot()); + canvas->drawImage(image, 0, 0); +} +</pre> + +### See Also + +<a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> + +--- + +<a name="SkSurface_MakeRenderTarget"></a> +## MakeRenderTarget + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted budgeted, + const SkImageInfo& imageInfo, int sampleCount, + GrSurfaceOrigin surfaceOrigin, + const SkSurfaceProps* surfaceProps, + bool shouldCreateWithMips = false) +</pre> + +Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_context">context</a>. Allocates memory for +pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_budgeted">budgeted</a> +selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_context">context</a>. <a href="#SkSurface_MakeRenderTarget_imageInfo">imageInfo</a> +describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in +<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and color matching in <a href="undocumented#Color_Space">Color Space</a>. + +<a href="#SkSurface_MakeRenderTarget_sampleCount">sampleCount</a> requests the number of samples per pixel. +Pass zero to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a>. The request is rounded +up to the next supported count, or rounded down if it is larger than the +maximum supported count. + +<a href="#SkSurface_MakeRenderTarget_surfaceOrigin">surfaceOrigin</a> pins either the top-left or the bottom-left corner to the origin. + +<a href="#SkSurface_MakeRenderTarget_shouldCreateWithMips">shouldCreateWithMips</a> hints that <a href="SkImage_Reference#Image">Image</a> returned by <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> is <a href="undocumented#Mip_Map">Mip Map</a>. + +If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRenderTarget_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> +one of: <a href="#SkBudgeted_kNo">SkBudgeted::kNo</a>, <a href="#SkBudgeted_kYes">SkBudgeted::kYes</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>; +<a href="#SkSurface_width">width</a>, or <a href="#SkSurface_height">height</a>, or both, may be zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_sampleCount"> <code><strong>sampleCount </strong></code> </a></td> <td> +samples per pixel, or 0 to disable full scene anti-aliasing</td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> +one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_shouldCreateWithMips"> <code><strong>shouldCreateWithMips </strong></code> </a></td> <td> +hint that <a href="#Surface">Surface</a> will host <a href="undocumented#Mip_Map">Mip Map</a> images</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="67b6609471a3f1ed0f4b1657004cdecb"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted budgeted, + const SkImageInfo& imageInfo, int sampleCount, + const SkSurfaceProps* props) +</pre> + +Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_2_context">context</a>. Allocates memory for +pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_2_budgeted">budgeted</a> +selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_2_context">context</a>. <a href="#SkSurface_MakeRenderTarget_2_imageInfo">imageInfo</a> +describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in +<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and color matching in <a href="undocumented#Color_Space">Color Space</a>. + +<a href="#SkSurface_MakeRenderTarget_2_sampleCount">sampleCount</a> requests the number of samples per pixel. +Pass zero to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a>. The request is rounded +up to the next supported count, or rounded down if it is larger than the +maximum supported count. + +<a href="#Surface">Surface</a> bottom-left corner is pinned to the origin. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRenderTarget_2_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> +one of: <a href="#SkBudgeted_kNo">SkBudgeted::kNo</a>, <a href="#SkBudgeted_kYes">SkBudgeted::kYes</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a>, or <a href="#SkSurface_height">height</a>, or both, may be zero</td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_sampleCount"> <code><strong>sampleCount </strong></code> </a></td> <td> +samples per pixel, or 0 to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_props"> <code><strong>props </strong></code> </a></td> <td> +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent +fonts; may be nullptr</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="4473daad1b11784a9869431af72c93e0"><div><a href="undocumented#LCD">LCD</a> text takes advantage of raster striping to improve resolution. Only one of +the four combinations is correct, depending on whether the monitor's <a href="undocumented#LCD">LCD</a> is +horizontal or vertical, and whether the order of the stripes is red blue green +or red green blue.</div></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted budgeted, + const SkImageInfo& imageInfo) +</pre> + +Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_3_context">context</a>. Allocates memory for +pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_3_budgeted">budgeted</a> +selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_3_context">context</a>. <a href="#SkSurface_MakeRenderTarget_3_imageInfo">imageInfo</a> +describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in +<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and color matching in <a href="undocumented#Color_Space">Color Space</a>. + +<a href="#Surface">Surface</a> bottom-left corner is pinned to the origin. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeRenderTarget_3_context"> <code><strong>context </strong></code> </a></td> <td> +<a href="undocumented#GPU_Context">GPU Context</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_3_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> +one of: <a href="#SkBudgeted_kNo">SkBudgeted::kNo</a>, <a href="#SkBudgeted_kYes">SkBudgeted::kYes</a></td> + </tr> <tr> <td><a name="SkSurface_MakeRenderTarget_3_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a>, or <a href="#SkSurface_height">height</a>, or both, may be zero</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if all parameters are valid; otherwise, nullptr + +### Example + +<div><fiddle-embed name="5c7629c15e9ac93f098335e72560fa2e"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> + +--- + +<a name="SkSurface_MakeNull"></a> +## MakeNull + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkSurface> MakeNull(int width, int height) +</pre> + +Returns <a href="#Surface">Surface</a> without backing pixels. Drawing to <a href="SkCanvas_Reference#Canvas">Canvas</a> returned from <a href="#Surface">Surface</a> +has no effect. Calling <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> on returned <a href="#Surface">Surface</a> returns nullptr. + +### Parameters + +<table> <tr> <td><a name="SkSurface_MakeNull_width"> <code><strong>width </strong></code> </a></td> <td> +one or greater</td> + </tr> <tr> <td><a name="SkSurface_MakeNull_height"> <code><strong>height </strong></code> </a></td> <td> +one or greater</td> + </tr> +</table> + +### Return Value + +<a href="#Surface">Surface</a> if <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> are positive; otherwise, nullptr + +### Example + +<div><fiddle-embed name="99a54b814ccab7d2b1143c88581649ff"> + +#### Example Output + +~~~~ +SkSurface::MakeNull(0, 0) == nullptr +surf->makeImageSnapshot() == nullptr +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_MakeRaster">MakeRaster</a> <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> + +--- + +<a name="SkSurface_width"></a> +## width + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int width() const +</pre> + +Returns pixel count in each row; may be zero or greater. + +### Return Value + +number of pixel columns + +### Example + +<div><fiddle-embed name="df066b56dd97c7c589fd2bb6a2539de8"> + +#### Example Output + +~~~~ +surface width=37 canvas width=37 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_height">height</a> + +--- + +<a name="SkSurface_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int height() const +</pre> + +Returns pixel row count; may be zero or greater. + +### Return Value + +number of pixel rows + +### Example + +<div><fiddle-embed name="20571cc23e3146deaa09046b64cc0aef"> + +#### Example Output + +~~~~ +surface height=1000 canvas height=1000 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_width">width</a> + +--- + +<a name="SkSurface_generationID"></a> +## generationID + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +uint32_t generationID() +</pre> + +Returns unique value identifying the content of <a href="#Surface">Surface</a>. Returned value changes +each time the content changes. Content is changed by drawing, or by calling +<a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a>. + +### Return Value + +unique content identifier + +### Example + +<div><fiddle-embed name="be9574c4a14f891e1abb4ec2b1e51d6c"> + +#### Example Output + +~~~~ +surface generationID: 1 +surface generationID: 2 +surface generationID: 3 +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a> <a href="#SkSurface_ContentChangeMode">ContentChangeMode</a> <a href="#SkSurface_getCanvas">getCanvas</a> + +--- + +## <a name="SkSurface_ContentChangeMode"></a> Enum SkSurface::ContentChangeMode + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +enum <a href="#SkSurface_ContentChangeMode">ContentChangeMode</a> { +<a href="#SkSurface_kDiscard_ContentChangeMode">kDiscard ContentChangeMode</a>, +<a href="#SkSurface_kRetain_ContentChangeMode">kRetain ContentChangeMode</a>, +};</pre> + +<a href="#SkSurface_ContentChangeMode">ContentChangeMode</a> members are parameters to <a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a>. + +### Constants + +<table> + <tr> + <td><a name="SkSurface_kDiscard_ContentChangeMode"> <code><strong>SkSurface::kDiscard_ContentChangeMode </strong></code> </a></td><td>Pass to notifyContentWillChange to discard surface contents when</td><td>the surface is cleared or overwritten.</td> + </tr> + <tr> + <td><a name="SkSurface_kRetain_ContentChangeMode"> <code><strong>SkSurface::kRetain_ContentChangeMode </strong></code> </a></td><td>Pass to notifyContentWillChange when to preserve surface contents.</td><td>If a snapshot has been generated, this copies the <a href="#Surface">Surface</a> contents.</td> + </tr> +</table> + +### See Also + +<a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a> <a href="#SkSurface_generationID">generationID</a> + + + +<a name="SkSurface_notifyContentWillChange"></a> +## notifyContentWillChange + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void notifyContentWillChange(ContentChangeMode mode) +</pre> + +Notifies that <a href="#Surface">Surface</a> contents will be changed by code outside of <a href="undocumented#Skia">Skia</a>. +Subsequent calls to <a href="#SkSurface_generationID">generationID</a> return a different value. + +<a href="#SkSurface_notifyContentWillChange_mode">mode</a> is normally passed as <a href="#SkSurface_kRetain_ContentChangeMode">kRetain ContentChangeMode</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_notifyContentWillChange_mode"> <code><strong>mode </strong></code> </a></td> <td> +one of: <a href="#SkSurface_kDiscard_ContentChangeMode">kDiscard ContentChangeMode</a>, <a href="#SkSurface_kRetain_ContentChangeMode">kRetain ContentChangeMode</a></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="be9574c4a14f891e1abb4ec2b1e51d6c"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_ContentChangeMode">ContentChangeMode</a> <a href="#SkSurface_generationID">generationID</a> + +--- + +## <a name="SkSurface_BackendHandleAccess"></a> Enum SkSurface::BackendHandleAccess + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +enum <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> { +<a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>, +<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>, +<a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a>, +};</pre> + +### Constants + +<table> + <tr> + <td><a name="SkSurface_kFlushRead_BackendHandleAccess"> <code><strong>SkSurface::kFlushRead_BackendHandleAccess </strong></code> </a></td><td>Caller may read from the back-end object.</td><td></td> + </tr> + <tr> + <td><a name="SkSurface_kFlushWrite_BackendHandleAccess"> <code><strong>SkSurface::kFlushWrite_BackendHandleAccess </strong></code> </a></td><td>Caller may write to the back-end object.</td><td></td> + </tr> + <tr> + <td><a name="SkSurface_kDiscardWrite_BackendHandleAccess"> <code><strong>SkSurface::kDiscardWrite_BackendHandleAccess </strong></code> </a></td><td>Caller must overwrite the entire back-end object.</td><td></td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="260a5ba014b00eeb5a74b3c6b8d31be4"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_getTextureHandle">getTextureHandle</a> <a href="#SkSurface_getRenderTargetHandle">getRenderTargetHandle</a> + + + +<a name="SkSurface_getTextureHandle"></a> +## getTextureHandle + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +GrBackendObject getTextureHandle(BackendHandleAccess backendHandleAccess) +</pre> + +Returns the <a href="undocumented#GPU">GPU</a> back-end reference of the texture used by <a href="#Surface">Surface</a>, or zero +if <a href="#Surface">Surface</a> is not backed by a <a href="undocumented#GPU">GPU</a> texture. + +The returned texture handle is only valid until the next <a href="#SkSurface_draw">draw</a> into <a href="#Surface">Surface</a>, +or when <a href="#Surface">Surface</a> is deleted. + +### Parameters + +<table> <tr> <td><a name="SkSurface_getTextureHandle_backendHandleAccess"> <code><strong>backendHandleAccess </strong></code> </a></td> <td> +one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>, +<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>, <a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a></td> + </tr> +</table> + +### Return Value + +<a href="undocumented#GPU">GPU</a> texture reference + +### Example + +<div><fiddle-embed name="4b5720038daaf65ba1ba546e678ddd6e"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_getRenderTargetHandle">getRenderTargetHandle</a> <a href="undocumented#GrBackendObject">GrBackendObject</a> <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> + +--- + +<a name="SkSurface_getRenderTargetHandle"></a> +## getRenderTargetHandle + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool getRenderTargetHandle(GrBackendObject* backendObject, BackendHandleAccess backendHandleAccess) +</pre> + +Returns true and stores the <a href="undocumented#GPU">GPU</a> back-end reference of the render target used +by <a href="#Surface">Surface</a> in <a href="#SkSurface_getRenderTargetHandle_backendObject">backendObject</a>. + +Return false if <a href="#Surface">Surface</a> is not backed by a <a href="undocumented#GPU">GPU</a> render target, and leaves +<a href="#SkSurface_getRenderTargetHandle_backendObject">backendObject</a> unchanged. + +The returned render target handle is only valid until the next <a href="#SkSurface_draw">draw</a> into <a href="#Surface">Surface</a>, +or when <a href="#Surface">Surface</a> is deleted. + +In <a href="undocumented#OpenGL">OpenGL</a> this returns the frame buffer object ID. + +### Parameters + +<table> <tr> <td><a name="SkSurface_getRenderTargetHandle_backendObject"> <code><strong>backendObject </strong></code> </a></td> <td> +<a href="undocumented#GPU">GPU</a> intermediate memory buffer</td> + </tr> <tr> <td><a name="SkSurface_getRenderTargetHandle_backendHandleAccess"> <code><strong>backendHandleAccess </strong></code> </a></td> <td> +one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>, +<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>, <a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a></td> + </tr> +</table> + +### Return Value + +true if <a href="#Surface">Surface</a> is backed by <a href="undocumented#GPU">GPU</a> texture + +### Example + +<div><fiddle-embed name="16e848a4405ce08f8393bba13cc3b8bf"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_getTextureHandle">getTextureHandle</a> <a href="undocumented#GrBackendObject">GrBackendObject</a> <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> + +--- + +<a name="SkSurface_getCanvas"></a> +## getCanvas + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkCanvas* getCanvas() +</pre> + +Returns <a href="SkCanvas_Reference#Canvas">Canvas</a> that draws into <a href="#Surface">Surface</a>. Subsequent calls return the same <a href="SkCanvas_Reference#Canvas">Canvas</a>. +<a href="SkCanvas_Reference#Canvas">Canvas</a> returned is managed and owned by <a href="#Surface">Surface</a>, and is deleted when <a href="#Surface">Surface</a> +is deleted. + +### Return Value + +drawing <a href="SkCanvas_Reference#Canvas">Canvas</a> for <a href="#Surface">Surface</a> + +### Example + +<div><fiddle-embed name="33d0c5ad5a4810e533ae1010e29f8b75"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_makeSurface">makeSurface</a> <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> <a href="#SkSurface_draw">draw</a> + +--- + +<a name="SkSurface_makeSurface"></a> +## makeSurface + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkSurface> makeSurface(const SkImageInfo& imageInfo) +</pre> + +Returns a compatible <a href="#Surface">Surface</a>, or nullptr. Returned <a href="#Surface">Surface</a> contains +the same raster, <a href="undocumented#GPU">GPU</a>, or null properties as the original. Returned <a href="#Surface">Surface</a> +does not share the same pixels. + +Returns nullptr if <a href="#SkSurface_makeSurface_imageInfo">imageInfo</a> <a href="#SkSurface_width">width</a> or <a href="#SkSurface_height">height</a> are zero, or if <a href="#SkSurface_makeSurface_imageInfo">imageInfo</a> +is incompatible with <a href="#Surface">Surface</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_makeSurface_imageInfo"> <code><strong>imageInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, +of <a href="#Surface">Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td> + </tr> +</table> + +### Return Value + +compatible <a href="#Surface">Surface</a> or nullptr + +### Example + +<div><fiddle-embed name="a9889b519a26896b900da0444e423c61"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> <a href="#SkSurface_getCanvas">getCanvas</a> <a href="#SkSurface_draw">draw</a> + +--- + +<a name="SkSurface_makeImageSnapshot"></a> +## makeImageSnapshot + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +sk_sp<SkImage> makeImageSnapshot() +</pre> + +Returns <a href="SkImage_Reference#Image">Image</a> capturing <a href="#Surface">Surface</a> contents. Subsequent drawing to <a href="#Surface">Surface</a> contents +are not captured. <a href="SkImage_Reference#Image">Image</a> allocation is accounted for if <a href="#Surface">Surface</a> was created with +<a href="#SkBudgeted_kYes">SkBudgeted::kYes</a>. + +### Return Value + +<a href="SkImage_Reference#Image">Image</a> initialized with <a href="#Surface">Surface</a> contents + +### Example + +<div><fiddle-embed name="46f1fa0d95e590a64bed0140407ce5f7"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_draw">draw</a> <a href="#SkSurface_getCanvas">getCanvas</a> + +--- + +<a name="SkSurface_draw"></a> +## draw + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) +</pre> + +Draws <a href="#Surface">Surface</a> contents to <a href="#SkSurface_draw_canvas">canvas</a>, with its top-left corner at (<a href="#SkSurface_draw_x">x</a>, <a href="#SkSurface_draw_y">y</a>). + +If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkSurface_draw_paint">paint</a> is not nullptr, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, +<a href="undocumented#Blend_Mode">Blend Mode</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_draw_canvas"> <code><strong>canvas </strong></code> </a></td> <td> +<a href="SkCanvas_Reference#Canvas">Canvas</a> drawn into</td> + </tr> <tr> <td><a name="SkSurface_draw_x"> <code><strong>x </strong></code> </a></td> <td> +horizontal offset in <a href="SkCanvas_Reference#Canvas">Canvas</a></td> + </tr> <tr> <td><a name="SkSurface_draw_y"> <code><strong>y </strong></code> </a></td> <td> +vertical offset in <a href="SkCanvas_Reference#Canvas">Canvas</a></td> + </tr> <tr> <td><a name="SkSurface_draw_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> + </tr> +</table> + +### Example + +<div><fiddle-embed name="0de693f4d8dd898a60be8cfba23952be"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> <a href="#SkSurface_getCanvas">getCanvas</a> + +--- + +<a name="SkSurface_peekPixels"></a> +## peekPixels + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool peekPixels(SkPixmap* pixmap) +</pre> + +Copies <a href="#Surface">Surface</a> pixel address, row bytes, and <a href="undocumented#Image_Info">Image Info</a> to <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, if address +is available, and returns true. If pixel address is not available, return +false and leave <a href="SkPixmap_Reference#Pixmap">Pixmap</a> unchanged. + +<a href="#SkSurface_peekPixels_pixmap">pixmap</a> contents become invalid on any future change to <a href="#Surface">Surface</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_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="#Surface">Surface</a> has direct access to pixels + +### Example + +<div><fiddle-embed name="8c6184f22cfe068f021704cf92a147a1"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_readPixels">readPixels</a> + +--- + +<a name="SkSurface_readPixels"></a> +## readPixels + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkPixmap& dst, int srcX, int srcY) +</pre> + +Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkSurface_readPixels_dst">dst</a>. + +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkSurface_readPixels_srcX">srcX</a>, <a href="#SkSurface_readPixels_srcY">srcY</a>) and (this-><a href="#SkSurface_width">width</a>, this-><a href="#SkSurface_height">height</a>). +Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkSurface_readPixels_dst">dst</a>.<a href="#SkSurface_width">width</a>, <a href="#SkSurface_readPixels_dst">dst</a>.<a href="#SkSurface_height">height</a>). +Copies each readable pixel intersecting both rectangles, without scaling, +converting to <a href="#SkSurface_readPixels_dst">dst</a>.colorType() and <a href="#SkSurface_readPixels_dst">dst</a>.alphaType() if required. + +Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>. + +The destination pixel storage must be allocated by the caller. + +<a href="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> +do not match. Only pixels within both source and destination rectangles +are copied. <a href="#SkSurface_readPixels_dst">dst</a> contents outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. + +Pass negative values for <a href="#SkSurface_readPixels_srcX">srcX</a> or <a href="#SkSurface_readPixels_srcY">srcY</a> to offset pixels across or down destination. + +Does not copy, and returns false if: + +<table> <tr> + <td>Source and destination rectangles do not intersect.</td> </tr> <tr> + <td><a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels could not be allocated.</td> </tr> <tr> + <td><a href="#SkSurface_readPixels_dst">dst</a>.rowBytes() is too small to contain one row of pixels.</td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkSurface_readPixels_dst"> <code><strong>dst </strong></code> </a></td> <td> +storage for pixels copied from <a href="#Surface">Surface</a></td> + </tr> <tr> <td><a name="SkSurface_readPixels_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +offset into readable pixels in x; may be negative</td> + </tr> <tr> <td><a name="SkSurface_readPixels_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +offset into readable pixels in y; may be negative</td> + </tr> +</table> + +### Return Value + +true if pixels were copied + +### Example + +<div><fiddle-embed name="9f454fb93bca6482598d198b4121f0a6"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_peekPixels">peekPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY) +</pre> + +Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="SkCanvas_Reference#Canvas">Canvas</a> into <a href="#SkSurface_readPixels_2_dstPixels">dstPixels</a>. + +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkSurface_readPixels_2_srcX">srcX</a>, <a href="#SkSurface_readPixels_2_srcY">srcY</a>) and (this-><a href="#SkSurface_width">width</a>, this-><a href="#SkSurface_height">height</a>). +Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkSurface_width">width</a>, <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkSurface_height">height</a>). +Copies each readable pixel intersecting both rectangles, without scaling, +converting to <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.colorType() and <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.alphaType() if required. + +Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>. + +The destination pixel storage must be allocated by the caller. + +<a href="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> +do not match. Only pixels within both source and destination rectangles +are copied. <a href="#SkSurface_readPixels_2_dstPixels">dstPixels</a> contents outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. + +Pass negative values for <a href="#SkSurface_readPixels_2_srcX">srcX</a> or <a href="#SkSurface_readPixels_2_srcY">srcY</a> to offset pixels across or down destination. + +Does not copy, and returns false if: + +<table> <tr> + <td>Source and destination rectangles do not intersect.</td> </tr> <tr> + <td><a href="#Surface">Surface</a> pixels could not be converted to <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.colorType() or <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.alphaType().</td> </tr> <tr> + <td><a href="#SkSurface_readPixels_2_dstRowBytes">dstRowBytes</a> is too small to contain one row of pixels.</td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkSurface_readPixels_2_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> +<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> of <a href="#SkSurface_readPixels_2_dstPixels">dstPixels</a></td> + </tr> <tr> <td><a name="SkSurface_readPixels_2_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> +storage for pixels; <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkSurface_height">height</a> times <a href="#SkSurface_readPixels_2_dstRowBytes">dstRowBytes</a>, or larger</td> + </tr> <tr> <td><a name="SkSurface_readPixels_2_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> +size of one destination row; <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkSurface_width">width</a> times pixel size, or larger</td> + </tr> <tr> <td><a name="SkSurface_readPixels_2_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +offset into readable pixels in x; may be negative</td> + </tr> <tr> <td><a name="SkSurface_readPixels_2_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +offset into readable pixels in y; may be negative</td> + </tr> +</table> + +### Return Value + +true if pixels were copied + +### Example + +<div><fiddle-embed name="d141d6c662d201d191fb1eea26d014fd"><div>A black oval drawn on a red background provides an image to copy. +<a href="#SkSurface_readPixels">readPixels</a> copies one quarter of the <a href="#Surface">Surface</a> into each of the four corners. +The copied quarter ovals overdraw the original oval.</div></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_peekPixels">peekPixels</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool readPixels(const SkBitmap& dst, int srcX, int srcY) +</pre> + +Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Surface">Surface</a> into bitmap. + +Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkSurface_readPixels_3_srcX">srcX</a>, <a href="#SkSurface_readPixels_3_srcY">srcY</a>) and (this-><a href="#SkSurface_width">width</a>, this-><a href="#SkSurface_height">height</a>). +Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (bitmap.<a href="#SkSurface_width">width</a>, bitmap.<a href="#SkSurface_height">height</a>). +Copies each readable pixel intersecting both rectangles, without scaling, +converting to bitmap.colorType() and bitmap.alphaType() if required. + +Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>. + +The destination pixel storage must be allocated by the caller. + +<a href="undocumented#Pixel">Pixel</a> values are converted only if <a href="undocumented#Image_Color_Type">Image Color Type</a> and <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a> +do not match. Only pixels within both source and destination rectangles +are copied. <a href="#SkSurface_readPixels_3_dst">dst</a> contents outside <a href="SkRect_Reference#Rect">Rect</a> intersection are unchanged. + +Pass negative values for <a href="#SkSurface_readPixels_3_srcX">srcX</a> or <a href="#SkSurface_readPixels_3_srcY">srcY</a> to offset pixels across or down destination. + +Does not copy, and returns false if: + +<table> <tr> + <td>Source and destination rectangles do not intersect.</td> </tr> <tr> + <td><a href="#Surface">Surface</a> pixels could not be converted to <a href="#SkSurface_readPixels_3_dst">dst</a>.colorType() or <a href="#SkSurface_readPixels_3_dst">dst</a>.alphaType().</td> </tr> <tr> + <td><a href="#SkSurface_readPixels_3_dst">dst</a> pixels could not be allocated.</td> </tr> <tr> + <td><a href="#SkSurface_readPixels_3_dst">dst</a>.rowBytes() is too small to contain one row of pixels.</td> </tr> +</table> + +### Parameters + +<table> <tr> <td><a name="SkSurface_readPixels_3_dst"> <code><strong>dst </strong></code> </a></td> <td> +storage for pixels copied from <a href="#Surface">Surface</a></td> + </tr> <tr> <td><a name="SkSurface_readPixels_3_srcX"> <code><strong>srcX </strong></code> </a></td> <td> +offset into readable pixels in x; may be negative</td> + </tr> <tr> <td><a name="SkSurface_readPixels_3_srcY"> <code><strong>srcY </strong></code> </a></td> <td> +offset into readable pixels in y; may be negative</td> + </tr> +</table> + +### Return Value + +true if pixels were copied + +### Example + +<div><fiddle-embed name="dcbd4af9151820f63de45a35f3a8d110"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_peekPixels">peekPixels</a> + +--- + +<a name="SkSurface_props"></a> +## props + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +const SkSurfaceProps& props() const +</pre> + +Returns <a href="#Properties">Surface Properties</a> for surface. + +### Return Value + +<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts + +### Example + +<div><fiddle-embed name="13cf9e7b2894ae6e98c1fd719040bf01"> + +#### Example Output + +~~~~ +surf.props(): kRGB_H_SkPixelGeometry +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> + +--- + +<a name="SkSurface_prepareForExternalIO"></a> +## prepareForExternalIO + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void prepareForExternalIO() +</pre> + +To be deprecated. + +--- + +<a name="SkSurface_flush"></a> +## flush + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void flush() +</pre> + +Issues pending <a href="#Surface">Surface</a> commands to the <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> and resolves any <a href="#Surface">Surface</a> <a href="undocumented#MSAA">MSAA</a>. + +<a href="undocumented#Skia">Skia</a> flushes as needed, so it is not necessary to call this if <a href="undocumented#Skia">Skia</a> manages +drawing and object lifetime. Call when interleaving <a href="undocumented#Skia">Skia</a> calls with native +<a href="undocumented#GPU">GPU</a> calls. + +### See Also + +<a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> + +--- + +<a name="SkSurface_flushAndSignalSemaphores"></a> +## flushAndSignalSemaphores + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +GrSemaphoresSubmitted flushAndSignalSemaphores(int numSemaphores, + GrBackendSemaphore signalSemaphores[]) +</pre> + +Issues pending <a href="#Surface">Surface</a> commands to the <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> and resolves any <a href="#Surface">Surface</a> <a href="undocumented#MSAA">MSAA</a>. +After issuing all commands, <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a> of count <a href="#SkSurface_flushAndSignalSemaphores_numSemaphores">numSemaphores</a> semaphores +are signaled by the <a href="undocumented#GPU">GPU</a>. + +For each <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> in <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a>: +if <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> is initialized, the <a href="undocumented#GPU">GPU</a> back-end uses the semaphore as is; +otherwise, a new semaphore is created and initializes <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a>. + +The caller must delete the semaphores created and returned in <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a>. +<a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> can be deleted as soon as this function returns. + +If the back-end <a href="undocumented#API">API</a> is <a href="undocumented#OpenGL">OpenGL</a> only uninitialized <a href="#GrBackendSemaphore">GrBackendSemaphores</a> are supported. + +If the back-end <a href="undocumented#API">API</a> is <a href="undocumented#Vulkan">Vulkan</a> semaphores may be initialized or uninitialized. +If uninitialized, created semaphores are valid only with the VkDevice +with which they were created. + +If <a href="#kNo">GrSemaphoresSubmitted::kNo</a> is returned, the <a href="undocumented#GPU">GPU</a> back-end did not create or +add any semaphores to signal on the <a href="undocumented#GPU">GPU</a>; the caller should not instruct the <a href="undocumented#GPU">GPU</a> +to <a href="#SkSurface_wait">wait</a> on any of the semaphores. + +Pending surface commands are flushed regardless of the return result. + +### Parameters + +<table> <tr> <td><a name="SkSurface_flushAndSignalSemaphores_numSemaphores"> <code><strong>numSemaphores </strong></code> </a></td> <td> +size of <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a> array</td> + </tr> <tr> <td><a name="SkSurface_flushAndSignalSemaphores_signalSemaphores"> <code><strong>signalSemaphores </strong></code> </a></td> <td> +array of semaphore containers</td> + </tr> +</table> + +### Return Value + +one of: <a href="#kYes">GrSemaphoresSubmitted::kYes</a>, <a href="#kNo">GrSemaphoresSubmitted::kNo</a> + +### See Also + +<a href="#SkSurface_wait">wait</a> <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> + +--- + +<a name="SkSurface_wait"></a> +## wait + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores) +</pre> + +Inserts a list of <a href="undocumented#GPU">GPU</a> semaphores that the current <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> must <a href="#SkSurface_wait">wait</a> on before +executing any more commands on the <a href="undocumented#GPU">GPU</a> for this surface. <a href="undocumented#Skia">Skia</a> will take ownership of the +underlying semaphores and delete them once they have been signaled and waited on. +If this call returns false, then the <a href="undocumented#GPU">GPU</a> back-end will not <a href="#SkSurface_wait">wait</a> on any passed in semaphores, +and the client will still own the semaphores. + +### Parameters + +<table> <tr> <td><a name="SkSurface_wait_numSemaphores"> <code><strong>numSemaphores </strong></code> </a></td> <td> +size of <a href="#SkSurface_wait_waitSemaphores">waitSemaphores</a> array</td> + </tr> <tr> <td><a name="SkSurface_wait_waitSemaphores"> <code><strong>waitSemaphores </strong></code> </a></td> <td> +array of semaphore containers</td> + </tr> +</table> + +### Return Value + +true if <a href="undocumented#GPU">GPU</a> is waiting on semaphores + +### Example + +<div><fiddle-embed name="c9033080af68efc0f270d748f1c0e011"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_flushAndSignalSemaphores">flushAndSignalSemaphores</a> <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> + +--- + +<a name="SkSurface_characterize"></a> +## characterize + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool characterize(SkSurfaceCharacterization* characterization) const +</pre> + +Initializes <a href="#Characterization">Surface Characterization</a> that can be used to perform <a href="undocumented#GPU">GPU</a> back-end +pre-processing in a separate thread. Typically this is used to divide drawing +into multiple tiles. DeferredDisplayListRecorder records the drawing commands +for each tile. + +Return true if <a href="#Surface">Surface</a> supports <a href="#SkSurface_characterize_characterization">characterization</a>. <a href="undocumented#Raster_Surface">Raster Surface</a> returns false. + +### Parameters + +<table> <tr> <td><a name="SkSurface_characterize_characterization"> <code><strong>characterization </strong></code> </a></td> <td> +properties for parallel drawing</td> + </tr> +</table> + +### Return Value + +true if supported + +### Example + +<div><fiddle-embed name="3df4e2fc63483a3fa19589b5388080bc"gpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_draw">draw</a> <a href="undocumented#SkSurfaceCharacterization">SkSurfaceCharacterization</a> <a href="undocumented#SkDeferredDisplayList">SkDeferredDisplayList</a> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void draw(SkDeferredDisplayList* deferredDisplayList) +</pre> + +Draws deferred display list created using <a href="undocumented#SkDeferredDisplayListRecorder">SkDeferredDisplayListRecorder</a>. +The <a href="#SkSurface_draw">draw</a> has no effect if <a href="#Characterization">Surface Characterization</a> stored in <a href="#SkSurface_draw_2_deferredDisplayList">deferredDisplayList</a> +is not compatible with <a href="#Surface">Surface</a>. + +### Parameters + +<table> <tr> <td><a name="SkSurface_draw_2_deferredDisplayList"> <code><strong>deferredDisplayList </strong></code> </a></td> <td> +drawing commands</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="3dfa7496268dfb2c7465cda5da39dfbd"gpu="true"cpu="true"></fiddle-embed></div> + +### See Also + +<a href="#SkSurface_characterize">characterize</a> <a href="undocumented#SkSurfaceCharacterization">SkSurfaceCharacterization</a> <a href="undocumented#SkDeferredDisplayList">SkDeferredDisplayList</a> + +--- + diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm index de9d211879..1f6eb77738 100644 --- a/site/user/api/catalog.htm +++ b/site/user/api/catalog.htm @@ -47,7 +47,7 @@ "hash": "fe79a9c1ec350264eb9c7b2509dd3638", "file": "SkBitmap_Reference", "name": "SkBitmap::HeapAllocator::allocPixelRef", - "stdout": "pixel address = (nil)\\npixel address = 0x5642246ef670\\n" + "stdout": "pixel address = (nil)\\npixel address = 0x55f1363e3670\\n" }, "SkBitmap_alphaType": { "code": "void draw(SkCanvas* canvas) {\n const char* alphas[] = {\"Unknown\", \"Opaque\", \"Premul\", \"Unpremul\"};\n SkPixmap pixmap(SkImageInfo::MakeA8(16, 32), nullptr, 64);\n SkDebugf(\"alpha type: k\" \"%s\" \"_SkAlphaType\\n\", alphas[pixmap.alphaType()]);\n}", @@ -84,13 +84,6 @@ "name": "SkBitmap::computeByteSize", "stdout": "width: 1 height: 1 computeByteSize: 4\\nwidth: 1 height: 1000 computeByteSize: 4999\\nwidth: 1 height: 1000000 computeByteSize: 4999999\\nwidth: 1000 height: 1 computeByteSize: 4000\\nwidth: 1000 height: 1000 computeByteSize: 4999000\\nwidth: 1000 height: 1000000 computeByteSize: 4999999000\\nwidth: 1000000 height: 1 computeByteSize: 4000000\\nwidth: 1000000 height: 1000 computeByteSize: 4999000000\\nwidth: 1000000 height: 1000000 computeByteSize: 4999999000000\\n" }, - "SkBitmap_copy_assignment_operator": { - "code": "void draw(SkCanvas* canvas) {\n SkBitmap original;\n original.tryAllocPixels(SkImageInfo::Make(25, 35, kRGBA_8888_SkColorType, kOpaque_SkAlphaType));\n SkDebugf(\"original has pixels before copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkBitmap copy = original; \n SkDebugf(\"original has pixels after copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkDebugf(\"copy has pixels: %s\\n\", copy.getPixels() ? \"true\" : \"false\");\n}\n", - "hash": "6366fa1b1b3df1bebbfa3ed1c5a43457", - "file": "SkBitmap_Reference", - "name": "SkBitmap::operator=(const SkBitmap& src)", - "stdout": "original has pixels before copy: true\\noriginal has pixels after copy: true\\ncopy has pixels: true\\n" - }, "SkBitmap_copy_const_SkBitmap": { "code": "void draw(SkCanvas* canvas) {\n SkBitmap original;\n original.tryAllocPixels(SkImageInfo::Make(25, 35, kRGBA_8888_SkColorType, kOpaque_SkAlphaType));\n SkDebugf(\"original has pixels before copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkBitmap copy(original); \n SkDebugf(\"original has pixels after copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkDebugf(\"copy has pixels: %s\\n\", copy.getPixels() ? \"true\" : \"false\");\n}\n", "hash": "dbf46a0b60324ec611cc18d86772e7b9", @@ -98,6 +91,13 @@ "name": "SkBitmap::SkBitmap(const SkBitmap& src)", "stdout": "original has pixels before copy: true\\noriginal has pixels after copy: true\\ncopy has pixels: true\\n" }, + "SkBitmap_copy_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkBitmap original;\n original.tryAllocPixels(SkImageInfo::Make(25, 35, kRGBA_8888_SkColorType, kOpaque_SkAlphaType));\n SkDebugf(\"original has pixels before copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkBitmap copy = original; \n SkDebugf(\"original has pixels after copy: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkDebugf(\"copy has pixels: %s\\n\", copy.getPixels() ? \"true\" : \"false\");\n}\n", + "hash": "6366fa1b1b3df1bebbfa3ed1c5a43457", + "file": "SkBitmap_Reference", + "name": "SkBitmap::operator=(const SkBitmap& src)", + "stdout": "original has pixels before copy: true\\noriginal has pixels after copy: true\\ncopy has pixels: true\\n" + }, "SkBitmap_dimensions": { "code": "void draw(SkCanvas* canvas) {\n SkBitmap bitmap;\n bitmap.setInfo(SkImageInfo::MakeN32(33, 55, kOpaque_SkAlphaType));\n SkISize dimensions = bitmap.dimensions();\n SkRect bounds;\n bitmap.getBounds(&bounds);\n SkRect dimensionsAsBounds = SkRect::Make(dimensions);\n SkDebugf(\"dimensionsAsBounds %c= bounds\\n\", dimensionsAsBounds == bounds ? '=' : '!');\n}", "hash": "647056bcc12c27fb4413f212f33a2898", @@ -245,7 +245,7 @@ "name": "SkBitmap::SkBitmap(SkBitmap&& src)", "stdout": "original has pixels before move: true\\noriginal has pixels after move: false\\ncopy has pixels: true\\n" }, - "SkBitmap_move_assignment_operator": { + "SkBitmap_move_operator": { "code": "void draw(SkCanvas* canvas) {\n SkBitmap original;\n original.tryAllocPixels(SkImageInfo::Make(25, 35, kRGBA_8888_SkColorType, kOpaque_SkAlphaType));\n SkDebugf(\"original has pixels before move: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkBitmap copy = std::move(original); \n SkDebugf(\"original has pixels after move: %s\\n\", original.getPixels() ? \"true\" : \"false\");\n SkDebugf(\"copy has pixels: %s\\n\", copy.getPixels() ? \"true\" : \"false\");\n}\n", "hash": "5066583054077df5098bb1d2aa402149", "file": "SkBitmap_Reference", @@ -257,7 +257,7 @@ "hash": "0cc2c6a0dffa61a88711534bd3d43b40", "file": "SkBitmap_Reference", "name": "SkBitmap::peekPixels", - "stdout": "------\\n--xxx-\\n-x--x-\\n----x-\\n---xx-\\n--xx--\\n--x---\\n------\\n--x---\\n--x---\\n------\\n" + "stdout": "------\\n-xxx--\\nx---x-\\n----x-\\n---x--\\n--x---\\n--x---\\n------\\n--x---\\n--x---\\n------\\n" }, "SkBitmap_pixelRef": { "code": "void draw(SkCanvas* canvas) {\n SkBitmap subset;\n source.extractSubset(&subset, SkIRect::MakeXYWH(32, 64, 128, 256));\n SkDebugf(\"src ref %c= sub ref\\n\", source.pixelRef() == subset.pixelRef() ? '=' : '!');\n SkDebugf(\"src pixels %c= sub pixels\\n\", source.getPixels() == subset.getPixels() ? '=' : '!');\n SkDebugf(\"src addr %c= sub addr\\n\", source.getAddr(32, 64) == subset.getAddr(0, 0) ? '=' : '!');\n}", @@ -337,11 +337,11 @@ "stdout": "bitmap dimensions (6, 11)\\n" }, "SkBitmap_tryAllocPixelsFlags": { - "code": "void draw(SkCanvas* canvas) {\n SkBitmap bitmap;\n int loop = 0;\n while (++loop) {\n SkDebugf(\"attempt %d\\n\", loop);\n if (!bitmap.tryAllocPixelsFlags(SkImageInfo::MakeN32(100000, 100000, kOpaque_SkAlphaType), \n SkBitmap::kZeroPixels_AllocFlag)) {\n SkDebugf(\"failed!\\n\");\n break;\n }\n }\n}", - "hash": "01e11c52fe4a3dc7ee800ce8e925b973", + "code": "void draw(SkCanvas* canvas) {\n SkBitmap bitmap;\n if (!bitmap.tryAllocPixelsFlags(SkImageInfo::MakeN32(10000, 10000, kOpaque_SkAlphaType), \n SkBitmap::kZeroPixels_AllocFlag)) {\n SkDebugf(\"bitmap allocation failed!\\n\");\n } else {\n SkDebugf(\"bitmap allocation succeeded!\\n\");\n }\n}", + "hash": "4fff5f5034ced615ad5a1d50c40aeff3", "file": "SkBitmap_Reference", "name": "SkBitmap::tryAllocPixelsFlags", - "stdout": "attempt 1\\nfailed!\\n" + "stdout": "bitmap allocation succeeded!\\n" }, "SkBitmap_width": { "code": "void draw(SkCanvas* canvas) {\n SkImageInfo info = SkImageInfo::MakeA8(16, 32);\n SkBitmap bitmap;\n bitmap.setInfo(info);\n SkDebugf(\"bitmap width: %d info width: %d\\n\", bitmap.width(), info.width());\n}", @@ -351,8 +351,8 @@ "stdout": "bitmap width: 16 info width: 16\\n" }, "SkCanvas_MakeRasterDirect": { - "code": "void draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3); // device aligned, 32 bpp, Premultiplied\n const size_t minRowBytes = info.minRowBytes(); // bytes used by one bitmap row\n const size_t size = info.getSafeSize(minRowBytes); // bytes used by all rows\n SkAutoTMalloc<SkPMColor> storage(size); // allocate storage for pixels\n SkPMColor* pixels = storage.get(); // get pointer to allocated storage\n // create a SkCanvas backed by a raster device, and delete it when the\n // function goes out of scope.\n std::unique_ptr<SkCanvas> canvas = SkCanvas::MakeRasterDirect(info, pixels, minRowBytes);\n canvas->clear(SK_ColorWHITE); // white is Unpremultiplied, in ARGB order\n canvas->flush(); // ensure that pixels are cleared\n SkPMColor pmWhite = pixels[0]; // the Premultiplied format may vary\n SkPaint paint; // by default, draws black\n canvas->drawPoint(1, 1, paint); // draw in the center\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", *pixels++ == pmWhite ? '-' : 'x');\n }\n SkDebugf(\"\\n\");\n }\n}\n", - "hash": "11be884b8b4213a450b6dc43673bf807", + "code": "void draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3); // device aligned, 32 bpp, Premultiplied\n const size_t minRowBytes = info.minRowBytes(); // bytes used by one bitmap row\n const size_t size = info.computeMinByteSize(); // bytes used by all rows\n SkAutoTMalloc<SkPMColor> storage(size); // allocate storage for pixels\n SkPMColor* pixels = storage.get(); // get pointer to allocated storage\n // create a SkCanvas backed by a raster device, and delete it when the\n // function goes out of scope.\n std::unique_ptr<SkCanvas> canvas = SkCanvas::MakeRasterDirect(info, pixels, minRowBytes);\n canvas->clear(SK_ColorWHITE); // white is Unpremultiplied, in ARGB order\n canvas->flush(); // ensure that pixels are cleared\n SkPMColor pmWhite = pixels[0]; // the Premultiplied format may vary\n SkPaint paint; // by default, draws black\n canvas->drawPoint(1, 1, paint); // draw in the center\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", *pixels++ == pmWhite ? '-' : 'x');\n }\n SkDebugf(\"\\n\");\n }\n}\n", + "hash": "525285073aae7e53eb8f454a398f880c", "file": "SkCanvas_Reference", "name": "SkCanvas::MakeRasterDirect", "stdout": "---\\n-x-\\n---\\n" @@ -567,6 +567,97 @@ "name": "SkCanvas::restoreToCount", "stdout": "depth = 1\\ndepth = 3\\ndepth = 1\\n" }, + "SkIPoint16_Make": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint16 pt1 = {45, 66};\n SkIPoint16 pt2 = SkIPoint16::Make(45, 66);\n SkDebugf(\"pt1.fX %c= pt2.fX\\n\", pt1.fX == pt2.fX ? '=' : '!');\n SkDebugf(\"pt1.fY %c= pt2.fY\\n\", pt1.fY == pt2.fY ? '=' : '!');\n}", + "hash": "d815ca04fbf22b5acec6f85b6351f362", + "file": "SkIPoint16_Reference", + "name": "SkIPoint16::Make", + "stdout": "pt1.fX == pt2.fX\\npt1.fY == pt2.fY\\n" + }, + "SkIPoint16_set": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint16 pt1, pt2 = { SK_MinS16, SK_MaxS16 };\n pt1.set(SK_MinS16, SK_MaxS16);\n SkDebugf(\"pt1.fX %c= pt2.fX\\n\", pt1.fX == pt2.fX ? '=' : '!');\n SkDebugf(\"pt1.fY %c= pt2.fY\\n\", pt1.fY == pt2.fY ? '=' : '!');\n}", + "hash": "abff78d3f2d97b1284ccb13d0c56b6c8", + "file": "SkIPoint16_Reference", + "name": "SkIPoint16::set()", + "stdout": "pt1.fX == pt2.fX\\npt1.fY == pt2.fY\\n" + }, + "SkIPoint16_x": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint16 pt1 = {45, 66};\n SkDebugf(\"pt1.fX %c= pt1.x()\\n\", pt1.fX == pt1.x() ? '=' : '!');\n}", + "hash": "f7fd3b3674f042869de3582ab793dbf7", + "file": "SkIPoint16_Reference", + "name": "SkIPoint16::x()", + "stdout": "pt1.fX == pt1.x()\\n" + }, + "SkIPoint16_y": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint16 pt1 = {45, 66};\n SkDebugf(\"pt1.fY %c= pt1.y()\\n\", pt1.fY == pt1.y() ? '=' : '!');\n}", + "hash": "3662cedaf1e9924a401f794902da3b1f", + "file": "SkIPoint16_Reference", + "name": "SkIPoint16::y()", + "stdout": "pt1.fY == pt1.y()\\n" + }, + "SkIPoint_Make": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint pt1 = {45, 66};\n SkIPoint pt2 = SkIPoint::Make(45, 66);\n SkDebugf(\"pt1 %c= pt2\\n\", pt1 == pt2 ? '=' : '!');\n}", + "hash": "e5cf5159525bd3140f288a95fe641fae", + "file": "SkIPoint_Reference", + "name": "SkIPoint::Make", + "stdout": "pt1 == pt2\\n" + }, + "SkIPoint_equal_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };\n for (const SkIPoint& pt : test) {\n SkDebugf(\"pt: %d, %d %c= pt\\n\", pt.fX, pt.fY, pt == pt ? '=' : '!');\n }\n}", + "hash": "37ffe2817d720f99e6c252332ce70460", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator==(const SkIPoint& a, const SkIPoint& b)", + "stdout": "pt: 0, 0 == pt\\npt: -1, -2 == pt\\npt: 2147483647, -1 == pt\\npt: -2147483648, -1 == pt\\n" + }, + "SkIPoint_equals": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };\n for (const SkIPoint& pt : test) {\n SkDebugf(\"pt: %d, %d %c= pt\\n\", pt.fX, pt.fY, pt.equals(pt.fX, pt.fY) ? '=' : '!');\n }\n}", + "hash": "64f575d36439d5b69aaed14ffeff1cc4", + "file": "SkIPoint_Reference", + "name": "SkIPoint::equals()", + "stdout": "pt: 0, 0 == pt\\npt: -1, -2 == pt\\npt: 2147483647, -1 == pt\\npt: -2147483648, -1 == pt\\n" + }, + "SkIPoint_isZero": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint pt = { 0, -0};\n SkDebugf(\"pt.isZero() == %s\\n\", pt.isZero() ? \"true\" : \"false\");\n}", + "hash": "658c1df611b4577cc7e0bb384e95737e", + "file": "SkIPoint_Reference", + "name": "SkIPoint::isZero", + "stdout": "pt.isZero() == true\\n" + }, + "SkIPoint_minus_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint test[] = { {0, -0}, {-1, -2},\n { SK_MaxS32, SK_MinS32 },\n { SK_NaN32, -SK_NaN32 } };\n for (const SkIPoint& pt : test) {\n SkIPoint negPt = -pt;\n SkDebugf(\"pt: %d, %d negate: %d, %d\\n\", pt.fX, pt.fY, negPt.fX, negPt.fY);\n }\n}", + "hash": "d283e8876366349aedd85b65cadb3706", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator-()_const", + "stdout": "pt: 0, 0 negate: 0, 0\\npt: -1, -2 negate: 1, 2\\npt: 2147483647, -2147483647 negate: -2147483647, 2147483647\\npt: -2147483648, -2147483648 negate: -2147483648, -2147483648\\n" + }, + "SkIPoint_notequal_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };\n for (const SkIPoint& pt : test) {\n SkDebugf(\"pt: %d, %d %c= pt\\n\", pt.fX, pt.fY, pt != pt ? '!' : '=');\n }\n}", + "hash": "dd89dc48dff69b53d99530b120f204bc", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator!=(const SkIPoint& a, const SkIPoint& b)", + "stdout": "pt: 0, 0 == pt\\npt: -1, -2 == pt\\npt: 2147483647, -1 == pt\\npt: -2147483648, -1 == pt\\n" + }, + "SkIPoint_set": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint pt1, pt2 = { SK_MinS32, SK_MaxS32 };\n pt1.set(SK_MinS32, SK_MaxS32);\n SkDebugf(\"pt1 %c= pt2\\n\", pt1 == pt2 ? '=' : '!');\n}", + "hash": "165418b5718d79d8f1682a8a0ee32ba0", + "file": "SkIPoint_Reference", + "name": "SkIPoint::set()", + "stdout": "pt1 == pt2\\n" + }, + "SkIPoint_x": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint pt1 = {45, 66};\n SkDebugf(\"pt1.fX %c= pt1.x()\\n\", pt1.fX == pt1.x() ? '=' : '!');\n}", + "hash": "eed4185294f8a8216fc354e6ee6b2e3a", + "file": "SkIPoint_Reference", + "name": "SkIPoint::x()", + "stdout": "pt1.fX == pt1.x()\\n" + }, + "SkIPoint_y": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint pt1 = {45, 66};\n SkDebugf(\"pt1.fY %c= pt1.y()\\n\", pt1.fY == pt1.y() ? '=' : '!');\n}", + "hash": "35c41b8ba7cebf8c9a7a8494e610e14d", + "file": "SkIPoint_Reference", + "name": "SkIPoint::y()", + "stdout": "pt1.fY == pt1.y()\\n" + }, "SkIRect_EmptyIRect": { "code": "void draw(SkCanvas* canvas) {\n const SkIRect& rect = SkIRect::EmptyIRect();\n SkDebugf(\"rect: %d, %d, %d, %d\\n\", rect.fLeft, rect.fTop, rect.fRight, rect.fBottom);\n}", "hash": "65e0b9b52e907902630577941fb3ed6d", @@ -812,7 +903,7 @@ "name": "SkIRect::makeSorted", "stdout": "rect: 30, 50, 20, 10\\nsorted: 20, 10, 30, 50\\n" }, - "SkIRect_not_equal_operator": { + "SkIRect_notequal_operator": { "code": "void draw(SkCanvas* canvas) {\n SkIRect test = {2, 2, 0, 0};\n SkIRect sorted = test.makeSorted();\n SkDebugf(\"test %c= sorted\\n\", test != sorted ? '!' : '=');\n}", "hash": "6c4acd8aa203f632b7d85cae672abf4d", "file": "SkIRect_Reference", @@ -973,6 +1064,20 @@ "name": "SkMatrix::TypeMask", "stdout": "after reset: kIdentity_Mask \\nafter postTranslate: kTranslate_Mask \\nafter postScale: kTranslate_Mask kScale_Mask \\nafter postScale: kTranslate_Mask kScale_Mask kAffine_Mask \\nafter setPolyToPoly: kTranslate_Mask kScale_Mask kAffine_Mask kPerspective_Mask\\n" }, + "SkMatrix_array1_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setIdentity();\n SkDebugf(\"with identity matrix: x = %g\\n\", matrix.mapXY(24, 42).fX);\n SkScalar& skewRef = matrix[SkMatrix::kMSkewX];\n skewRef = 0;\n SkDebugf(\"after skew x mod: x = %g\\n\", matrix.mapXY(24, 42).fX);\n skewRef = 1;\n SkDebugf(\"after 2nd skew x mod: x = %g\\n\", matrix.mapXY(24, 42).fX);\n matrix.dirtyMatrixTypeCache();\n SkDebugf(\"after dirty cache: x = %g\\n\", matrix.mapXY(24, 42).fX);\n}", + "hash": "f4365ef332f51f7fd25040e0771ba9a2", + "file": "SkMatrix_Reference", + "name": "SkMatrix::operator[](int index)", + "stdout": "with identity matrix: x = 24\\nafter skew x mod: x = 24\\nafter 2nd skew x mod: x = 24\\nafter dirty cache: x = 66\\n" + }, + "SkMatrix_array_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setScale(42, 24);\n SkDebugf(\"matrix[SkMatrix::kMScaleX] %c= 42\\n\", matrix[SkMatrix::kMScaleX] == 42 ? '=' : '!');\n SkDebugf(\"matrix[SkMatrix::kMScaleY] %c= 24\\n\", matrix[SkMatrix::kMScaleY] == 24 ? '=' : '!');\n}", + "hash": "e8740493abdf0c6341762db9cee56b89", + "file": "SkMatrix_Reference", + "name": "SkMatrix::operator[](int index)_const", + "stdout": "matrix[SkMatrix::kMScaleX] == 42\\nmatrix[SkMatrix::kMScaleY] == 24\\n" + }, "SkMatrix_asAffine": { "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setAll(2, 3, 4, 5, 6, 7, 0, 0, 1);\n SkScalar affine[6];\n matrix.asAffine(affine);\n const char* names[] = { \"ScaleX\", \"SkewY\", \"SkewX\", \"ScaleY\", \"TransX\", \"TransY\" };\n for (int i = 0; i < 6; ++i) {\n SkDebugf(\"%s: %g \", names[i], affine[i]);\n }\n SkDebugf(\"\\n\");\n}", "hash": "752e4a48ed1dae05765a2499c390f277", @@ -1134,7 +1239,7 @@ "name": "SkMatrix::isTranslate", "stdout": "is translate: true\\nis translate: true\\nis translate: false\\nis translate: false\\n" }, - "SkMatrix_not_equal_operator": { + "SkMatrix_notequal_operator": { "code": "void draw(SkCanvas* canvas) {\n auto debugster = [](const char* prefix, const SkMatrix& a, const SkMatrix& b) -> void {\n SkDebugf(\"%s: a %c= b a.cheapEqualTo(b): %s\\n\", prefix,\n a != b ? '!' : '=', a.cheapEqualTo(b) ? \"true\" : \"false\");\n };\n SkMatrix a, b;\n a.setAll(1, 0, 0, 0, 1, 0, 1, 0, 1);\n a.invert(&b);\n debugster(\"identity\", a, b);\n}", "hash": "8a8fadf5fd294daa4ee152833cc0dc0e", "file": "SkMatrix_Reference", @@ -1197,20 +1302,6 @@ "name": "SkMatrix::setScaleTranslate", "stdout": "[ 1.0000 0.0000 3.0000][ 0.0000 2.0000 4.0000][ 0.0000 0.0000 1.0000]\\n" }, - "SkMatrix_subscript_operator": { - "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setIdentity();\n SkDebugf(\"with identity matrix: x = %g\\n\", matrix.mapXY(24, 42).fX);\n SkScalar& skewRef = matrix[SkMatrix::kMSkewX];\n skewRef = 0;\n SkDebugf(\"after skew x mod: x = %g\\n\", matrix.mapXY(24, 42).fX);\n skewRef = 1;\n SkDebugf(\"after 2nd skew x mod: x = %g\\n\", matrix.mapXY(24, 42).fX);\n matrix.dirtyMatrixTypeCache();\n SkDebugf(\"after dirty cache: x = %g\\n\", matrix.mapXY(24, 42).fX);\n}", - "hash": "f4365ef332f51f7fd25040e0771ba9a2", - "file": "SkMatrix_Reference", - "name": "SkMatrix::operator[](int index)_2", - "stdout": "with identity matrix: x = 24\\nafter skew x mod: x = 24\\nafter 2nd skew x mod: x = 24\\nafter dirty cache: x = 66\\n" - }, - "SkMatrix_subscript_operator_const": { - "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setScale(42, 24);\n SkDebugf(\"matrix[SkMatrix::kMScaleX] %c= 42\\n\", matrix[SkMatrix::kMScaleX] == 42 ? '=' : '!');\n SkDebugf(\"matrix[SkMatrix::kMScaleY] %c= 24\\n\", matrix[SkMatrix::kMScaleY] == 24 ? '=' : '!');\n}", - "hash": "e8740493abdf0c6341762db9cee56b89", - "file": "SkMatrix_Reference", - "name": "SkMatrix::operator[](int index)", - "stdout": "matrix[SkMatrix::kMScaleX] == 42\\nmatrix[SkMatrix::kMScaleY] == 24\\n" - }, "SkMatrix_toString": { "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setRotate(45);\n SkString mStr, neStr;\n matrix.toString(&mStr);\n SkMatrix nearlyEqual;\n nearlyEqual.setAll(0.7071f, -0.7071f, 0, 0.7071f, 0.7071f, 0, 0, 0, 1);\n nearlyEqual.toString(&neStr);\n SkDebugf(\"mStr %s\\n\", mStr.c_str());\n SkDebugf(\"neStr %s\\n\", neStr.c_str());\n SkDebugf(\"matrix %c= nearlyEqual\\n\", matrix == nearlyEqual ? '=' : '!');\n}", "hash": "1d86e43958e42b8eaaa9b16df1baa4c8", @@ -1232,13 +1323,6 @@ "name": "SkPaint::containsText_2", "stdout": "0x01ff == has glyph\\n0x0000 != has glyph\\n0xffff == has glyph\\n" }, - "SkPaint_copy_assignment_operator": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setColor(SK_ColorRED);\n paint2 = paint1;\n SkDebugf(\"SK_ColorRED %c= paint1.getColor()\\n\", SK_ColorRED == paint1.getColor() ? '=' : '!');\n SkDebugf(\"SK_ColorRED %c= paint2.getColor()\\n\", SK_ColorRED == paint2.getColor() ? '=' : '!');\n}", - "hash": "b476a9088f80dece176ed577807d3992", - "file": "SkPaint_Reference", - "name": "SkPaint::operator=(const SkPaint& paint)", - "stdout": "SK_ColorRED == paint1.getColor()\\nSK_ColorRED == paint2.getColor()\\n" - }, "SkPaint_copy_const_SkPaint": { "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1;\n paint1.setColor(SK_ColorRED);\n SkPaint paint2(paint1);\n paint2.setColor(SK_ColorBLUE);\n SkDebugf(\"SK_ColorRED %c= paint1.getColor()\\n\", SK_ColorRED == paint1.getColor() ? '=' : '!');\n SkDebugf(\"SK_ColorBLUE %c= paint2.getColor()\\n\", SK_ColorBLUE == paint2.getColor() ? '=' : '!');\n}", "hash": "b99971ad0ef243d617925289d963b62d", @@ -1246,6 +1330,13 @@ "name": "SkPaint::SkPaint(const SkPaint& paint)", "stdout": "SK_ColorRED == paint1.getColor()\\nSK_ColorBLUE == paint2.getColor()\\n" }, + "SkPaint_copy_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setColor(SK_ColorRED);\n paint2 = paint1;\n SkDebugf(\"SK_ColorRED %c= paint1.getColor()\\n\", SK_ColorRED == paint1.getColor() ? '=' : '!');\n SkDebugf(\"SK_ColorRED %c= paint2.getColor()\\n\", SK_ColorRED == paint2.getColor() ? '=' : '!');\n}", + "hash": "b476a9088f80dece176ed577807d3992", + "file": "SkPaint_Reference", + "name": "SkPaint::operator=(const SkPaint& paint)", + "stdout": "SK_ColorRED == paint1.getColor()\\nSK_ColorRED == paint2.getColor()\\n" + }, "SkPaint_countText": { "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n const uint8_t utf8[] = { 0x24, 0xC2, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA5, 0xC2, 0xA3 };\n SkDebugf(\"count = %d\\n\", paint.countText(utf8, sizeof(utf8)));\n}", "hash": "85436c71aab5410767fc688ab0573e09", @@ -1345,8 +1436,8 @@ "stdout": "SkPaint::kNormal_Hinting == paint.getHinting()\\n" }, "SkPaint_getImageFilter": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n paint.setImageFilter(SkImageFilter::MakeBlur(kOuter_SkBlurStyle, 3, nullptr, nullptr));\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n}\n", - "hash": "38788d42772641606e08c60d9dd418a2", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n paint.setImageFilter(SkBlurImageFilter::Make(kOuter_SkBlurStyle, 3, nullptr, nullptr));\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n}\n", + "hash": "7b8118ff57fcb84e6bc82380d155b62e", "file": "SkPaint_Reference", "name": "SkPaint::getImageFilter", "stdout": "nullptr == image filter\\nnullptr != image filter\\n" @@ -1540,14 +1631,14 @@ "name": "SkPaint::SkPaint(SkPaint&& paint)", "stdout": "path effect unique: true\\n" }, - "SkPaint_move_assignment_operator": { + "SkPaint_move_operator": { "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setColor(SK_ColorRED);\n paint2 = std::move(paint1);\n SkDebugf(\"SK_ColorRED == paint2.getColor()\\n\", SK_ColorRED == paint2.getColor() ? '=' : '!');\n}", "hash": "9fb7459b097d713f5f1fe5675afe14f5", "file": "SkPaint_Reference", "name": "SkPaint::operator=(SkPaint&& paint)", "stdout": "SK_ColorRED == paint2.getColor()\\n" }, - "SkPaint_not_equal_operator": { + "SkPaint_notequal_operator": { "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setColor(SK_ColorRED);\n paint2.setColor(0xFFFF0000);\n SkDebugf(\"paint1 %c= paint2\\n\", paint1 == paint2 ? '=' : '!');\n SkDebugf(\"paint1 %c= paint2\\n\", paint1 != paint2 ? '!' : '=');\n}", "hash": "b6c8484b1187f555b435ad5369833be4", "file": "SkPaint_Reference", @@ -1590,8 +1681,8 @@ "stdout": "mask filter unique: true\\nmask filter unique: false\\n" }, "SkPaint_refPathEffect": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setPathEffect(SkArcToPathEffect::Make(10));\n SkDebugf(\"path effect unique: %s\\n\", paint1.getPathEffect()->unique() ? \"true\" : \"false\");\n paint2.setPathEffect(paint1.refPathEffect());\n SkDebugf(\"path effect unique: %s\\n\", paint1.getPathEffect()->unique() ? \"true\" : \"false\");\n}\n", - "hash": "c55c74f8f581870bd2c18f2f99765579", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n SkScalar intervals[] = {1, 2};\n paint1.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 10));\n SkDebugf(\"path effect unique: %s\\n\", paint1.getPathEffect()->unique() ? \"true\" : \"false\");\n paint2.setPathEffect(paint1.refPathEffect());\n SkDebugf(\"path effect unique: %s\\n\", paint1.getPathEffect()->unique() ? \"true\" : \"false\");\n}\n", + "hash": "f56039b94c702c2704c8c5100e623aca", "file": "SkPaint_Reference", "name": "SkPaint::refPathEffect", "stdout": "path effect unique: true\\npath effect unique: false\\n" @@ -1932,13 +2023,6 @@ "name": "SkPath::computeTightBounds", "stdout": "empty bounds = 0, 0, 0, 0\\ncircle bounds = 25, 20, 75, 70\\nrotated circle bounds = 25, 20, 75, 70\\n" }, - "SkPath_copy_assignment_operator": { - "code": "void draw(SkCanvas* canvas) {\n SkPath path1;\n path1.addRect({10, 20, 30, 40});\n SkPath path2 = path1;\n const SkRect& b1 = path1.getBounds();\n SkDebugf(\"path1 bounds = %g, %g, %g, %g\\n\", b1.fLeft, b1.fTop, b1.fRight, b1.fBottom);\n const SkRect& b2 = path2.getBounds();\n SkDebugf(\"path2 bounds = %g, %g, %g, %g\\n\", b2.fLeft, b2.fTop, b2.fRight, b2.fBottom);\n}", - "hash": "bba288f5f77fc8e37e89d2ec08e0ac60", - "file": "SkPath_Reference", - "name": "SkPath::operator=(const SkPath& path)", - "stdout": "path1 bounds = 10, 20, 30, 40\\npath2 bounds = 10, 20, 30, 40\\n" - }, "SkPath_copy_const_SkPath": { "code": "void draw(SkCanvas* canvas) {\n SkPath path;\n path.lineTo(20, 20);\n SkPath path2(path);\n path2.close();\n SkDebugf(\"path verbs: %d\\n\", path.countVerbs());\n SkDebugf(\"path2 verbs: %d\\n\", path2.countVerbs());\n path.reset();\n SkDebugf(\"after reset\\n\" \"path verbs: %d\\n\", path.countVerbs());\n SkDebugf(\"path2 verbs: %d\\n\", path2.countVerbs());\n}", "hash": "647312aacd946c8a6eabaca797140432", @@ -1946,6 +2030,13 @@ "name": "SkPath::SkPath(const SkPath& path)", "stdout": "path verbs: 2\\npath2 verbs: 3\\nafter reset\\npath verbs: 0\\npath2 verbs: 3\\n" }, + "SkPath_copy_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPath path1;\n path1.addRect({10, 20, 30, 40});\n SkPath path2 = path1;\n const SkRect& b1 = path1.getBounds();\n SkDebugf(\"path1 bounds = %g, %g, %g, %g\\n\", b1.fLeft, b1.fTop, b1.fRight, b1.fBottom);\n const SkRect& b2 = path2.getBounds();\n SkDebugf(\"path2 bounds = %g, %g, %g, %g\\n\", b2.fLeft, b2.fTop, b2.fRight, b2.fBottom);\n}", + "hash": "bba288f5f77fc8e37e89d2ec08e0ac60", + "file": "SkPath_Reference", + "name": "SkPath::operator=(const SkPath& path)", + "stdout": "path1 bounds = 10, 20, 30, 40\\npath2 bounds = 10, 20, 30, 40\\n" + }, "SkPath_countPoints": { "code": "void draw(SkCanvas* canvas) {\n auto debugster = [](const char* prefix, const SkPath& path) -> void {\n SkDebugf(\"%s point count: %d\\n\", prefix, path.countPoints());\n };\n SkPath path;\n debugster(\"empty\", path);\n path.lineTo(0, 0);\n debugster(\"zero line\", path);\n path.rewind();\n path.moveTo(10, 10);\n path.lineTo(20, 20);\n debugster(\"line\", path);\n path.moveTo(20, 20);\n debugster(\"second move\", path);\n}\n", "hash": "bca6379ccef62cb081b10db7381deb27", @@ -2135,7 +2226,7 @@ "name": "SkPath::isVolatile", "stdout": "volatile by default is false\\n" }, - "SkPath_not_equal_operator": { + "SkPath_notequal_operator": { "code": "void draw(SkCanvas* canvas) {\n auto debugster = [](const char* prefix, const SkPath& a, const SkPath& b) -> void {\n SkDebugf(\"%s one %c= two\\n\", prefix, a != b ? '!' : '=');\n };\n SkPath one;\n SkPath two;\n debugster(\"empty\", one, two);\n one.addRect({10, 20, 30, 40});\n two.addRect({10, 20, 30, 40});\n debugster(\"addRect\", one, two);\n one.setConvexity(SkPath::kConcave_Convexity);\n debugster(\"setConvexity\", one, two);\n SkDebugf(\"convexity %c=\\n\", one.getConvexity() == two.getConvexity() ? '=' : '!');\n}\n", "hash": "0c6870ba1cea85ce6da5abd489c23d83", "file": "SkPath_Reference", @@ -2189,7 +2280,7 @@ "hash": "bb761cd858e6d0ca05627262cd22ff5e", "file": "SkPath_Reference", "name": "SkPath::updateBoundsCache", - "stdout": "uncached avg: 0.199424 ms\\ncached avg: 0.193792 ms\\n" + "stdout": "uncached avg: 0.16768 ms\\ncached avg: 0.163072 ms\\n" }, "SkPath_writeToMemory": { "code": "void draw(SkCanvas* canvas) {\n SkPath path, copy;\n path.lineTo(6.f / 7, 2.f / 3);\n size_t size = path.writeToMemory(nullptr);\n SkTDArray<char> storage;\n storage.setCount(size);\n path.writeToMemory(storage.begin());\n copy.readFromMemory(storage.begin(), size);\n SkDebugf(\"path is \" \"%s\" \"equal to copy\\n\", path == copy ? \"\" : \"not \");\n}\n", @@ -2203,7 +2294,7 @@ "hash": "17bcabaaee2dbb7beba562e9ca50b55e", "file": "SkPixmap_Reference", "name": "SkPixmap::addr()", - "stdout": "pixels address: 0x7fd2438f2010\\ninset address: 0x7fd243932210\\n" + "stdout": "pixels address: 0x7fe0b7478010\\ninset address: 0x7fe0b74b8210\\n" }, "SkPixmap_addr16": { "code": "void draw(SkCanvas* canvas) {\n const int w = 4;\n const int h = 4;\n uint16_t storage[w * h];\n SkPixmap pixmap(SkImageInfo::Make(w, h, kARGB_4444_SkColorType, kPremul_SkAlphaType),\n storage, w * sizeof(storage[0]));\n SkDebugf(\"pixmap.addr16() %c= storage\\n\",\n pixmap.addr16() == storage ? '=' : '!');\n}", @@ -2429,6 +2520,104 @@ "name": "SkPixmap::writable_addr_2", "stdout": "pixmap.writable_addr() == (void *)storage\\npixmap.getColor(0, 0) == 0x00000000\\npixmap.getColor(1, 2) == 0xFFFFFFFF\\n" }, + "SkPoint_Make": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt1 = {45, 66};\n SkPoint pt2 = SkPoint::Make(45, 66);\n SkVector v1 = {45, 66};\n SkVector v2 = SkPoint::Make(45, 66);\n SkDebugf(\"all %s\" \"equal\\n\", pt1 == pt2 && pt2 == v1 && v1 == v2 ? \"\" : \"not \");\n}", + "hash": "d266e70977847001f7c42f8a2513bee7", + "file": "SkPoint_Reference", + "name": "SkPoint::Make", + "stdout": "all equal\\n" + }, + "SkPoint_equal_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0, -0.f}, {-1, -2}, {SK_ScalarInfinity, 1}, {SK_ScalarNaN, -1} };\n for (const SkPoint& pt : test) {\n SkDebugf(\"pt: %g, %g %c= pt\\n\", pt.fX, pt.fY, pt == pt ? '=' : '!');\n }\n}", + "hash": "741f793334a48a35dadf4310d7ea52cb", + "file": "SkPoint_Reference", + "name": "SkPoint::operator==(const SkPoint& a, const SkPoint& b)", + "stdout": "pt: 0, -0 == pt\\npt: -1, -2 == pt\\npt: inf, 1 == pt\\npt: nan, -1 != pt\\n" + }, + "SkPoint_equals": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0, -0.f}, {-1, -2}, {SK_ScalarInfinity, 1}, {SK_ScalarNaN, -1} };\n for (const SkPoint& pt : test) {\n SkDebugf(\"pt: %g, %g %c= pt\\n\", pt.fX, pt.fY, pt.equals(pt.fX, pt.fY) ? '=' : '!');\n }\n}", + "hash": "4cecb878c8b66beffda051f26c00f817", + "file": "SkPoint_Reference", + "name": "SkPoint::equals()", + "stdout": "pt: 0, -0 == pt\\npt: -1, -2 == pt\\npt: inf, 1 == pt\\npt: nan, -1 != pt\\n" + }, + "SkPoint_isFinite": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0, -0.f}, {-1, -2}, {SK_ScalarInfinity, 1}, {SK_ScalarNaN, -1} };\n for (const SkPoint& pt : test) {\n SkDebugf(\"pt: %g, %g finite: %s\\n\", pt.fX, pt.fY, pt.isFinite() ? \"true\" : \"false\");\n }\n}", + "hash": "937cc166cc0e220f33fb82501141d0b3", + "file": "SkPoint_Reference", + "name": "SkPoint::isFinite", + "stdout": "pt: 0, -0 finite: true\\npt: -1, -2 finite: true\\npt: inf, 1 finite: false\\npt: nan, -1 finite: false\\n" + }, + "SkPoint_isZero": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt = { 0.f, -0.f};\n SkDebugf(\"pt.fX=%c%g pt.fY=%c%g\\n\", std::signbit(pt.fX) ? '-' : '+', fabsf(pt.fX),\n std::signbit(pt.fY) ? '-' : '+', fabsf(pt.fY));\n SkDebugf(\"pt.isZero() == %s\\n\", pt.isZero() ? \"true\" : \"false\");\n}", + "hash": "81b9665110b88ef6bcbc20464aed7da1", + "file": "SkPoint_Reference", + "name": "SkPoint::isZero", + "stdout": "pt.fX=+0 pt.fY=-0\\npt.isZero() == true\\n" + }, + "SkPoint_iset": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt1, pt2 = { SK_MinS16, SK_MaxS16 };\n pt1.iset(SK_MinS16, SK_MaxS16);\n SkDebugf(\"pt1 %c= pt2\\n\", pt1 == pt2 ? '=' : '!');\n}", + "hash": "0d9e8ed734981b5b113f22c7bfde5357", + "file": "SkPoint_Reference", + "name": "SkPoint::iset()", + "stdout": "pt1 == pt2\\n" + }, + "SkPoint_iset_2": { + "code": "void draw(SkCanvas* canvas) {\n SkIPoint iPt = { SK_MinS32, SK_MaxS32 };\n SkPoint fPt;\n fPt.iset(iPt);\n SkDebugf(\"iPt: %d, %d\\n\", iPt.fX, iPt.fY);\n SkDebugf(\"fPt: %g, %g\\n\", fPt.fX, fPt.fY);\n}", + "hash": "12b7164a769e232bb772f19c59600ee7", + "file": "SkPoint_Reference", + "name": "SkPoint::iset_2", + "stdout": "iPt: -2147483647, 2147483647\\nfPt: -2.14748e+09, 2.14748e+09\\n" + }, + "SkPoint_minus_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0.f, -0.f}, {-1, -2},\n { SK_ScalarInfinity, SK_ScalarNegativeInfinity },\n { SK_ScalarNaN, -SK_ScalarNaN } };\n for (const SkPoint& pt : test) {\n SkPoint negPt = -pt;\n SkDebugf(\"pt: %g, %g negate: %g, %g\\n\", pt.fX, pt.fY, negPt.fX, negPt.fY);\n }\n}", + "hash": "9baf247cfcd8272c0ddf6ce93f676b37", + "file": "SkPoint_Reference", + "name": "SkPoint::operator-()_const", + "stdout": "pt: 0, -0 negate: -0, 0\\npt: -1, -2 negate: 1, 2\\npt: inf, -inf negate: -inf, inf\\npt: nan, -nan negate: -nan, nan\\n" + }, + "SkPoint_negate": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0.f, -0.f}, {-1, -2},\n { SK_ScalarInfinity, SK_ScalarNegativeInfinity },\n { SK_ScalarNaN, -SK_ScalarNaN } };\n for (const SkPoint& pt : test) {\n SkPoint negPt = pt;\n negPt.negate();\n SkDebugf(\"pt: %g, %g negate: %g, %g\\n\", pt.fX, pt.fY, negPt.fX, negPt.fY);\n }\n}", + "hash": "312c0c8065ab5d0adfda80cccf2d11e6", + "file": "SkPoint_Reference", + "name": "SkPoint::negate()", + "stdout": "pt: 0, -0 negate: -0, 0\\npt: -1, -2 negate: 1, 2\\npt: inf, -inf negate: -inf, inf\\npt: nan, -nan negate: -nan, nan\\n" + }, + "SkPoint_notequal_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0, -0.f}, {-1, -2}, {SK_ScalarInfinity, 1}, {SK_ScalarNaN, -1} };\n for (const SkPoint& pt : test) {\n SkDebugf(\"pt: %g, %g %c= pt\\n\", pt.fX, pt.fY, pt != pt ? '!' : '=');\n }\n}", + "hash": "8fe8572685eaa617f25a5a6767a874dc", + "file": "SkPoint_Reference", + "name": "SkPoint::operator!=(const SkPoint& a, const SkPoint& b)", + "stdout": "pt: 0, -0 == pt\\npt: -1, -2 == pt\\npt: inf, 1 == pt\\npt: nan, -1 != pt\\n" + }, + "SkPoint_set": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt1, pt2 = { SK_ScalarPI, SK_ScalarSqrt2 };\n pt1.set(SK_ScalarPI, SK_ScalarSqrt2);\n SkDebugf(\"pt1 %c= pt2\\n\", pt1 == pt2 ? '=' : '!');\n}", + "hash": "d08d1e7dafcad4342d1619fdbb2f5781", + "file": "SkPoint_Reference", + "name": "SkPoint::set()", + "stdout": "pt1 == pt2\\n" + }, + "SkPoint_setAbs": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint test[] = { {0.f, -0.f}, {-1, -2},\n { SK_ScalarInfinity, SK_ScalarNegativeInfinity },\n { SK_ScalarNaN, -SK_ScalarNaN } };\n for (const SkPoint& pt : test) {\n SkPoint absPt;\n absPt.setAbs(pt);\n SkDebugf(\"pt: %g, %g abs: %g, %g\\n\", pt.fX, pt.fY, absPt.fX, absPt.fY);\n }\n}", + "hash": "7f70860e820b67a347cff03c00488426", + "file": "SkPoint_Reference", + "name": "SkPoint::setAbs", + "stdout": "pt: 0, -0 abs: 0, 0\\npt: -1, -2 abs: 1, 2\\npt: inf, -inf abs: inf, inf\\npt: nan, -nan abs: nan, nan\\n" + }, + "SkPoint_x": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt1 = {45, 66};\n SkDebugf(\"pt1.fX %c= pt1.x()\\n\", pt1.fX == pt1.x() ? '=' : '!');\n}", + "hash": "9f3fe446b800ae1d940785d438634941", + "file": "SkPoint_Reference", + "name": "SkPoint::x()", + "stdout": "pt1.fX == pt1.x()\\n" + }, + "SkPoint_y": { + "code": "void draw(SkCanvas* canvas) {\n SkPoint pt1 = {45, 66};\n SkDebugf(\"pt1.fY %c= pt1.y()\\n\", pt1.fY == pt1.y() ? '=' : '!');\n}", + "hash": "4c962850c2dbea4d2325df469400680e", + "file": "SkPoint_Reference", + "name": "SkPoint::y()", + "stdout": "pt1.fY == pt1.y()\\n" + }, "SkRect_Intersects": { "code": "void draw(SkCanvas* canvas) {\n SkDebugf(\"%s intersection\", SkRect::Intersects({10, 40, 50, 80}, {30, 60, 70, 90}) ? \"\" : \"no \");\n}", "hash": "795061764b10c9e05efb466c9cb60644", @@ -2595,7 +2784,7 @@ "hash": "6dbf21017c60b76cae3379fd9101342a", "file": "SkRect_Reference", "name": "SkRect::growToInclude_3", - "stdout": "rect: -1.53059e-20, 0, 3.85186e-34, 4" + "stdout": "rect: 0, 0, 1.04934e+27, 4" }, "SkRect_height": { "code": "void draw(SkCanvas* canvas) {\n SkRect unsorted = { 15, 25, 10, 20 };\n SkDebugf(\"unsorted height: %g\\n\", unsorted.height());\n SkRect large = { 1, -2147483647.f, 2, 2147483644.f };\n SkDebugf(\"large height: %.0f\\n\", large.height());\n}", @@ -2751,7 +2940,7 @@ "name": "SkRect::makeSorted", "stdout": "rect: 30.5, 50.5, 20.5, 10.5\\nsorted: 20.5, 10.5, 30.5, 50.5\\n" }, - "SkRect_not_equal_operator": { + "SkRect_notequal_operator": { "code": "void draw(SkCanvas* canvas) {\n SkRect test = {0, 0, 2, SK_ScalarNaN};\n SkDebugf(\"test with NaN is %s\" \"equal to itself\\n\", test == test ? \"\" : \"not \");\n}", "hash": "286072f8c27ff15be9eb945fa38dc9f7", "file": "SkRect_Reference", @@ -2960,6 +3149,83 @@ "file": "SkRect_Reference", "name": "SkRect::y()", "stdout": "unsorted.fTop: 25 unsorted.y(): 25\\nsorted.fTop: 5 sorted.y(): 5\\n" + }, + "SkSurface_MakeNull": { + "code": "void draw(SkCanvas* canvas) {\n SkDebugf(\"SkSurface::MakeNull(0, 0) %c= nullptr\\n\", SkSurface::MakeNull(0, 0) == nullptr ?\n '=' : '!');\n const int w = 37;\n const int h = 1000;\n auto surf = SkSurface::MakeNull(w, h);\n auto nullCanvas = surf->getCanvas();\n nullCanvas->drawPaint(SkPaint()); // does not crash, nothing draws\n SkDebugf(\"surf->makeImageSnapshot() %c= nullptr\\n\", surf->makeImageSnapshot() == nullptr ?\n '=' : '!');\n}", + "hash": "99a54b814ccab7d2b1143c88581649ff", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeNull", + "stdout": "SkSurface::MakeNull(0, 0) == nullptr\\nsurf-\\u003emakeImageSnapshot() == nullptr\\n" + }, + "SkSurface_MakeRaster": { + "code": "void draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n const size_t rowBytes = 64;\n sk_sp<SkSurface> surface(SkSurface::MakeRaster(info, rowBytes, nullptr));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPixmap pixmap;\n if (surface->peekPixels(&pixmap)) {\n const uint32_t* colorPtr = pixmap.addr32();\n SkPMColor pmWhite = colorPtr[0];\n SkPaint paint;\n canvas->drawPoint(1, 1, paint);\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", colorPtr[x] == pmWhite ? '-' : 'x');\n }\n colorPtr += rowBytes / sizeof(colorPtr[0]);\n SkDebugf(\"\\n\");\n }\n }\n}\n", + "hash": "a803910ada4f8733f0b62456afead55f", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRaster", + "stdout": "---\\n-x-\\n---\\n" + }, + "SkSurface_MakeRasterDirect": { + "code": "void draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n const size_t size = info.computeMinByteSize();\n SkAutoTMalloc<SkPMColor> storage(size);\n SkPMColor* pixels = storage.get();\n sk_sp<SkSurface> surface(SkSurface::MakeRasterDirect(info, pixels, info.minRowBytes()));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPMColor pmWhite = pixels[0];\n SkPaint paint;\n canvas->drawPoint(1, 1, paint);\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", *pixels++ == pmWhite ? '-' : 'x');\n }\n SkDebugf(\"\\n\");\n }\n}\n", + "hash": "3f5aeb870104187643197354a7f1d27a", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRasterDirect", + "stdout": "---\\n-x-\\n---\\n" + }, + "SkSurface_MakeRasterDirectReleaseProc": { + "code": "static void release_direct_surface_storage(void* pixels, void* context) {\n if (pixels == context) {\n SkDebugf(\"expected release context\\n\");\n }\n sk_free(pixels);\n}\n\nvoid draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n const size_t rowBytes = info.minRowBytes();\n void* pixels = sk_malloc_throw(info.computeByteSize(rowBytes));\n sk_sp<SkSurface> surface(SkSurface::MakeRasterDirectReleaseProc(info, pixels, rowBytes,\n release_direct_surface_storage, pixels));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPMColor* colorPtr = (SkPMColor*) pixels;\n SkPMColor pmWhite = colorPtr[0];\n SkPaint paint;\n canvas->drawPoint(1, 1, paint);\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", *colorPtr++ == pmWhite ? '-' : 'x');\n }\n SkDebugf(\"\\n\");\n }\n}\n", + "hash": "8e6530b26ab4096a9a91cfaadda1c568", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRasterDirectReleaseProc", + "stdout": "---\\n-x-\\n---\\nexpected release context\\n" + }, + "SkSurface_MakeRasterN32Premul": { + "code": "void draw(SkCanvas* ) {\n sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(3, 3));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPixmap pixmap;\n if (surface->peekPixels(&pixmap)) {\n const uint32_t* colorPtr = pixmap.addr32();\n SkPMColor pmWhite = colorPtr[0];\n SkPaint paint;\n canvas->drawPoint(1, 1, paint);\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < surface->height(); ++y) {\n for (int x = 0; x < surface->width(); ++x) {\n SkDebugf(\"%c\", colorPtr[x] == pmWhite ? '-' : 'x');\n }\n colorPtr += surface->width();\n SkDebugf(\"\\n\");\n }\n }\n}\n", + "hash": "b932a2bd68455fb0af2e7a1ed19e36b3", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRasterN32Premul", + "stdout": "---\\n-x-\\n---\\n" + }, + "SkSurface_MakeRaster_2": { + "code": "void draw(SkCanvas* ) {\n SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n sk_sp<SkSurface> surface(SkSurface::MakeRaster(info));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPixmap pixmap;\n if (surface->peekPixels(&pixmap)) {\n const uint32_t* colorPtr = pixmap.addr32();\n SkPMColor pmWhite = colorPtr[0];\n SkPaint paint;\n canvas->drawPoint(1, 1, paint);\n canvas->flush(); // ensure that point was drawn\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n SkDebugf(\"%c\", colorPtr[x] == pmWhite ? '-' : 'x');\n }\n colorPtr += info.width();\n SkDebugf(\"\\n\");\n }\n }\n}\n", + "hash": "c6197d204ef9e4ccfb583242651fb2a7", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRaster_2", + "stdout": "---\\n-x-\\n---\\n" + }, + "SkSurface_generationID": { + "code": "void draw(SkCanvas* canvas) {\n auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n for (int i = 0; i < 3; ++i) {\n SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n if (0 == i) {\n surface->getCanvas()->drawColor(SK_ColorBLACK);\n } else {\n surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n }\n }\n}", + "hash": "be9574c4a14f891e1abb4ec2b1e51d6c", + "file": "SkSurface_Reference", + "name": "SkSurface::generationID", + "stdout": "surface generationID: 1\\nsurface generationID: 2\\nsurface generationID: 3\\n" + }, + "SkSurface_height": { + "code": "void draw(SkCanvas* canvas) {\n const int width = 37;\n const int height = 1000;\n auto surf = SkSurface::MakeNull(width, height);\n auto nullCanvas = surf->getCanvas();\n SkDebugf(\"surface height=%d canvas height=%d\\n\", surf->height(),\n nullCanvas->getBaseLayerSize().fHeight);\n}", + "hash": "20571cc23e3146deaa09046b64cc0aef", + "file": "SkSurface_Reference", + "name": "SkSurface::height()", + "stdout": "surface height=1000 canvas height=1000\\n" + }, + "SkSurface_notifyContentWillChange": { + "code": "void draw(SkCanvas* canvas) {\n auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n for (int i = 0; i < 3; ++i) {\n SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n if (0 == i) {\n surface->getCanvas()->drawColor(SK_ColorBLACK);\n } else {\n surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n }\n }\n}", + "hash": "be9574c4a14f891e1abb4ec2b1e51d6c", + "file": "SkSurface_Reference", + "name": "SkSurface::notifyContentWillChange", + "stdout": "surface generationID: 1\\nsurface generationID: 2\\nsurface generationID: 3\\n" + }, + "SkSurface_props": { + "code": "void draw(SkCanvas* canvas) {\n const char* names[] = { \"Unknown\", \"RGB_H\", \"BGR_H\", \"RGB_V\", \"BGR_V\" };\n sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n SkDebugf(\"surf.props(): k%s_SkPixelGeometry\\n\", names[surf->props().pixelGeometry()]);\n}", + "hash": "13cf9e7b2894ae6e98c1fd719040bf01", + "file": "SkSurface_Reference", + "name": "SkSurface::props()", + "stdout": "surf.props(): kRGB_H_SkPixelGeometry\\n" + }, + "SkSurface_width": { + "code": "void draw(SkCanvas* canvas) {\n const int width = 37;\n const int height = 1000;\n auto surf = SkSurface::MakeNull(width, height);\n auto nullCanvas = surf->getCanvas();\n SkDebugf(\"surface width=%d canvas width=%d\\n\", surf->width(),\n nullCanvas->getBaseLayerSize().fWidth);\n}", + "hash": "df066b56dd97c7c589fd2bb6a2539de8", + "file": "SkSurface_Reference", + "name": "SkSurface::width()", + "stdout": "surface width=37 canvas width=37\\n" } } @@ -3068,18 +3334,18 @@ "name": "Filter_Quality_Methods" }, "Paint_Font_Metrics": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextSize(120);\n SkPaint::FontMetrics fm;\n SkScalar lineHeight = paint.getFontMetrics(&fm);\n SkPoint pt = { 70, 180 };\n canvas->drawString(\"M\", pt.fX, pt.fY, paint);\n canvas->drawLine(pt.fX, pt.fY, pt.fX, pt.fY + fm.fTop, paint);\n SkScalar ascent = pt.fY + fm.fAscent;\n canvas->drawLine(pt.fX - 25, ascent, pt.fX - 25, ascent + lineHeight, paint);\n canvas->drawLine(pt.fX - 50, pt.fY, pt.fX - 50, pt.fY + fm.fDescent, paint);\n canvas->drawLine(pt.fX + 100, pt.fY, pt.fX + 100, pt.fY + fm.fAscent, paint);\n canvas->drawLine(pt.fX + 125, pt.fY, pt.fX + 125, pt.fY - fm.fXHeight, paint);\n canvas->drawLine(pt.fX + 150, pt.fY, pt.fX + 150, pt.fY - fm.fCapHeight, paint);\n canvas->drawLine(pt.fX + 5, pt.fY, pt.fX + 5, pt.fY + fm.fBottom, paint);\n SkScalar xmin = pt.fX + fm.fXMin;\n canvas->drawLine(xmin, pt.fY + 60, xmin + fm.fMaxCharWidth, pt.fY + 60, paint);\n canvas->drawLine(xmin, pt.fY - 145, pt.fX, pt.fY - 145, paint);\n canvas->drawLine(pt.fX + fm.fXMax, pt.fY - 160, pt.fX, pt.fY - 160, paint);\n SkScalar upos = pt.fY + fm.fUnderlinePosition;\n canvas->drawLine(pt.fX + 25, upos, pt.fX + 130, upos, paint);\n SkScalar urad = fm.fUnderlineThickness / 2;\n canvas->drawLine(pt.fX + 130, upos - urad, pt.fX + 160, upos - urad, paint);\n canvas->drawLine(pt.fX + 130, upos + urad, pt.fX + 160, upos + urad, paint);\n paint.setTextSize(12);\n canvas->drawString(\"x-min\", pt.fX - 50, pt.fY - 148, paint);\n canvas->drawString(\"x-max\", pt.fX + 140, pt.fY - 150, paint);\n canvas->drawString(\"max char width\", pt.fX + 120, pt.fY + 57, paint);\n canvas->drawString(\"underline position\", pt.fX + 30, pt.fY + 22, paint);\n canvas->drawString(\"underline thickness\", pt.fX + 162, pt.fY + 13, paint);\n canvas->rotate(-90);\n canvas->drawString(\"descent\", -pt.fY - 30, pt.fX - 54, paint);\n canvas->drawString(\"line height\", -pt.fY, pt.fX - 29, paint);\n canvas->drawString(\"top\", -pt.fY + 30, pt.fX - 4, paint);\n canvas->drawString(\"ascent\", -pt.fY, pt.fX + 110, paint);\n canvas->drawString(\"x-height\", -pt.fY, pt.fX + 135, paint);\n canvas->drawString(\"cap-height\", -pt.fY, pt.fX + 160, paint);\n canvas->drawString(\"bottom\", -pt.fY - 50, pt.fX + 15, paint);\n}\n", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextSize(120);\n SkPaint::FontMetrics fm;\n SkScalar lineHeight = paint.getFontMetrics(&fm);\n SkPoint pt = { 70, 180 };\n canvas->drawString(\"M\", pt.fX, pt.fY, paint);\n canvas->drawLine(pt.fX, pt.fY, pt.fX, pt.fY + fm.fTop, paint);\n SkScalar ascent = pt.fY + fm.fAscent;\n canvas->drawLine(pt.fX - 25, ascent, pt.fX - 25, ascent + lineHeight, paint);\n canvas->drawLine(pt.fX - 50, pt.fY, pt.fX - 50, pt.fY + fm.fDescent, paint);\n canvas->drawLine(pt.fX + 100, pt.fY, pt.fX + 100, pt.fY + fm.fAscent, paint);\n canvas->drawLine(pt.fX + 125, pt.fY, pt.fX + 125, pt.fY - fm.fXHeight, paint);\n canvas->drawLine(pt.fX + 150, pt.fY, pt.fX + 150, pt.fY - fm.fCapHeight, paint);\n canvas->drawLine(pt.fX + 5, pt.fY, pt.fX + 5, pt.fY + fm.fBottom, paint);\n SkScalar xmin = pt.fX + fm.fXMin;\n canvas->drawLine(xmin, pt.fY + 60, xmin + fm.fMaxCharWidth, pt.fY + 60, paint);\n canvas->drawLine(xmin, pt.fY - 145, pt.fX, pt.fY - 145, paint);\n canvas->drawLine(pt.fX + fm.fXMax, pt.fY - 160, pt.fX, pt.fY - 160, paint);\n SkScalar upos = pt.fY + fm.fUnderlinePosition;\n canvas->drawLine(pt.fX + 25, upos, pt.fX + 160, upos, paint);\n SkScalar ut = fm.fUnderlineThickness;\n canvas->drawLine(pt.fX + 130, upos + ut, pt.fX + 160, upos + ut, paint);\n paint.setTextSize(12);\n canvas->drawString(\"x-min\", pt.fX - 50, pt.fY - 148, paint);\n canvas->drawString(\"x-max\", pt.fX + 140, pt.fY - 150, paint);\n canvas->drawString(\"max char width\", pt.fX + 120, pt.fY + 57, paint);\n canvas->drawString(\"underline position\", pt.fX + 30, pt.fY + 22, paint);\n canvas->drawString(\"underline thickness\", pt.fX + 162, pt.fY + 13, paint);\n canvas->rotate(-90);\n canvas->drawString(\"descent\", -pt.fY - 30, pt.fX - 54, paint);\n canvas->drawString(\"line height\", -pt.fY, pt.fX - 29, paint);\n canvas->drawString(\"top\", -pt.fY + 30, pt.fX - 4, paint);\n canvas->drawString(\"ascent\", -pt.fY, pt.fX + 110, paint);\n canvas->drawString(\"x-height\", -pt.fY, pt.fX + 135, paint);\n canvas->drawString(\"cap-height\", -pt.fY, pt.fX + 160, paint);\n canvas->drawString(\"bottom\", -pt.fY - 50, pt.fX + 15, paint);\n}\n", "width": 512, "height": 256, - "hash": "b5b76e0a15da0c3530071186a9006498", + "hash": "2bfa3783719fcd769af177a1b244e171", "file": "SkPaint_Reference", "name": "Font_Metrics" }, "Paint_Image_Filter_Methods": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setStrokeWidth(2);\n SkRegion region;\n region.op( 10, 10, 50, 50, SkRegion::kUnion_Op);\n region.op( 10, 50, 90, 90, SkRegion::kUnion_Op);\n paint.setImageFilter(SkImageFilter::MakeBlur(5.0f, 5.0f, nullptr));\n canvas->drawRegion(region, paint);\n paint.setImageFilter(nullptr);\n paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 5));\n canvas->translate(100, 100);\n canvas->drawRegion(region, paint);\n}\n", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setStrokeWidth(2);\n SkRegion region;\n region.op( 10, 10, 50, 50, SkRegion::kUnion_Op);\n region.op( 10, 50, 90, 90, SkRegion::kUnion_Op);\n paint.setImageFilter(SkBlurImageFilter::Make(5.0f, 5.0f, nullptr));\n canvas->drawRegion(region, paint);\n paint.setImageFilter(nullptr);\n paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 5));\n canvas->translate(100, 100);\n canvas->drawRegion(region, paint);\n}\n", "width": 256, "height": 256, - "hash": "88804938b49eb4f7c7f01ad52f4db0d8", + "hash": "0b2eec148d6397d6231e1fa0b3d1496d", "file": "SkPaint_Reference", "name": "Image_Filter_Methods" }, @@ -3204,10 +3470,10 @@ "name": "Text_Skew_X" }, "Paint_Typeface_Methods": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTypeface(SkTypeface::MakeDefault(SkTypeface::kBold));\n paint.setAntiAlias(true);\n paint.setTextSize(36);\n canvas->drawString(\"A Big Hello!\", 10, 40, paint);\n paint.setTypeface(nullptr);\n paint.setFakeBoldText(true);\n canvas->drawString(\"A Big Hello!\", 10, 80, paint);\n}\n", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTypeface(SkTypeface::MakeFromName(nullptr, SkFontStyle()));\n paint.setAntiAlias(true);\n paint.setTextSize(36);\n canvas->drawString(\"A Big Hello!\", 10, 40, paint);\n paint.setTypeface(nullptr);\n paint.setFakeBoldText(true);\n canvas->drawString(\"A Big Hello!\", 10, 80, paint);\n}\n", "width": 256, "height": 100, - "hash": "c18b1696b8c1649bebf7eb1f8b89e0b0", + "hash": "1a7a5062725139760962582f599f1b97", "file": "SkPaint_Reference", "name": "Typeface_Methods" }, @@ -4308,10 +4574,10 @@ "name": "SkCanvas::save()" }, "SkCanvas_saveLayer": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint, blur;\n blur.setImageFilter(SkImageFilter::MakeBlur(3, 3, nullptr));\n canvas->saveLayer(nullptr, &blur);\n SkRect rect = { 25, 25, 50, 50};\n canvas->drawRect(rect, paint);\n canvas->translate(50, 50);\n paint.setColor(SK_ColorRED);\n canvas->drawRect(rect, paint);\n canvas->restore();\n}\n", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint, blur;\n blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n canvas->saveLayer(nullptr, &blur);\n SkRect rect = { 25, 25, 50, 50};\n canvas->drawRect(rect, paint);\n canvas->translate(50, 50);\n paint.setColor(SK_ColorRED);\n canvas->drawRect(rect, paint);\n canvas->restore();\n}\n", "width": 256, "height": 128, - "hash": "05f9b6fa6b5007aea89dfe66c306855d", + "hash": "1a025d6018f64140af2dc36acad59008", "file": "SkCanvas_Reference", "name": "SkCanvas::saveLayer" }, @@ -4332,10 +4598,10 @@ "name": "SkCanvas::saveLayerPreserveLCDTextRequests" }, "SkCanvas_saveLayer_2": { - "code": "void draw(SkCanvas* canvas) {\n SkPaint paint, blur;\n blur.setImageFilter(SkImageFilter::MakeBlur(3, 3, nullptr));\n canvas->saveLayer(SkRect::MakeWH(90, 90), &blur);\n SkRect rect = { 25, 25, 50, 50};\n canvas->drawRect(rect, paint);\n canvas->translate(50, 50);\n paint.setColor(SK_ColorRED);\n canvas->drawRect(rect, paint);\n canvas->restore();\n}\n", + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint, blur;\n blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n canvas->saveLayer(SkRect::MakeWH(90, 90), &blur);\n SkRect rect = { 25, 25, 50, 50};\n canvas->drawRect(rect, paint);\n canvas->translate(50, 50);\n paint.setColor(SK_ColorRED);\n canvas->drawRect(rect, paint);\n canvas->restore();\n}\n", "width": 256, "height": 128, - "hash": "812f3c8f8b93e8c7e55528c7a22887bf", + "hash": "5b59231feae0c09cb1ab6a292229d7a4", "file": "SkCanvas_Reference", "name": "SkCanvas::saveLayer_2" }, @@ -4395,6 +4661,462 @@ "file": "SkCanvas_Reference", "name": "SkCanvas::writePixels_2" }, + "SkIPoint_add_operator": { + "code": "void draw(SkCanvas* canvas) {\n auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {\n for (size_t i = 0; i < count - 1; ++i) {\n SkPoint p0, p1;\n p0.iset(pts[i]);\n p1.iset(pts[i + 1]);\n canvas->drawLine(p0, p1, paint);\n }\n };\n SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->scale(30, 15);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n SkIPoint mod = {4, 1};\n for (auto& point : points) {\n point = point + mod;\n mod.fX -= 1;\n mod.fY += 1;\n }\n paint.setColor(SK_ColorRED);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n}", + "width": 256, + "height": 128, + "hash": "63f4cba971c6d8434595906f865b5a29", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator+(const SkIPoint& a, const SkIVector& b)" +}, + "SkIPoint_addto_operator": { + "code": "void draw(SkCanvas* canvas) {\n auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {\n for (size_t i = 0; i < count - 1; ++i) {\n SkPoint p0, p1;\n p0.iset(pts[i]);\n p1.iset(pts[i + 1]);\n canvas->drawLine(p0, p1, paint);\n }\n };\n SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->scale(30, 15);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n points[1] += {1, 1};\n points[2] += {-1, -1};\n paint.setColor(SK_ColorRED);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n}", + "width": 256, + "height": 64, + "hash": "4eb2d95c9e9a66f05296e345bb68bd51", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator+=(const SkIVector& v)" +}, + "SkIPoint_subtract_operator": { + "code": "void draw(SkCanvas* canvas) {\n auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {\n for (size_t i = 0; i < count - 1; ++i) {\n SkPoint p0, p1;\n p0.iset(pts[i]);\n p1.iset(pts[i + 1]);\n canvas->drawLine(p0, p1, paint);\n }\n };\n SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->scale(30, 15);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n points[1] += points[0] - points[3];\n points[2] -= points[1] - points[0];\n paint.setColor(SK_ColorRED);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n}", + "width": 256, + "height": 64, + "hash": "e626e26bf557857b824aa7d03f723e0f", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator-(const SkIPoint& a, const SkIPoint& b)" +}, + "SkIPoint_subtractfrom_operator": { + "code": "void draw(SkCanvas* canvas) {\n auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {\n for (size_t i = 0; i < count - 1; ++i) {\n SkPoint p0, p1;\n p0.iset(pts[i]);\n p1.iset(pts[i + 1]);\n canvas->drawLine(p0, p1, paint);\n }\n };\n SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->scale(30, 15);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n points[1] -= {1, 1};\n points[2] -= {-1, -1};\n paint.setColor(SK_ColorRED);\n draw_lines(points, SK_ARRAY_COUNT(points), paint);\n}", + "width": 256, + "height": 64, + "hash": "a01e533dc7ab34ed728dc4e7a5f1f0ee", + "file": "SkIPoint_Reference", + "name": "SkIPoint::operator-=(const SkIVector& v)" +}, + "SkImage_BitDepth": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::BitDepth" +}, + "SkImage_CachingHint": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::CachingHint" +}, + "SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::DeferredTextureImageUsageParams::DeferredTextureImageUsageParams" +}, + "SkImage_LegacyBitmapMode": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::LegacyBitmapMode" +}, + "SkImage_MakeBackendTextureFromSkImage": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeBackendTextureFromSkImage" +}, + "SkImage_MakeCrossContextFromEncoded": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeCrossContextFromEncoded" +}, + "SkImage_MakeFromAHardwareBuffer": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromAHardwareBuffer" +}, + "SkImage_MakeFromAHardwareBuffer_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromAHardwareBuffer_2" +}, + "SkImage_MakeFromAdoptedTexture": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromAdoptedTexture" +}, + "SkImage_MakeFromBitmap": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromBitmap" +}, + "SkImage_MakeFromDeferredTextureImageData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromDeferredTextureImageData" +}, + "SkImage_MakeFromEncoded": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromEncoded" +}, + "SkImage_MakeFromGenerator": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromGenerator" +}, + "SkImage_MakeFromNV12TexturesCopy": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromNV12TexturesCopy" +}, + "SkImage_MakeFromPicture": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromPicture" +}, + "SkImage_MakeFromRaster": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromRaster" +}, + "SkImage_MakeFromTexture": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromTexture" +}, + "SkImage_MakeFromTexture_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromTexture_2" +}, + "SkImage_MakeFromYUVTexturesCopy": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeFromYUVTexturesCopy" +}, + "SkImage_MakeRasterCopy": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeRasterCopy" +}, + "SkImage_MakeRasterData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::MakeRasterData" +}, + "SkImage_alphaType": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::alphaType" +}, + "SkImage_asLegacyBitmap": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::asLegacyBitmap" +}, + "SkImage_bounds": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::bounds()" +}, + "SkImage_colorSpace": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::colorSpace" +}, + "SkImage_dimensions": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::dimensions()" +}, + "SkImage_encodeToData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::encodeToData" +}, + "SkImage_encodeToData_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::encodeToData_2" +}, + "SkImage_getDeferredTextureImageData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::getDeferredTextureImageData" +}, + "SkImage_getTexture": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::getTexture" +}, + "SkImage_getTextureHandle": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::getTextureHandle" +}, + "SkImage_height": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::height()" +}, + "SkImage_isAlphaOnly": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::isAlphaOnly" +}, + "SkImage_isLazyGenerated": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::isLazyGenerated" +}, + "SkImage_isOpaque": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::isOpaque" +}, + "SkImage_isTextureBacked": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::isTextureBacked" +}, + "SkImage_isValid": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::isValid" +}, + "SkImage_makeColorSpace": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeColorSpace" +}, + "SkImage_makeNonTextureImage": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeNonTextureImage" +}, + "SkImage_makeShader": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeShader" +}, + "SkImage_makeShader_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeShader_2" +}, + "SkImage_makeSubset": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeSubset" +}, + "SkImage_makeTextureImage": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeTextureImage" +}, + "SkImage_makeWithFilter": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::makeWithFilter" +}, + "SkImage_peekPixels": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::peekPixels" +}, + "SkImage_readPixels": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::readPixels" +}, + "SkImage_readPixels_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::readPixels_2" +}, + "SkImage_refColorSpace": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::refColorSpace" +}, + "SkImage_refEncodedData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::refEncodedData" +}, + "SkImage_scalePixels": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::scalePixels" +}, + "SkImage_toString": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::toString" +}, + "SkImage_uniqueID": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::uniqueID" +}, + "SkImage_width": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkImage_Reference", + "name": "SkImage::width()" +}, "SkMatrix_Concat": { "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix, matrix2;\n SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};\n SkRect::Make(source.bounds()).toQuad(bitmapBounds);\n matrix.setPolyToPoly(bitmapBounds, perspect, 4);\n matrix2.setPolyToPoly(perspect, bitmapBounds, 4);\n SkMatrix concat = SkMatrix::Concat(matrix, matrix2);\n canvas->concat(concat);\n canvas->drawBitmap(source, 0, 0);\n}", "width": 256, @@ -4500,10 +5222,10 @@ "name": "SkMatrix::isSimilarity" }, "SkMatrix_mapHomogeneousPoints": { - "code": "void draw(SkCanvas* canvas) {\n SkPoint3 src[] = {{3, 3, 1}, {8, 2, 2}, {5, 0, 4}, {0, 1, 3},\n {3, 7, 1}, {8, 6, 2}, {5, 4, 4}, {0, 5, 3}};\n int lines[] = { 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 };\n constexpr int count = SK_ARRAY_COUNT(src);\n auto debugster = [=](SkPoint3 src[]) -> void {\n for (size_t i = 0; i < SK_ARRAY_COUNT(lines); i += 2) {\n const SkPoint3& s = src[lines[i]];\n const SkPoint3& e = src[lines[i + 1]];\n SkPaint paint;\n paint.setARGB(77, 23, 99, 154);\n canvas->drawLine(s.fX / s.fZ, s.fY / s.fZ, e.fX / e.fZ, e.fY / e.fZ, paint);\n }\n };\n canvas->save();\n canvas->translate(5, 5);\n canvas->scale(15, 15);\n debugster(src);\n canvas->restore();\n canvas->translate(128, 128);\n SkMatrix matrix;\n matrix.setAll(15, 0, 0, 0, 15, 0, -0.08, 0.04, 1);\n matrix.mapHomogeneousPoints(&src[0].fX, &src[0].fX, count);\n debugster(src);\n}", + "code": "void draw(SkCanvas* canvas) {\n SkPoint3 src[] = {{3, 3, 1}, {8, 2, 2}, {5, 0, 4}, {0, 1, 3},\n {3, 7, 1}, {8, 6, 2}, {5, 4, 4}, {0, 5, 3}};\n int lines[] = { 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 };\n constexpr int count = SK_ARRAY_COUNT(src);\n auto debugster = [=](SkPoint3 src[]) -> void {\n for (size_t i = 0; i < SK_ARRAY_COUNT(lines); i += 2) {\n const SkPoint3& s = src[lines[i]];\n const SkPoint3& e = src[lines[i + 1]];\n SkPaint paint;\n paint.setARGB(77, 23, 99, 154);\n canvas->drawLine(s.fX / s.fZ, s.fY / s.fZ, e.fX / e.fZ, e.fY / e.fZ, paint);\n }\n };\n canvas->save();\n canvas->translate(5, 5);\n canvas->scale(15, 15);\n debugster(src);\n canvas->restore();\n canvas->translate(128, 128);\n SkMatrix matrix;\n matrix.setAll(15, 0, 0, 0, 15, 0, -0.08, 0.04, 1);\n matrix.mapHomogeneousPoints(src, src, count);\n debugster(src);\n}", "width": 256, "height": 256, - "hash": "0d8c7aa7249048f2b83d32cf13f88560", + "hash": "d56f93e4bc763c7ba4914321ed07a8b5", "file": "SkMatrix_Reference", "name": "SkMatrix::mapHomogeneousPoints" }, @@ -5810,6 +6532,334 @@ "hash": "7822d78f5cacf5c04267cbbc6c6d0b80", "file": "SkPixmap_Reference", "name": "SkPixmap::writable_addrF16" +}, + "SkPoint_CrossProduct": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkVector vectors[][2] = {{{50, 2}, {-14, 20}}, {{0, 50}, {-50, 0}}, {{-20, 25}, {25, -20}},\n {{-20, -24}, {-24, -20}}};\n SkPoint center[] = {{32, 32}, {160, 32}, {32, 160}, {160, 160}};\n paint.setStrokeWidth(2);\n for (size_t i = 0; i < 4; ++i) {\n paint.setColor(SK_ColorRED);\n canvas->drawLine(center[i], center[i] + vectors[i][0], paint);\n paint.setColor(SK_ColorBLUE);\n canvas->drawLine(center[i], center[i] + vectors[i][1], paint);\n SkString str;\n SkScalar cross = SkPoint::CrossProduct(vectors[i][1], vectors[i][0]);\n str.printf(\"cross = %g\", cross);\n paint.setColor(cross >= 0 ? SK_ColorRED : SK_ColorBLUE);\n canvas->drawString(str, center[i].fX, center[i].fY, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "8b8a4cd8a29d22bb9c5e63b70357bd65", + "file": "SkPoint_Reference", + "name": "SkPoint::CrossProduct" +}, + "SkPoint_Distance": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint lines[][2] = {{{-10, -10}, {90, 30}}, {{0, 0}, {150, 30}}, {{10, 25}, {120, 150}}};\n const SkPoint origin = {30, 160};\n for (auto line : lines) {\n SkPoint a = origin + line[0];\n const SkPoint& b = line[1];\n canvas->drawLine(a, b, paint);\n SkAutoCanvasRestore acr(canvas, true);\n SkScalar angle = SkScalarATan2((b.fY - a.fY), b.fX - a.fX);\n canvas->rotate(angle * 180 / SK_ScalarPI, a.fX, a.fY);\n SkString distance(\"distance = \");\n distance.appendScalar(SkPoint::Distance(a, b));\n canvas->drawString(distance, a.fX + 25, a.fY - 4, paint);\n }\n}", + "width": 256, + "height": 192, + "hash": "9e0a2de2eb94dba4521d733e73f2bda5", + "file": "SkPoint_Reference", + "name": "SkPoint::Distance" +}, + "SkPoint_DotProduct": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkVector vectors[][2] = {{{50, 2}, {-14, 20}}, {{0, 50}, {-50, 0}}, {{-20, 25}, {25, -20}},\n {{-20, -24}, {-24, -20}}};\n SkPoint center[] = {{32, 32}, {160, 32}, {32, 160}, {160, 160}};\n paint.setStrokeWidth(2);\n for (size_t i = 0; i < 4; ++i) {\n canvas->drawLine(center[i], center[i] + vectors[i][0], paint);\n canvas->drawLine(center[i], center[i] + vectors[i][1], paint);\n SkString str;\n str.printf(\"dot = %g\", SkPoint::DotProduct(vectors[i][0], vectors[i][1]));\n canvas->drawString(str, center[i].fX, center[i].fY, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "496db0131a003162faba7d7f98b30340", + "file": "SkPoint_Reference", + "name": "SkPoint::DotProduct" +}, + "SkPoint_Length": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 90, 30 }, { 120, 150 }, { 150, 30 }, { 210, 90 } };\n const SkPoint origin = {30, 140};\n for (auto point : points) {\n canvas->drawLine(origin, point, paint);\n SkAutoCanvasRestore acr(canvas, true);\n SkScalar angle = SkScalarATan2((point.fY - origin.fY), point.fX - origin.fX);\n canvas->rotate(angle * 180 / SK_ScalarPI, origin.fX, origin.fY);\n SkString length(\"length = \");\n length.appendScalar(SkPoint::Length(point.fX, point.fY));\n canvas->drawString(length, origin.fX + 25, origin.fY - 4, paint);\n }\n}", + "width": 256, + "height": 192, + "hash": "c98773d8b4509969d78cb8121e4b77f6", + "file": "SkPoint_Reference", + "name": "SkPoint::Length" +}, + "SkPoint_Normalize": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint lines[][2] = { {{ 30, 110 }, { 190, 30 }},\n {{ 30, 220 }, { 120, 140 }}};\n for (auto line : lines) {\n canvas->drawLine(line[0], line[1], paint);\n SkVector vector = line[1] - line[0];\n SkScalar priorLength = SkPoint::Normalize(&vector);\n SkVector rotate90 = { -vector.fY, vector.fX };\n rotate90 *= 10.f;\n canvas->drawLine(line[0] - rotate90, line[0] + rotate90, paint);\n canvas->drawLine(line[1] - rotate90, line[1] + rotate90, paint);\n SkString length(\"length = \");\n length.appendScalar(priorLength);\n canvas->drawString(length, line[0].fX + 25, line[0].fY - 4, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "60a08f3ce75374fc815384616d114df7", + "file": "SkPoint_Reference", + "name": "SkPoint::Normalize" +}, + "SkPoint_Offset": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n SkPoint::Offset(points, SK_ARRAY_COUNT(points), { 1, 9 } );\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 256, + "hash": "f0f24726df78a5d797bcf311e694a0a3", + "file": "SkPoint_Reference", + "name": "SkPoint::Offset" +}, + "SkPoint_Offset_2": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n SkPoint::Offset(points, SK_ARRAY_COUNT(points), 1, 9);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 256, + "hash": "532849faa838de885b86d3ebffae3712", + "file": "SkPoint_Reference", + "name": "SkPoint::Offset_2" +}, + "SkPoint_add_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n SkVector mod = {1, 1};\n for (auto& point : points) {\n point = point + mod;\n mod.fX *= 1.1f;\n mod.fY += .2f;\n }\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 256, + "hash": "911a84253dfec4dabf94dbe3c71766f0", + "file": "SkPoint_Reference", + "name": "SkPoint::operator+(const SkPoint& a, const SkVector& b)" +}, + "SkPoint_addto_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n points[1] += {1, 1};\n points[2] += {-1, -1};\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 128, + "hash": "8b4e79109e2381345258cb744881b20c", + "file": "SkPoint_Reference", + "name": "SkPoint::operator+=(const SkVector& v)" +}, + "SkPoint_cross": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkVector vectors[][2] = {{{50, 2}, {-14, 20}}, {{0, 50}, {-50, 0}}, {{-20, 25}, {25, -20}},\n {{-20, -24}, {-24, -20}}};\n SkPoint center[] = {{32, 32}, {160, 32}, {32, 160}, {160, 160}};\n paint.setStrokeWidth(2);\n for (size_t i = 0; i < 4; ++i) {\n paint.setColor(SK_ColorRED);\n canvas->drawLine(center[i], center[i] + vectors[i][0], paint);\n paint.setColor(SK_ColorBLUE);\n canvas->drawLine(center[i], center[i] + vectors[i][1], paint);\n SkString str;\n SkScalar cross = vectors[i][0].cross(vectors[i][1]);\n str.printf(\"cross = %g\", cross);\n paint.setColor(cross >= 0 ? SK_ColorRED : SK_ColorBLUE);\n canvas->drawString(str, center[i].fX, center[i].fY, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "0bc7b3997357e499817278b78bdfbf1d", + "file": "SkPoint_Reference", + "name": "SkPoint::cross()" +}, + "SkPoint_distanceToOrigin": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 60, -110 }, { 90, 10 }, { 120, -110 }, { 180, -50 } };\n const SkPoint origin = {0, 0};\n canvas->translate(30, 140);\n for (auto point : points) {\n canvas->drawLine(origin, point, paint);\n SkAutoCanvasRestore acr(canvas, true);\n SkScalar angle = SkScalarATan2((point.fY - origin.fY), point.fX - origin.fX);\n canvas->rotate(angle * 180 / SK_ScalarPI, origin.fX, origin.fY);\n SkString distance(\"distance = \");\n distance.appendScalar(point.distanceToOrigin());\n canvas->drawString(distance, origin.fX + 25, origin.fY - 4, paint);\n }\n}", + "width": 256, + "height": 192, + "hash": "812cf26d91b1cdcd2c6b9438a8172518", + "file": "SkPoint_Reference", + "name": "SkPoint::distanceToOrigin" +}, + "SkPoint_dot": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkVector vectors[][2] = {{{50, 2}, {-14, 20}}, {{0, 50}, {-50, 0}}, {{-20, 25}, {25, -20}},\n {{-20, -24}, {-24, -20}}};\n SkPoint center[] = {{32, 32}, {160, 32}, {32, 160}, {160, 160}};\n paint.setStrokeWidth(2);\n for (size_t i = 0; i < 4; ++i) {\n canvas->drawLine(center[i], center[i] + vectors[i][0], paint);\n canvas->drawLine(center[i], center[i] + vectors[i][1], paint);\n SkString str;\n str.printf(\"dot = %g\", vectors[i][0].dot(vectors[i][1]));\n canvas->drawString(str, center[i].fX, center[i].fY, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "56d01ccfedd71d3c504b09afa2875d38", + "file": "SkPoint_Reference", + "name": "SkPoint::dot()" +}, + "SkPoint_length": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 90, 30 }, { 120, 150 }, { 150, 30 }, { 210, 90 } };\n const SkPoint origin = {30, 140};\n for (auto point : points) {\n canvas->drawLine(origin, point, paint);\n SkAutoCanvasRestore acr(canvas, true);\n SkScalar angle = SkScalarATan2((point.fY - origin.fY), point.fX - origin.fX);\n canvas->rotate(angle * 180 / SK_ScalarPI, origin.fX, origin.fY);\n SkString length(\"length = \");\n length.appendScalar(point.length());\n canvas->drawString(length, origin.fX + 25, origin.fY - 4, paint);\n }\n}", + "width": 256, + "height": 192, + "hash": "8363ab179447ee4b827679e20d3d81eb", + "file": "SkPoint_Reference", + "name": "SkPoint::length()" +}, + "SkPoint_multiply_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(15, 10);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n for (auto& point : points) {\n point = point * 1.5f;\n }\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 128, + "hash": "35b3bc675779de043706ae4817ee950c", + "file": "SkPoint_Reference", + "name": "SkPoint::operator*(SkScalar scale)_const" +}, + "SkPoint_multiplyby_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(15, 10);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n for (auto& point : points) {\n point *= 2;\n }\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 128, + "hash": "3ce3db36235d80dbac4d39504cf756da", + "file": "SkPoint_Reference", + "name": "SkPoint::operator*=(SkScalar scale)" +}, + "SkPoint_normalize": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint lines[][2] = { {{ 30, 110 }, { 190, 30 }},\n {{ 120, 140 }, { 30, 220 }}};\n for (auto line : lines) {\n canvas->drawLine(line[0], line[1], paint);\n SkVector vector = line[1] - line[0];\n if (vector.normalize()) {\n SkVector rotate90 = { -vector.fY, vector.fX };\n rotate90 *= 10.f;\n canvas->drawLine(line[0] - rotate90, line[0] + rotate90, paint);\n canvas->drawLine(line[1] - rotate90, line[1] + rotate90, paint);\n }\n }\n}", + "width": 256, + "height": 256, + "hash": "d84fce292d86c7d9ef37ae2d179c03c7", + "file": "SkPoint_Reference", + "name": "SkPoint::normalize()" +}, + "SkPoint_offset": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n points[1].offset(1, 1);\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 128, + "hash": "02750ceaa874f956e6e6544ef6b858ee", + "file": "SkPoint_Reference", + "name": "SkPoint::offset()" +}, + "SkPoint_scale": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint point = {40, -15}, scaled;\n SkPoint origin = {30, 110};\n for (auto scale : {1, 2, 3, 5}) {\n paint.setStrokeWidth(scale * 5);\n paint.setARGB(0x7f, 0x9f, 0xbf, 0x33 * scale);\n point.scale(scale, &scaled);\n canvas->drawLine(origin, origin + scaled, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "972e4e230806281adb928e068bcd8551", + "file": "SkPoint_Reference", + "name": "SkPoint::scale()" +}, + "SkPoint_scale_2": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint point = {40, -15};\n SkPoint origin = {30, 110};\n for (auto scale : {1, 2, 3, 5}) {\n paint.setStrokeWidth(scale * 5);\n paint.setARGB(0x7f, 0x9f, 0xbf, 0x33 * scale);\n point.scale(scale);\n canvas->drawLine(origin, origin + point, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "1060a4f27d8ef29519e6ac006ce90f2b", + "file": "SkPoint_Reference", + "name": "SkPoint::scale_2" +}, + "SkPoint_setLength": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 60, -110 }, { 90, 10 }, { 120, -110 }, { 180, -50 } };\n const SkPoint origin = {0, 0};\n canvas->translate(30, 140);\n for (auto point : points) {\n paint.setStrokeWidth(1);\n paint.setColor(SK_ColorBLACK);\n canvas->drawLine(origin, point, paint);\n SkVector normal = point;\n normal.setLength(100);\n paint.setStrokeWidth(10);\n paint.setColor(0x3f45bf12);\n canvas->drawLine(origin, normal, paint);\n }\n}", + "width": 256, + "height": 160, + "hash": "cbe7db206ece825aa3b9b7c3256aeaf0", + "file": "SkPoint_Reference", + "name": "SkPoint::setLength" +}, + "SkPoint_setLength_2": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 60, -110 }, { 90, 10 }, { 120, -110 }, { 180, -50 } };\n const SkPoint origin = {0, 0};\n canvas->translate(30, 140);\n for (auto point : points) {\n paint.setStrokeWidth(1);\n paint.setColor(SK_ColorBLACK);\n canvas->drawLine(origin, point, paint);\n SkVector normal;\n normal.setLength(point.fX, point.fY, 100);\n paint.setStrokeWidth(10);\n paint.setColor(0x3fbf4512);\n canvas->drawLine(origin, normal, paint);\n }\n}", + "width": 256, + "height": 160, + "hash": "3cc0662b6fbbee1fe3442a0acfece22c", + "file": "SkPoint_Reference", + "name": "SkPoint::setLength_2" +}, + "SkPoint_setNormalize": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n const SkPoint points[] = { { 60, -110 }, { 90, 10 }, { 120, -110 }, { 180, -50 } };\n const SkPoint origin = {0, 0};\n canvas->translate(30, 140);\n for (auto point : points) {\n paint.setStrokeWidth(1);\n paint.setColor(SK_ColorBLACK);\n canvas->drawLine(origin, point, paint);\n SkVector normal;\n normal.setNormalize(point.fX, point.fY);\n normal *= 100;\n paint.setStrokeWidth(10);\n paint.setColor(0x3f4512bf);\n canvas->drawLine(origin, normal, paint);\n }\n}", + "width": 256, + "height": 256, + "hash": "3e4f147d143a388802484bf0d26534c2", + "file": "SkPoint_Reference", + "name": "SkPoint::setNormalize" +}, + "SkPoint_subtract_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n points[1] += points[0] - points[2];\n points[2] -= points[3] - points[5];\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 256, + "hash": "b6c4943ecd0b2dccf9d220b8944009e0", + "file": "SkPoint_Reference", + "name": "SkPoint::operator-(const SkPoint& a, const SkPoint& b)" +}, + "SkPoint_subtractfrom_operator": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 },\n { 6, 4 }, { 7, 5 }, { 5, 7 },\n { 4, 6 }, { 3, 7 }, { 1, 5 },\n { 2, 4 }, { 1, 3 }, { 3, 1 } };\n canvas->scale(30, 15);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n points[1] -= {1, 1};\n points[2] -= {-1, -1};\n paint.setColor(SK_ColorRED);\n canvas->drawPoints(SkCanvas::kPolygon_PointMode, SK_ARRAY_COUNT(points), points, paint);\n}", + "width": 256, + "height": 128, + "hash": "86c0399704d8dff4091bf87b8d87d40b", + "file": "SkPoint_Reference", + "name": "SkPoint::operator-=(const SkVector& v)" +}, + "SkSurface_BackendHandleAccess": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(\n context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));\n int y = 20;\n SkString str;\n paint.setTextSize(16);\n for (auto access : { SkSurface::kFlushRead_BackendHandleAccess, \n SkSurface::kFlushWrite_BackendHandleAccess,\n SkSurface::kDiscardWrite_BackendHandleAccess } ) {\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n str.printf(\"uniqueID=%d\", image->uniqueID());\n canvas->drawString(str, 20, y += 20, paint);\n GrBackendObject backendObject = gpuSurface->getTextureHandle(access);\n str.printf(\"backendObject %c= 0\", backendObject != 0 ? '!' : '=');\n canvas->drawString(str, 20, y += 20, paint);\n }\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n str.printf(\"final image uniqueID=%d\", image->uniqueID());\n canvas->drawString(str, 20, y += 20, paint);\n}", + "width": 256, + "height": 256, + "hash": "260a5ba014b00eeb5a74b3c6b8d31be4", + "file": "SkSurface_Reference", + "name": "SkSurface::BackendHandleAccess" +}, + "SkSurface_MakeRenderTarget": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n SkImageInfo info = SkImageInfo::MakeN32(256, 64, kOpaque_SkAlphaType);\n for (auto surfaceOrigin : { kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin } ) {\n auto gpuSurface(SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info, 0,\n surfaceOrigin, nullptr));\n auto surfaceCanvas = gpuSurface->getCanvas();\n surfaceCanvas->clear(SK_ColorWHITE);\n surfaceCanvas->drawString(\"GPU rocks!\", 20, 40, paint);\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n canvas->drawImage(image, 0, 0);\n canvas->translate(0, 128);\n }\n}", + "width": 256, + "height": 64, + "hash": "67b6609471a3f1ed0f4b1657004cdecb", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRenderTarget" +}, + "SkSurface_MakeRenderTarget_2": { + "code": "void draw(SkCanvas* canvas) {\n auto test_draw = [](SkCanvas* surfaceCanvas) -> void {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setLCDRenderText(true);\n paint.setColor(0xFFBBBBBB);\n surfaceCanvas->drawRect(SkRect::MakeWH(128, 64), paint);\n paint.setColor(SK_ColorWHITE);\n paint.setTextSize(32);\n surfaceCanvas->drawString(\"Pest\", 0, 25, paint);\n };\n GrContext* context = canvas->getGrContext();\n SkImageInfo info = SkImageInfo::MakeN32(128, 64, kOpaque_SkAlphaType);\n SkAutoTMalloc<SkPMColor> storage(info.computeMinByteSize());\n SkBitmap bitmap;\n bitmap.installPixels(info, storage.get(), info.minRowBytes());\n int y = 0;\n for (auto geometry : { kRGB_H_SkPixelGeometry, kBGR_H_SkPixelGeometry,\n kRGB_V_SkPixelGeometry, kBGR_V_SkPixelGeometry } ) {\n SkSurfaceProps props(0, geometry);\n std::unique_ptr<SkCanvas> offscreen = SkCanvas::MakeRasterDirect(info, storage.get(),\n info.minRowBytes(), &props);\n sk_sp<SkSurface> surface = context ? SkSurface::MakeRenderTarget(\n context, SkBudgeted::kNo, info, 0, &props) : SkSurface::MakeRaster(info, &props);\n test_draw(surface->getCanvas());\n surface->draw(canvas, 0, y, nullptr);\n surface->draw(offscreen.get(), 0, 0, nullptr);\n SkAutoCanvasRestore acr(canvas, true);\n canvas->scale(8, 8);\n canvas->drawBitmap(bitmap, 12, y / 8);\n y += 64;\n }\n}\n", + "width": 256, + "height": 256, + "hash": "4473daad1b11784a9869431af72c93e0", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRenderTarget_2" +}, + "SkSurface_MakeRenderTarget_3": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n SkImageInfo info = SkImageInfo::MakeN32(256, 64, kOpaque_SkAlphaType);\n auto gpuSurface(SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info));\n auto surfaceCanvas = gpuSurface->getCanvas();\n surfaceCanvas->clear(SK_ColorWHITE);\n surfaceCanvas->drawString(\"GPU rocks!\", 20, 40, paint);\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n canvas->drawImage(image, 0, 0);\n}", + "width": 256, + "height": 256, + "hash": "5c7629c15e9ac93f098335e72560fa2e", + "file": "SkSurface_Reference", + "name": "SkSurface::MakeRenderTarget_3" +}, + "SkSurface_characterize": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(\n context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64));\n SkSurfaceCharacterization characterization;\n if (!gpuSurface->characterize(&characterization)) {\n canvas->drawString(\"characterization unsupported\", 20, 40, paint);\n return;\n }\n // start of threadable work \n SkDeferredDisplayListRecorder recorder(characterization);\n SkCanvas* subCanvas = recorder.getCanvas();\n subCanvas->clear(SK_ColorGREEN);\n std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach();\n // end of threadable work\n gpuSurface->draw(displayList.get());\n sk_sp<SkImage> img = gpuSurface->makeImageSnapshot();\n canvas->drawImage(std::move(img), 0, 0);\n}", + "width": 256, + "height": 64, + "hash": "3df4e2fc63483a3fa19589b5388080bc", + "file": "SkSurface_Reference", + "name": "SkSurface::characterize()" +}, + "SkSurface_draw": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> big(SkSurface::MakeRasterN32Premul(64, 64));\n sk_sp<SkSurface> lil(big->makeSurface(SkImageInfo::MakeN32(32, 32, kPremul_SkAlphaType)));\n big->getCanvas()->clear(SK_ColorRED);\n lil->getCanvas()->clear(SK_ColorBLACK);\n lil->draw(big->getCanvas(), 16, 16, nullptr);\n SkPixmap pixmap;\n if (big->peekPixels(&pixmap)) {\n SkBitmap bigBits;\n bigBits.installPixels(pixmap);\n canvas->drawBitmap(bigBits, 0, 0);\n }\n}", + "width": 256, + "height": 64, + "hash": "0de693f4d8dd898a60be8cfba23952be", + "file": "SkSurface_Reference", + "name": "SkSurface::draw()" +}, + "SkSurface_draw_2": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(16);\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeRasterN32Premul(64, 64);\n SkSurfaceCharacterization characterization;\n if (!gpuSurface->characterize(&characterization)) {\n canvas->drawString(\"characterization unsupported\", 20, 40, paint);\n return;\n }\n // start of threadable work \n SkDeferredDisplayListRecorder recorder(characterization);\n SkCanvas* subCanvas = recorder.getCanvas();\n subCanvas->clear(SK_ColorGREEN);\n std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach();\n // end of threadable work\n gpuSurface->draw(displayList.get());\n sk_sp<SkImage> img = gpuSurface->makeImageSnapshot();\n canvas->drawImage(std::move(img), 0, 0);\n}", + "width": 256, + "height": 64, + "hash": "3dfa7496268dfb2c7465cda5da39dfbd", + "file": "SkSurface_Reference", + "name": "SkSurface::draw_2" +}, + "SkSurface_getCanvas": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(64, 64));\n SkCanvas* surfaceCanvas = surface->getCanvas();\n surfaceCanvas->clear(SK_ColorBLUE);\n SkPaint paint;\n paint.setTextSize(40);\n surfaceCanvas->drawString(\"\\xF0\\x9F\\x98\\x81\", 12, 45, paint);\n surface->draw(canvas, 0, 0, nullptr);\n}", + "width": 256, + "height": 64, + "hash": "33d0c5ad5a4810e533ae1010e29f8b75", + "file": "SkSurface_Reference", + "name": "SkSurface::getCanvas" +}, + "SkSurface_getRenderTargetHandle": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(\n context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));\n GrBackendObject backendObject;\n if (gpuSurface->getRenderTargetHandle(&backendObject, \n SkSurface::kFlushRead_BackendHandleAccess)) {\n SkString str;\n str.printf(\"backendObject=%d\", backendObject);\n paint.setTextSize(16);\n canvas->drawString(str, 20, 40, paint);\n }\n}", + "width": 256, + "height": 64, + "hash": "16e848a4405ce08f8393bba13cc3b8bf", + "file": "SkSurface_Reference", + "name": "SkSurface::getRenderTargetHandle" +}, + "SkSurface_getTextureHandle": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(\n context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));\n GrBackendObject backendObject = gpuSurface->getTextureHandle(\n SkSurface::kFlushRead_BackendHandleAccess);\n if (backendObject) {\n SkString str;\n str.printf(\"backendObject=%08x\", backendObject);\n paint.setTextSize(16);\n canvas->drawString(str, 20, 40, paint);\n }\n}", + "width": 256, + "height": 64, + "hash": "4b5720038daaf65ba1ba546e678ddd6e", + "file": "SkSurface_Reference", + "name": "SkSurface::getTextureHandle" +}, + "SkSurface_makeImageSnapshot": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> big(SkSurface::MakeRasterN32Premul(64, 64));\n sk_sp<SkSurface> lil(big->makeSurface(SkImageInfo::MakeN32(32, 32, kPremul_SkAlphaType)));\n big->getCanvas()->clear(SK_ColorRED);\n lil->getCanvas()->clear(SK_ColorBLACK);\n sk_sp<SkImage> early(big->makeImageSnapshot());\n lil->draw(big->getCanvas(), 16, 16, nullptr);\n sk_sp<SkImage> later(big->makeImageSnapshot());\n canvas->drawImage(early, 0, 0);\n canvas->drawImage(later, 128, 0);\n}", + "width": 256, + "height": 64, + "hash": "46f1fa0d95e590a64bed0140407ce5f7", + "file": "SkSurface_Reference", + "name": "SkSurface::makeImageSnapshot" +}, + "SkSurface_makeSurface": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> big(SkSurface::MakeRasterN32Premul(64, 64));\n sk_sp<SkSurface> lil(big->makeSurface(SkImageInfo::MakeN32(32, 32, kPremul_SkAlphaType)));\n big->getCanvas()->clear(SK_ColorRED);\n lil->getCanvas()->clear(SK_ColorBLACK);\n SkPixmap pixmap;\n if (big->peekPixels(&pixmap)) {\n SkBitmap bigBits;\n bigBits.installPixels(pixmap);\n canvas->drawBitmap(bigBits, 0, 0);\n }\n if (lil->peekPixels(&pixmap)) {\n SkBitmap lilBits;\n lilBits.installPixels(pixmap);\n canvas->drawBitmap(lilBits, 64, 64);\n }\n}", + "width": 256, + "height": 96, + "hash": "a9889b519a26896b900da0444e423c61", + "file": "SkSurface_Reference", + "name": "SkSurface::makeSurface" +}, + "SkSurface_peekPixels": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n auto surfCanvas = surf->getCanvas();\n surfCanvas->clear(SK_ColorRED);\n SkPaint paint;\n paint.setTextSize(40);\n surfCanvas->drawString(\"&\", 16, 48, paint);\n SkPixmap pixmap;\n if (surf->peekPixels(&pixmap)) {\n SkBitmap surfBits;\n surfBits.installPixels(pixmap);\n canvas->drawBitmap(surfBits, 0, 0);\n }\n}", + "width": 256, + "height": 64, + "hash": "8c6184f22cfe068f021704cf92a147a1", + "file": "SkSurface_Reference", + "name": "SkSurface::peekPixels" +}, + "SkSurface_readPixels": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n auto surfCanvas = surf->getCanvas();\n surfCanvas->clear(SK_ColorRED);\n SkPaint paint;\n paint.setTextSize(40);\n surfCanvas->drawString(\"&\", 0, 32, paint);\n std::vector<SkPMColor> storage;\n storage.resize(surf->width() * surf->height());\n SkPixmap pixmap(SkImageInfo::MakeN32Premul(32, 32), &storage.front(),\n surf->width() * sizeof(storage[0]));\n if (surf->readPixels(pixmap, 0, 0)) {\n SkBitmap surfBits;\n surfBits.installPixels(pixmap);\n canvas->drawBitmap(surfBits, 0, 0);\n }\n}", + "width": 256, + "height": 32, + "hash": "9f454fb93bca6482598d198b4121f0a6", + "file": "SkSurface_Reference", + "name": "SkSurface::readPixels" +}, + "SkSurface_readPixels_2": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n auto surfCanvas = surf->getCanvas();\n surfCanvas->clear(SK_ColorRED);\n SkPaint paint;\n surfCanvas->drawOval({4, 8, 58, 54}, paint);\n SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType);\n sk_sp<SkData> data(SkData::MakeUninitialized(info.minRowBytes() * info.height()));\n sk_bzero(data->writable_data(), info.minRowBytes() * info.height());\n for (int x : { 32, -32 } ) {\n for (int y : { 32, -32 } ) {\n surf->readPixels(info, data->writable_data(), info.minRowBytes(), x, y);\n } \n }\n sk_sp<SkImage> image = SkImage::MakeRasterData(info, data, info.minRowBytes());\n canvas->drawImage(image, 0, 0);\n}", + "width": 256, + "height": 64, + "hash": "d141d6c662d201d191fb1eea26d014fd", + "file": "SkSurface_Reference", + "name": "SkSurface::readPixels_2" +}, + "SkSurface_readPixels_3": { + "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n auto surfCanvas = surf->getCanvas();\n surfCanvas->clear(SK_ColorGREEN);\n SkPaint paint;\n surfCanvas->drawOval({2, 10, 58, 54}, paint);\n SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType);\n SkBitmap bitmap;\n bitmap.setInfo(info);\n bitmap.allocPixels();\n for (int x : { 32, -32 } ) {\n for (int y : { 32, -32 } ) {\n surf->readPixels(bitmap, x, y);\n } \n }\n canvas->drawBitmap(bitmap, 0, 0);\n}", + "width": 256, + "height": 256, + "hash": "dcbd4af9151820f63de45a35f3a8d110", + "file": "SkSurface_Reference", + "name": "SkSurface::readPixels_3" +}, + "SkSurface_wait": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n GrBackendSemaphore semaphore;\n sk_sp<SkSurface> surface = SkSurface::MakeRenderTarget(\n context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64));\n surface->flushAndSignalSemaphores(1, &semaphore);\n sk_sp<SkImage> image = surface->makeImageSnapshot();\n GrBackendObject backendImage = image->getTextureHandle(false); // unused\n SkASSERT(backendImage);\n const SkImageInfo childImageInfo = SkImageInfo::Make(64, 64,\n kRGBA_8888_SkColorType, kPremul_SkAlphaType);\n sk_sp<SkSurface> childSurface(SkSurface::MakeRenderTarget(context, SkBudgeted::kNo,\n childImageInfo, 0, kTopLeft_GrSurfaceOrigin, nullptr));\n GrBackendTexture backendTexture;\n sk_sp<SkImage> childImage = SkImage::MakeFromTexture(context,\n backendTexture, // undefined\n kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, nullptr);\n SkCanvas* childCanvas = childSurface->getCanvas();\n childCanvas->clear(SK_ColorRED);\n childSurface->wait(1, &semaphore);\n childCanvas->drawImage(childImage, 32, 0);\n childSurface->draw(canvas, 0, 0, nullptr);\n}", + "width": 256, + "height": 64, + "hash": "c9033080af68efc0f270d748f1c0e011", + "file": "SkSurface_Reference", + "name": "SkSurface::wait()" } } var canvas diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md index 7ac1e12d33..13c8e10cd2 100644 --- a/site/user/api/undocumented.md +++ b/site/user/api/undocumented.md @@ -10,9 +10,8 @@ undocumented <a name="SkDocument_beginPage"></a> ## beginPage -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkCanvas* beginPage(SkScalar width, SkScalar height, - const SkRect* content = NULL) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkCanvas* beginPage(SkScalar width, SkScalar height, const SkRect* content = NULL) </pre> --- @@ -23,14 +22,73 @@ SkCanvas* beginPage(SkScalar width, SkScalar height, ## <a name="Arct"></a> Arct +# <a name="Deferred_Display_List"></a> Deferred Display List + +# <a name="SkDeferredDisplayList"></a> Class SkDeferredDisplayList + +## <a name="Recorder"></a> Recorder + +# <a name="SkDeferredDisplayListRecorder"></a> Class SkDeferredDisplayListRecorder + # <a name="Size"></a> Size # <a name="SkSize"></a> Struct SkSize +# <a name="Image_Color_Type"></a> Image Color Type + +## <a name="Native_Color_Type"></a> Native Color Type + +## <a name="SkColorType"></a> Enum SkColorType + +### Constants + +<table> + <tr> + <td><a name="kUnknown_SkColorType"> <code><strong>kUnknown_SkColorType </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="kAlpha_8_SkColorType"> <code><strong>kAlpha_8_SkColorType </strong></code> </a></td><td>1</td><td></td> + </tr> + <tr> + <td><a name="kRGB_565_SkColorType"> <code><strong>kRGB_565_SkColorType </strong></code> </a></td><td>2</td><td></td> + </tr> + <tr> + <td><a name="kARGB_4444_SkColorType"> <code><strong>kARGB_4444_SkColorType </strong></code> </a></td><td>3</td><td></td> + </tr> + <tr> + <td><a name="kRGBA_8888_SkColorType"> <code><strong>kRGBA_8888_SkColorType </strong></code> </a></td><td>4</td><td></td> + </tr> + <tr> + <td><a name="kBGRA_8888_SkColorType"> <code><strong>kBGRA_8888_SkColorType </strong></code> </a></td><td>5</td><td></td> + </tr> + <tr> + <td><a name="kIndex_8_SkColorType"> <code><strong>kIndex_8_SkColorType </strong></code> </a></td><td>6</td><td></td> + </tr> + <tr> + <td><a name="kGray_8_SkColorType"> <code><strong>kGray_8_SkColorType </strong></code> </a></td><td>7</td><td></td> + </tr> + <tr> + <td><a name="kRGBA_F16_SkColorType"> <code><strong>kRGBA_F16_SkColorType </strong></code> </a></td><td>8</td><td></td> + </tr> +</table> + +### Constants + +<table> + <tr> + <td><a name="kN32_SkColorType"> <code><strong>kN32_SkColorType </strong></code> </a></td><td>4</td><td></td> + </tr> + +</table> + # <a name="Arc"></a> Arc # <a name="Line"></a> Line +# <a name="Region"></a> Region + +# <a name="SkRegion"></a> Class SkRegion + # <a name="Mip_Map"></a> Mip Map # <a name="Debugging"></a> Debugging @@ -38,43 +96,20 @@ SkCanvas* beginPage(SkScalar width, SkScalar height, <a name="SkDebugf"></a> ## SkDebugf -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SK_API void SkDebugf(const char format[], ...) </pre> --- -# <a name="Region"></a> Region - -# <a name="SkRegion"></a> Class SkRegion - # <a name="Device"></a> Device # <a name="SkBaseDevice"></a> Class SkBaseDevice -# <a name="Vector"></a> Vector - -# <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 - -<a name="SkPoint_equalsWithinTolerance"></a> -## equalsWithinTolerance - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool equalsWithinTolerance(const SkPoint& p) const -</pre> - ---- - -## <a name="Array"></a> Array - # <a name="Typeface"></a> Typeface # <a name="SkTypeface"></a> Class SkTypeface @@ -91,10 +126,16 @@ bool equalsWithinTolerance(const SkPoint& p) const # <a name="SkISize"></a> Struct SkISize +# <a name="Left_Side_Bearing"></a> Left Side Bearing + # <a name="Alias"></a> Alias # <a name="Anti-alias"></a> Anti-alias +# <a name="Backend_Semaphore"></a> Backend Semaphore + +# <a name="GrBackendSemaphore"></a> Class GrBackendSemaphore + # <a name="BBH_Factory"></a> BBH Factory # <a name="SkBBHFactory"></a> Class SkBBHFactory @@ -120,6 +161,139 @@ bool equalsWithinTolerance(const SkPoint& p) const # <a name="Circle"></a> Circle +# <a name="Image_Info"></a> Image Info + +# <a name="SkImageInfo"></a> Struct SkImageInfo + +<a name="SkImageInfo_empty_constructor"></a> +## SkImageInfo + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkImageInfo() +</pre> + +--- + +<a name="SkImageInfo_MakeN32Premul"></a> +## MakeN32Premul + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static SkImageInfo MakeN32Premul(int width, int height, sk_sp<SkColorSpace> cs = nullptr) +</pre> + +--- + +<a name="SkImageInfo_makeColorSpace"></a> +## makeColorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const +</pre> + +--- + +<a name="SkImageInfo_minRowBytes"></a> +## minRowBytes + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +size_t minRowBytes() const +</pre> + +--- + +<a name="SkImageInfo_isOpaque"></a> +## isOpaque + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isOpaque() const +</pre> + +--- + +<a name="SkImageInfo_bytesPerPixel"></a> +## bytesPerPixel + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int bytesPerPixel() const +</pre> + +--- + +<a name="SkImageInfo_height"></a> +## height + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int height() const +</pre> + +--- + +<a name="SkImageInfo_width"></a> +## width + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +int width() const +</pre> + +--- + +<a name="SkImageInfo_colorType"></a> +## colorType + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkColorType colorType() const +</pre> + +--- + +<a name="SkImageInfo_alphaType"></a> +## alphaType + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkAlphaType alphaType() const +</pre> + +--- + +<a name="SkImageInfo_colorSpace"></a> +## colorSpace + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +SkColorSpace* colorSpace() const +</pre> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +bool isOpaque() const +</pre> + +--- + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +size_t minRowBytes() const +</pre> + +--- + +<a name="SkImageInfo_computeByteSize"></a> +## computeByteSize + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +size_t computeByteSize(size_t rowBytes) const +</pre> + +--- + +<a name="SkImageInfo_validate"></a> +## validate + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +void validate() const +</pre> + +--- + # <a name="Clip_Op"></a> Clip Op ## <a name="SkClipOp"></a> Enum SkClipOp @@ -141,7 +315,7 @@ bool equalsWithinTolerance(const SkPoint& p) const <a name="SkColorGetA"></a> ## SkColorGetA -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int SkColorGetA(color) </pre> @@ -150,7 +324,7 @@ int SkColorGetA(color) <a name="SkColorGetR"></a> ## SkColorGetR -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int SkColorGetR(color) </pre> @@ -159,7 +333,7 @@ int SkColorGetR(color) <a name="SkColorGetG"></a> ## SkColorGetG -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int SkColorGetG(color) </pre> @@ -168,7 +342,7 @@ int SkColorGetG(color) <a name="SkColorGetB"></a> ## SkColorGetB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int SkColorGetB(color) </pre> @@ -177,7 +351,7 @@ int SkColorGetB(color) <a name="SkColorSetARGB"></a> ## SkColorSetARGB -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int SkColorSetARGB(a, r, g, b) </pre> @@ -226,7 +400,7 @@ int SkColorSetARGB(a, r, g, b) <a name="SkColorFilter_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const </pre> @@ -239,7 +413,7 @@ void toString(SkString* str) const <a name="SkColorSpace_MakeSRGBLinear"></a> ## MakeSRGBLinear -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static sk_sp<SkColorSpace> MakeSRGBLinear() </pre> @@ -264,20 +438,25 @@ static sk_sp<SkColorSpace> MakeSRGBLinear() <a name="SkCreateColorSpaceXformCanvas"></a> ## SkCreateColorSpaceXformCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -std::unique_ptr<SkCanvas> SK_API - SkCreateColorSpaceXformCanvas(SkCanvas* target, - sk_sp<SkColorSpace> targetCS) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +std::unique_ptr<SkCanvas> SK_API SkCreateColorSpaceXformCanvas(SkCanvas* target, + sk_sp<SkColorSpace> targetCS) </pre> --- # <a name="Core_Graphics"></a> Core Graphics +# <a name="Texture"></a> Texture + +# <a name="GrBackendTexture"></a> Class GrBackendTexture + # <a name="Core_Text"></a> Core Text # <a name="Data"></a> Data +# <a name="SkData"></a> Class SkData + # <a name="Draw_Filter"></a> Draw Filter # <a name="SkDrawFilter"></a> Class SkDrawFilter @@ -295,7 +474,7 @@ std::unique_ptr<SkCanvas> SK_API <a name="SkDrawable_draw"></a> ## draw -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void draw(SkCanvas*, const SkMatrix* = NULL) </pre> @@ -310,11 +489,9 @@ void draw(SkCanvas*, const SkMatrix* = NULL) <a name="SkRasterHandleAllocator_MakeCanvas"></a> ## MakeCanvas -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static std::unique_ptr<SkCanvas> - MakeCanvas(std::unique_ptr<SkRasterHandleAllocator>, - const SkImageInfo&, - const Rec* rec = nullptr) +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static std::unique_ptr<SkCanvas> MakeCanvas(std::unique_ptr<SkRasterHandleAllocator>, + const SkImageInfo&, const Rec* rec = nullptr) </pre> --- @@ -349,8 +526,6 @@ static std::unique_ptr<SkCanvas> ## <a name="BiCubic"></a> BiCubic -# <a name="Left_Side_Bearing"></a> Left Side Bearing - # <a name="Font"></a> Font ## <a name="Advance"></a> Advance @@ -363,12 +538,14 @@ static std::unique_ptr<SkCanvas> # <a name="GPU_Context"></a> GPU Context +## <a name="Resource_Cache_Limits"></a> Resource Cache Limits + # <a name="GrContext"></a> Class GrContext <a name="GrContext_flush"></a> ## flush -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void flush() </pre> @@ -376,9 +553,7 @@ void flush() # <a name="GPU_Surface"></a> GPU Surface -# <a name="Image"></a> Image - -## <a name="Alpha_Type"></a> Alpha Type +# <a name="Image_Alpha_Type"></a> Image Alpha Type ## <a name="SkAlphaType"></a> Enum SkAlphaType @@ -400,235 +575,6 @@ void flush() </table> -## <a name="Color_Type"></a> Color Type - -## <a name="SkColorType"></a> Enum SkColorType - -### Constants - -<table> - <tr> - <td><a name="kUnknown_SkColorType"> <code><strong>kUnknown_SkColorType </strong></code> </a></td><td>0</td><td></td> - </tr> - <tr> - <td><a name="kAlpha_8_SkColorType"> <code><strong>kAlpha_8_SkColorType </strong></code> </a></td><td>1</td><td></td> - </tr> - <tr> - <td><a name="kRGB_565_SkColorType"> <code><strong>kRGB_565_SkColorType </strong></code> </a></td><td>2</td><td></td> - </tr> - <tr> - <td><a name="kARGB_4444_SkColorType"> <code><strong>kARGB_4444_SkColorType </strong></code> </a></td><td>3</td><td></td> - </tr> - <tr> - <td><a name="kRGBA_8888_SkColorType"> <code><strong>kRGBA_8888_SkColorType </strong></code> </a></td><td>4</td><td></td> - </tr> - <tr> - <td><a name="kBGRA_8888_SkColorType"> <code><strong>kBGRA_8888_SkColorType </strong></code> </a></td><td>5</td><td></td> - </tr> - <tr> - <td><a name="kIndex_8_SkColorType"> <code><strong>kIndex_8_SkColorType </strong></code> </a></td><td>6</td><td></td> - </tr> - <tr> - <td><a name="kGray_8_SkColorType"> <code><strong>kGray_8_SkColorType </strong></code> </a></td><td>7</td><td></td> - </tr> - <tr> - <td><a name="kRGBA_F16_SkColorType"> <code><strong>kRGBA_F16_SkColorType </strong></code> </a></td><td>8</td><td></td> - </tr> -</table> - -### Constants - -<table> - <tr> - <td><a name="kN32_SkColorType"> <code><strong>kN32_SkColorType </strong></code> </a></td><td>4</td><td></td> - </tr> - -</table> - -## <a name="Info"></a> Info - -# <a name="SkImageInfo"></a> Struct SkImageInfo - -<a name="SkImageInfo_empty_constructor"></a> -## SkImageInfo - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkImageInfo() -</pre> - ---- - -<a name="SkImageInfo_MakeN32Premul"></a> -## MakeN32Premul - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static SkImageInfo MakeN32Premul(int width, int height, - sk_sp<SkColorSpace> cs = nullptr) -</pre> - ---- - -<a name="SkImageInfo_makeColorSpace"></a> -## makeColorSpace - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const -</pre> - ---- - -<a name="SkImageInfo_minRowBytes"></a> -## minRowBytes - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -size_t minRowBytes() const -</pre> - ---- - -<a name="SkImageInfo_isOpaque"></a> -## isOpaque - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool isOpaque() const -</pre> - ---- - -<a name="SkImageInfo_bytesPerPixel"></a> -## bytesPerPixel - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -int bytesPerPixel() const -</pre> - ---- - -<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="SkImageInfo_validate"></a> -## validate - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void validate() 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, - const SkMatrix* localMatrix = nullptr) const -</pre> - ---- - -<a name="SkImage_MakeRasterCopy"></a> -## MakeRasterCopy - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkImage> MakeRasterCopy(const SkPixmap&) -</pre> - ---- - -<a name="SkImage_readPixels"></a> -## readPixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool readPixels(const SkPixmap& dst, int srcX, int srcY, - CachingHint = kAllow_CachingHint) const -</pre> - ---- - -<a name="SkImage_scalePixels"></a> -## scalePixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool scalePixels(const SkPixmap& dst, SkFilterQuality, - CachingHint = kAllow_CachingHint) const -</pre> - ---- - -<a name="SkImage_peekPixels"></a> -## peekPixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool peekPixels(SkPixmap* pixmap) const -</pre> - ---- - # <a name="Image_Filter"></a> Image Filter ## <a name="Scaling"></a> Scaling @@ -638,7 +584,7 @@ bool peekPixels(SkPixmap* pixmap) const <a name="SkImageFilter_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const </pre> @@ -653,7 +599,7 @@ void toString(SkString* str) const <a name="SkMallocPixelRef_MakeZeroed"></a> ## MakeZeroed -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static sk_sp<SkPixelRef> MakeZeroed(const SkImageInfo&, size_t rowBytes) </pre> @@ -662,7 +608,7 @@ static sk_sp<SkPixelRef> MakeZeroed(const SkImageInfo&, size_t rowBytes) <a name="SkMallocPixelRef_MakeAllocate"></a> ## MakeAllocate -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static sk_sp<SkPixelRef> MakeAllocate(const SkImageInfo&, size_t rowBytes) </pre> @@ -704,9 +650,8 @@ k <tr> <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 style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, SkIPoint* margin) const </pre> --- @@ -714,7 +659,7 @@ virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, <a name="SkMaskFilter_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const </pre> @@ -725,7 +670,7 @@ void toString(SkString* str) const <a name="sk_64_isS32"></a> ## sk_64_isS32 -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> static inline bool sk_64_isS32(int64_t value) </pre> @@ -734,7 +679,7 @@ static inline bool sk_64_isS32(int64_t value) <a name="SkIntToScalar"></a> ## SkIntToScalar -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkIntToScalar(x) </pre> @@ -743,7 +688,7 @@ SkIntToScalar(x) <a name="SkScalarRoundToInt"></a> ## SkScalarRoundToInt -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarRoundToInt(x) </pre> @@ -752,7 +697,7 @@ SkScalarRoundToInt(x) <a name="SkScalarFloorToInt"></a> ## SkScalarFloorToInt -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarFloorToInt(x) </pre> @@ -761,7 +706,7 @@ SkScalarFloorToInt(x) <a name="SkScalarCeilToInt"></a> ## SkScalarCeilToInt -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarCeilToInt(x) </pre> @@ -770,7 +715,7 @@ SkScalarCeilToInt(x) <a name="SkScalarFloorToScalar"></a> ## SkScalarFloorToScalar -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarFloorToScalar(x) </pre> @@ -779,7 +724,7 @@ SkScalarFloorToScalar(x) <a name="SkScalarCeilToScalar"></a> ## SkScalarCeilToScalar -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarCeilToScalar(x) </pre> @@ -788,7 +733,7 @@ SkScalarCeilToScalar(x) <a name="SkScalarIsFinite"></a> ## SkScalarIsFinite -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarIsFinite(x) </pre> @@ -797,7 +742,7 @@ SkScalarIsFinite(x) <a name="SkScalarIsNaN"></a> ## SkScalarIsNaN -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkScalarIsNaN(x) </pre> @@ -806,7 +751,7 @@ SkScalarIsNaN(x) <a name="SkTFitsIn"></a> ## SkTFitsIn -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> template <typename D, typename S> inline bool SkTFitsIn(S s) </pre> @@ -886,7 +831,7 @@ template <typename D, typename S> inline bool SkTFitsIn(S s) <a name="SkPathEffect_toString"></a> ## toString -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void toString(SkString* str) const </pre> @@ -899,7 +844,7 @@ void toString(SkString* str) const <a name="SkPathMeasure_dump"></a> ## dump -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump() const </pre> @@ -910,7 +855,7 @@ void dump() const <a name="Op"></a> ## Op -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result) </pre> @@ -923,7 +868,7 @@ bool SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result <a name="SkPicture_playback"></a> ## playback -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> virtual void playback(SkCanvas*, AbortCallback* = nullptr) const = 0 </pre> @@ -936,7 +881,7 @@ virtual void playback(SkCanvas*, AbortCallback* = nullptr) const = 0 <a name="SkPictureRecorder_beginRecording"></a> ## beginRecording -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> SkCanvas* beginRecording(const SkRect& bounds, SkBBHFactory* bbhFactory = NULL, uint32_t recordFlags = 0) </pre> @@ -954,7 +899,7 @@ SkCanvas* beginRecording(const SkRect& bounds, SkBBHFactory* bbhFactory = NULL, <a name="SkPixelRef_width"></a> ## width -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int width() const </pre> @@ -963,7 +908,7 @@ int width() const <a name="SkPixelRef_height"></a> ## height -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> int height() const </pre> @@ -972,7 +917,7 @@ int height() const <a name="SkPixelRef_isImmutable"></a> ## isImmutable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> bool isImmutable() const </pre> @@ -981,12 +926,16 @@ bool isImmutable() const <a name="SkPixelRef_setImmutable"></a> ## setImmutable -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void setImmutable() </pre> --- +# <a name="Pixel_Serializer"></a> Pixel Serializer + +# <a name="SkPixelSerializer"></a> Class SkPixelSerializer + # <a name="Point3"></a> Point3 # <a name="SkPoint3"></a> Struct SkPoint3 @@ -1009,6 +958,10 @@ void setImmutable() # <a name="sk_sp"></a> Class sk_sp +# <a name="Render_Target"></a> Render Target + +# <a name="GrRenderTarget"></a> Class GrRenderTarget + # <a name="Right_Side_Bearing"></a> Right Side Bearing # <a name="Round_Rect"></a> Round Rect @@ -1018,7 +971,7 @@ void setImmutable() <a name="SkRRect_dump"></a> ## dump -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dump() const </pre> @@ -1027,7 +980,7 @@ void dump() const <a name="SkRRect_dumpHex"></a> ## dumpHex -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> void dumpHex() const </pre> @@ -1055,9 +1008,8 @@ void dumpHex() const <a name="SkShader_MakeBitmapShader"></a> ## MakeBitmapShader -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, - TileMode tmy, +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy, const SkMatrix* localMatrix = nullptr) </pre> @@ -1073,103 +1025,84 @@ static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, # <a name="Supersampling"></a> Supersampling -# <a name="Surface"></a> Surface - -# <a name="SkSurface"></a> Class SkSurface +# <a name="Surface_Characterization"></a> Surface Characterization -<a name="SkSurface_MakeRasterDirect"></a> -## MakeRasterDirect - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -static sk_sp<SkSurface> MakeRasterDirect(const SkImageInfo&, void* pixels, - size_t rowBytes, - const SkSurfaceProps* = nullptr) -</pre> - ---- - -<a name="SkSurface_readPixels"></a> -## readPixels - -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool readPixels(const SkPixmap& dst, int srcX, int srcY) ; -</pre> +# <a name="SkSurfaceCharacterization"></a> Class SkSurfaceCharacterization ---- +# <a name="Surface_Properties"></a> Surface Properties -<a name="SkSurface_getCanvas"></a> -## getCanvas +# <a name="SkSurfaceProps"></a> Class SkSurfaceProps -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -SkCanvas* getCanvas() -</pre> +# <a name="Legacy_Font_Host"></a> Legacy Font Host ---- +## <a name="SkSurfaceProps_InitType"></a> Enum SkSurfaceProps::InitType -<a name="SkSurface_flush"></a> -## flush +### Constants -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void flush() -</pre> +<table> + <tr> + <td><a name="SkSurfaceProps_kLegacyFontHost_InitType"> <code><strong>SkSurfaceProps::kLegacyFontHost_InitType </strong></code> </a></td><td>0</td><td></td> + </tr> ---- +</table> -<a name="SkSurface_prepareForExternalIO"></a> -## prepareForExternalIO +# <a name="SVG"></a> SVG -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -void prepareForExternalIO() -</pre> +## <a name="Canvas"></a> Canvas ---- +## <a name="Arc"></a> Arc -<a name="SkSurface_makeSurface"></a> -## makeSurface +# <a name="Text"></a> Text -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -sk_sp<SkSurface> makeSurface(const SkImageInfo&) -</pre> +# <a name="Text_Blob"></a> Text Blob ---- +# <a name="SkTextBlob"></a> Class SkTextBlob -<a name="SkSurface_peekPixels"></a> -## peekPixels +# <a name="Types"></a> Types -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> -bool peekPixels(SkPixmap*) -</pre> +## <a name="GrSurfaceOrigin"></a> Enum GrSurfaceOrigin ---- +### Constants -## <a name="Properties"></a> Properties +<table> + <tr> + <td><a name="kBottomLeft_GrSurfaceOrigin"> <code><strong>kBottomLeft_GrSurfaceOrigin </strong></code> </a></td><td>0 </td><td></td> + </tr> + <tr> + <td><a name="kTopLeft_GrSurfaceOrigin"> <code><strong>kTopLeft_GrSurfaceOrigin </strong></code> </a></td><td>1</td><td></td> + </tr> -# <a name="SkSurfaceProps"></a> Class SkSurfaceProps +</table> -# <a name="Legacy_Font_Host"></a> Legacy Font Host +## <a name="Budgeted"></a> Budgeted -## <a name="SkSurfaceProps_InitType"></a> Enum SkSurfaceProps::InitType +## <a name="SkBudgeted"></a> Enum SkBudgeted ### Constants <table> <tr> - <td><a name="SkSurfaceProps_kLegacyFontHost_InitType"> <code><strong>SkSurfaceProps::kLegacyFontHost_InitType </strong></code> </a></td><td>0</td><td></td> + <td><a name="SkBudgeted_kNo"> <code><strong>SkBudgeted::kNo </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="SkBudgeted_kYes"> <code><strong>SkBudgeted::kYes </strong></code> </a></td><td>1</td><td></td> </tr> </table> -# <a name="SVG"></a> SVG - -## <a name="Canvas"></a> Canvas - -## <a name="Arc"></a> Arc +## <a name="GrSemaphoresSubmitted"></a> Enum GrSemaphoresSubmitted -# <a name="Text"></a> Text +### Constants -# <a name="Text_Blob"></a> Text Blob +<table> + <tr> + <td><a name="GrSemaphoresSubmitted_kNo"> <code><strong>GrSemaphoresSubmitted::kNo </strong></code> </a></td><td>0</td><td></td> + </tr> + <tr> + <td><a name="GrSemaphoresSubmitted_kYes"> <code><strong>GrSemaphoresSubmitted::kYes </strong></code> </a></td><td>1</td><td></td> + </tr> -# <a name="SkTextBlob"></a> Class SkTextBlob +</table> # <a name="Unpremultiply"></a> Unpremultiply diff --git a/site/user/api/usingBookmaker.md b/site/user/api/usingBookmaker.md index 96653510ba..c0360ac8a0 100644 --- a/site/user/api/usingBookmaker.md +++ b/site/user/api/usingBookmaker.md @@ -8,22 +8,22 @@ Install<a href="usingBookmaker#Go">Go</a>if needed. Get the fiddle command line interface tool. By default this will appear in your home directory. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ go get go.skia.org/infra/fiddle/go/fiddlecli</pre> Build <a href="#Bookmaker">Bookmaker</a>. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ninja -<a href="undocumented#C">C</a> out/dir bookmaker</pre> Generate an starter <a href="#Bookmaker">Bookmaker</a> file from an existing include. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ./out/dir/bookmaker -i include/core/<a href="undocumented#SkXXX.h">SkXXX.h</a> -t docs</pre> If a method or function has an unnamed parameter, bookmaker generates an error: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> <a href="undocumented#C">C</a>:/puregit/include/core/<a href="SkPixmap_Reference#SkPixmap">SkPixmap</a>.h(208): error: # missing param name bool erase(const SkColor4f&, const SkIRect* subset = nullptr) const ^ @@ -34,14 +34,14 @@ them. After naming all parameters, check in the include before continuing. A successful run generates -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> docs/<a href="undocumented#SkXXX_Reference">SkXXX Reference</a>.bmh</pre> . Next, use your favorite editor to fill out -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> docs/<a href="undocumented#SkXXX_Reference">SkXXX Reference</a>.bmh</pre> . @@ -82,13 +82,13 @@ correct parents. If you run <a href="#Bookmaker">Bookmaker</a> inside <a href="usingBookmaker#Visual_Studio">Visual Studio</a>, you can click on errors and it will take you to the source line in question. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ./out/dir/bookmaker -e fiddle.json -b docs</pre> Once complete, run fiddlecli to generate the example hashes. Errors are contained by the output but aren't reported yet. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ $GOPATH/bin/fiddlecli --input fiddle.json --output fiddleout.json</pre> Generate <a href="usingBookmaker#bmh_SkXXX">bmh SkXXX</a>.md from <a href="usingBookmaker#SkXXX">SkXXX</a>.bmh and fiddleout.json. @@ -96,19 +96,19 @@ Error checking includes: undefined references, fiddle compiler errors, missing or mismatched printf output. Again, you can click on any errors inside <a href="usingBookmaker#Visual_Studio">Visual Studio</a>. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ./out/dir/bookmaker -r site/user/api -b docs -f fiddleout.json</pre> The original include may have changed since you started creating the markdown. Check to see if it is up to date. This reports if a method no longer exists or its parameters have changed. -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ./out/dir/bookmaker -x -b docs/<a href="usingBookmaker#SkXXX">SkXXX</a>.bmh -i include/core/<a href="usingBookmaker#SkXXX">SkXXX</a>.h</pre> Generate an updated include header. Run: -<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0"> +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> $ ./out/dir/bookmaker -p -b docs -i include/core/<a href="usingBookmaker#SkXXX">SkXXX</a>.h</pre> to write the updated <a href="undocumented#SkXXX.h">SkXXX.h</a> to the current directory. |