diff options
Diffstat (limited to 'site/user')
21 files changed, 4453 insertions, 583 deletions
diff --git a/site/user/api/SkAutoCanvasRestore_Reference.md b/site/user/api/SkAutoCanvasRestore_Reference.md index 1deec31d38..a31368d342 100644 --- a/site/user/api/SkAutoCanvasRestore_Reference.md +++ b/site/user/api/SkAutoCanvasRestore_Reference.md @@ -41,7 +41,6 @@ SkAutoCanvasRestore can be constructed or initialized by these functions, includ </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -55,7 +54,6 @@ SkAutoCanvasRestore member functions read and modify the structure properties. </tr> </table> - <a name='SkAutoCanvasRestore_SkCanvas_star'></a> ## SkAutoCanvasRestore diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md index 1385892ea3..61550cbed9 100644 --- a/site/user/api/SkBitmap_Reference.md +++ b/site/user/api/SkBitmap_Reference.md @@ -101,7 +101,6 @@ SkBitmap global, <code>struct</code>, and <code>class</code> related member func </tr> </table> - ## <a name='Constant'>Constant</a> @@ -119,7 +118,6 @@ SkBitmap related constants are defined by <code>enum</code>, <code>enum class</c </tr> </table> - ## <a name='Class'>Class</a> @@ -137,7 +135,6 @@ SkBitmap uses C++ classes to declare the public data structures and interfaces. </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -187,7 +184,6 @@ SkBitmap can be constructed or initialized by these functions, including C++ cla </tr> </table> - ## <a name='Operator'>Operator</a> @@ -205,7 +201,6 @@ SkBitmap operators inline class member functions with arithmetic equivalents. </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -459,7 +454,6 @@ SkBitmap member functions read and modify the structure properties. </tr> </table> - # <a name='SkBitmap_Allocator'>Class SkBitmap::Allocator</a> ## <a name='Member_Function'>Member_Function</a> @@ -471,7 +465,6 @@ SkBitmap member functions read and modify the structure properties. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - <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: @@ -520,7 +513,6 @@ SkBitmap member functions read and modify the structure properties. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - <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: @@ -967,7 +959,6 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT </tr> </table> - <a name='SkBitmap_pixmap'></a> ## pixmap @@ -2200,7 +2191,6 @@ Instructs <a href='#SkBitmap_tryAllocPixelsFlags'>tryAllocPixelsFlags</a> and <a </tr> </table> - <a name='SkBitmap_tryAllocPixelsFlags'></a> ## tryAllocPixelsFlags @@ -2762,7 +2752,6 @@ soon </tr> </table> - <a name='SkBitmap_setPixels'></a> ## setPixels @@ -3014,7 +3003,6 @@ subset origin: 32, 64 </tr> </table> - <a name='SkBitmap_setPixelRef'></a> ## setPixelRef @@ -3156,7 +3144,6 @@ Marks that pixels in <a href='undocumented#Pixel_Ref'>Pixel Ref</a> have changed </tr> </table> - <a name='SkBitmap_eraseColor'></a> ## eraseColor @@ -4065,7 +4052,7 @@ true if <a href='#SkBitmap_writePixels_3_src'>src</a> pixels are copied to <a hr bool <a href='#SkBitmap_hasHardwareMipMap'>hasHardwareMipMap</a>() const </pre> -Android framework only. +For use by Android framework only. ### Return Value @@ -4084,7 +4071,7 @@ true if <a href='#SkBitmap_setHasHardwareMipMap'>setHasHardwareMipMap</a> has be void <a href='#SkBitmap_setHasHardwareMipMap'>setHasHardwareMipMap</a>(bool <a href='#SkBitmap_hasHardwareMipMap'>hasHardwareMipMap</a>) </pre> -Android framework only. +For use by Android framework only. ### Parameters @@ -4302,7 +4289,6 @@ x---x- </tr> </table> - <a name='SkBitmap_validate'></a> ## validate diff --git a/site/user/api/SkBlendMode_Reference.md b/site/user/api/SkBlendMode_Reference.md new file mode 100644 index 0000000000..d1bb465851 --- /dev/null +++ b/site/user/api/SkBlendMode_Reference.md @@ -0,0 +1,1050 @@ +SkBlendMode Reference +=== + +# <a name='Blend_Mode'>Blend Mode</a> + +## Overview + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Constant'>Constants</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>enum and enum class, and their const values</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Member_Function'>Functions</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>global and class member functions</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Related_Function'>Related Functions</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>similar member functions grouped together</td> + </tr> +</table> + + +## <a name='Member_Function'>Member Function</a> + + +SkBlendMode member functions read and modify the structure properties. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_Name'>SkBlendMode Name</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns mode as C string</td> + </tr> +</table> + +## <a name='Constant'>Constant</a> + + +SkBlendMode related constants are defined by <code>enum</code>, <code>enum class</code>, <code>#define</code>, <code>const</code>, and <code>constexpr</code>. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode'>SkBlendMode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>algorithm combining source and destination pixels</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>replaces destination with zero: fully transparent</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kColor'>SkBlendMode::kColor</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>hue and saturation of source with luminosity of destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kColorBurn'>SkBlendMode::kColorBurn</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>darken destination to reflect source</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kColorDodge'>SkBlendMode::kColorDodge</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>brighten destination to reflect source</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDarken'>SkBlendMode::kDarken</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>darker of source and destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDifference'>SkBlendMode::kDifference</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>subtract darker from lighter with higher contrast</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDst'>SkBlendMode::kDst</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>preserves destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDstATop'>SkBlendMode::kDstATop</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>destination inside source blended with source</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDstIn'>SkBlendMode::kDstIn</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>destination trimmed by source</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDstOut'>SkBlendMode::kDstOut</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>destination trimmed outside source</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kDstOver'>SkBlendMode::kDstOver</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>destination over source</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kExclusion'>SkBlendMode::kExclusion</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>subtract darker from lighter with lower contrast</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kHardLight'>SkBlendMode::kHardLight</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>multiply or screen, depending on source</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kHue'>SkBlendMode::kHue</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>hue of source with saturation and luminosity of destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kLastCoeffMode'>SkBlendMode::kLastCoeffMode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>last <a href='#Porter_Duff'>Porter Duff</a> blend mode</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kLastMode'>SkBlendMode::kLastMode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>last valid value</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kLastSeparableMode'>SkBlendMode::kLastSeparableMode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>last blend mode operating separately on components</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kLighten'>SkBlendMode::kLighten</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>lighter of source and destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kLuminosity'>SkBlendMode::kLuminosity</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>luminosity of source with hue and saturation of destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>product of <a href='undocumented#Premultiply'>Premultiplied</a> colors; darkens destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>multiply source with destination, darkening image</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kOverlay'>SkBlendMode::kOverlay</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>multiply or screen, depending on destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sum of colors</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSaturation'>SkBlendMode::kSaturation</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>saturation of source with hue and luminosity of destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kScreen'>SkBlendMode::kScreen</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>multiply inverse of pixels, inverting result; brightens destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSoftLight'>SkBlendMode::kSoftLight</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>lighten or darken, depending on source</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSrc'>SkBlendMode::kSrc</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>replaces destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>source inside destination blended with destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSrcIn'>SkBlendMode::kSrcIn</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>source trimmed inside destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSrcOut'>SkBlendMode::kSrcOut</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>source trimmed outside destination</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>source over destination</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkBlendMode_kXor'>SkBlendMode::kXor</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>each of source and destination trimmed outside the other</td> + </tr> +</table> + +Describes how destination pixel is replaced with a combination of itself and +source pixel. <a href='#Blend_Mode'>Blend Mode</a> may use source, destination, or both. <a href='#Blend_Mode'>Blend Mode</a> may +operate on each <a href='#Color'>Color</a> component independently, or may allow all source pixel +components to contribute to one destination pixel component. + +<a href='#Blend_Mode'>Blend Mode</a> does not use adjacent pixels to determine the outcome. + +<a href='#Blend_Mode'>Blend Mode</a> uses source and read destination <a href='SkColor_Reference#Alpha'>Alpha</a> to determine written +destination <a href='SkColor_Reference#Alpha'>Alpha</a>; both source and destination <a href='SkColor_Reference#Alpha'>Alpha</a> may also affect written +destination <a href='#Color'>Color</a> components. + +Regardless of how <a href='SkColor_Reference#Alpha'>Alpha</a> is encoded in source and destination pixel, nearly all +<a href='SkImageInfo_Reference#Color_Type'>Color Types</a> treat it as ranging from zero to one. And, nearly all <a href='#Blend_Mode'>Blend Mode</a> +algorithms limit the output so that all results are also zero to one. + +Two exceptions are <a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> and <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>. + +<a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> permits computing <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> component values larger +than one. For <a href='SkImageInfo_Reference#Color_Type'>Color Types</a> other than <a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>, resulting <a href='SkColor_Reference#Alpha'>Alpha</a> +and component values are clamped to one. + +<a href='SkImageInfo_Reference#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> permits values outside the zero to one range. It is up +to the client to ensure that the result is within the range of zero to one, +and therefore well-defined. + +## <a name='Porter_Duff'>Porter Duff</a> + +<a href='https://graphics.pixar.com/library/Compositing/paper.pdf'>Compositing Digital Images</a></a> describes <a href='#Porter_Duff'>Porter Duff</a> modes <a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a> through <a href='#SkBlendMode_kXor'>SkBlendMode::kXor</a>. + +Drawing a bitmap with transparency using <a href='#Porter_Duff'>Porter Duff</a> compositing is free to clear +the destination. + +![Porter_Duff](https://fiddle.skia.org/i/8c27fb2a58f63505cffa74c1c79e16ba_raster.png "") + +Draw geometry with transparency using <a href='#Porter_Duff'>Porter Duff</a> compositing does not combine +transparent source pixels, leaving the destination outside the geometry untouched. + +![Porter_Duff](https://fiddle.skia.org/i/50ebbb0162bbf60524a196236d66c915_raster.png "") + +## <a name='Lighten_Darken'>Lighten Darken</a> + +Modes <a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> and <a href='#SkBlendMode_kScreen'>SkBlendMode::kScreen</a> use +simple arithmetic to lighten or darken the destination. Modes +<a href='#SkBlendMode_kOverlay'>SkBlendMode::kOverlay</a> through <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> use more complicated +algorithms to lighten or darken; sometimes one mode does both, as described by <a href='https://en.wikipedia.org/wiki/Blend_modes'>Blend Modes</a></a> . + +![Lighten_Darken](https://fiddle.skia.org/i/8e04f89252632da0fffe713f07f2296f_raster.png "") + +## <a name='Modulate_Blend'>Modulate Blend</a> + +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> is a mashup of <a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a> and <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a>. +It multiplies all components, including <a href='SkColor_Reference#Alpha'>Alpha</a>; unlike <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a>, if either +source or destination is transparent, result is transparent. <a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> +uses <a href='undocumented#Premultiply'>Premultiplied</a> values to compute the product; <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> uses <a href='undocumented#Unpremultiply'>Unpremultiplied</a> +values to compute the product. + +![Modulate_Blend](https://fiddle.skia.org/i/d8abdd8fb56f9e69342d745d425c4a17_raster.png "") + +## <a name='Color_Blends'>Color Blends</a> + +Modes <a href='#SkBlendMode_kHue'>SkBlendMode::kHue</a>, <a href='#SkBlendMode_kSaturation'>SkBlendMode::kSaturation</a>, <a href='#SkBlendMode_kColor'>SkBlendMode::kColor</a>, and +<a href='#SkBlendMode_kLuminosity'>SkBlendMode::kLuminosity</a> convert source and destination pixels using all +components color information, using <a href='https://www.w3.org/TR/compositing-1/#blendingnonseparable'>non-separable blend modes</a></a> . + +![Color_Blends](https://fiddle.skia.org/i/03710c1770728da885fa4ac24a19d5d1_raster.png "") + +## <a name='SkBlendMode'>Enum SkBlendMode</a> + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> + enum class <a href='#SkBlendMode'>SkBlendMode</a> { + <a href='#SkBlendMode_kClear'>kClear</a>, + <a href='#SkBlendMode_kSrc'>kSrc</a>, + <a href='#SkBlendMode_kDst'>kDst</a>, + <a href='#SkBlendMode_kSrcOver'>kSrcOver</a>, + <a href='#SkBlendMode_kDstOver'>kDstOver</a>, + <a href='#SkBlendMode_kSrcIn'>kSrcIn</a>, + <a href='#SkBlendMode_kDstIn'>kDstIn</a>, + <a href='#SkBlendMode_kSrcOut'>kSrcOut</a>, + <a href='#SkBlendMode_kDstOut'>kDstOut</a>, + <a href='#SkBlendMode_kSrcATop'>kSrcATop</a>, + <a href='#SkBlendMode_kDstATop'>kDstATop</a>, + <a href='#SkBlendMode_kXor'>kXor</a>, + <a href='#SkBlendMode_kPlus'>kPlus</a>, + <a href='#SkBlendMode_kModulate'>kModulate</a>, + <a href='#SkBlendMode_kScreen'>kScreen</a>, + <a href='#SkBlendMode_kLastCoeffMode'>kLastCoeffMode</a> = <a href='#SkBlendMode_kScreen'>kScreen</a>, + <a href='#SkBlendMode_kOverlay'>kOverlay</a>, + <a href='#SkBlendMode_kDarken'>kDarken</a>, + <a href='#SkBlendMode_kLighten'>kLighten</a>, + <a href='#SkBlendMode_kColorDodge'>kColorDodge</a>, + <a href='#SkBlendMode_kColorBurn'>kColorBurn</a>, + <a href='#SkBlendMode_kHardLight'>kHardLight</a>, + <a href='#SkBlendMode_kSoftLight'>kSoftLight</a>, + <a href='#SkBlendMode_kDifference'>kDifference</a>, + <a href='#SkBlendMode_kExclusion'>kExclusion</a>, + <a href='#SkBlendMode_kMultiply'>kMultiply</a>, + <a href='#SkBlendMode_kLastSeparableMode'>kLastSeparableMode</a> = <a href='#SkBlendMode_kMultiply'>kMultiply</a>, + <a href='#SkBlendMode_kHue'>kHue</a>, + <a href='#SkBlendMode_kSaturation'>kSaturation</a>, + <a href='#SkBlendMode_kColor'>kColor</a>, + <a href='#SkBlendMode_kLuminosity'>kLuminosity</a>, + <a href='#SkBlendMode_kLastMode'>kLastMode</a> = <a href='#SkBlendMode_kLuminosity'>kLuminosity</a>, + }; +</pre> + +### Constants + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> +<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Details</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kClear'><code>SkBlendMode::kClear</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Clear'>Blend Mode Clear</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> components set to zero; +a fully transparent pixel. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrc'><code>SkBlendMode::kSrc</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src'>Blend Mode Src</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source. Destination alpha and color component values +are ignored. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDst'><code>SkBlendMode::kDst</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst'>Blend Mode Dst</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Preserves destination, ignoring source. Drawing with <a href='SkPaint_Reference#Paint'>Paint</a> set to <a href='#SkBlendMode_kDst'>kDst</a> has +no effect. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOver'><code>SkBlendMode::kSrcOver</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Over'>Blend Mode Src Over</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source blended with destination. If source is opaque, +replaces destination with source. Used as the default <a href='#Blend_Mode'>Blend Mode</a> for <a href='SkPaint_Reference#SkPaint'>SkPaint</a>. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOver'><code>SkBlendMode::kDstOver</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Over'>Blend Mode Dst Over</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with destination blended with source. If destination is opaque, +has no effect. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcIn'><code>SkBlendMode::kSrcIn</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_In'>Blend Mode Src In</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source using destination opacity. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstIn'><code>SkBlendMode::kDstIn</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_In'>Blend Mode Dst In</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Scales destination opacity by source opacity. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOut'><code>SkBlendMode::kSrcOut</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Out'>Blend Mode Src Out</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source using the inverse of destination opacity, +drawing source fully where destination opacity is zero. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOut'><code>SkBlendMode::kDstOut</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Out'>Blend Mode Dst Out</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination opacity with inverse of source opacity. If source is +transparent, has no effect. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcATop'><code>SkBlendMode::kSrcATop</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Atop'>Blend Mode Src Atop</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Blends destination with source using read destination opacity. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstATop'><code>SkBlendMode::kDstATop</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Atop'>Blend Mode Dst Atop</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Blends destination with source using source opacity. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kXor'><code>SkBlendMode::kXor</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Xor'>Blend Mode Xor</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Blends destination by exchanging transparency of the source and destination. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kPlus'><code>SkBlendMode::kPlus</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Plus'>Blend Mode Plus</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source and destination added together. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kModulate'><code>SkBlendMode::kModulate</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>13</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Modulate'>Blend Mode Modulate</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with source and destination multiplied together. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kScreen'><code>SkBlendMode::kScreen</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Screen'>Blend Mode Screen</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with inverted source and destination multiplied together. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastCoeffMode'><code>SkBlendMode::kLastCoeffMode</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +last Porter_Duff blend mode</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kOverlay'><code>SkBlendMode::kOverlay</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>15</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Overlay'>Blend Mode Overlay</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with multiply or screen, depending on destination. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDarken'><code>SkBlendMode::kDarken</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>16</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Darken'>Blend Mode Darken</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with darker of source and destination. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLighten'><code>SkBlendMode::kLighten</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>17</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Lighten'>Blend Mode Lighten</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces destination with lighter of source and destination. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorDodge'><code>SkBlendMode::kColorDodge</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>18</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color_Dodge'>Blend Mode Color Dodge</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Makes destination brighter to reflect source. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorBurn'><code>SkBlendMode::kColorBurn</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>19</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color_Burn'>Blend Mode Color Burn</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Makes destination darker to reflect source. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHardLight'><code>SkBlendMode::kHardLight</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>20</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Hard_Light'>Blend Mode Hard Light</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Makes destination lighter or darker, depending on source. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSoftLight'><code>SkBlendMode::kSoftLight</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>21</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Soft_Light'>Blend Mode Soft Light</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Makes destination lighter or darker, depending on source. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDifference'><code>SkBlendMode::kDifference</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>22</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Difference'>Blend Mode Difference</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Subtracts darker from lighter with higher contrast. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kExclusion'><code>SkBlendMode::kExclusion</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>23</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Exclusion'>Blend Mode Exclusion</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Subtracts darker from lighter with lower contrast. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kMultiply'><code>SkBlendMode::kMultiply</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Multiply'>Blend Mode Multiply</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Multiplies source with destination, darkening image. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastSeparableMode'><code>SkBlendMode::kLastSeparableMode</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Last blend mode operating separately on components. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHue'><code>SkBlendMode::kHue</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>25</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Hue'>Blend Mode Hue</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces hue of destination with hue of source, leaving saturation and luminosity +unchanged. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSaturation'><code>SkBlendMode::kSaturation</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>26</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Saturation'>Blend Mode Saturation</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces saturation of destination saturation hue of source, leaving hue and +luminosity unchanged. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColor'><code>SkBlendMode::kColor</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>27</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color'>Blend Mode Color</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces hue and saturation of destination with hue and saturation of source, +leaving luminosity unchanged. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLuminosity'><code>SkBlendMode::kLuminosity</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Luminosity'>Blend Mode Luminosity</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Replaces luminosity of destination with luminosity of source, leaving hue and +saturation unchanged. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastMode'><code>SkBlendMode::kLastMode</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Used by tests to iterate through all valid values. +</td> + </tr> +</table> + +### See Also + +<a href='SkCanvas_Reference#SkCanvas_drawColor'>SkCanvas::drawColor</a> <a href='SkCanvas_Reference#SkCanvas_drawVertices'>SkCanvas::drawVertices</a><sup><a href='SkCanvas_Reference#SkCanvas_drawVertices_2'>[2]</a></sup> <a href='SkPaint_Reference#SkPaint'>SkPaint</a> <a href='undocumented#SkShader_MakeCompose'>SkShader::MakeCompose</a> <a href='undocumented#SkXfermodeImageFilter'>SkXfermodeImageFilter</a> + +## <a name='Clear'>Clear</a> + +<a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a> sets destination to: +[0, 0] +. +Use <a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a> to initialize a buffer to fully transparent pixels when +creating a mask with irregular edges. + +### Example + +<div><fiddle-embed name="a9b56a26ca469bab9ab10e16f62fb2e2"><div><a href='SkColor_Reference#SK_ColorYELLOW'>SK ColorYELLOW</a> is ignored because <a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a> ignores the source pixel +value and the destination pixel value, always setting the destination to zero. +</div></fiddle-embed></div> + +### See Also + +<a href='SkCanvas_Reference#SkCanvas_clear'>SkCanvas::clear</a> + +## <a name='Src'>Src</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kSrc'>SkBlendMode::kSrc</a> sets destination to: +[Sa, Sc] +. +Use <a href='#SkBlendMode_kSrc'>SkBlendMode::kSrc</a> to copy one buffer to another. All pixels are copied, +regardless of source and destination <a href='SkColor_Reference#Alpha'>Alpha</a> values. As a parameter to +<a href='SkCanvas_Reference#SkCanvas_drawAtlas'>SkCanvas::drawAtlas</a>, selects sprites and ignores colors. + +### Example + +<div><fiddle-embed name="0fc85dd916cc1a5896d36c80b9847391"><div><a href='#SkBlendMode_kSrc'>SkBlendMode::kSrc</a> does not blend transparent pixels with existing background; +it punches a transparent hole in the existing image. +</div></fiddle-embed></div> + +### See Also + +<a href='SkSurface_Reference#SkSurface_draw'>SkSurface::draw</a><sup><a href='SkSurface_Reference#SkSurface_draw_2'>[2]</a></sup> <a href='SkSurface_Reference#SkSurface_readPixels'>SkSurface::readPixels</a><sup><a href='SkSurface_Reference#SkSurface_readPixels_2'>[2]</a></sup><sup><a href='SkSurface_Reference#SkSurface_readPixels_3'>[3]</a></sup> + +## <a name='Dst'>Dst</a> + +Given: +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDst'>SkBlendMode::kDst</a> preserves destination set to: +[Da, Dc] +. +Setting <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#Blend_Mode'>Blend Mode</a> to <a href='#SkBlendMode_kDst'>SkBlendMode::kDst</a> causes drawing with +<a href='SkPaint_Reference#Paint'>Paint</a> to have no effect. As a parameter to <a href='SkCanvas_Reference#SkCanvas_drawAtlas'>SkCanvas::drawAtlas</a>, +selects colors and ignores sprites. + +### Example + +<div><fiddle-embed name="35915a2273be1076f00f2e47998ce808"></fiddle-embed></div> + +## <a name='Src_Over'>Src Over</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> replaces destination with: +[Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)] +, +drawing source over destination. <a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> is the default for <a href='SkPaint_Reference#Paint'>Paint</a>. + +<a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> cannot make destination more transparent; the result will +be at least as opaque as the less transparent of source and original destination. + +### Example + +<div><fiddle-embed name="2ea9c149964a06cdb4929158cb4f15f8"></fiddle-embed></div> + +## <a name='Dst_Over'>Dst Over</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDstOver'>SkBlendMode::kDstOver</a> replaces destination with: +[Da + Sa * (1 - Da), Dc + Sc * (1 - Da)] +, +drawing destination over source. Has no effect destination if is opaque. + +### Example + +<div><fiddle-embed name="10dbb4d97902956ef5f5f8562f65119e"></fiddle-embed></div> + +## <a name='Src_In'>Src In</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>; +<a href='#SkBlendMode_kSrcIn'>SkBlendMode::kSrcIn</a> replaces destination with: +[Sa * Da, Sc * Da] +, +drawing source with destination opacity. + +### Example + +<div><fiddle-embed name="b0833c18fe8b0eeaab9bd6d2160d272f"></fiddle-embed></div> + +## <a name='Dst_In'>Dst In</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDstIn'>SkBlendMode::kDstIn</a> replaces destination with: +[Da * Sa, Dc * Sa] +, +scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> by source <a href='SkColor_Reference#Alpha'>Alpha</a>. Resulting +destination is visible where source is visible. + +### Example + +<div><fiddle-embed name="a5eeba05ccf6097a5d110a9d64f97c25"></fiddle-embed></div> + +## <a name='Src_Out'>Src Out</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>; +<a href='#SkBlendMode_kSrcOut'>SkBlendMode::kSrcOut</a> replaces destination with: +[Sa * (1 - Da), Sc * (1 - Da)] +, +drawing source fully where destination <a href='SkColor_Reference#Alpha'>Alpha</a> is zero. Is destination +is opaque, has no effect. + +### Example + +<div><fiddle-embed name="ccc1e74226e0c9eacbc21f1eed017b84"></fiddle-embed></div> + +## <a name='Dst_Out'>Dst Out</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDstOut'>SkBlendMode::kDstOut</a> replaces destination with: +[Da * (1 - Sa), Dc * (1 - Sa)] +, +scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> by source transparency. Resulting +destination is visible where source is transparent. If source is transparent, +has no effect. + +### Example + +<div><fiddle-embed name="b9a894c9accfc5d94081bbd77d5d790a"></fiddle-embed></div> + +## <a name='Src_Atop'>Src Atop</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a> replaces destination with: +[Da, Sc * Da + Dc * (1 - Sa)] +, +replacing opaque destination with opaque source. If source or destination +is transparent, has no effect. + +### Example + +<div><fiddle-embed name="a13148977bfc985934a92752c83a2041"></fiddle-embed></div> + +## <a name='Dst_Atop'>Dst Atop</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDstATop'>SkBlendMode::kDstATop</a> replaces destination with: +[Sa, Dc * Sa + Sc * (1 - Da)] +, +making destination transparent where source is transparent. + +### Example + +<div><fiddle-embed name="1955856d45773a4fd914fcc1f813222f"></fiddle-embed></div> + +## <a name='Xor'>Xor</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kXor'>SkBlendMode::kXor</a> replaces destination with: +[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa)] +, +exchanging the transparency of the source and destination. + +### Example + +<div><fiddle-embed name="29db2c7493d9098b8a086ddbe30dd6d6"></fiddle-embed></div> + +## <a name='Plus'>Plus</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> replaces destination with: +[Sa + Da, Sc + Dc] +, +summing the <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> components. + +### Example + +<div><fiddle-embed name="05383441e510d54008402e128fc8ad2b"></fiddle-embed></div> + +## <a name='Modulate'>Modulate</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> replaces destination with: +[Sa * Da, Sc * Dc] +, +scaling <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> components by the lesser of the values. +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> differs from <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> in two ways. +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> like <a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a> alters the destination inside +the destination area, as if the destination <a href='SkColor_Reference#Alpha'>Alpha</a> defined the boudaries of a +soft clip. <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> like <a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> can alter the +destination where the destination is transparent. +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> computes the product of the source and destination using +<a href='undocumented#Premultiply'>Premultiplied</a> component values. <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> the product of the source +and destination using <a href='undocumented#Unpremultiply'>Unpremultiplied</a> component values. + +### Example + +<div><fiddle-embed name="3fdac2b2f48bd227d2e74234c260bc8e"><div>If source and destination are opaque, <a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> and +<a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> produce the same results. +</div></fiddle-embed></div> + +## <a name='Screen'>Screen</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kScreen'>SkBlendMode::kScreen</a> replaces destination with: +[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] +. + +### Example + +<div><fiddle-embed name="b7b42965927788d853f449f08ddf46de"></fiddle-embed></div> + +## <a name='Overlay'>Overlay</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kOverlay'>SkBlendMode::kOverlay</a> replaces destination with: +[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) + +(2 * Dc <= Da ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc))] +. + +### Example + +<div><fiddle-embed name="03bf042201de02d6d131938ccd3172eb"></fiddle-embed></div> + +## <a name='Darken'>Darken</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDarken'>SkBlendMode::kDarken</a> replaces destination with: +[Sa + Da - Sa * Da, Sc + Dc - max(Sc * Da, Dc * Sa)] +. +<a href='#SkBlendMode_kDarken'>SkBlendMode::kDarken</a> does not make an image darker; it replaces the destination +component with source if source is darker. + +### Example + +<div><fiddle-embed name="8c5065ba642f815602000f6b53cefc48"></fiddle-embed></div> + +## <a name='Lighten'>Lighten</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kLighten'>SkBlendMode::kLighten</a> replaces destination with: +[Sa + Da - Sa * Da, Sc + Dc - min(Sc * Da, Dc * Sa)] +. +<a href='#SkBlendMode_kDarken'>SkBlendMode::kDarken</a> does not make an image lighter; it replaces the destination +component with source if source is lighter. + +### Example + +<div><fiddle-embed name="bbbe1a7b2587e76f9b2c7996b188a054"></fiddle-embed></div> + +## <a name='Color_Dodge'>Color Dodge</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kColorDodge'>SkBlendMode::kColorDodge</a> replaces destination with: +[Sa + Da - Sa * Da, Dc == 0 ? Sc * (1 - Da) : Sc == Sa ? Sc + Da * (1 - Sa) : +Sa * min(Da, Dc * Sa / (Sa - Sc)) + Sc * (1 - Da) + Da * (1 - Sa)] +, +making destination brighter to reflect source. + +### Example + +<div><fiddle-embed name="280ad6267a7d2d77b6d2c4531c6fc0bf"></fiddle-embed></div> + +## <a name='Color_Burn'>Color Burn</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kColorBurn'>SkBlendMode::kColorBurn</a> replaces destination with: +[Sa + Da - Sa * Da, Dc == Da ? Dc + Sc * (1 - Da) : Sc == 0 ? Da * (1 - Sa) : +Sa * (Da - min(Da, (Da - Dc) * Sa / Sc)) + Sc * (1 - Da) + Da * (1 - Sa)] +, +making destination darker to reflect source. + +### Example + +<div><fiddle-embed name="3eeef529375d8083ae0d615789d55e89"></fiddle-embed></div> + +## <a name='Hard_Light'>Hard Light</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kHardLight'>SkBlendMode::kHardLight</a> replaces destination with: +[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) + +2 * Sc <= Sa ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc)] +, +making destination lighter or darker, depending on source. + +### Example + +<div><fiddle-embed name="ac2fe555e2196e15863ea4ce74db3d54"></fiddle-embed></div> + +## <a name='Soft_Light'>Soft Light</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component +where m = Da > 0 ? Dc / Da : 0; +<a href='#SkBlendMode_kSoftLight'>SkBlendMode::kSoftLight</a> replaces destination with: +[Sa + Da - Sa * Da, Sc / Da + Dc / Sa + +(2 * Sc <= Sa ? Dc * (Sa + (2 * Sc - Sa) * (1 - m)) : Dc * Sa + Da * (2 * Sc - Sa) * +(4 * Dc <= Da ? (16 * m * m + 4 * m) * (m - 1) + 7 * m : sqrt(m) - m))]\ +, +making destination lighter or darker, depending on source. + +### Example + +<div><fiddle-embed name="ac93f30dff13f8a8bb31398de370863b"></fiddle-embed></div> + +## <a name='Difference'>Difference</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kDifference'>SkBlendMode::kDifference</a> replaces destination with: +[Sa + Da - Sa * Da, Sc + Dc - 2 * min(Sc * Da, Dc * Sa)] +, +replacing destination with lighter less darker. + +### Example + +<div><fiddle-embed name="52d2c8d1b9b428de4477b4caa1543a3d"></fiddle-embed></div> + +## <a name='Exclusion'>Exclusion</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a>, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kExclusion'>SkBlendMode::kExclusion</a> replaces destination with: +[Sa + Da - Sa * Da, Sc + Dc - 2 * Sc * Dc] +, +replacing destination with lighter less darker, ignoring <a href='SkColor_Reference#Alpha'>Alpha</a>. + +### Example + +<div><fiddle-embed name="a544ee1c67c7c557a9e54d5e99f94bb6"></fiddle-embed></div> + +## <a name='Multiply'>Multiply</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, Sc as source <a href='#Color'>Color</a> component, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination <a href='#Color'>Color</a> component; +<a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> replaces destination with: +[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) + Sc * Dc] +, +the product of <a href='undocumented#Unpremultiply'>Unpremultiplied</a> source and destination. +<a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> makes the image darker. + +### Example + +<div><fiddle-embed name="145418271d58afc4070e7df42095c750"></fiddle-embed></div> + +## <a name='Hue'>Hue</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, S as source <a href='#Color'>Color</a>, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, D as destination <a href='#Color'>Color</a>; +<a href='#SkBlendMode_kHue'>SkBlendMode::kHue</a> replaces destination with: +[Sa + Da - Sa * Da, SetLuminosity(SetSaturation(S, Saturation(D)), <a href='#Luminosity'>Luminosity(D)</a>)] +, +source hue, leaving destination luminosity and saturation unchanged. + +### Example + +<div><fiddle-embed name="ade7ea4d06775cb252a1d15c7a8112d3"></fiddle-embed></div> + +## <a name='Saturation'>Saturation</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, S as source <a href='#Color'>Color</a>, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, D as destination <a href='#Color'>Color</a>; +<a href='#SkBlendMode_kHue'>SkBlendMode::kHue</a> replaces destination with: +[Sa + Da - Sa * Da, SetLuminosity(SetSaturation(D, Saturation(S)), <a href='#Luminosity'>Luminosity(D)</a>)] +, +source hue, leaving destination luminosity and saturation unchanged. + +### Example + +<div><fiddle-embed name="4a99f5f6738b18afd92a4cb2bd762bf0"></fiddle-embed></div> + +## <a name='Color'>Color</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, S as source <a href='#Color'>Color</a>, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, D as destination <a href='#Color'>Color</a>; +<a href='#SkBlendMode_kColor'>SkBlendMode::kColor</a> replaces destination with: +[Sa + Da - Sa * Da, SetLuminosity(S, Luminosity(D))] +, +source hue and saturation, leaving destination luminosity unchanged. + +### Example + +<div><fiddle-embed name="953eb53ac00e22d098c1a1290379282e"></fiddle-embed></div> + +## <a name='Luminosity'>Luminosity</a> + +Given: +Sa as source <a href='SkColor_Reference#Alpha'>Alpha</a>, S as source <a href='#Color'>Color</a>, +Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, D as destination <a href='#Color'>Color</a>; +<a href='#SkBlendMode_kLuminosity'>SkBlendMode::kLuminosity</a> replaces destination with: +[Sa + Da - Sa * Da, SetLuminosity(D, Luminosity(S))] +, +source luminosity, leaving destination hue and saturation unchanged. + +### Example + +<div><fiddle-embed name="7161fa58aa064ee229ae346cb2e165c4"></fiddle-embed></div> + +<a name='SkBlendMode_Name'></a> +## SkBlendMode_Name + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +SK_API const char* <a href='#SkBlendMode_Name'>SkBlendMode Name</a>(<a href='#SkBlendMode'>SkBlendMode</a> blendMode) +</pre> + +Returns name of <a href='#SkBlendMode_Name_blendMode'>blendMode</a> as null-terminated C string. + +### Parameters + +<table> <tr> <td><a name='SkBlendMode_Name_blendMode'><code><strong>blendMode</strong></code></a></td> + <td>one of: <a href='#SkBlendMode_kClear'>SkBlendMode::kClear</a>, <a href='#SkBlendMode_kSrc'>SkBlendMode::kSrc</a>, <a href='#SkBlendMode_kDst'>SkBlendMode::kDst</a>, <a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>, +<a href='#SkBlendMode_kDstOver'>SkBlendMode::kDstOver</a>, <a href='#SkBlendMode_kSrcIn'>SkBlendMode::kSrcIn</a>, <a href='#SkBlendMode_kDstIn'>SkBlendMode::kDstIn</a>, +<a href='#SkBlendMode_kSrcOut'>SkBlendMode::kSrcOut</a>, <a href='#SkBlendMode_kDstOut'>SkBlendMode::kDstOut</a>, <a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a>, +<a href='#SkBlendMode_kDstATop'>SkBlendMode::kDstATop</a>, <a href='#SkBlendMode_kXor'>SkBlendMode::kXor</a>, <a href='#SkBlendMode_kPlus'>SkBlendMode::kPlus</a>, +<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a>, <a href='#SkBlendMode_kScreen'>SkBlendMode::kScreen</a>, <a href='#SkBlendMode_kOverlay'>SkBlendMode::kOverlay</a>, +<a href='#SkBlendMode_kDarken'>SkBlendMode::kDarken</a>, <a href='#SkBlendMode_kLighten'>SkBlendMode::kLighten</a>, <a href='#SkBlendMode_kColorDodge'>SkBlendMode::kColorDodge</a>, +<a href='#SkBlendMode_kColorBurn'>SkBlendMode::kColorBurn</a>, <a href='#SkBlendMode_kHardLight'>SkBlendMode::kHardLight</a>, <a href='#SkBlendMode_kSoftLight'>SkBlendMode::kSoftLight</a>, +<a href='#SkBlendMode_kDifference'>SkBlendMode::kDifference</a>, <a href='#SkBlendMode_kExclusion'>SkBlendMode::kExclusion</a>, <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a>, +<a href='#SkBlendMode_kHue'>SkBlendMode::kHue</a>, <a href='#SkBlendMode_kSaturation'>SkBlendMode::kSaturation</a>, <a href='#SkBlendMode_kColor'>SkBlendMode::kColor</a>, +<a href='#SkBlendMode_kLuminosity'>SkBlendMode::kLuminosity</a> </td> + </tr> +</table> + +### Return Value + +C string + +### Example + +<div><fiddle-embed name="3996f4994bf4e90b4cd86524c1f9f1a6"> + +#### Example Output + +~~~~ +default blend: SkBlendMode::kSrcOver +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href='#SkBlendMode'>SkBlendMode</a> + +--- + diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md index 5c391e0245..3239e20199 100644 --- a/site/user/api/SkCanvas_Reference.md +++ b/site/user/api/SkCanvas_Reference.md @@ -18,7 +18,7 @@ Request <a href='#Canvas'>Canvas</a> from <a href='SkSurface_Reference#Surface'> <a href='#Canvas'>Canvas</a> generated by <a href='undocumented#Raster_Surface'>Raster Surface</a> draws to memory visible to the CPU. <a href='#Canvas'>Canvas</a> generated by <a href='undocumented#GPU_Surface'>GPU Surface</a> uses Vulkan or OpenGL to draw to the GPU. -To draw to a document, obtain <a href='#Canvas'>Canvas</a> from <a href='undocumented#Canvas'>SVG Canvas</a>, <a href='undocumented#PDF'>Document PDF</a>, or <a href='undocumented#Recorder'>Picture Recorder</a>. +To draw to a document, obtain <a href='#Canvas'>Canvas</a> from <a href='undocumented#Canvas'>SVG Canvas</a>, <a href='undocumented#PDF'>Document PDF</a>, or <a href='undocumented#Picture_Recorder'>Picture Recorder</a>. <a href='undocumented#Document'>Document</a> based <a href='#Canvas'>Canvas</a> and other <a href='#Canvas'>Canvas</a> <a href='undocumented#Subclasses'>Subclasses</a> reference <a href='undocumented#Device'>Device</a> describing the destination. @@ -114,7 +114,6 @@ SkCanvas global, <code>struct</code>, and <code>class</code> related member func </tr> </table> - ## <a name='Constant'>Constant</a> @@ -123,33 +122,33 @@ SkCanvas related constants are defined by <code>enum</code>, <code>enum class</c <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_ColorBehavior_kLegacy'>ColorBehavior::kLegacy</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>placeholder</td> + </tr> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_ColorBehavior'>ColorBehavior</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>exists for Android framework only</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_PointMode'>PointMode</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='#SkCanvas_drawPoints'>drawPoints</a> options</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_SaveLayerFlagsSet'>SaveLayerFlagsSet</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='#SkCanvas_SaveLayerRec'>SaveLayerRec</a> options</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='#SkCanvas_drawImageRect'>drawImageRect</a> options</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_kFast_SrcRectConstraint'>kFast SrcRectConstraint</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sample outside bounds; faster</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_kInitWithPrevious_SaveLayerFlag'>kInitWithPrevious SaveLayerFlag</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>initializes with previous contents</td> </tr> - <tr style='background-color: #f0f0f0; '> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_ColorBehavior_kLegacy'>ColorBehavior::kLegacy</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>placeholder</td> - </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_kLines_PointMode'>kLines PointMode</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draw each pair of points as a line segment</td> @@ -172,7 +171,6 @@ SkCanvas related constants are defined by <code>enum</code>, <code>enum class</c </tr> </table> - ## <a name='Struct'>Struct</a> @@ -190,7 +188,6 @@ SkCanvas uses C++ structs to declare the public data structures and interfaces. </tr> </table> - ## <a name='Typedef'>Typedef</a> @@ -204,7 +201,6 @@ SkCanvas <code>typedef</code> define a data type. </tr> </table> - ## <a name='Constructor'>Constructor</a> Create the desired type of <a href='SkSurface_Reference#Surface'>Surface</a> to obtain its <a href='#Canvas'>Canvas</a> when possible. Useful @@ -253,7 +249,6 @@ SkCanvas can be constructed or initialized by these functions, including C++ cla </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -291,7 +286,7 @@ SkCanvas member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_clipRRect'>clipRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>combines <a href='#Clip'>Clip</a> with <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>combines <a href='#Clip'>Clip</a> with <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_clipRect'>clipRect</a></td> @@ -343,11 +338,11 @@ SkCanvas member functions read and modify the structure properties. </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawColor'>drawColor</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> and <a href='undocumented#Blend_Mode'>Blend Mode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawDRRect'>drawDRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws double <a href='undocumented#Round_Rect'>Round Rect</a> stroked or filled</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws double <a href='SkRRect_Reference#RRect'>Round Rect</a> stroked or filled</td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawDrawable'>drawDrawable</a></td> @@ -395,7 +390,7 @@ SkCanvas member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawPicture'>drawPicture</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Picture'>Picture</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkPicture_Reference#Picture'>Picture</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawPoint'>drawPoint</a></td> @@ -415,7 +410,7 @@ SkCanvas member functions read and modify the structure properties. </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRRect'>drawRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Round_Rect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkRRect_Reference#RRect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRect'>drawRect</a></td> @@ -427,7 +422,7 @@ SkCanvas member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRoundRect'>drawRoundRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Round_Rect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkRRect_Reference#RRect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawString'>drawString</a></td> @@ -575,7 +570,6 @@ SkCanvas member functions read and modify the structure properties. </tr> </table> - <a name='SkCanvas_MakeRasterDirect'></a> ## MakeRasterDirect @@ -873,8 +867,6 @@ storage of <a href='undocumented#Raster_Surface'>Raster Surface</a></td> ## <a name='SkCanvas_ColorBehavior'>Enum SkCanvas::ColorBehavior</a> -Android framework only. - <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>, @@ -1039,7 +1031,6 @@ transparent letters. </tr> </table> - <a name='SkCanvas_getMetaData'></a> ## getMetaData @@ -1171,7 +1162,6 @@ isRGB:1 </tr> </table> - <a name='SkCanvas_flush'></a> ## flush @@ -1421,7 +1411,6 @@ context = skia </tr> </table> - <a name='SkCanvas_peekPixels'></a> ## peekPixels @@ -2058,7 +2047,7 @@ is restored, the <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> is drawn into th <a href='#Layer'>Layer</a> may be initialized with the contents of the previous <a href='#Layer'>Layer</a>. When <a href='#Layer'>Layer</a> is restored, its <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> can be modified by <a href='SkPaint_Reference#Paint'>Paint</a> passed to <a href='#Layer'>Layer</a> to apply -<a href='SkColor_Reference#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='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. <a name='SkCanvas_saveLayer'></a> ## saveLayer @@ -2080,7 +2069,7 @@ and draws the <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>. a specific rectangle, use <a href='#SkCanvas_clipRect'>clipRect</a>. Optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_saveLayer_paint'>paint</a> applies <a href='SkColor_Reference#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> when <a href='#SkCanvas_restore'>restore</a> is called. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> when <a href='#SkCanvas_restore'>restore</a> is called. Call <a href='#SkCanvas_restoreToCount'>restoreToCount</a> with returned value to restore this and subsequent saves. @@ -2129,7 +2118,7 @@ and draws the <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>. a specific rectangle, use <a href='#SkCanvas_clipRect'>clipRect</a>. Optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_saveLayer_2_paint'>paint</a> applies <a href='SkColor_Reference#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> when <a href='#SkCanvas_restore'>restore</a> is called. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> when <a href='#SkCanvas_restore'>restore</a> is called. Call <a href='#SkCanvas_restoreToCount'>restoreToCount</a> with returned value to restore this and subsequent saves. @@ -2182,7 +2171,7 @@ and draws <a href='#Layer'>Layer</a>. a specific rectangle, use <a href='#SkCanvas_clipRect'>clipRect</a>. Optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_saveLayerPreserveLCDTextRequests_paint'>paint</a> applies <a href='SkColor_Reference#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> when <a href='#SkCanvas_restore'>restore</a> is called. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> when <a href='#SkCanvas_restore'>restore</a> is called. Call <a href='#SkCanvas_restoreToCount'>restoreToCount</a> with returned value to restore this and subsequent saves. @@ -2334,8 +2323,8 @@ scalePaint blends <a href='#Layer'>Layer</a> back with transparency. # <a name='SkCanvas_SaveLayerRec'>Struct SkCanvas::SaveLayerRec</a> <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>*(... + struct <a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> { + <a href='#SkCanvas_SaveLayerRec_empty_constructor'>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>; @@ -2344,7 +2333,7 @@ scalePaint blends <a href='#Layer'>Layer</a> back with transparency. }; </pre> -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> contains the state used to create the <a href='#Layer'>Layer</a>. +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> contains the state used to create the <a href='#Layer'>Layer</a>. ## <a name='Layer_SaveLayerRec_Overview'>Layer SaveLayerRec Overview</a> @@ -2370,7 +2359,6 @@ scalePaint blends <a href='#Layer'>Layer</a> back with transparency. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -2391,7 +2379,7 @@ a specific rectangle, use <a href='#SkCanvas_clipRect'>clipRect</a>. <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_SaveLayerRec_fPaint'><code>fPaint</code></a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> <a href='#SkCanvas_SaveLayerRec_fPaint'>fPaint</a> modifies how <a href='#Layer'>Layer</a> overlays the prior <a href='#Layer'>Layer</a>; may be nullptr. -<a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Draw_Looper'>Draw Looper</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and +<a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Draw_Looper'>Draw Looper</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='undocumented#Mask_Filter'>Mask Filter</a> affect <a href='#Layer'>Layer</a> draw. </td> </tr> @@ -2447,19 +2435,18 @@ transferred to the main canvas. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - -<a name='SkCanvas_SaveLayerRec_SaveLayerRec'></a> +<a name='SkCanvas_SaveLayerRec_empty_constructor'></a> ## SaveLayerRec <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a>() +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a>() </pre> Sets <a href='#SkCanvas_SaveLayerRec_fBounds'>fBounds</a>, <a href='#SkCanvas_SaveLayerRec_fPaint'>fPaint</a>, and <a href='#SkCanvas_SaveLayerRec_fBackdrop'>fBackdrop</a> to nullptr. Clears <a href='#SkCanvas_SaveLayerRec_fSaveLayerFlags'>fSaveLayerFlags</a>. ### Return Value -empty <a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> +empty <a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> ### Example @@ -2479,30 +2466,31 @@ rec1 == rec2 --- -<a name='SkCanvas_SaveLayerRec_SaveLayerRec_2'></a> +<a name='SkCanvas_const_SkRect_star_const_SkPaint_star'></a> +## SaveLayerRec <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SaveLayerFlags'>SaveLayerFlags</a> saveLayerFlags = 0) +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SaveLayerFlags'>SaveLayerFlags</a> 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. ### Parameters -<table> <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_2_bounds'><code><strong>bounds</strong></code></a></td> +<table> <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_bounds'><code><strong>bounds</strong></code></a></td> <td><a href='#Layer'>Layer</a> dimensions; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_2_paint'><code><strong>paint</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_paint'><code><strong>paint</strong></code></a></td> <td>applied to <a href='#Layer'>Layer</a> when overlaying prior <a href='#Layer'>Layer</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_2_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> - <td><a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> + <td><a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> </tr> </table> ### Return Value -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> with empty backdrop +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> with empty backdrop ### Example @@ -2522,10 +2510,11 @@ rec1 == rec2 --- -<a name='SkCanvas_SaveLayerRec_SaveLayerRec_3'></a> +<a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star'></a> +## SaveLayerRec <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, const <a href='undocumented#SkImageFilter'>SkImageFilter</a>* backdrop, +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, const <a href='undocumented#SkImageFilter'>SkImageFilter</a>* backdrop, <a href='#SkCanvas_SaveLayerFlags'>SaveLayerFlags</a> saveLayerFlags) </pre> @@ -2533,24 +2522,24 @@ Sets <a href='#SkCanvas_SaveLayerRec_fBounds'>fBounds</a>, <a href='#SkCanvas_Sa ### Parameters -<table> <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_3_bounds'><code><strong>bounds</strong></code></a></td> +<table> <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_bounds'><code><strong>bounds</strong></code></a></td> <td><a href='#Layer'>Layer</a> dimensions; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_3_paint'><code><strong>paint</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_paint'><code><strong>paint</strong></code></a></td> <td>applied to <a href='#Layer'>Layer</a> when overlaying prior <a href='#Layer'>Layer</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_3_backdrop'><code><strong>backdrop</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_backdrop'><code><strong>backdrop</strong></code></a></td> <td>prior <a href='#Layer'>Layer</a> copied with <a href='undocumented#Image_Filter'>Image Filter</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_3_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> - <td><a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> + <td><a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> </tr> </table> ### Return Value -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> fully specified +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> fully specified ### Example @@ -2570,49 +2559,50 @@ rec1 == rec2 --- -<a name='SkCanvas_SaveLayerRec_SaveLayerRec_4'></a> +<a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star'></a> +## SaveLayerRec <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, const <a href='undocumented#SkImageFilter'>SkImageFilter</a>* backdrop, +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, const <a href='undocumented#SkImageFilter'>SkImageFilter</a>* backdrop, const <a href='SkImage_Reference#SkImage'>SkImage</a>* clipMask, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* clipMatrix, <a href='#SkCanvas_SaveLayerFlags'>SaveLayerFlags</a> saveLayerFlags) </pre> Experimental. not readySets <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='SkColor_Reference#Alpha'>Color Alpha</a> channel of image, transformed by <a href='#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix'>clipMatrix</a>, to clip +<a href='#SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMatrix'>clipMatrix</a> uses <a href='SkColor_Reference#Alpha'>Color Alpha</a> channel of image, transformed by <a href='#SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_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 GPU-backed. ### Parameters -<table> <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_bounds'><code><strong>bounds</strong></code></a></td> +<table> <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_bounds'><code><strong>bounds</strong></code></a></td> <td><a href='#Layer'>Layer</a> dimensions; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_paint'><code><strong>paint</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_paint'><code><strong>paint</strong></code></a></td> <td>graphics state applied to <a href='#Layer'>Layer</a> when overlaying prior <a href='#Layer'>Layer</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_backdrop'><code><strong>backdrop</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_backdrop'><code><strong>backdrop</strong></code></a></td> <td>prior <a href='#Layer'>Layer</a> copied with <a href='undocumented#Image_Filter'>Image Filter</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMask'><code><strong>clipMask</strong></code></a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMask'><code><strong>clipMask</strong></code></a></td> <td>clip applied to <a href='#Layer'>Layer</a>; may be nullptr</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix'><code><strong>clipMatrix</strong></code></a></td> - <td>matrix applied to <a href='#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMask'>clipMask</a>; may be nullptr to use + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMatrix'><code><strong>clipMatrix</strong></code></a></td> + <td>matrix applied to <a href='#SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMask'>clipMask</a>; may be nullptr to use identity matrix</td> </tr> - <tr> <td><a name='SkCanvas_SaveLayerRec_SaveLayerRec_4_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> - <td><a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> + <tr> <td><a name='SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td> + <td><a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> options to modify <a href='#Layer'>Layer</a></td> </tr> </table> ### Return Value -<a href='#SkCanvas_SaveLayerRec_SaveLayerRec'>SaveLayerRec</a> fully specified +<a href='#SkCanvas_SaveLayerRec_empty_constructor'>SaveLayerRec</a> fully specified ### See Also @@ -2654,7 +2644,7 @@ depth of save state stack ### Example <div><fiddle-embed name="7d3751e82d1b6ec328ffa3d6f48ca831"><div>The example draws an image, and saves it into a <a href='#Layer'>Layer</a> with <a href='#SkCanvas_kInitWithPrevious_SaveLayerFlag'>kInitWithPrevious SaveLayerFlag</a>. -Next it punches a hole in <a href='#Layer'>Layer</a> and restore with <a href='undocumented#SkBlendMode_kPlus'>SkBlendMode::kPlus</a>. +Next it punches a hole in <a href='#Layer'>Layer</a> and restore with <a href='SkBlendMode_Reference#SkBlendMode_kPlus'>SkBlendMode::kPlus</a>. Where <a href='#Layer'>Layer</a> was cleared, the original image will draw unchanged. Outside of the circle the mandrill is brightened. </div></fiddle-embed></div> @@ -2989,7 +2979,7 @@ If clipping <a href='SkPath_Reference#Path'>Path</a> has <a href='SkPaint_Refere that drawing blend partially with the destination along the edge. A rotated rectangular <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> 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='#Clip'>Clip</a> can combine with <a href='SkRect_Reference#Rect'>Rect</a> and <a href='SkRRect_Reference#RRect'>Round Rect</a> primitives; like <a href='SkPath_Reference#Path'>Path</a>, these are transformed by <a href='#Matrix'>Matrix</a> before they are combined with <a href='#Clip'>Clip</a>. <a href='#Clip'>Clip</a> can combine with <a href='undocumented#Region'>Region</a>. <a href='undocumented#Region'>Region</a> is assumed to be in <a href='undocumented#Device'>Device</a> coordinates @@ -3115,8 +3105,6 @@ The clip restriction is not recorded in pictures. Pass an empty <a href='#SkCanvas_androidFramework_setDeviceClipRestriction_rect'>rect</a> to disable maximum clip. -This private API is for use by Android framework only. - ### Parameters <table> <tr> <td><a name='SkCanvas_androidFramework_setDeviceClipRestriction_rect'><code><strong>rect</strong></code></a></td> @@ -3130,7 +3118,7 @@ This private API is for use by Android framework only. ## clipRRect <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias) +void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> 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>, @@ -3141,7 +3129,7 @@ before it is combined with <a href='#Clip'>Clip</a>. ### Parameters <table> <tr> <td><a name='SkCanvas_clipRRect_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> + <td><a href='SkRRect_Reference#RRect'>Round Rect</a> to combine with <a href='#Clip'>Clip</a></td> </tr> <tr> <td><a name='SkCanvas_clipRRect_op'><code><strong>op</strong></code></a></td> <td><a href='undocumented#Clip_Op'>Clip Op</a> to apply to <a href='#Clip'>Clip</a></td> @@ -3164,7 +3152,7 @@ before it is combined with <a href='#Clip'>Clip</a>. <a name='SkCanvas_clipRRect_2'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op) +void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op) </pre> Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_2_rrect'>rrect</a>. @@ -3174,7 +3162,7 @@ Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; ### Parameters <table> <tr> <td><a name='SkCanvas_clipRRect_2_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> + <td><a href='SkRRect_Reference#RRect'>Round Rect</a> to combine with <a href='#Clip'>Clip</a></td> </tr> <tr> <td><a name='SkCanvas_clipRRect_2_op'><code><strong>op</strong></code></a></td> <td><a href='undocumented#Clip_Op'>Clip Op</a> to apply to <a href='#Clip'>Clip</a></td> @@ -3194,7 +3182,7 @@ Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; <a name='SkCanvas_clipRRect_3'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, bool doAntiAlias = false) +void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& 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>, @@ -3204,7 +3192,7 @@ with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#A ### Parameters <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> + <td><a href='SkRRect_Reference#RRect'>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='SkPaint_Reference#Anti_Alias'>Anti Aliased</a></td> @@ -3689,11 +3677,11 @@ device bounds empty = true </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawColor'>drawColor</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> and <a href='undocumented#Blend_Mode'>Blend Mode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawDRRect'>drawDRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws double <a href='undocumented#Round_Rect'>Round Rect</a> stroked or filled</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws double <a href='SkRRect_Reference#RRect'>Round Rect</a> stroked or filled</td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawDrawable'>drawDrawable</a></td> @@ -3749,7 +3737,7 @@ device bounds empty = true </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawPicture'>drawPicture</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Picture'>Picture</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkPicture_Reference#Picture'>Picture</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> @@ -3785,7 +3773,7 @@ device bounds empty = true </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRRect'>drawRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Round_Rect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkRRect_Reference#RRect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRect'>drawRect</a></td> @@ -3797,7 +3785,7 @@ device bounds empty = true </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawRoundRect'>drawRoundRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='undocumented#Round_Rect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>draws <a href='SkRRect_Reference#RRect'>Round Rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkCanvas_drawVertices'>drawVertices</a></td> @@ -3813,12 +3801,11 @@ device bounds empty = true </tr> </table> - <a name='SkCanvas_drawColor'></a> ## drawColor <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawColor'>drawColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> color, <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode = <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>) +void <a href='#SkCanvas_drawColor'>drawColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> color, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode = <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>) </pre> Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawColor_color'>color</a>. @@ -3830,7 +3817,7 @@ Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> < <td><a href='undocumented#Unpremultiply'>Unpremultiplied</a> ARGB</td> </tr> <tr> <td><a name='SkCanvas_drawColor_mode'><code><strong>mode</strong></code></a></td> - <td><a href='undocumented#SkBlendMode'>SkBlendMode</a> used to combine source <a href='#SkCanvas_drawColor_color'>color</a> and destination</td> + <td><a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> used to combine source <a href='#SkCanvas_drawColor_color'>color</a> and destination</td> </tr> </table> @@ -3851,7 +3838,7 @@ Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> < void <a href='#SkCanvas_clear'>clear</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> color) </pre> -Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_clear_color'>color</a> using <a href='undocumented#SkBlendMode_kSrc'>SkBlendMode::kSrc</a>. +Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_clear_color'>color</a> using <a href='SkBlendMode_Reference#SkBlendMode_kSrc'>SkBlendMode::kSrc</a>. This has the effect of replacing all pixels contained by <a href='#Clip'>Clip</a> with <a href='#SkCanvas_clear_color'>color</a>. ### Parameters @@ -3879,7 +3866,7 @@ void <a href='#SkCanvas_discard'>discard</a>() </pre> Make <a href='#Canvas'>Canvas</a> contents undefined. Subsequent calls that read <a href='#Canvas'>Canvas</a> pixels, -such as drawing with <a href='undocumented#SkBlendMode'>SkBlendMode</a>, return undefined results. <a href='#SkCanvas_discard'>discard</a> does +such as drawing with <a href='SkBlendMode_Reference#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='SkSurface_Reference#Surface'>Surface</a> or <a href='undocumented#Device'>Device</a> @@ -3904,7 +3891,7 @@ void <a href='#SkCanvas_drawPaint'>drawPaint</a>(const <a href='SkPaint_Referenc </pre> Fill <a href='#Clip'>Clip</a> with <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPaint_paint'>paint</a>. <a href='SkPaint_Reference#Paint'>Paint</a> components <a href='undocumented#Mask_Filter'>Mask Filter</a>, <a href='undocumented#Shader'>Shader</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> affect drawing; +<a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> affect drawing; <a href='undocumented#Path_Effect'>Path Effect</a> in <a href='#SkCanvas_drawPaint_paint'>paint</a> is ignored. ### Parameters @@ -4331,10 +4318,10 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc ## drawRRect <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawRRect'>drawRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) +void <a href='#SkCanvas_drawRRect'>drawRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> -<a href='#Draw'>Draw</a> <a href='undocumented#Round_Rect'>Round Rect</a> <a href='#SkCanvas_drawRRect_rrect'>rrect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRRect_paint'>paint</a>. +<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawRRect_rrect'>rrect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRRect_paint'>paint</a>. In <a href='#SkCanvas_drawRRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='#SkCanvas_drawRRect_rrect'>rrect</a> is stroked or filled; if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness. @@ -4344,7 +4331,7 @@ may have any combination of positive non-square radii for the four corners. ### Parameters <table> <tr> <td><a name='SkCanvas_drawRRect_rrect'><code><strong>rrect</strong></code></a></td> - <td><a href='undocumented#Round_Rect'>Round Rect</a> with up to eight corner radii to draw</td> + <td><a href='SkRRect_Reference#RRect'>Round Rect</a> with up to eight corner radii to draw</td> </tr> <tr> <td><a name='SkCanvas_drawRRect_paint'><code><strong>paint</strong></code></a></td> <td><a href='SkPaint_Reference#Paint'>Paint</a> stroke or fill, blend, color, and so on, used to draw</td> @@ -4365,15 +4352,15 @@ may have any combination of positive non-square radii for the four corners. ## drawDRRect <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawDRRect'>drawDRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& outer, const <a href='undocumented#SkRRect'>SkRRect</a>& inner, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) +void <a href='#SkCanvas_drawDRRect'>drawDRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& outer, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& inner, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> -<a href='#Draw'>Draw</a> <a href='undocumented#Round_Rect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> and <a href='#SkCanvas_drawDRRect_inner'>inner</a> +<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> and <a href='#SkCanvas_drawDRRect_inner'>inner</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawDRRect_paint'>paint</a>. <a href='#SkCanvas_drawDRRect_outer'>outer</a> must contain <a href='#SkCanvas_drawDRRect_inner'>inner</a> or the drawing is undefined. -In <a href='#SkCanvas_drawDRRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Round_Rect'>Round Rect</a> is stroked or filled; +In <a href='#SkCanvas_drawDRRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled; if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness. -If stroked and <a href='undocumented#Round_Rect'>Round Rect</a> corner has zero length radii, <a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> can +If stroked and <a href='SkRRect_Reference#RRect'>Round Rect</a> corner has zero length radii, <a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> can draw corners rounded or square. GPU-backed platforms optimize drawing when both <a href='#SkCanvas_drawDRRect_outer'>outer</a> and <a href='#SkCanvas_drawDRRect_inner'>inner</a> are @@ -4383,10 +4370,10 @@ concave and <a href='#SkCanvas_drawDRRect_outer'>outer</a> contains <a href='#Sk ### Parameters <table> <tr> <td><a name='SkCanvas_drawDRRect_outer'><code><strong>outer</strong></code></a></td> - <td><a href='undocumented#Round_Rect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> bounds to draw</td> + <td><a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> bounds to draw</td> </tr> <tr> <td><a name='SkCanvas_drawDRRect_inner'><code><strong>inner</strong></code></a></td> - <td><a href='undocumented#Round_Rect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_inner'>inner</a> bounds to draw</td> + <td><a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_inner'>inner</a> bounds to draw</td> </tr> <tr> <td><a name='SkCanvas_drawDRRect_paint'><code><strong>paint</strong></code></a></td> <td><a href='SkPaint_Reference#Paint'>Paint</a> stroke or fill, blend, color, and so on, used to draw</td> @@ -4400,8 +4387,8 @@ concave and <a href='#SkCanvas_drawDRRect_outer'>outer</a> contains <a href='#Sk ### Example <div><fiddle-embed name="30823cb4edf884d330285ea161664931"><div>Outer <a href='SkRect_Reference#Rect'>Rect</a> has no corner radii, but stroke join is rounded. -Inner <a href='undocumented#Round_Rect'>Round Rect</a> has corner radii; outset stroke increases radii of corners. -Stroke join does not affect <a href='#SkCanvas_drawDRRect_inner'>inner</a> <a href='undocumented#Round_Rect'>Round Rect</a> since it has no sharp corners. +Inner <a href='SkRRect_Reference#RRect'>Round Rect</a> has corner radii; outset stroke increases radii of corners. +Stroke join does not affect <a href='#SkCanvas_drawDRRect_inner'>inner</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> since it has no sharp corners. </div></fiddle-embed></div> ### See Also @@ -4544,20 +4531,20 @@ If <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawArc_oval'>ova void <a href='#SkCanvas_drawRoundRect'>drawRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> rx, <a href='undocumented#SkScalar'>SkScalar</a> ry, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> -<a href='#Draw'>Draw</a> <a href='undocumented#Round_Rect'>Round Rect</a> bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRoundRect_rect'>rect</a>, with corner radii (<a href='#SkCanvas_drawRoundRect_rx'>rx</a>, <a href='#SkCanvas_drawRoundRect_ry'>ry</a>) using <a href='#Clip'>Clip</a>, +<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRoundRect_rect'>rect</a>, with corner radii (<a href='#SkCanvas_drawRoundRect_rx'>rx</a>, <a href='#SkCanvas_drawRoundRect_ry'>ry</a>) using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRoundRect_paint'>paint</a>. -In <a href='#SkCanvas_drawRoundRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Round_Rect'>Round Rect</a> is stroked or filled; +In <a href='#SkCanvas_drawRoundRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled; if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness. If <a href='#SkCanvas_drawRoundRect_rx'>rx</a> or <a href='#SkCanvas_drawRoundRect_ry'>ry</a> are less than zero, they are treated as if they are zero. If <a href='#SkCanvas_drawRoundRect_rx'>rx</a> plus <a href='#SkCanvas_drawRoundRect_ry'>ry</a> exceeds <a href='#SkCanvas_drawRoundRect_rect'>rect</a> width or <a href='#SkCanvas_drawRoundRect_rect'>rect</a> height, radii are scaled down to fit. -If <a href='#SkCanvas_drawRoundRect_rx'>rx</a> and <a href='#SkCanvas_drawRoundRect_ry'>ry</a> are zero, <a href='undocumented#Round_Rect'>Round Rect</a> is drawn as <a href='SkRect_Reference#Rect'>Rect</a> and if stroked is affected by +If <a href='#SkCanvas_drawRoundRect_rx'>rx</a> and <a href='#SkCanvas_drawRoundRect_ry'>ry</a> are zero, <a href='SkRRect_Reference#RRect'>Round Rect</a> is drawn as <a href='SkRect_Reference#Rect'>Rect</a> and if stroked is affected by <a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a>. ### Parameters <table> <tr> <td><a name='SkCanvas_drawRoundRect_rect'><code><strong>rect</strong></code></a></td> - <td><a href='SkRect_Reference#Rect'>Rect</a> bounds of <a href='undocumented#Round_Rect'>Round Rect</a> to draw</td> + <td><a href='SkRect_Reference#Rect'>Rect</a> bounds of <a href='SkRRect_Reference#RRect'>Round Rect</a> to draw</td> </tr> <tr> <td><a name='SkCanvas_drawRoundRect_rx'><code><strong>rx</strong></code></a></td> <td>axis length on x-axis of oval describing rounded corners</td> @@ -4594,7 +4581,7 @@ void <a href='#SkCanvas_drawPath'>drawPath</a>(const <a href='SkPath_Reference#S <a href='#Draw'>Draw</a> <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawPath_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_drawPath_paint'>paint</a>. <a href='SkPath_Reference#Path'>Path</a> contains an array of <a href='SkPath_Reference#Contour'>Path Contour</a>, each of which may be open or closed. -In <a href='#SkCanvas_drawPath_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Round_Rect'>Round Rect</a> is stroked or filled: +In <a href='#SkCanvas_drawPath_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled: if filled, <a href='SkPath_Reference#Fill_Type'>Path Fill Type</a> determines whether <a href='SkPath_Reference#Contour'>Path Contour</a> describes inside or outside of fill; if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness, <a href='SkPaint_Reference#Stroke_Cap'>Paint Stroke Cap</a> describes line ends, and <a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> describes how @@ -4641,7 +4628,7 @@ void <a href='#SkCanvas_drawImage'>drawImage</a>(const <a href='SkImage_Referenc <a href='#Draw'>Draw</a> <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='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, +If <a href='#SkCanvas_drawImage_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImage_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImage_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImage_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImage_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImage_image'>image</a> edge colors, just as <a href='undocumented#Shader'>Shader</a> @@ -4660,7 +4647,7 @@ made from <a href='SkImage_Reference#SkImage_makeShader'>SkImage::makeShader</a> <td><a href='#SkCanvas_drawImage_top'>top</a> side of <a href='#SkCanvas_drawImage_image'>image</a></td> </tr> <tr> <td><a name='SkCanvas_drawImage_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>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -4686,7 +4673,7 @@ void <a href='#SkCanvas_drawImage'>drawImage</a>(const <a href='undocumented#sk_ 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='SkColor_Reference#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_drawImage_2_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImage_2_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImage_2_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImage_2_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImage_2_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImage_2_image'>image</a> edge colors, just as <a href='undocumented#Shader'>Shader</a> made from <a href='SkImage_Reference#SkImage_makeShader'>SkImage::makeShader</a> with <a href='undocumented#SkShader_kClamp_TileMode'>SkShader::kClamp TileMode</a> set replicates the @@ -4704,7 +4691,7 @@ made from <a href='SkImage_Reference#SkImage_makeShader'>SkImage::makeShader</a> <td>pop side of <a href='#SkCanvas_drawImage_2_image'>image</a></td> </tr> <tr> <td><a name='SkCanvas_drawImage_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -4787,7 +4774,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='SkImage_ 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='SkColor_Reference#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_drawImageRect_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_image'>image</a> edge colors, just @@ -4810,7 +4797,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_constraint'><code><strong>constraint</strong></code></a></td> @@ -4846,7 +4833,7 @@ boundaries. Additionally transform draw using <a href='#Clip'>Clip</a>, <a href= <a href='#SkCanvas_drawImageRect_2_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_2_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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_drawImageRect_2_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_2_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_2_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_2_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_2_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_2_image'>image</a> edge colors, just @@ -4869,7 +4856,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_2_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_2_constraint'><code><strong>constraint</strong></code></a></td> @@ -4898,7 +4885,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='SkImage_ 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='SkColor_Reference#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_drawImageRect_3_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_3_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_3_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_3_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_3_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_3_image'>image</a> edge colors, just @@ -4918,7 +4905,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_3_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_3_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_3_constraint'><code><strong>constraint</strong></code></a></td> @@ -4947,7 +4934,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume 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='SkColor_Reference#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_drawImageRect_4_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_4_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_4_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_4_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_4_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_4_image'>image</a> edge colors, just @@ -4970,7 +4957,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_4_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_4_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_4_constraint'><code><strong>constraint</strong></code></a></td> @@ -5002,7 +4989,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume 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>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_5_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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_drawImageRect_5_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_5_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_5_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_5_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_5_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_5_image'>image</a> edge colors, just @@ -5025,7 +5012,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_5_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_5_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_5_constraint'><code><strong>constraint</strong></code></a></td> @@ -5054,7 +5041,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume 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='SkColor_Reference#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_drawImageRect_6_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawImageRect_6_image'>image</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageRect_6_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawImageRect_6_image'>image</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawImageRect_6_image'>image</a> bounds, replicate <a href='#SkCanvas_drawImageRect_6_image'>image</a> edge colors, just @@ -5074,7 +5061,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageRect_6_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageRect_6_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawImageRect_6_constraint'><code><strong>constraint</strong></code></a></td> @@ -5107,7 +5094,7 @@ are larger than <a href='#SkCanvas_drawImageNine_dst'>dst</a>; <a href='#SkCanva 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_drawImageNine_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageNine_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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 image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageNine_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from image bounds. If <a href='#SkCanvas_drawImageNine_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a> set to <a href='undocumented#kNone_SkFilterQuality'>kNone_SkFilterQuality</a>, disable pixel filtering. For all other values of <a href='#SkCanvas_drawImageNine_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a>, use <a href='undocumented#kLow_SkFilterQuality'>kLow_SkFilterQuality</a> to filter pixels. @@ -5128,7 +5115,7 @@ replicates the <a href='#SkCanvas_drawImageNine_image'>image</a> edge color when <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageNine_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageNine_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5161,7 +5148,7 @@ are larger than <a href='#SkCanvas_drawImageNine_2_dst'>dst</a>; <a href='#SkCan 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_drawImageNine_2_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageNine_2_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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 image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageNine_2_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from image bounds. If <a href='#SkCanvas_drawImageNine_2_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a> set to <a href='undocumented#kNone_SkFilterQuality'>kNone_SkFilterQuality</a>, disable pixel filtering. For all other values of <a href='#SkCanvas_drawImageNine_2_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a>, use <a href='undocumented#kLow_SkFilterQuality'>kLow_SkFilterQuality</a> to filter pixels. @@ -5182,7 +5169,7 @@ replicates the <a href='#SkCanvas_drawImageNine_2_image'>image</a> edge color wh <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageNine_2_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageNine_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5214,7 +5201,7 @@ void <a href='#SkCanvas_drawBitmap'>drawBitmap</a>(const <a href='SkBitmap_Refer 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 not nullptr, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#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='SkImageInfo_Reference#kAlpha_8_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. If generated mask extends beyond <a href='#SkCanvas_drawBitmap_bitmap'>bitmap</a> bounds, replicate <a href='#SkCanvas_drawBitmap_bitmap'>bitmap</a> edge colors, @@ -5234,7 +5221,7 @@ outside of its bounds. <td><a href='#SkCanvas_drawBitmap_top'>top</a> side of <a href='#SkCanvas_drawBitmap_bitmap'>bitmap</a></td> </tr> <tr> <td><a name='SkCanvas_drawBitmap_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>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5261,7 +5248,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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_drawBitmapRect_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawBitmapRect_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a> bounds, replicate <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a> edge colors, @@ -5285,7 +5272,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of image to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawBitmapRect_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawBitmapRect_constraint'><code><strong>constraint</strong></code></a></td> @@ -5315,7 +5302,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_2_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_2_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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_drawBitmapRect_2_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawBitmapRect_2_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a> bounds, replicate <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a> edge colors, @@ -5339,7 +5326,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of image to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawBitmapRect_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawBitmapRect_2_constraint'><code><strong>constraint</strong></code></a></td> @@ -5369,7 +5356,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_3_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_3_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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_drawBitmapRect_3_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a> is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawBitmapRect_3_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a> bounds. If generated mask extends beyond <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a> bounds, replicate <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a> edge colors, @@ -5390,7 +5377,7 @@ improve performance. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of image to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawBitmapRect_3_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> <tr> <td><a name='SkCanvas_drawBitmapRect_3_constraint'><code><strong>constraint</strong></code></a></td> @@ -5424,7 +5411,7 @@ space, if any. Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapNine_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapNine_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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 bitmap is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If bitmap is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawBitmapNine_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from bitmap bounds. If <a href='#SkCanvas_drawBitmapNine_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a> set to <a href='undocumented#kNone_SkFilterQuality'>kNone_SkFilterQuality</a>, disable pixel filtering. For all other values of <a href='#SkCanvas_drawBitmapNine_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a>, use <a href='undocumented#kLow_SkFilterQuality'>kLow_SkFilterQuality</a> to filter pixels. @@ -5446,7 +5433,7 @@ outside of its bounds. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of image to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawBitmapNine_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5517,7 +5504,6 @@ remaining space, if any. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - ## <a name='SkCanvas_Lattice_RectType'>Enum SkCanvas::Lattice::RectType</a> <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> @@ -5565,7 +5551,6 @@ draws one of fColors into lattice rectangle</td> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -5664,7 +5649,7 @@ dimension. All other grid elements scale to fill the available space, if any. Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapLattice_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapLattice_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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 bitmap is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If bitmap is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawBitmapLattice_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from bitmap bounds. If <a href='#SkCanvas_drawBitmapLattice_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a> set to <a href='undocumented#kNone_SkFilterQuality'>kNone_SkFilterQuality</a>, disable pixel filtering. For all other values of <a href='#SkCanvas_drawBitmapLattice_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a>, use <a href='undocumented#kLow_SkFilterQuality'>kLow_SkFilterQuality</a> to filter pixels. @@ -5686,7 +5671,7 @@ outside of its bounds. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of image to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawBitmapLattice_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5725,7 +5710,7 @@ dimension. All other grid elements scale to fill the available space, if any. Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageLattice_paint'>paint</a>. If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageLattice_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#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 image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. If image is <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>, apply <a href='undocumented#Shader'>Shader</a>. If <a href='#SkCanvas_drawImageLattice_paint'>paint</a> contains <a href='undocumented#Mask_Filter'>Mask Filter</a>, generate mask from image bounds. If <a href='#SkCanvas_drawImageLattice_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a> set to <a href='undocumented#kNone_SkFilterQuality'>kNone_SkFilterQuality</a>, disable pixel filtering. For all other values of <a href='#SkCanvas_drawImageLattice_paint'>paint</a> <a href='undocumented#Filter_Quality'>Filter Quality</a>, use <a href='undocumented#kLow_SkFilterQuality'>kLow_SkFilterQuality</a> to filter pixels. @@ -5747,7 +5732,7 @@ outside of its bounds. <td>destination <a href='SkRect_Reference#Rect'>Rect</a> of <a href='#SkCanvas_drawImageLattice_image'>image</a> to draw to</td> </tr> <tr> <td><a name='SkCanvas_drawImageLattice_paint'><code><strong>paint</strong></code></a></td> - <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='undocumented#Blend_Mode'>Blend Mode</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -5822,7 +5807,6 @@ are scaled if needed to take up the remaining space; the center is transparent. </tr> </table> - <a name='SkCanvas_drawText'></a> ## drawText @@ -6337,14 +6321,14 @@ Elements of <a href='#SkCanvas_drawTextBlob_2_paint'>paint</a>: <a href='undocum ## drawPicture <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#SkPicture'>SkPicture</a>* picture) +void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Reference#SkPicture'>SkPicture</a>* picture) </pre> -<a href='#Draw'>Draw</a> <a href='undocumented#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. +<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a> are unchanged by <a href='#SkCanvas_drawPicture_picture'>picture</a> contents, as if <a href='#SkCanvas_save'>save</a> was called before and <a href='#SkCanvas_restore'>restore</a> was called after <a href='#SkCanvas_drawPicture'>drawPicture</a>. -<a href='undocumented#Picture'>Picture</a> records a series of draw commands for later playback. +<a href='SkPicture_Reference#Picture'>Picture</a> records a series of draw commands for later playback. ### Parameters @@ -6359,21 +6343,21 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented ### See Also -<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkPicture_playback'>SkPicture::playback</a> +<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture_playback'>SkPicture::playback</a> --- <a name='SkCanvas_drawPicture_2'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkPicture'>SkPicture</a>>& picture) +void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>>& picture) </pre> -<a href='#Draw'>Draw</a> <a href='undocumented#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_2_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. +<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_2_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a> are unchanged by <a href='#SkCanvas_drawPicture_2_picture'>picture</a> contents, as if <a href='#SkCanvas_save'>save</a> was called before and <a href='#SkCanvas_restore'>restore</a> was called after <a href='#SkCanvas_drawPicture'>drawPicture</a>. -<a href='undocumented#Picture'>Picture</a> records a series of draw commands for later playback. +<a href='SkPicture_Reference#Picture'>Picture</a> records a series of draw commands for later playback. ### Parameters @@ -6388,19 +6372,19 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented ### See Also -<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkPicture_playback'>SkPicture::playback</a> +<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture_playback'>SkPicture::playback</a> --- <a name='SkCanvas_drawPicture_3'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#SkPicture'>SkPicture</a>* picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) +void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Reference#SkPicture'>SkPicture</a>* picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) </pre> -<a href='#Draw'>Draw</a> <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 +<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#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 <a href='#Matrix'>Matrix</a> <a href='#SkCanvas_drawPicture_3_matrix'>matrix</a>, if provided; and use <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPicture_3_paint'>paint</a> <a href='SkColor_Reference#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>, if provided. +<a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, if provided. <a href='#SkCanvas_drawPicture_3_matrix'>matrix</a> transformation is equivalent to: <a href='#SkCanvas_save'>save</a>, <a href='#SkCanvas_concat'>concat</a>, <a href='#SkCanvas_drawPicture'>drawPicture</a>, <a href='#SkCanvas_restore'>restore</a>. <a href='#SkCanvas_drawPicture_3_paint'>paint</a> use is equivalent to: <a href='#SkCanvas_saveLayer'>saveLayer</a>, <a href='#SkCanvas_drawPicture'>drawPicture</a>, <a href='#SkCanvas_restore'>restore</a>. @@ -6424,19 +6408,19 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented ### See Also -<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkPicture_playback'>SkPicture::playback</a> +<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture_playback'>SkPicture::playback</a> --- <a name='SkCanvas_drawPicture_4'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkPicture'>SkPicture</a>>& picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) +void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>>& picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) </pre> -<a href='#Draw'>Draw</a> <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 +<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#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 <a href='#Matrix'>Matrix</a> <a href='#SkCanvas_drawPicture_4_matrix'>matrix</a>, if provided; and use <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPicture_4_paint'>paint</a> <a href='SkColor_Reference#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>, if provided. +<a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, if provided. <a href='#SkCanvas_drawPicture_4_matrix'>matrix</a> transformation is equivalent to: <a href='#SkCanvas_save'>save</a>, <a href='#SkCanvas_concat'>concat</a>, <a href='#SkCanvas_drawPicture'>drawPicture</a>, <a href='#SkCanvas_restore'>restore</a>. <a href='#SkCanvas_drawPicture_4_paint'>paint</a> use is equivalent to: <a href='#SkCanvas_saveLayer'>saveLayer</a>, <a href='#SkCanvas_drawPicture'>drawPicture</a>, <a href='#SkCanvas_restore'>restore</a>. @@ -6460,7 +6444,7 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented ### See Also -<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkPicture_playback'>SkPicture::playback</a> +<a href='#SkCanvas_drawDrawable'>drawDrawable</a><sup><a href='#SkCanvas_drawDrawable_2'>[2]</a></sup> <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture_playback'>SkPicture::playback</a> --- @@ -6468,12 +6452,12 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented ## drawVertices <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#SkVertices'>SkVertices</a>* vertices, <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) +void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#SkVertices'>SkVertices</a>* vertices, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> <a href='#Draw'>Draw</a> <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>. If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_paint'>paint</a> -contains <a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>. +contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>. ### Parameters @@ -6501,12 +6485,12 @@ contains <a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Blend_M <a name='SkCanvas_drawVertices_2'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkVertices'>SkVertices</a>>& vertices, <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) +void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkVertices'>SkVertices</a>>& vertices, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> <a href='#Draw'>Draw</a> <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>. If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_2_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_2_paint'>paint</a> -contains <a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_2_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>. +contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_2_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>. ### Parameters @@ -6536,15 +6520,15 @@ contains <a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Blend_M <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> void <a href='#SkCanvas_drawPatch'>drawPatch</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> cubics[12], const <a href='SkColor_Reference#SkColor'>SkColor</a> colors[4], const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> texCoords[4], - <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) + <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint) </pre> 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 <a href='SkPoint_Reference#Point'>Point</a>, with each corner. <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='SkColor_Reference#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 <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='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawPatch_colors'>colors</a> and <a href='undocumented#Shader'>Shader</a> if +<a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. If <a href='undocumented#Shader'>Shader</a> is provided it is treated +as <a href='undocumented#Coons_Patch'>Coons Patch</a> texture; <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawPatch_mode'>mode</a> combines <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawPatch_colors'>colors</a> and <a href='undocumented#Shader'>Shader</a> if both are provided. <a href='SkPoint_Reference#Point'>Point</a> array <a href='#SkCanvas_drawPatch_cubics'>cubics</a> specifies four <a href='SkPath_Reference#Cubic'>Cubics</a> starting at the top-left corner, @@ -6570,10 +6554,10 @@ corners in top-left, top-right, bottom-right, bottom-left order. may be nullptr</td> </tr> # <tr> <td><a name='SkCanvas_drawPatch_mode'><code><strong>mode</strong></code></a></td> - <td><a href='undocumented#Blend_Mode'>Blend Mode</a> for <a href='#SkCanvas_drawPatch_colors'>colors</a>, and for <a href='undocumented#Shader'>Shader</a> if <a href='#SkCanvas_drawPatch_paint'>paint</a> has one</td> + <td><a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> for <a href='#SkCanvas_drawPatch_colors'>colors</a>, and for <a href='undocumented#Shader'>Shader</a> if <a href='#SkCanvas_drawPatch_paint'>paint</a> has one</td> </tr> <tr> <td><a name='SkCanvas_drawPatch_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, used to draw</td> + <td><a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, used to draw</td> </tr> </table> @@ -6598,8 +6582,8 @@ Draws <a href='SkPath_Reference#Cubic'>Cubic</a> <a href='undocumented#Coons_Pat associating a color, and optionally a texture <a href='SkPoint_Reference#Point'>Point</a>, with each corner. <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='SkColor_Reference#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 <a href='undocumented#Coons_Patch'>Coons Patch</a> texture; <a href='undocumented#Blend_Mode'>Blend Mode</a> mode combines <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawPatch_2_colors'>colors</a> and <a href='undocumented#Shader'>Shader</a> if +<a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. If <a href='undocumented#Shader'>Shader</a> is provided it is treated +as <a href='undocumented#Coons_Patch'>Coons Patch</a> texture; <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> mode combines <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawPatch_2_colors'>colors</a> and <a href='undocumented#Shader'>Shader</a> if both are provided. <a href='SkPoint_Reference#Point'>Point</a> array <a href='#SkCanvas_drawPatch_2_cubics'>cubics</a> specifies four <a href='SkPath_Reference#Cubic'>Cubics</a> starting at the top-left corner, @@ -6625,7 +6609,7 @@ corners in top-left, top-right, bottom-right, bottom-left order. may be nullptr</td> </tr> # <tr> <td><a name='SkCanvas_drawPatch_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, used to draw</td> + <td><a href='undocumented#Shader'>Shader</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, used to draw</td> </tr> </table> @@ -6648,17 +6632,18 @@ SeeAlso <a href='#SkCanvas_drawVertices'>drawVertices</a><sup><a href='#SkCanvas <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='SkImage_Reference#SkImage'>SkImage</a>* atlas, const <a href='undocumented#SkRSXform'>SkRSXform</a> xform[], const <a href='SkRect_Reference#SkRect'>SkRect</a> tex[], - const <a href='SkColor_Reference#SkColor'>SkColor</a> colors[], int count, <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, + const <a href='SkColor_Reference#SkColor'>SkColor</a> colors[], int count, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) </pre> <a href='#Draw'>Draw</a> 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='SkColor_Reference#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 <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#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. <a href='#SkCanvas_drawAtlas_xform'>xform</a>, text, and <a href='#SkCanvas_drawAtlas_colors'>colors</a> if present, must contain <a href='#SkCanvas_drawAtlas_count'>count</a> entries. -Optional <a href='#SkCanvas_drawAtlas_colors'>colors</a> are applied for each sprite using <a href='undocumented#Blend_Mode'>Blend Mode</a>. +Optional <a href='#SkCanvas_drawAtlas_colors'>colors</a> are applied for each sprite using <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawAtlas_mode'>mode</a>, treating +sprite as source and <a href='#SkCanvas_drawAtlas_colors'>colors</a> as destination. Optional <a href='#SkCanvas_drawAtlas_cullRect'>cullRect</a> is a conservative bounds of all transformed sprites. If <a href='#SkCanvas_drawAtlas_cullRect'>cullRect</a> is outside of <a href='#Clip'>Clip</a>, canvas can skip drawing. @@ -6674,19 +6659,19 @@ If <a href='#SkCanvas_drawAtlas_cullRect'>cullRect</a> is outside of <a href='#C <td><a href='SkRect_Reference#Rect'>Rect</a> locations of sprites in <a href='#SkCanvas_drawAtlas_atlas'>atlas</a></td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_colors'><code><strong>colors</strong></code></a></td> - <td>one per sprite, blended with sprite using <a href='undocumented#Blend_Mode'>Blend Mode</a>; may be nullptr</td> + <td>one per sprite, blended with sprite using <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_count'><code><strong>count</strong></code></a></td> <td>number of sprites to draw</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_mode'><code><strong>mode</strong></code></a></td> - <td><a href='undocumented#Blend_Mode'>Blend Mode</a> combining <a href='#SkCanvas_drawAtlas_colors'>colors</a> and sprites</td> + <td><a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> combining <a href='#SkCanvas_drawAtlas_colors'>colors</a> and sprites</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_cullRect'><code><strong>cullRect</strong></code></a></td> <td>bounds of transformed sprites for efficient clipping; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> + <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> </tr> </table> @@ -6704,17 +6689,17 @@ If <a href='#SkCanvas_drawAtlas_cullRect'>cullRect</a> is outside of <a href='#C <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='undocumented#sk_sp'>sk sp</a><<a href='SkImage_Reference#SkImage'>SkImage</a>>& atlas, const <a href='undocumented#SkRSXform'>SkRSXform</a> xform[], const <a href='SkRect_Reference#SkRect'>SkRect</a> tex[], - const <a href='SkColor_Reference#SkColor'>SkColor</a> colors[], int count, <a href='undocumented#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, + const <a href='SkColor_Reference#SkColor'>SkColor</a> colors[], int count, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint) </pre> <a href='#Draw'>Draw</a> 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='SkColor_Reference#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 <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#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. <a href='#SkCanvas_drawAtlas_2_xform'>xform</a>, text, and <a href='#SkCanvas_drawAtlas_2_colors'>colors</a> if present, must contain <a href='#SkCanvas_drawAtlas_2_count'>count</a> entries. -Optional <a href='#SkCanvas_drawAtlas_2_colors'>colors</a> is applied for each sprite using <a href='undocumented#Blend_Mode'>Blend Mode</a>. +Optional <a href='#SkCanvas_drawAtlas_2_colors'>colors</a> is applied for each sprite using <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. Optional <a href='#SkCanvas_drawAtlas_2_cullRect'>cullRect</a> is a conservative bounds of all transformed sprites. If <a href='#SkCanvas_drawAtlas_2_cullRect'>cullRect</a> is outside of <a href='#Clip'>Clip</a>, canvas can skip drawing. @@ -6730,19 +6715,19 @@ If <a href='#SkCanvas_drawAtlas_2_cullRect'>cullRect</a> is outside of <a href=' <td><a href='SkRect_Reference#Rect'>Rect</a> locations of sprites in <a href='#SkCanvas_drawAtlas_2_atlas'>atlas</a></td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_2_colors'><code><strong>colors</strong></code></a></td> - <td>one per sprite, blended with sprite using <a href='undocumented#Blend_Mode'>Blend Mode</a>; may be nullptr</td> + <td>one per sprite, blended with sprite using <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_2_count'><code><strong>count</strong></code></a></td> <td>number of sprites to draw</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_2_mode'><code><strong>mode</strong></code></a></td> - <td><a href='undocumented#Blend_Mode'>Blend Mode</a> combining <a href='#SkCanvas_drawAtlas_2_colors'>colors</a> and sprites</td> + <td><a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> combining <a href='#SkCanvas_drawAtlas_2_colors'>colors</a> and sprites</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_2_cullRect'><code><strong>cullRect</strong></code></a></td> <td>bounds of transformed sprites for efficient clipping; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_2_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> + <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> </tr> </table> @@ -6764,7 +6749,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='SkImage_Referenc </pre> <a href='#Draw'>Draw</a> 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='SkColor_Reference#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 <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#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. @@ -6790,7 +6775,7 @@ If <a href='#SkCanvas_drawAtlas_3_cullRect'>cullRect</a> is outside of <a href=' <td>bounds of transformed sprites for efficient clipping; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_3_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> + <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> </tr> </table> @@ -6812,7 +6797,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='undocumented#sk_ </pre> <a href='#Draw'>Draw</a> 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='SkColor_Reference#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 <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#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. @@ -6838,7 +6823,7 @@ If <a href='#SkCanvas_drawAtlas_4_cullRect'>cullRect</a> is outside of <a href=' <td>bounds of transformed sprites for efficient clipping; may be nullptr</td> </tr> <tr> <td><a name='SkCanvas_drawAtlas_4_paint'><code><strong>paint</strong></code></a></td> - <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='undocumented#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> + <td><a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and so on; may be nullptr</td> </tr> </table> @@ -6863,7 +6848,7 @@ void <a href='#SkCanvas_drawDrawable'>drawDrawable</a>(<a href='undocumented#SkD optional <a href='#SkCanvas_drawDrawable_matrix'>matrix</a>. If <a href='#Canvas'>Canvas</a> has an asynchronous implementation, as is the case -when it is recording into <a href='undocumented#Picture'>Picture</a>, then <a href='#SkCanvas_drawDrawable_drawable'>drawable</a> will be referenced, +when it is recording into <a href='SkPicture_Reference#Picture'>Picture</a>, then <a href='#SkCanvas_drawDrawable_drawable'>drawable</a> will be referenced, so that <a href='undocumented#SkDrawable_draw'>SkDrawable::draw()</a> can be called when the operation is finalized. To force immediate drawing, call <a href='undocumented#SkDrawable_draw'>SkDrawable::draw()</a> instead. @@ -6896,7 +6881,7 @@ void <a href='#SkCanvas_drawDrawable'>drawDrawable</a>(<a href='undocumented#SkD <a href='#Draw'>Draw</a> <a href='undocumented#Drawable'>Drawable</a> <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>, offset by (<a href='#SkCanvas_drawDrawable_2_x'>x</a>, <a href='#SkCanvas_drawDrawable_2_y'>y</a>). If <a href='#Canvas'>Canvas</a> has an asynchronous implementation, as is the case -when it is recording into <a href='undocumented#Picture'>Picture</a>, then <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> will be referenced, +when it is recording into <a href='SkPicture_Reference#Picture'>Picture</a>, then <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> will be referenced, so that <a href='undocumented#SkDrawable_draw'>SkDrawable::draw()</a> can be called when the operation is finalized. To force immediate drawing, call <a href='undocumented#SkDrawable_draw'>SkDrawable::draw()</a> instead. @@ -6933,7 +6918,7 @@ void <a href='#SkCanvas_drawAnnotation'>drawAnnotation</a>(const <a href='SkRect Associate <a href='SkRect_Reference#Rect'>Rect</a> on <a href='#Canvas'>Canvas</a> with 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 +Only some canvas implementations, such as recording to <a href='SkPicture_Reference#Picture'>Picture</a>, or drawing to <a href='undocumented#PDF'>Document PDF</a>, use annotations. ### Parameters @@ -6955,7 +6940,7 @@ Only some canvas implementations, such as recording to <a href='undocumented#Pic ### See Also -<a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkDocument'>SkDocument</a> +<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='undocumented#SkDocument'>SkDocument</a> --- @@ -6968,7 +6953,7 @@ void <a href='#SkCanvas_drawAnnotation'>drawAnnotation</a>(const <a href='SkRect 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 +Only some canvas implementations, such as recording to <a href='SkPicture_Reference#Picture'>Picture</a>, or drawing to <a href='undocumented#PDF'>Document PDF</a>, use annotations. ### Parameters @@ -6990,7 +6975,7 @@ Only some canvas implementations, such as recording to <a href='undocumented#Pic ### See Also -<a href='undocumented#SkPicture'>SkPicture</a> <a href='undocumented#SkDocument'>SkDocument</a> +<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='undocumented#SkDocument'>SkDocument</a> --- diff --git a/site/user/api/SkColor4f_Reference.md b/site/user/api/SkColor4f_Reference.md index 574681d50a..569236ad27 100644 --- a/site/user/api/SkColor4f_Reference.md +++ b/site/user/api/SkColor4f_Reference.md @@ -29,6 +29,7 @@ SkColor4f members may be read and written directly without using a member functi <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>red component</td> </tr> </table> + Each component is stored as a 32-bit single precision floating point float value. All values are allowed, but only the range from zero to one is meaningful. @@ -36,7 +37,7 @@ Each component is independent of the others; <a href='#SkColor4f_fA'>fA</a> <a h with <a href='#SkColor4f_fG'>fG</a> green, <a href='#SkColor4f_fB'>fB</a> blue, or <a href='#SkColor4f_fR'>fR</a> red. Values smaller than zero or larger than one are allowed. Values out of range -may be used with <a href='undocumented#Blend_Mode'>Blend Mode</a> so that the final component is in range. +may be used with <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> so that the final component is in range. ## Overview @@ -75,7 +76,6 @@ SkColor4f operators inline class member functions with arithmetic equivalents. </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -109,7 +109,6 @@ SkColor4f member functions read and modify the structure properties. </tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -426,8 +425,6 @@ Returns <a href='#Color4f'>Color4f</a> with all components in the range from zer <a href='#SkPM4f'>SkPM4f</a> <a href='#SkColor4f_premul'>premul</a>() const </pre> -Internal use only. - ### Return Value <a href='undocumented#Premultiply'>Premultiplied</a> color @@ -435,4 +432,3 @@ Internal use only. --- # <a name='SkPM4f'>Struct SkPM4f</a> -Internal use only. diff --git a/site/user/api/SkColor_Reference.md b/site/user/api/SkColor_Reference.md index 3dbbea58a3..11920e670c 100644 --- a/site/user/api/SkColor_Reference.md +++ b/site/user/api/SkColor_Reference.md @@ -56,6 +56,7 @@ SkColor uses preprocessor definitions to inline code and constants, and to abstr <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns opaque <a href='#Color'>Color</a></td> </tr> </table> + <a href='#Color'>Color</a> constants can be helpful to write code, documenting the meaning of values the represent transparency and color values. The use of <a href='#Color'>Color</a> constants is not required. @@ -125,7 +126,6 @@ SkColor related constants are defined by <code>enum</code>, <code>enum class</co </tr> </table> - ## <a name='Function'>Function</a> @@ -166,7 +166,6 @@ SkColor related constants are defined by <code>enum</code>, <code>enum class</co </tr> </table> - ## <a name='Typedef'>Typedef</a> @@ -188,7 +187,6 @@ SkColor <code>typedef</code> define a data type. </tr> </table> - ## <a name='Alpha'>Alpha</a> <a href='#Alpha'>Alpha</a> represents the transparency of <a href='#Color'>Color</a>. <a href='#Color'>Color</a> with <a href='#Alpha'>Alpha</a> of zero is fully diff --git a/site/user/api/SkIPoint_Reference.md b/site/user/api/SkIPoint_Reference.md index a5f149b6d6..f3e43231f4 100644 --- a/site/user/api/SkIPoint_Reference.md +++ b/site/user/api/SkIPoint_Reference.md @@ -13,6 +13,7 @@ SkIPoint <code>typedef</code> define a data type. <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> + <a href='#SkIPoint'>SkIPoint</a> holds two 32-bit integer coordinates. ## Overview @@ -64,7 +65,6 @@ SkIPoint global, <code>struct</code>, and <code>class</code> related member func </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -98,7 +98,6 @@ SkIPoint member functions read and modify the structure properties. </tr> </table> - ## <a name='Member'>Member</a> @@ -136,7 +135,6 @@ SkIPoint members may be read and written directly without using a member functio </tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -172,7 +170,6 @@ SkIPoint can be constructed or initialized by these functions, including C++ cla </tr> </table> - <a name='SkIPoint_Make'></a> ## Make @@ -234,7 +231,6 @@ pt1 == pt2 </tr> </table> - <a name='SkIPoint_x'></a> ## x @@ -340,7 +336,6 @@ pt.isZero() == true </tr> </table> - <a name='SkIPoint_set'></a> ## set @@ -419,7 +414,6 @@ SkIPoint operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkIPoint_minus_operator'></a> ## operator- diff --git a/site/user/api/SkIRect_Reference.md b/site/user/api/SkIRect_Reference.md index 8f8014767f..06e581f015 100644 --- a/site/user/api/SkIRect_Reference.md +++ b/site/user/api/SkIRect_Reference.md @@ -71,7 +71,6 @@ SkIRect global, <code>struct</code>, and <code>class</code> related member funct </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -241,7 +240,6 @@ SkIRect member functions read and modify the structure properties. </tr> </table> - ## <a name='Member'>Member</a> @@ -297,7 +295,6 @@ SkIRect members may be read and written directly without using a member function </tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -387,7 +384,6 @@ SkIRect can be constructed or initialized by these functions, including C++ clas </tr> </table> - <a name='SkIRect_MakeEmpty'></a> ## MakeEmpty @@ -668,7 +664,6 @@ rect: -10, 35, 5, 60 isEmpty: false </tr> </table> - <a name='SkIRect_left'></a> ## left @@ -1120,7 +1115,6 @@ SkIRect operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkIRect_equal_operator'></a> ## operator== @@ -1229,7 +1223,6 @@ test != sorted </tr> </table> - <a name='SkIRect_setEmpty'></a> ## setEmpty @@ -1434,7 +1427,6 @@ rect: -10, 35, 5, 60 isEmpty: false </tr> </table> - <a name='SkIRect_makeOffset'></a> ## makeOffset @@ -1785,8 +1777,8 @@ rect: 5, 1, 55, 86 must describe area; <a href='#SkIRect_fLeft'>fLeft</a> is less than <a href='#SkIRect_fRight'>fRight</a>, and <a href='#SkIRect_fTop'>fTop</a> is less than <a href='#SkIRect_fBottom'>fBottom</a>; empty() returns false. The intersection of <a href='#IRect'>IRect</a> pair can be described by: -(max(a.fLeft, b.fLeft), max(a.fTop, b.fTop), -min(a.fRight, b.fRight), min(a.fBottom, b.fBottom)) +(max(a.<a href='#SkIRect_fLeft'>fLeft</a>, b.<a href='#SkIRect_fLeft'>fLeft</a>), max(a.<a href='#SkIRect_fTop'>fTop</a>, b.<a href='#SkIRect_fTop'>fTop</a>), +min(a.<a href='#SkIRect_fRight'>fRight</a>, b.<a href='#SkIRect_fRight'>fRight</a>), min(a.<a href='#SkIRect_fBottom'>fBottom</a>, b.<a href='#SkIRect_fBottom'>fBottom</a>)) . The intersection is only meaningful if the resulting <a href='#IRect'>IRect</a> is not empty and @@ -1834,7 +1826,6 @@ describes an area: <a href='#SkIRect_fLeft'>fLeft</a> is less than <a href='#SkI </tr> </table> - <a name='SkIRect_adjust'></a> ## adjust @@ -2461,7 +2452,6 @@ intersection </tr> </table> - <a name='SkIRect_join'></a> ## join @@ -2558,7 +2548,6 @@ join: 10, 20, 55, 65 </tr> </table> - <a name='SkIRect_sort'></a> ## sort diff --git a/site/user/api/SkImageInfo_Reference.md b/site/user/api/SkImageInfo_Reference.md index 611ae68d5d..743907ff54 100644 --- a/site/user/api/SkImageInfo_Reference.md +++ b/site/user/api/SkImageInfo_Reference.md @@ -112,40 +112,43 @@ SkImageInfo related constants are defined by <code>enum</code>, <code>enum class <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel with half floats for red, green, blue, alpha; in 64-bit word</td> </tr> <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel using C float for red, green, blue, alpha; in 128-bit word</td> + </tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel with 10 bits each for red, green, blue; in 32-bit word</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRGB_565_SkColorType'>kRGB_565_SkColorType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRGB_888x_SkColorType'>kRGB_888x_SkColorType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel with 8 bits each for red, green, blue; in 32-bit word</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRec601_SkYUVColorSpace'>kRec601_SkYUVColorSpace</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>describes SDTV range</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kRec709_SkYUVColorSpace'>kRec709_SkYUVColorSpace</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>describes HDTV range</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kUnknown_SkAlphaType'>kUnknown_SkAlphaType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uninitialized</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kUnknown_SkColorType'>kUnknown_SkColorType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uninitialized</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>pixel components are independent of <a href='SkColor_Reference#Alpha'>Alpha</a></td> </tr> </table> - ## <a name='Alpha_Type'>Alpha Type</a> ## <a name='SkAlphaType'>Enum SkAlphaType</a> @@ -333,8 +336,8 @@ true if <a href='#SkAlphaTypeIsOpaque_at'>at</a> equals <a href='#kOpaque_SkAlph <a href='#kRGB_101010x_SkColorType'>kRGB_101010x_SkColorType</a>, <a href='#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>, - - <a href='#kLastEnum_SkColorType'>kLastEnum_SkColorType</a> = <a href='#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a>, + <a href='#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, + <a href='#kLastEnum_SkColorType'>kLastEnum_SkColorType</a> = <a href='#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a>, #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A) <a href='#kN32_SkColorType'>kN32_SkColorType</a> = <a href='#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a>, #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A) @@ -456,18 +459,29 @@ blue, and green, representing colors from black to white. <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_F16'>Color Type RGBA F16</a> </td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> Stores 64-bit word pixel encoding that contains 16 bits of blue, -16 bits of green, 16 bits of red, and 16 bits of alpha. +16 bits of green, 16 bits of red, and 16 bits of alpha. Each component +is encoded as a half float. </td> </tr> <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_F32_SkColorType'><code>kRGBA_F32_SkColorType</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_F32'>Color Type RGBA F32</a> </td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +Stores 128-bit word pixel encoding that contains 32 bits of blue, +32 bits of green, 32 bits of red, and 32 bits of alpha. Each component +is encoded as a single precision float. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kLastEnum_SkColorType'><code>kLastEnum_SkColorType</code></a></td> - <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> Used by tests to iterate through all valid values. </td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kN32_SkColorType'><code>kN32_SkColorType</code></a></td> <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4 or 6</td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> @@ -701,7 +715,7 @@ opaque as if its <a href='SkColor_Reference#Alpha'>Color Alpha</a> was set to on ## <a name='Color_Type_RGBA_F16'>Color Type RGBA F16</a> <a href='#kRGBA_F16_SkColorType'>kRGBA_F16_SkColorType</a> encodes ARGB into a 64-bit word. Each component: -blue, green, red, and alpha; use 16 bits, describing a floating point value. +blue, green, red, and alpha; use 16 bits, describing a floating point value, from -65500 to 65000 with 3.31 decimal digits of precision. At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision or range to @@ -723,11 +737,42 @@ pixels. If paired with <a href='#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all alpha component values are at the maximum; blue, green, and red components are fully opaque. If any alpha component is -less than 255, the drawn result is undefined. +less than one, the drawn result is undefined. ### Example -<div><fiddle-embed name="788ac33198103a14a5076dc3e03f2f4b"></fiddle-embed></div> +<div><fiddle-embed name="dd81527bbdf5eaae7dd21ac04ab84f9e"></fiddle-embed></div> + +### See Also + +<a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> + +## <a name='Color_Type_RGBA_F32'>Color Type RGBA F32</a> + +<a href='#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a> encodes ARGB into a 128-bit word. Each component: +blue, green, red, and alpha; use 32 bits, describing a floating point value, +from -3.402823e+38 to 3.402823e+38 with 7.225 decimal digits of precision. + +At present, <a href='SkColor_Reference#Color'>Color</a> in <a href='SkPaint_Reference#Paint'>Paint</a> does not provide enough precision or range to +draw all colors possible to a <a href='#kRGBA_F32_SkColorType'>kRGBA_F32_SkColorType</a> <a href='SkSurface_Reference#Surface'>Surface</a>. + +Each component encodes a floating point value using <a href='https://en.wikipedia.org/wiki/Single-precision_floating-point_format'>single-precision floats</a></a> . +Meaningful colors are represented by the range 0.0 to 1.0, although smaller +and larger values may be useful when used in combination with <a href='undocumented#Transfer_Mode'>Transfer Mode</a>. + +![Color_Type_RGBA_F32](https://fiddle.skia.org/i/b26119f9312d5f5d4011bf2dac94fafe_raster.png "") + +If paired with <a href='#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>: blue, green, and red components are +<a href='undocumented#Premultiply'>Premultiplied</a> by the alpha value. If blue, green, or red is greater than alpha, +the drawn result is undefined. + +If paired with <a href='#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>: blue, green, red, and alpha components +may have any value. There may be a performance penalty with <a href='undocumented#Unpremultiply'>Unpremultiplied</a> +pixels. + +If paired with <a href='#kOpaque_SkAlphaType'>kOpaque_SkAlphaType</a>: all alpha component values are at the maximum; +blue, green, and red components are fully opaque. If any alpha component is +less than one, the drawn result is undefined. ### See Also @@ -942,6 +987,7 @@ SkImageInfo related constants are defined by <code>enum</code>, <code>enum class <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> + Describes pixel dimensions and encoding. <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>, <a href='SkImage_Reference#Image'>Image</a>, PixMap, and <a href='SkSurface_Reference#Surface'>Surface</a> can be created from <a href='#Image_Info'>Image Info</a>. <a href='#Image_Info'>Image Info</a> can be retrieved from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> and <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>, but not from <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a>. For example, <a href='SkImage_Reference#Image'>Image</a> and <a href='SkSurface_Reference#Surface'>Surface</a> @@ -1104,7 +1150,6 @@ SkImageInfo member functions read and modify the structure properties. </tr> </table> - ## <a name='Related_Function'>Related Function</a> @@ -1161,32 +1206,35 @@ SkImageInfo global, <code>struct</code>, and <code>class</code> related member f <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>encodes ARGB as half floats</td> </tr> <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_F32'>Color Type RGBA F32</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>encodes ARGB as single precision floats</td> + </tr> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_101010'>Color Type RGB 101010</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>encodes RGB ten bits per color component</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_565'>Color Type RGB 565</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>encodes RGB in 16 bits</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_888'>Color Type RGB 888</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>encodes RGB in 32 bits</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Property'>Property</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>metrics and attributes</td> </tr> - <tr style='background-color: #f0f0f0; '> + <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Utility'>Utility</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>rarely called management functions</td> </tr> - <tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#YUV_ColorSpace'>YUV ColorSpace</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>color range of YUV pixels</td> </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -1260,7 +1308,6 @@ SkImageInfo can be constructed or initialized by these functions, including C++ </tr> </table> - <a name='SkImageInfo_empty_constructor'></a> ## SkImageInfo @@ -1695,7 +1742,6 @@ created <a href='#Image_Info'>Image Info</a> </tr> </table> - <a name='SkImageInfo_width'></a> ## width @@ -2382,7 +2428,6 @@ SkImageInfo operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkImageInfo_equal1_operator'></a> ## operator== @@ -2673,7 +2718,6 @@ SkImageInfo() == reset copy </tr> </table> - <a name='SkImageInfo_validate'></a> ## validate diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md index e53eef618c..eec6966d98 100644 --- a/site/user/api/SkImage_Reference.md +++ b/site/user/api/SkImage_Reference.md @@ -13,6 +13,14 @@ SkImage related constants are defined by <code>enum</code>, <code>enum class</co <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_BitDepth_kF16'>BitDepth::kF16</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uses 16-bit float per <a href='SkColor_Reference#Color'>Color</a> component</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_BitDepth_kU8'>BitDepth::kU8</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uses 8-bit unsigned int per <a href='SkColor_Reference#Color'>Color</a> component</td> + </tr> + <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_BitDepth'>BitDepth</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>options for <a href='#SkImage_MakeFromPicture'>MakeFromPicture</a></td> </tr> @@ -29,20 +37,11 @@ SkImage related constants are defined by <code>enum</code>, <code>enum class</co <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>disallows internally caching decoded and copied pixels</td> </tr> <tr style='background-color: #f0f0f0; '> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_BitDepth_kF16'>BitDepth::kF16</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uses 16-bit float per <a href='SkColor_Reference#Color'>Color</a> component</td> - </tr> - <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_kRO_LegacyBitmapMode'>kRO LegacyBitmapMode</a></td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returned bitmap is read-only and immutable</td> </tr> - <tr style='background-color: #f0f0f0; '> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_BitDepth_kU8'>BitDepth::kU8</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uses 8-bit unsigned int per <a href='SkColor_Reference#Color'>Color</a> component</td> - </tr> </table> - ## <a name='Typedef'>Typedef</a> @@ -67,8 +66,9 @@ SkImage <code>typedef</code> define a data type. <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>parameter type for <a href='#SkImage_MakeFromTexture'>MakeFromTexture</a></td> </tr> </table> + <a href='#Image'>Image</a> describes a two dimensional array of pixels to draw. The pixels may be -decoded in a <a href='undocumented#Raster_Bitmap'>Raster Bitmap</a>, encoded in a <a href='undocumented#Picture'>Picture</a> or compressed data stream, +decoded in a <a href='undocumented#Raster_Bitmap'>Raster Bitmap</a>, encoded in a <a href='SkPicture_Reference#Picture'>Picture</a> or compressed data stream, or located in GPU memory as a <a href='undocumented#GPU_Texture'>GPU Texture</a>. <a href='#Image'>Image</a> cannot be modified after it is created. <a href='#Image'>Image</a> may allocate additional @@ -77,7 +77,7 @@ storage as needed; for instance, an encoded <a href='#Image'>Image</a> may decod <a href='#Image'>Image</a> width and height are greater than zero. Creating an <a href='#Image'>Image</a> with zero width or height returns <a href='#Image'>Image</a> equal to nullptr. -<a href='#Image'>Image</a> may be created from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>, <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>, <a href='SkSurface_Reference#Surface'>Surface</a>, <a href='undocumented#Picture'>Picture</a>, encoded streams, +<a href='#Image'>Image</a> may be created from <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>, <a href='SkPixmap_Reference#Pixmap'>Pixmap</a>, <a href='SkSurface_Reference#Surface'>Surface</a>, <a href='SkPicture_Reference#Picture'>Picture</a>, encoded streams, <a href='undocumented#GPU_Texture'>GPU Texture</a>, <a href='SkImageInfo_Reference#YUV_ColorSpace'>YUV ColorSpace</a> data, or hardware buffer. Encoded streams supported include BMP, GIF, HEIF, ICO, JPEG, PNG, WBMP, WebP. Supported encoding details vary with platform. @@ -162,7 +162,6 @@ SkImage global, <code>struct</code>, and <code>class</code> related member funct </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -208,7 +207,7 @@ SkImage can be constructed or initialized by these functions, including C++ clas </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_MakeFromPicture'>MakeFromPicture</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>creates <a href='#Image'>Image</a> from <a href='undocumented#Picture'>Picture</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>creates <a href='#Image'>Image</a> from <a href='SkPicture_Reference#Picture'>Picture</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_MakeFromRaster'>MakeFromRaster</a></td> @@ -280,7 +279,6 @@ SkImage can be constructed or initialized by these functions, including C++ clas </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -326,7 +324,7 @@ SkImage member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_MakeFromPicture'>MakeFromPicture</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>creates <a href='#Image'>Image</a> from <a href='undocumented#Picture'>Picture</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>creates <a href='#Image'>Image</a> from <a href='SkPicture_Reference#Picture'>Picture</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkImage_MakeFromRaster'>MakeFromRaster</a></td> @@ -462,7 +460,6 @@ SkImage member functions read and modify the structure properties. </tr> </table> - <a name='SkImage_MakeRasterCopy'></a> ## MakeRasterCopy @@ -691,7 +688,7 @@ otherwise, <a href='#SkImage_MakeFromGenerator_subset'>subset</a> must be contai <a href='#Image'>Image</a> is returned if generator data is valid. Valid data parameters vary by type of data and platform. -<a href='#SkImage_MakeFromGenerator_imageGenerator'>imageGenerator</a> may wrap <a href='undocumented#Picture'>Picture</a> data, codec data, or custom data. +<a href='#SkImage_MakeFromGenerator_imageGenerator'>imageGenerator</a> may wrap <a href='SkPicture_Reference#Picture'>Picture</a> data, codec data, or custom data. ### Parameters @@ -709,7 +706,7 @@ created <a href='#Image'>Image</a>, or nullptr ### Example -<div><fiddle-embed name="c2fec0746f88ca34d7dce59dd9bdef9e"><div>The generator returning <a href='undocumented#Picture'>Picture</a> cannot be shared; std::move transfers ownership to generated <a href='#Image'>Image</a>. +<div><fiddle-embed name="c2fec0746f88ca34d7dce59dd9bdef9e"><div>The generator returning <a href='SkPicture_Reference#Picture'>Picture</a> cannot be shared; std::move transfers ownership to generated <a href='#Image'>Image</a>. </div></fiddle-embed></div> ### See Also @@ -1194,7 +1191,7 @@ Use 16 bits per ARGB component using half-precision floating point format. ## MakeFromPicture <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkImage'>SkImage</a>> <a href='#SkImage_MakeFromPicture'>MakeFromPicture</a>(<a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkPicture'>SkPicture</a>> picture, const <a href='undocumented#SkISize'>SkISize</a>& dimensions, +static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkImage'>SkImage</a>> <a href='#SkImage_MakeFromPicture'>MakeFromPicture</a>(<a href='undocumented#sk_sp'>sk sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> picture, const <a href='undocumented#SkISize'>SkISize</a>& dimensions, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkImage_BitDepth'>BitDepth</a> bitDepth, <a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> <a href='#SkImage_colorSpace'>colorSpace</a>) </pre> @@ -1347,7 +1344,6 @@ created <a href='#Image'>Image</a>, or nullptr </tr> </table> - <a name='SkImage_width'></a> ## width @@ -1747,7 +1743,6 @@ transforming <a href='#Image'>Image</a> before <a href='SkCanvas_Reference#Matri </tr> </table> - <a name='SkImage_peekPixels'></a> ## peekPixels @@ -2279,7 +2274,6 @@ encoded <a href='#Image'>Image</a>, or nullptr </tr> </table> - <a name='SkImage_makeSubset'></a> ## makeSubset @@ -2306,7 +2300,7 @@ partial or full <a href='#Image'>Image</a>, or nullptr ### Example -<div><fiddle-embed name="cedd6233848198e1fca4d1e14816baaf"></fiddle-embed></div> +<div><fiddle-embed name="93669037c9eb9d142e7776b9f936fa96"></fiddle-embed></div> ### See Also diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md index d2ffdd14ad..4c891add50 100644 --- a/site/user/api/SkMatrix_Reference.md +++ b/site/user/api/SkMatrix_Reference.md @@ -117,6 +117,7 @@ SkMatrix related constants are defined by <code>enum</code>, <code>enum class</c <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>translation <a href='#Matrix'>Matrix</a></td> </tr> </table> + <a href='#Matrix'>Matrix</a> holds a 3x3 matrix for transforming coordinates. This allows mapping <a href='SkPoint_Reference#Point'>Points</a> and <a href='SkPoint_Reference#Vector'>Vectors</a> with translation, scaling, skewing, rotation, and perspective. @@ -498,7 +499,6 @@ SkMatrix member functions read and modify the structure properties. </tr> </table> - ## <a name='Related_Function'>Related Function</a> @@ -532,7 +532,6 @@ SkMatrix global, <code>struct</code>, and <code>class</code> related member func </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -666,7 +665,6 @@ SkMatrix can be constructed or initialized by these functions, including C++ cla </tr> </table> - <a name='SkMatrix_MakeScale'></a> ## MakeScale @@ -1027,7 +1025,6 @@ after setPolyToPoly: kTranslate_Mask kScale_Mask kAffine_Mask kPerspective_Mask </tr> </table> - <a name='SkMatrix_getType'></a> ## getType @@ -1688,7 +1685,6 @@ SkMatrix operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkMatrix_array_operator'></a> ## operator[] @@ -2209,7 +2205,6 @@ after dirty cache: x = 66 </tr> </table> - <a name='SkMatrix_set'></a> ## set @@ -4443,7 +4438,6 @@ ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7 </tr> </table> - <a name='SkMatrix_mapPoints'></a> ## mapPoints @@ -5339,7 +5333,6 @@ true if <a href='#Matrix'>Matrix</a> <a href='#SkMatrix_notequal_operator_a'>a</ </tr> </table> - <a name='SkMatrix_dump'></a> ## dump diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md index 3821dc3d87..1bff17da88 100644 --- a/site/user/api/SkPaint_Reference.md +++ b/site/user/api/SkPaint_Reference.md @@ -83,7 +83,7 @@ SkPaint global, <code>struct</code>, and <code>class</code> related member funct </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Methods'>Blend Mode Methods</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>get and set <a href='undocumented#Blend_Mode'>Blend Mode</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>get and set <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Filter_Methods'>Color Filter Methods</a></td> @@ -255,7 +255,6 @@ SkPaint global, <code>struct</code>, and <code>class</code> related member funct </tr> </table> - ## <a name='Constant'>Constant</a> @@ -445,7 +444,6 @@ SkPaint related constants are defined by <code>enum</code>, <code>enum class</co </tr> </table> - ## <a name='Struct'>Struct</a> @@ -459,7 +457,6 @@ SkPaint uses C++ structs to declare the public data structures and interfaces. </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -485,7 +482,6 @@ SkPaint can be constructed or initialized by these functions, including C++ clas </tr> </table> - ## <a name='Operator'>Operator</a> @@ -511,7 +507,6 @@ SkPaint operators inline class member functions with arithmetic equivalents. </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -553,7 +548,7 @@ SkPaint member functions read and modify the structure properties. </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_getBlendMode'>getBlendMode</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns <a href='undocumented#Blend_Mode'>Blend Mode</a>, how colors combine with <a href='undocumented#Device'>Device</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, how colors combine with <a href='undocumented#Device'>Device</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_getColor'>getColor</a></td> @@ -721,7 +716,7 @@ SkPaint member functions read and modify the structure properties. </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_isSrcOver'>isSrcOver</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if <a href='undocumented#Blend_Mode'>Blend Mode</a> is <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> is <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_isSubpixelText'>isSubpixelText</a></td> @@ -789,7 +784,7 @@ SkPaint member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_setBlendMode'>setBlendMode</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='undocumented#Blend_Mode'>Blend Mode</a>, how colors combine with destination</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, how colors combine with destination</td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPaint_setColor'>setColor</a></td> @@ -909,7 +904,6 @@ SkPaint member functions read and modify the structure properties. </tr> </table> - ## <a name='Initializers'>Initializers</a> <a name='SkPaint_empty_constructor'></a> @@ -924,7 +918,7 @@ Constructs <a href='#Paint'>Paint</a> with default values. | attribute | default value | | --- | --- | | <a href='#Anti_Alias'>Anti Alias</a> | false | -| <a href='undocumented#Blend_Mode'>Blend Mode</a> | <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> | +| <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> | <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> | | <a href='SkColor_Reference#Color'>Color</a> | <a href='SkColor_Reference#SK_ColorBLACK'>SK ColorBLACK</a> | | <a href='SkColor_Reference#Alpha'>Color Alpha</a> | 255 | | <a href='undocumented#Color_Filter'>Color Filter</a> | nullptr | @@ -1752,7 +1746,7 @@ alternating nearby colors from pixel to pixel. ### Example <div><fiddle-embed name="76d4d4a7931a48495e4d5f54e073be53"><div>Dithering introduces subtle adjustments to color to smooth gradients. -Drawing the gradient repeatedly with <a href='undocumented#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> exaggerates the +Drawing the gradient repeatedly with <a href='SkBlendMode_Reference#SkBlendMode_kPlus'>SkBlendMode::kPlus</a> exaggerates the dither, making it easier to see. </div></fiddle-embed></div> @@ -2807,7 +2801,7 @@ a fill draw. <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kFill_Style'><code>SkPaint::kFill_Style</code></a></td> <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -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='undocumented#Circle'>Circles</a>, <a href='undocumented#Oval'>Ovals</a>, <a href='SkPath_Reference#Path'>Path</a>, and <a href='undocumented#Text'>Text</a>. +Applies to <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Region'>Region</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, <a href='undocumented#Circle'>Circles</a>, <a href='undocumented#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='SkImage_Reference#Image'>Image</a>, <a href='undocumented#Patch'>Patches</a>, <a href='undocumented#Region'>Region</a>, <a href='undocumented#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='SkPath_Reference#Fill_Type'>Path Fill Type</a> specifies additional rules to fill the area outside the path edge, @@ -2819,7 +2813,7 @@ and to create an unfilled hole inside the shape. <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kStroke_Style'><code>SkPaint::kStroke_Style</code></a></td> <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -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='undocumented#Arc'>Arcs</a>, <a href='undocumented#Circle'>Circles</a>, <a href='undocumented#Oval'>Ovals</a>, <a href='SkPath_Reference#Path'>Path</a>, and <a href='undocumented#Text'>Text</a>. +Applies to <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Region'>Region</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, <a href='undocumented#Arc'>Arcs</a>, <a href='undocumented#Circle'>Circles</a>, <a href='undocumented#Oval'>Ovals</a>, <a href='SkPath_Reference#Path'>Path</a>, and <a href='undocumented#Text'>Text</a>. <a href='undocumented#Arc'>Arcs</a>, <a href='undocumented#Line'>Lines</a>, and points, are always drawn as if <a href='#SkPaint_kStroke_Style'>kStroke Style</a> is set, and ignore the set <a href='#SkPaint_Style'>Style</a>. The stroke construction is unaffected by the <a href='SkPath_Reference#Fill_Type'>Path Fill Type</a>. @@ -2829,7 +2823,7 @@ The stroke construction is unaffected by the <a href='SkPath_Reference#Fill_Type <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kStrokeAndFill_Style'><code>SkPaint::kStrokeAndFill_Style</code></a></td> <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -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='undocumented#Circle'>Circles</a>, <a href='undocumented#Oval'>Ovals</a>, <a href='SkPath_Reference#Path'>Path</a>, and <a href='undocumented#Text'>Text</a>. +Applies to <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Region'>Region</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, <a href='undocumented#Circle'>Circles</a>, <a href='undocumented#Oval'>Ovals</a>, <a href='SkPath_Reference#Path'>Path</a>, and <a href='undocumented#Text'>Text</a>. <a href='SkPath_Reference#Path'>Path</a> is treated as if it is set to <a href='SkPath_Reference#SkPath_kWinding_FillType'>SkPath::kWinding FillType</a>, and the set <a href='SkPath_Reference#Fill_Type'>Path Fill Type</a> is ignored. </td> @@ -3625,7 +3619,7 @@ Increments <a href='#SkPaint_setShader_shader'>shader</a> <a href='undocumented# ## <a name='Color_Filter_Methods'>Color Filter Methods</a> <a href='undocumented#Color_Filter'>Color Filter</a> alters the color used when drawing a shape. -<a href='undocumented#Color_Filter'>Color Filter</a> may apply <a href='undocumented#Blend_Mode'>Blend Mode</a>, transform the color through a matrix, or composite multiple filters. +<a href='undocumented#Color_Filter'>Color Filter</a> may apply <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, transform the color through a matrix, or composite multiple filters. If <a href='#Paint'>Paint</a> has no <a href='undocumented#Color_Filter'>Color Filter</a>, the color is unaltered. The drawn transparency can be modified without altering <a href='undocumented#Color_Filter'>Color Filter</a>, by changing <a href='SkColor_Reference#Alpha'>Color Alpha</a>. @@ -3719,8 +3713,8 @@ Increments filter <a href='undocumented#Reference_Count'>Reference Count</a> by ## <a name='Blend_Mode_Methods'>Blend Mode Methods</a> -<a href='undocumented#Blend_Mode'>Blend Mode</a> describes how <a href='SkColor_Reference#Color'>Color</a> combines with the destination color. -The default setting, <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>, draws the source color +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> describes how <a href='SkColor_Reference#Color'>Color</a> combines with the destination color. +The default setting, <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>, draws the source color over the destination color. ### Example @@ -3729,17 +3723,17 @@ over the destination color. ### See Also -<a href='undocumented#Blend_Mode'>Blend Mode</a> +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a name='SkPaint_getBlendMode'></a> ## getBlendMode <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='undocumented#SkBlendMode'>SkBlendMode</a> <a href='#SkPaint_getBlendMode'>getBlendMode</a>() const +<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> <a href='#SkPaint_getBlendMode'>getBlendMode</a>() const </pre> -Returns <a href='undocumented#Blend_Mode'>Blend Mode</a>. -By default, returns <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>. +Returns <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. +By default, returns <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>. ### Return Value @@ -3767,11 +3761,11 @@ kSrcOver != getBlendMode bool <a href='#SkPaint_isSrcOver'>isSrcOver</a>() const </pre> -Returns true if <a href='undocumented#Blend_Mode'>Blend Mode</a> is <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>, the default. +Returns true if <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> is <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>, the default. ### Return Value -true if <a href='undocumented#Blend_Mode'>Blend Mode</a> is <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> +true if <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> is <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> ### Example @@ -3792,16 +3786,16 @@ isSrcOver != true ## setBlendMode <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkPaint_setBlendMode'>setBlendMode</a>(<a href='undocumented#SkBlendMode'>SkBlendMode</a> mode) +void <a href='#SkPaint_setBlendMode'>setBlendMode</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode) </pre> -Sets <a href='undocumented#Blend_Mode'>Blend Mode</a> to <a href='#SkPaint_setBlendMode_mode'>mode</a>. +Sets <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> to <a href='#SkPaint_setBlendMode_mode'>mode</a>. Does not check for valid input. ### Parameters <table> <tr> <td><a name='SkPaint_setBlendMode_mode'><code><strong>mode</strong></code></a></td> - <td><a href='undocumented#SkBlendMode'>SkBlendMode</a> used to combine source color and destination</td> + <td><a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> used to combine source color and destination</td> </tr> </table> @@ -4110,8 +4104,8 @@ Pass nullptr to clear <a href='undocumented#Typeface'>Typeface</a> and use the d ## <a name='Image_Filter_Methods'>Image Filter Methods</a> <a href='undocumented#Image_Filter'>Image Filter</a> operates on the pixel representation of the shape, as modified by <a href='#Paint'>Paint</a> -with <a href='undocumented#Blend_Mode'>Blend Mode</a> set to <a href='undocumented#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>. <a href='undocumented#Image_Filter'>Image Filter</a> creates a new bitmap, -which is drawn to the device using the set <a href='undocumented#Blend_Mode'>Blend Mode</a>. +with <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> set to <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>. <a href='undocumented#Image_Filter'>Image Filter</a> creates a new bitmap, +which is drawn to the device using the set <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>. <a href='undocumented#Image_Filter'>Image Filter</a> is higher level than <a href='undocumented#Mask_Filter'>Mask Filter</a>; for instance, an <a href='undocumented#Image_Filter'>Image Filter</a> can operate on all channels of <a href='SkColor_Reference#Color'>Color</a>, while <a href='undocumented#Mask_Filter'>Mask Filter</a> generates <a href='SkColor_Reference#Alpha'>Alpha</a> only. @@ -4802,7 +4796,6 @@ SkPaint related constants are defined by <code>enum</code>, <code>enum class</co </tr> </table> - ## <a name='Font_Metrics_Member_Function'>Member_Function</a> @@ -4828,7 +4821,6 @@ SkPaint member functions read and modify the structure properties. </tr> </table> - ## <a name='Font_Metrics_Member'>Member</a> @@ -4902,7 +4894,6 @@ SkPaint members may be read and written directly without using a member function </tr> </table> - <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> { @@ -5997,7 +5988,7 @@ bool <a href='#SkPaint_nothingToDraw'>nothingToDraw</a>() const Returns true if <a href='#Paint'>Paint</a> prevents all drawing; otherwise, the <a href='#Paint'>Paint</a> may or may not allow drawing. -Returns true if, for example, <a href='undocumented#Blend_Mode'>Blend Mode</a> combined with <a href='SkColor_Reference#Alpha'>Color Alpha</a> computes a +Returns true if, for example, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> combined with <a href='SkColor_Reference#Alpha'>Color Alpha</a> computes a new <a href='SkColor_Reference#Alpha'>Alpha</a> of zero. ### Return Value @@ -6023,7 +6014,6 @@ alpha 0 nothing to draw: true ## <a name='Fast_Bounds'>Fast Bounds</a> -To be made private. <a href='#Fast_Bounds'>Fast Bounds</a> functions conservatively outset a drawing bounds by additional area <a href='#Paint'>Paint</a> may draw to. @@ -6034,7 +6024,6 @@ To be made private. bool <a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a>() const </pre> -( to be made private) Returns true if <a href='#Paint'>Paint</a> does not include elements requiring extensive computation to compute <a href='undocumented#Device'>Device</a> bounds of drawn geometry. For instance, <a href='#Paint'>Paint</a> with <a href='undocumented#Path_Effect'>Path Effect</a> always returns false. @@ -6052,7 +6041,6 @@ true if <a href='#Paint'>Paint</a> allows for fast computation of bounds const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastBounds'>computeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const </pre> -( to be made private) Only call this if <a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a> returned true. This takes a raw rectangle (the raw bounds of a shape), and adjusts it for stylistic effects in the paint (e.g. stroking). If needed, it uses the <a href='#SkPaint_computeFastBounds_storage'>storage</a> @@ -6064,15 +6052,6 @@ should not rely on <a href='#SkPaint_computeFastBounds_storage'>storage</a> bein use the returned value. It is legal for <a href='#SkPaint_computeFastBounds_orig'>orig</a> and <a href='#SkPaint_computeFastBounds_storage'>storage</a> to be the same <a href='SkRect_Reference#Rect'>Rect</a>. -For example: -if (!path.isInverseFillType() && paint.<a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a>) { -<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPaint_computeFastBounds_storage'>storage</a>; -if (canvas->quickReject(paint.computeFastBounds(path.getBounds(), &<a href='#SkPaint_computeFastBounds_storage'>storage</a>))) { -return; // do not draw the path -} -} -// draw the path - ### Parameters <table> <tr> <td><a name='SkPaint_computeFastBounds_orig'><code><strong>orig</strong></code></a></td> @@ -6096,8 +6075,6 @@ fast computed bounds const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastStrokeBounds'>computeFastStrokeBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const </pre> -( to be made private) - ### Parameters <table> <tr> <td><a name='SkPaint_computeFastStrokeBounds_orig'><code><strong>orig</strong></code></a></td> @@ -6121,7 +6098,6 @@ fast computed bounds const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_doComputeFastBounds'>doComputeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage, <a href='#SkPaint_Style'>Style</a> style) const </pre> -( to be made private) Computes the bounds, overriding the <a href='#Paint'>Paint</a> <a href='#SkPaint_Style'>Style</a>. This can be used to account for additional width required by stroking <a href='#SkPaint_doComputeFastBounds_orig'>orig</a>, without altering <a href='#SkPaint_Style'>Style</a> set to fill. @@ -6172,3 +6148,4 @@ fast computed bounds <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>converts text into glyph indices</td> </tr> </table> + diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md index 8134c5f805..f213448922 100644 --- a/site/user/api/SkPath_Reference.md +++ b/site/user/api/SkPath_Reference.md @@ -13,11 +13,11 @@ containing two connected <a href='undocumented#Line'>Lines</a> are described the with three entries, sharing the middle entry as the end of the first <a href='undocumented#Line'>Line</a> and the start of the second <a href='undocumented#Line'>Line</a>. -<a href='#Path'>Path</a> components <a href='#Arc'>Arc</a>, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Round_Rect'>Round Rect</a>, <a href='undocumented#Circle'>Circle</a>, and <a href='undocumented#Oval'>Oval</a> are composed of +<a href='#Path'>Path</a> components <a href='#Arc'>Arc</a>, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, <a href='undocumented#Circle'>Circle</a>, and <a href='undocumented#Oval'>Oval</a> are composed of <a href='undocumented#Line'>Lines</a> and <a href='undocumented#Curve'>Curves</a> with as many <a href='#Verb'>Verbs</a> and <a href='SkPoint_Reference#Point'>Points</a> required for an exact description. Once added to <a href='#Path'>Path</a>, these components may lose their identity; although <a href='#Path'>Path</a> can be inspected to determine if it describes a single -<a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, <a href='undocumented#Round_Rect'>Round Rect</a>, and so on. +<a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, and so on. ### Example @@ -219,7 +219,6 @@ SkPath global, <code>struct</code>, and <code>class</code> related member functi </tr> </table> - ## <a name='Constant'>Constant</a> @@ -353,7 +352,6 @@ SkPath related constants are defined by <code>enum</code>, <code>enum class</cod </tr> </table> - ## <a name='Class'>Class</a> @@ -371,7 +369,6 @@ SkPath uses C++ classes to declare the public data structures and interfaces. </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -401,7 +398,6 @@ SkPath can be constructed or initialized by these functions, including C++ class </tr> </table> - ## <a name='Operator'>Operator</a> @@ -427,7 +423,6 @@ SkPath operators inline class member functions with arithmetic equivalents. </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -481,7 +476,7 @@ SkPath member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_addRRect'>addRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_addRect'>addRect</a></td> @@ -489,7 +484,7 @@ SkPath member functions read and modify the structure properties. </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_addRoundRect'>addRoundRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='undocumented#Round_Rect'>Round Rect</a> with common corner radii</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='SkRRect_Reference#RRect'>Round Rect</a> with common corner radii</td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_arcTo'>arcTo</a></td> @@ -621,7 +616,7 @@ SkPath member functions read and modify the structure properties. </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_isRRect'>isRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns if describes <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns if describes <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_isRect'>isRect</a></td> @@ -733,7 +728,6 @@ SkPath member functions read and modify the structure properties. </tr> </table> - ## <a name='Verb'>Verb</a> ## <a name='SkPath_Verb'>Enum SkPath::Verb</a> @@ -873,7 +867,7 @@ When <a href='#Path'>Path</a> contains multiple overlapping <a href='#Contour'>C measures along <a href='#Path'>Path</a> to determine where to start and stop stroke; <a href='#SkPath_Direction'>Direction</a> will change dashed results as it steps clockwise or counterclockwise. -Closed <a href='#Contour'>Contours</a> like <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Round_Rect'>Round Rect</a>, <a href='undocumented#Circle'>Circle</a>, and <a href='undocumented#Oval'>Oval</a> added with +Closed <a href='#Contour'>Contours</a> like <a href='SkRect_Reference#Rect'>Rect</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a>, <a href='undocumented#Circle'>Circle</a>, and <a href='undocumented#Oval'>Oval</a> added with <a href='#SkPath_kCW_Direction'>kCW Direction</a> travel clockwise; the same added with <a href='#SkPath_kCCW_Direction'>kCCW Direction</a> travel counterclockwise. @@ -1209,7 +1203,7 @@ convexity != </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_isRRect'>isRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns if describes <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns if describes <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_isRect'>isRect</a></td> @@ -1225,7 +1219,6 @@ convexity != </tr> </table> - <a name='SkPath_isInterpolatable'></a> ## isInterpolatable @@ -1281,7 +1274,6 @@ paths are interpolatable </tr> </table> - <a name='SkPath_interpolate'></a> ## interpolate @@ -1743,25 +1735,25 @@ true if <a href='#Path'>Path</a> is recognized as an oval or circle ## isRRect <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -bool <a href='#SkPath_isRRect'>isRRect</a>(<a href='undocumented#SkRRect'>SkRRect</a>* rrect) const +bool <a href='#SkPath_isRRect'>isRRect</a>(<a href='SkRRect_Reference#SkRRect'>SkRRect</a>* rrect) const </pre> -Returns true if this path is recognized as a <a href='undocumented#SkRRect'>SkRRect</a> (but not an oval/circle or rect). +Returns true if this path is recognized as a <a href='SkRRect_Reference#SkRRect'>SkRRect</a> (but not an oval/circle or rect). -<a href='#SkPath_isRRect_rrect'>rrect</a> receives bounds of <a href='undocumented#Round_Rect'>Round Rect</a>. +<a href='#SkPath_isRRect_rrect'>rrect</a> receives bounds of <a href='SkRRect_Reference#RRect'>Round Rect</a>. -<a href='#SkPath_isRRect_rrect'>rrect</a> is unmodified if <a href='undocumented#Round_Rect'>Round Rect</a> is not found. +<a href='#SkPath_isRRect_rrect'>rrect</a> is unmodified if <a href='SkRRect_Reference#RRect'>Round Rect</a> is not found. ### Parameters <table> <tr> <td><a name='SkPath_isRRect_rrect'><code><strong>rrect</strong></code></a></td> - <td>storage for bounding <a href='SkRect_Reference#Rect'>Rect</a> of <a href='undocumented#Round_Rect'>Round Rect</a>; may be nullptr</td> + <td>storage for bounding <a href='SkRect_Reference#Rect'>Rect</a> of <a href='SkRRect_Reference#RRect'>Round Rect</a>; may be nullptr</td> </tr> </table> ### Return Value -true if <a href='#Path'>Path</a> contains only <a href='undocumented#Round_Rect'>Round Rect</a> +true if <a href='#Path'>Path</a> contains only <a href='SkRRect_Reference#RRect'>Round Rect</a> ### Example @@ -1770,7 +1762,7 @@ true if <a href='#Path'>Path</a> contains only <a href='undocumented#Round_Rect' ### See Also -<a href='undocumented#Round_Rect'>Round Rect</a> <a href='#SkPath_addRoundRect'>addRoundRect</a><sup><a href='#SkPath_addRoundRect_2'>[2]</a></sup> <a href='#SkPath_addRRect'>addRRect</a><sup><a href='#SkPath_addRRect_2'>[2]</a></sup> +<a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkPath_addRoundRect'>addRoundRect</a><sup><a href='#SkPath_addRoundRect_2'>[2]</a></sup> <a href='#SkPath_addRRect'>addRRect</a><sup><a href='#SkPath_addRRect_2'>[2]</a></sup> --- @@ -1975,7 +1967,6 @@ volatile by default is false </tr> </table> - <a name='SkPath_setIsVolatile'></a> ## setIsVolatile @@ -2233,9 +2224,9 @@ one <a href='SkPoint_Reference#Point'>Point</a> for move, one <a href='SkPoint_R int <a href='#SkPath_getPoints'>getPoints</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> points[], int max) const </pre> -Returns number of <a href='#SkPath_getPoints_points'>points</a> in <a href='#Path'>Path</a>. Up to <a href='#SkPath_getPoints_max'>max</a> <a href='#SkPath_getPoints_points'>points</a> are copied. -<a href='#SkPath_getPoints_points'>points</a> may be nullptr; then, <a href='#SkPath_getPoints_max'>max</a> must be zero. -If <a href='#SkPath_getPoints_max'>max</a> is greater than number of <a href='#SkPath_getPoints_points'>points</a>, excess <a href='#SkPath_getPoints_points'>points</a> storage is unaltered. +Returns number of <a href='#SkPath_getPoints_points'>points</a> in <a href='#Path'>Path</a>. Up to max <a href='#SkPath_getPoints_points'>points</a> are copied. +<a href='#SkPath_getPoints_points'>points</a> may be nullptr; then, max must be zero. +If max is greater than number of <a href='#SkPath_getPoints_points'>points</a>, excess <a href='#SkPath_getPoints_points'>points</a> storage is unaltered. ### Parameters @@ -2399,7 +2390,7 @@ round rect verb count: 10 int <a href='#SkPath_getVerbs'>getVerbs</a>(uint8_t verbs[], int max) const </pre> -Returns the number of <a href='#SkPath_getVerbs_verbs'>verbs</a> in the path. Up to <a href='#SkPath_getVerbs_max'>max</a> <a href='#SkPath_getVerbs_verbs'>verbs</a> are copied. The +Returns the number of <a href='#SkPath_getVerbs_verbs'>verbs</a> in the path. Up to max <a href='#SkPath_getVerbs_verbs'>verbs</a> are copied. The <a href='#SkPath_getVerbs_verbs'>verbs</a> are copied as one byte per verb. ### Parameters @@ -2582,7 +2573,6 @@ rotated circle bounds = 14.6447, 9.64466, 85.3553, 80.3553 </tr> </table> - <a name='SkPath_updateBoundsCache'></a> ## updateBoundsCache @@ -2775,7 +2765,7 @@ reducing the number and size of allocations when creating <a href='#Path'>Path</ </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_addRRect'>addRRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> @@ -2803,7 +2793,7 @@ reducing the number and size of allocations when creating <a href='#Path'>Path</ </tr> <tr> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPath_addRoundRect'>addRoundRect</a></td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='undocumented#Round_Rect'>Round Rect</a> with common corner radii</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>adds one <a href='#Contour'>Contour</a> containing <a href='SkRRect_Reference#RRect'>Round Rect</a> with common corner radii</td> </tr> <tr style='background-color: #f0f0f0; '> <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td> @@ -2887,7 +2877,6 @@ reducing the number and size of allocations when creating <a href='#Path'>Path</ </tr> </table> - <a name='SkPath_moveTo'></a> ## moveTo @@ -4595,10 +4584,10 @@ and <a href='#SkPath_addArc_startAngle'>startAngle</a> modulo 90 is not zero. void <a href='#SkPath_addRoundRect'>addRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> rx, <a href='undocumented#SkScalar'>SkScalar</a> ry, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>) </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 +Append <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds equal to <a href='#SkPath_addRoundRect_rect'>rect</a>; each corner is 90 degrees of an ellipse with radii (<a href='#SkPath_addRoundRect_rx'>rx</a>, <a href='#SkPath_addRoundRect_ry'>ry</a>). If -<a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='undocumented#Round_Rect'>Round Rect</a> starts at top-left of the lower-left corner and -winds clockwise. If <a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='undocumented#Round_Rect'>Round Rect</a> starts at the bottom-left +<a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at top-left of the lower-left corner and +winds clockwise. If <a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at the bottom-left of the upper-left corner and winds counterclockwise. If either <a href='#SkPath_addRoundRect_rx'>rx</a> or <a href='#SkPath_addRoundRect_ry'>ry</a> is too large, <a href='#SkPath_addRoundRect_rx'>rx</a> and <a href='#SkPath_addRoundRect_ry'>ry</a> are scaled uniformly until the @@ -4610,16 +4599,16 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= ### Parameters <table> <tr> <td><a name='SkPath_addRoundRect_rect'><code><strong>rect</strong></code></a></td> - <td>bounds of <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td>bounds of <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td><a name='SkPath_addRoundRect_rx'><code><strong>rx</strong></code></a></td> - <td>x-axis radius of rounded corners on the <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td>x-axis radius of rounded corners on the <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td><a name='SkPath_addRoundRect_ry'><code><strong>ry</strong></code></a></td> - <td>y-axis radius of rounded corners on the <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td>y-axis radius of rounded corners on the <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td><a name='SkPath_addRoundRect_dir'><code><strong>dir</strong></code></a></td> - <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> </table> @@ -4644,7 +4633,7 @@ drawn in green. void <a href='#SkPath_addRoundRect'>addRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const <a href='undocumented#SkScalar'>SkScalar</a> radii[], <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>) </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 +Append <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds equal to <a href='#SkPath_addRoundRect_2_rect'>rect</a>; each corner is 90 degrees of an ellipse with <a href='#SkPath_addRoundRect_2_radii'>radii</a> from the array. @@ -4659,8 +4648,8 @@ array. | 6 | x-axis radius of bottom-left corner | | 7 | y-axis radius of bottom-left corner | -If <a href='#SkPath_addRoundRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='undocumented#Round_Rect'>Round Rect</a> starts at top-left of the lower-left corner -and winds clockwise. If <a href='#SkPath_addRoundRect_2_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='undocumented#Round_Rect'>Round Rect</a> starts at the +If <a href='#SkPath_addRoundRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at top-left of the lower-left corner +and winds clockwise. If <a href='#SkPath_addRoundRect_2_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at the bottom-left of the upper-left corner and winds counterclockwise. If both <a href='#SkPath_addRoundRect_2_radii'>radii</a> on any side of <a href='#SkPath_addRoundRect_2_rect'>rect</a> exceed its length, all <a href='#SkPath_addRoundRect_2_radii'>radii</a> are scaled @@ -4672,13 +4661,13 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= ### Parameters <table> <tr> <td><a name='SkPath_addRoundRect_2_rect'><code><strong>rect</strong></code></a></td> - <td>bounds of <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td>bounds of <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td><a name='SkPath_addRoundRect_2_radii'><code><strong>radii</strong></code></a></td> <td>array of 8 <a href='undocumented#SkScalar'>SkScalar</a> values, a radius pair for each corner</td> </tr> <tr> <td><a name='SkPath_addRoundRect_2_dir'><code><strong>dir</strong></code></a></td> - <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> </table> @@ -4696,7 +4685,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= ## addRRect <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>) +void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>) </pre> Add <a href='#SkPath_addRRect_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If @@ -4704,7 +4693,7 @@ Add <a href='#SkPath_addRRect_rrect'>rrect</a> to <a href='#Path'>Path</a>, crea winds clockwise. If <a href='#SkPath_addRRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='#SkPath_addRRect_rrect'>rrect</a> starts at the bottom-left of the upper-left corner and winds counterclockwise. -After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, or <a href='undocumented#Round_Rect'>Round Rect</a>. +After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, or <a href='SkRRect_Reference#RRect'>Round Rect</a>. ### Parameters @@ -4712,7 +4701,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= <td>bounds and radii of rounded rectangle</td> </tr> <tr> <td><a name='SkPath_addRRect_dir'><code><strong>dir</strong></code></a></td> - <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> </table> @@ -4729,7 +4718,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= <a name='SkPath_addRRect_2'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='undocumented#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir, unsigned start) +void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir, unsigned start) </pre> Add <a href='#SkPath_addRRect_2_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If <a href='#SkPath_addRRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='#SkPath_addRRect_2_rrect'>rrect</a> @@ -4747,7 +4736,7 @@ winds clockwise; if <a href='#SkPath_addRRect_2_dir'>dir</a> is <a href='#SkPath | 6 | top of bottom-left corner | | 7 | bottom of top-left corner | -After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, or <a href='undocumented#Round_Rect'>Round Rect</a>. +After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, or <a href='SkRRect_Reference#RRect'>Round Rect</a>. ### Parameters @@ -4755,10 +4744,10 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href= <td>bounds and radii of rounded rectangle</td> </tr> <tr> <td><a name='SkPath_addRRect_2_dir'><code><strong>dir</strong></code></a></td> - <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td><a href='#SkPath_Direction'>Direction</a> to wind <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> <tr> <td><a name='SkPath_addRRect_2_start'><code><strong>start</strong></code></a></td> - <td>index of initial point of <a href='undocumented#Round_Rect'>Round Rect</a></td> + <td>index of initial point of <a href='SkRRect_Reference#RRect'>Round Rect</a></td> </tr> </table> @@ -5058,7 +5047,6 @@ If <a href='#SkPath_offset_dst'>dst</a> is nullptr, <a href='#Path'>Path</a> is </tr> </table> - <a name='SkPath_offset_2'></a> <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> @@ -5406,7 +5394,7 @@ of floating point numbers used in <a href='#Point_Array'>Point Array</a> and <a ### Parameters <table> <tr> <td><a name='SkPath_dump_stream'><code><strong>stream</strong></code></a></td> - <td>writable <a href='undocumented#Stream'>Stream</a> receiving <a href='#Path'>Path</a> text representation; may be nullptr</td> + <td>writable <a href='undocumented#WStream'>WStream</a> receiving <a href='#Path'>Path</a> text representation; may be nullptr</td> </tr> <tr> <td><a name='SkPath_dump_forceClose'><code><strong>forceClose</strong></code></a></td> <td>true if missing <a href='#SkPath_kClose_Verb'>kClose Verb</a> is output</td> @@ -5445,7 +5433,7 @@ path.close(); ### See Also -<a href='SkRect_Reference#SkRect_dump'>SkRect::dump()</a><sup><a href='SkRect_Reference#SkRect_dump_2'>[2]</a></sup> <a href='undocumented#SkRRect_dump'>SkRRect::dump()</a> <a href='undocumented#SkPathMeasure_dump'>SkPathMeasure::dump()</a> +<a href='SkRect_Reference#SkRect_dump'>SkRect::dump()</a><sup><a href='SkRect_Reference#SkRect_dump_2'>[2]</a></sup> <a href='SkRRect_Reference#SkRRect_dump'>SkRRect::dump()</a><sup><a href='SkRRect_Reference#SkRRect_dump_2'>[2]</a></sup> <a href='undocumented#SkPathMeasure_dump'>SkPathMeasure::dump()</a> --- @@ -5477,7 +5465,7 @@ path is not equal to copy ### See Also -<a href='#SkPath_dumpHex'>dumpHex</a> <a href='SkRect_Reference#SkRect_dump'>SkRect::dump()</a><sup><a href='SkRect_Reference#SkRect_dump_2'>[2]</a></sup> <a href='undocumented#SkRRect_dump'>SkRRect::dump()</a> <a href='undocumented#SkPathMeasure_dump'>SkPathMeasure::dump()</a> <a href='#SkPath_writeToMemory'>writeToMemory</a> +<a href='#SkPath_dumpHex'>dumpHex</a> <a href='SkRect_Reference#SkRect_dump'>SkRect::dump()</a><sup><a href='SkRect_Reference#SkRect_dump_2'>[2]</a></sup> <a href='SkRRect_Reference#SkRRect_dump'>SkRRect::dump()</a><sup><a href='SkRRect_Reference#SkRRect_dump_2'>[2]</a></sup> <a href='undocumented#SkPathMeasure_dump'>SkPathMeasure::dump()</a> <a href='#SkPath_writeToMemory'>writeToMemory</a> --- @@ -5512,7 +5500,7 @@ path is equal to copy ### See Also -<a href='#SkPath_dump'>dump</a><sup><a href='#SkPath_dump_2'>[2]</a></sup> <a href='SkRect_Reference#SkRect_dumpHex'>SkRect::dumpHex</a> <a href='undocumented#SkRRect_dumpHex'>SkRRect::dumpHex</a> <a href='#SkPath_writeToMemory'>writeToMemory</a> +<a href='#SkPath_dump'>dump</a><sup><a href='#SkPath_dump_2'>[2]</a></sup> <a href='SkRect_Reference#SkRect_dumpHex'>SkRect::dumpHex</a> <a href='SkRRect_Reference#SkRRect_dumpHex'>SkRRect::dumpHex</a> <a href='#SkPath_writeToMemory'>writeToMemory</a> --- @@ -5737,7 +5725,6 @@ SkPath can be constructed or initialized by these functions, including C++ class <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - ## <a name='Member_Function'>Member_Function</a> @@ -5747,12 +5734,11 @@ SkPath member functions read and modify the structure properties. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> -class <a href='#SkPath_Iter_Iter'>Iter</a> { +class <a href='#SkPath_Iter_empty_constructor'>Iter</a> { public: - <a href='#SkPath_Iter_Iter'>Iter()</a>; - <a href='#SkPath_Iter_Iter_2'>Iter(const SkPath& path, bool forceClose)</a>; + <a href='#SkPath_Iter_empty_constructor'>Iter()</a>; + <a href='#SkPath_const_SkPath'>Iter(const SkPath& path, bool forceClose)</a>; void <a href='#SkPath_Iter_setPath'>setPath(const SkPath& path, bool forceClose)</a>; <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_Iter_next'>next(SkPoint pts[4], bool doConsumeDegenerates = true, bool exact = false)</a>; <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPath_Iter_conicWeight'>conicWeight</a> const; @@ -5775,19 +5761,19 @@ path of the glyph. <a href='#SkPath_RawIter'>RawIter</a> -<a name='SkPath_Iter_Iter'></a> +<a name='SkPath_Iter_empty_constructor'></a> ## Iter <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkPath_Iter_Iter'>Iter</a>() +<a href='#SkPath_Iter_empty_constructor'>Iter</a>() </pre> -Initializes <a href='#SkPath_Iter_Iter'>Iter</a> with an empty <a href='#Path'>Path</a>. <a href='#SkPath_Iter_next'>next</a> on <a href='#SkPath_Iter_Iter'>Iter</a> returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. -Call <a href='#SkPath_Iter_setPath'>setPath</a> to initialize <a href='#SkPath_Iter_Iter'>Iter</a> at a later time. +Initializes <a href='#SkPath_Iter_empty_constructor'>Iter</a> with an empty <a href='#Path'>Path</a>. <a href='#SkPath_Iter_next'>next</a> on <a href='#SkPath_Iter_empty_constructor'>Iter</a> returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. +Call <a href='#SkPath_Iter_setPath'>setPath</a> to initialize <a href='#SkPath_Iter_empty_constructor'>Iter</a> at a later time. ### Return Value -<a href='#SkPath_Iter_Iter'>Iter</a> of empty <a href='#Path'>Path</a> +<a href='#SkPath_Iter_empty_constructor'>Iter</a> of empty <a href='#Path'>Path</a> ### Example @@ -5808,29 +5794,30 @@ iter is done --- -<a name='SkPath_Iter_Iter_2'></a> +<a name='SkPath_const_SkPath'></a> +## Iter <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkPath_Iter_Iter'>Iter</a>(const <a href='#SkPath'>SkPath</a>& path, bool forceClose) +<a href='#SkPath_Iter_empty_constructor'>Iter</a>(const <a href='#SkPath'>SkPath</a>& path, bool forceClose) </pre> -Sets <a href='#SkPath_Iter_Iter'>Iter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_Iter_Iter_2_path'>path</a>. -If <a href='#SkPath_Iter_Iter_2_forceClose'>forceClose</a> is true, <a href='#SkPath_Iter_Iter'>Iter</a> will add <a href='#SkPath_kLine_Verb'>kLine Verb</a> and <a href='#SkPath_kClose_Verb'>kClose Verb</a> after each -open <a href='#Contour'>Contour</a>. <a href='#SkPath_Iter_Iter_2_path'>path</a> is not altered. +Sets <a href='#SkPath_Iter_empty_constructor'>Iter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_const_SkPath_path'>path</a>. +If <a href='#SkPath_const_SkPath_forceClose'>forceClose</a> is true, <a href='#SkPath_Iter_empty_constructor'>Iter</a> will add <a href='#SkPath_kLine_Verb'>kLine Verb</a> and <a href='#SkPath_kClose_Verb'>kClose Verb</a> after each +open <a href='#Contour'>Contour</a>. <a href='#SkPath_const_SkPath_path'>path</a> is not altered. ### Parameters -<table> <tr> <td><a name='SkPath_Iter_Iter_2_path'><code><strong>path</strong></code></a></td> +<table> <tr> <td><a name='SkPath_const_SkPath_path'><code><strong>path</strong></code></a></td> <td><a href='#Path'>Path</a> to iterate</td> </tr> - <tr> <td><a name='SkPath_Iter_Iter_2_forceClose'><code><strong>forceClose</strong></code></a></td> + <tr> <td><a name='SkPath_const_SkPath_forceClose'><code><strong>forceClose</strong></code></a></td> <td>true if open <a href='#Contour'>Contours</a> generate <a href='#SkPath_kClose_Verb'>kClose Verb</a></td> </tr> </table> ### Return Value -<a href='#SkPath_Iter_Iter'>Iter</a> of <a href='#SkPath_Iter_Iter_2_path'>path</a> +<a href='#SkPath_Iter_empty_constructor'>Iter</a> of <a href='#SkPath_const_SkPath_path'>path</a> ### Example @@ -5866,8 +5853,8 @@ kDone_Verb void <a href='#SkPath_Iter_setPath'>setPath</a>(const <a href='#SkPath'>SkPath</a>& path, bool forceClose) </pre> -Sets <a href='#SkPath_Iter_Iter'>Iter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_Iter_setPath_path'>path</a>. -If <a href='#SkPath_Iter_setPath_forceClose'>forceClose</a> is true, <a href='#SkPath_Iter_Iter'>Iter</a> will add <a href='#SkPath_kLine_Verb'>kLine Verb</a> and <a href='#SkPath_kClose_Verb'>kClose Verb</a> after each +Sets <a href='#SkPath_Iter_empty_constructor'>Iter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_Iter_setPath_path'>path</a>. +If <a href='#SkPath_Iter_setPath_forceClose'>forceClose</a> is true, <a href='#SkPath_Iter_empty_constructor'>Iter</a> will add <a href='#SkPath_kLine_Verb'>kLine Verb</a> and <a href='#SkPath_kClose_Verb'>kClose Verb</a> after each open <a href='#Contour'>Contour</a>. <a href='#SkPath_Iter_setPath_path'>path</a> is not altered. ### Parameters @@ -5903,7 +5890,7 @@ kDone_Verb ### See Also -<a href='#SkPath_Iter_Iter_2'>Iter(const SkPath& path, bool forceClose)</a> +<a href='#SkPath_const_SkPath'>Iter(const SkPath& path, bool forceClose)</a> --- @@ -5914,7 +5901,7 @@ kDone_Verb <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_Iter_next'>next</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> pts[4], bool doConsumeDegenerates = true, bool exact = false) </pre> -Returns next <a href='#SkPath_Verb'>Verb</a> in <a href='#Verb_Array'>Verb Array</a>, and advances <a href='#SkPath_Iter_Iter'>Iter</a>. +Returns next <a href='#SkPath_Verb'>Verb</a> in <a href='#Verb_Array'>Verb Array</a>, and advances <a href='#SkPath_Iter_empty_constructor'>Iter</a>. When <a href='#Verb_Array'>Verb Array</a> is exhausted, returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. Zero to four <a href='SkPoint_Reference#Point'>Points</a> are stored in <a href='#SkPath_Iter_next_pts'>pts</a>, depending on the returned <a href='#SkPath_Verb'>Verb</a>. @@ -6074,8 +6061,8 @@ bool <a href='#SkPath_Iter_isClosedContour'>isClosedContour</a>() const </pre> Returns true if subsequent calls to <a href='#SkPath_Iter_next'>next</a> return <a href='#SkPath_kClose_Verb'>kClose Verb</a> before returning -<a href='#SkPath_kMove_Verb'>kMove Verb</a>. if true, <a href='#Contour'>Contour</a> <a href='#SkPath_Iter_Iter'>Iter</a> is processing may end with <a href='#SkPath_kClose_Verb'>kClose Verb</a>, or -<a href='#SkPath_Iter_Iter'>Iter</a> may have been initialized with force close set to true. +<a href='#SkPath_kMove_Verb'>kMove Verb</a>. if true, <a href='#Contour'>Contour</a> <a href='#SkPath_Iter_empty_constructor'>Iter</a> is processing may end with <a href='#SkPath_kClose_Verb'>kClose Verb</a>, or +<a href='#SkPath_Iter_empty_constructor'>Iter</a> may have been initialized with force close set to true. ### Return Value @@ -6098,7 +6085,7 @@ with close(), forceClose is true : isClosedContour returns true ### See Also -<a href='#SkPath_Iter_Iter_2'>Iter(const SkPath& path, bool forceClose)</a> +<a href='#SkPath_const_SkPath'>Iter(const SkPath& path, bool forceClose)</a> --- @@ -6113,7 +6100,6 @@ SkPath can be constructed or initialized by these functions, including C++ class <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - ## <a name='Member_Function'>Member_Function</a> @@ -6123,12 +6109,11 @@ SkPath member functions read and modify the structure properties. <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> - <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> - class <a href='#SkPath_RawIter_RawIter'>RawIter</a> { + class <a href='#SkPath_RawIter_empty_constructor'>RawIter</a> { public: - <a href='#SkPath_RawIter_RawIter'>RawIter()</a>; - <a href='#SkPath_RawIter_RawIter_2'>RawIter(const SkPath& path)</a>; + <a href='#SkPath_RawIter_empty_constructor'>RawIter()</a>; + <a href='#SkPath_copy_const_SkPath'>RawIter(const SkPath& path)</a>; void <a href='#SkPath_RawIter_setPath'>setPath(const SkPath& path)</a>; <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_RawIter_next'>next(SkPoint pts[4])</a>; <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_RawIter_peek'>peek</a> const; @@ -6139,40 +6124,41 @@ SkPath member functions read and modify the structure properties. 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. -<a name='SkPath_RawIter_RawIter'></a> +<a name='SkPath_RawIter_empty_constructor'></a> ## RawIter <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkPath_RawIter_RawIter'>RawIter</a>() +<a href='#SkPath_RawIter_empty_constructor'>RawIter</a>() </pre> -Initializes <a href='#SkPath_RawIter_RawIter'>RawIter</a> with an empty <a href='#Path'>Path</a>. <a href='#SkPath_RawIter_next'>next</a> on <a href='#SkPath_RawIter_RawIter'>RawIter</a> returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. +Initializes <a href='#SkPath_RawIter_empty_constructor'>RawIter</a> with an empty <a href='#Path'>Path</a>. <a href='#SkPath_RawIter_next'>next</a> on <a href='#SkPath_RawIter_empty_constructor'>RawIter</a> returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. Call <a href='#SkPath_RawIter_setPath'>setPath</a> to initialize <a href='#SkPath_Iter'>SkPath::Iter</a> at a later time. ### Return Value -<a href='#SkPath_RawIter_RawIter'>RawIter</a> of empty <a href='#Path'>Path</a> +<a href='#SkPath_RawIter_empty_constructor'>RawIter</a> of empty <a href='#Path'>Path</a> --- -<a name='SkPath_RawIter_RawIter_2'></a> +<a name='SkPath_copy_const_SkPath'></a> +## RawIter <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -<a href='#SkPath_RawIter_RawIter'>RawIter</a>(const <a href='#SkPath'>SkPath</a>& path) +<a href='#SkPath_RawIter_empty_constructor'>RawIter</a>(const <a href='#SkPath'>SkPath</a>& path) </pre> -Sets <a href='#SkPath_RawIter_RawIter'>RawIter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_RawIter_RawIter_2_path'>path</a>. +Sets <a href='#SkPath_RawIter_empty_constructor'>RawIter</a> to return elements of <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weight</a> in <a href='#SkPath_copy_const_SkPath_path'>path</a>. ### Parameters -<table> <tr> <td><a name='SkPath_RawIter_RawIter_2_path'><code><strong>path</strong></code></a></td> +<table> <tr> <td><a name='SkPath_copy_const_SkPath_path'><code><strong>path</strong></code></a></td> <td><a href='#Path'>Path</a> to iterate</td> </tr> </table> ### Return Value -<a href='#SkPath_RawIter_RawIter'>RawIter</a> of <a href='#SkPath_RawIter_RawIter_2_path'>path</a> +<a href='#SkPath_RawIter_empty_constructor'>RawIter</a> of <a href='#SkPath_copy_const_SkPath_path'>path</a> --- @@ -6201,7 +6187,7 @@ Sets <a href='#SkPath_Iter'>SkPath::Iter</a> to return elements of <a href='#Ver <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_RawIter_next'>next</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> pts[4]) </pre> -Returns next <a href='#SkPath_Verb'>Verb</a> in <a href='#Verb_Array'>Verb Array</a>, and advances <a href='#SkPath_RawIter_RawIter'>RawIter</a>. +Returns next <a href='#SkPath_Verb'>Verb</a> in <a href='#Verb_Array'>Verb Array</a>, and advances <a href='#SkPath_RawIter_empty_constructor'>RawIter</a>. When <a href='#Verb_Array'>Verb Array</a> is exhausted, returns <a href='#SkPath_kDone_Verb'>kDone Verb</a>. Zero to four <a href='SkPoint_Reference#Point'>Points</a> are stored in <a href='#SkPath_RawIter_next_pts'>pts</a>, depending on the returned <a href='#SkPath_Verb'>Verb</a>. @@ -6248,7 +6234,7 @@ kDone_Verb <a href='#SkPath_Verb'>Verb</a> <a href='#SkPath_RawIter_peek'>peek</a>() const </pre> -Returns next <a href='#SkPath_Verb'>Verb</a>, but does not advance <a href='#SkPath_RawIter_RawIter'>RawIter</a>. +Returns next <a href='#SkPath_Verb'>Verb</a>, but does not advance <a href='#SkPath_RawIter_empty_constructor'>RawIter</a>. ### Return Value diff --git a/site/user/api/SkPicture_Reference.md b/site/user/api/SkPicture_Reference.md new file mode 100644 index 0000000000..c904aedb18 --- /dev/null +++ b/site/user/api/SkPicture_Reference.md @@ -0,0 +1,516 @@ +SkPicture Reference +=== + +# <a name='Picture'>Picture</a> + +# <a name='SkPicture'>Class SkPicture</a> + +## <a name='Constructor'>Constructor</a> + + +SkPicture can be constructed or initialized by these functions, including C++ class constructors. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromData'>MakeFromData</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromStream'>MakeFromStream</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +An <a href='#SkPicture'>SkPicture</a> records drawing commands made to a canvas to be played back at a later time. +This base class handles serialization and a few other miscellany. + +## Overview + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Class'>Class Declarations</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>embedded class members</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Constructor'>Constructors</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>functions that construct <a href='#SkPicture'>SkPicture</a></td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Member_Function'>Functions</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>global and class member functions</td> + </tr> +</table> + + +## <a name='Class'>Class</a> + + +SkPicture uses C++ classes to declare the public data structures and interfaces. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_AbortCallback'>AbortCallback</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +## <a name='Member_Function'>Member Function</a> + + +SkPicture member functions read and modify the structure properties. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromData'>MakeFromData</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromStream'>MakeFromStream</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_approximateOpCount'>approximateOpCount</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_cullRect'>cullRect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_playback'>playback</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_serialize'>serialize</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_uniqueID'>uniqueID</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +# <a name='SkPicture_AbortCallback'>Class SkPicture::AbortCallback</a> + +## <a name='Constructor'>Constructor</a> + + +SkPicture can be constructed or initialized by these functions, including C++ class constructors. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> +</table> + +## <a name='Member_Function'>Member_Function</a> + + +SkPicture member functions read and modify the structure properties. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> +</table> + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> +</pre> + +<a href='undocumented#Subclasses'>Subclasses</a> of this can be passed to <a href='#SkPicture_playback'>playback</a>. During the playback +of the picture, this callback will periodically be invoked. If its +<a href='#SkPicture_AbortCallback_abort'>abort</a> returns true, then picture playback will be interrupted. +The resulting drawing is undefined, as there is no guarantee how often the +callback will be invoked. If the abort happens inside some level of nested +calls to save(), restore will automatically be called to return the state +to the same level it was before the playback call was made. + +<a name='SkPicture_AbortCallback_empty_constructor'></a> +## AbortCallback + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkPicture_AbortCallback_empty_constructor'>AbortCallback</a>() +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_destructor'></a> +## ~AbortCallback + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual +</pre> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_AbortCallback_abort'></a> +## abort + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual bool <a href='#SkPicture_AbortCallback_abort'>abort</a>() = 0 +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_MakeFromStream'></a> +## MakeFromStream + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='undocumented#SkStream'>SkStream</a>* stream, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr) +</pre> + +Recreate a picture that was serialized into a <a href='#SkPicture_MakeFromStream_stream'>stream</a> or data. + +### Parameters + +<table> <tr> <td><a name='SkPicture_MakeFromStream_stream'><code><strong>stream</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkPicture_MakeFromStream_procs'><code><strong>procs</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='SkPicture_MakeFromData'></a> +## MakeFromData + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const <a href='undocumented#SkData'>SkData</a>* data, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkPicture_MakeFromData_data'><code><strong>data</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkPicture_MakeFromData_procs'><code><strong>procs</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='SkPicture_MakeFromData_2'></a> + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const void* data, size_t size, + const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkPicture_MakeFromData_2_data'><code><strong>data</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkPicture_MakeFromData_2_size'><code><strong>size</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkPicture_MakeFromData_2_procs'><code><strong>procs</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='SkPicture_playback'></a> +## playback + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual void <a href='#SkPicture_playback'>playback</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* canvas, <a href='#SkPicture_AbortCallback'>AbortCallback</a>* callback = nullptr) const = 0 +</pre> + +Replays the drawing commands on the specified <a href='#SkPicture_playback_canvas'>canvas</a>. Note that +this has the effect of unfurling this picture into the destination +<a href='#SkPicture_playback_canvas'>canvas</a>. Using the <a href='SkCanvas_Reference#SkCanvas_drawPicture'>SkCanvas::drawPicture</a> entry point gives the destination +<a href='#SkPicture_playback_canvas'>canvas</a> the option of just taking a ref. + +### Parameters + +<table> <tr> <td><a name='SkPicture_playback_canvas'><code><strong>canvas</strong></code></a></td> + <td>the <a href='#SkPicture_playback_canvas'>canvas</a> receiving the drawing commands. +</td> + </tr> + <tr> <td><a name='SkPicture_playback_callback'><code><strong>callback</strong></code></a></td> + <td>a <a href='#SkPicture_playback_callback'>callback</a> that allows interruption of playback</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_cullRect'></a> +## cullRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() const = 0 +</pre> + +Return a cull rect for this picture. +Ops recorded into this picture that attempt to draw outside the cull might not be drawn. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_uniqueID'></a> +## uniqueID + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +uint32_t <a href='#SkPicture_uniqueID'>uniqueID</a>() const +</pre> + +Returns a non-zero value unique among all pictures. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_serialize'></a> +## serialize + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='undocumented#sk_sp'>sk sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkPicture_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const +</pre> + +### Parameters + +<table> <tr> <td><a name='SkPicture_serialize_procs'><code><strong>procs</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='SkPicture_serialize_2'></a> + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkPicture_serialize'>serialize</a>(<a href='undocumented#SkWStream'>SkWStream</a>* stream, const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const +</pre> + +### Parameters + +<table> <tr> <td><a name='SkPicture_serialize_2_stream'><code><strong>stream</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkPicture_serialize_2_procs'><code><strong>procs</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_MakePlaceholder'></a> +## MakePlaceholder + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='undocumented#sk_sp'>sk sp</a><<a href='#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> cull) +</pre> + +Return a placeholder <a href='#SkPicture'>SkPicture</a>. +This placeholder does not draw anything itself. It has a distinct <a href='#SkPicture_uniqueID'>uniqueID</a> +(just like all <a href='#Picture'>Pictures</a>) and will always be visible to <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>. + +### Parameters + +<table> <tr> <td><a name='SkPicture_MakePlaceholder_cull'><code><strong>cull</strong></code></a></td> + <td>the placeholder's dimensions</td> + </tr> +</table> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_approximateOpCount'></a> +## approximateOpCount + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual int <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() const = 0 +</pre> + +Return the approximate number of operations in this picture. This +number may be greater or less than the number of <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> calls +recorded: some calls may be recorded as more than one operation, or some +calls may be optimized away. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkPicture_approximateBytesUsed'></a> +## approximateBytesUsed + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() const = 0 +</pre> + +Returns the approximate byte size of this picture, not including large ref'd objects. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md index 9fb64e9e0a..4a5ba1f941 100644 --- a/site/user/api/SkPixmap_Reference.md +++ b/site/user/api/SkPixmap_Reference.md @@ -68,7 +68,6 @@ SkPixmap global, <code>struct</code>, and <code>class</code> related member func </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -86,7 +85,6 @@ SkPixmap can be constructed or initialized by these functions, including C++ cla </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -224,7 +222,6 @@ SkPixmap member functions read and modify the structure properties. </tr> </table> - ## <a name='Initialization'>Initialization</a> <a name='SkPixmap_empty_constructor'></a> @@ -1828,7 +1825,6 @@ is drawn after overwriting bottom half float color with top half float color. </tr> </table> - <a name='SkPixmap_readPixels'></a> ## readPixels diff --git a/site/user/api/SkPoint_Reference.md b/site/user/api/SkPoint_Reference.md index 9e701b8a5f..e35801822d 100644 --- a/site/user/api/SkPoint_Reference.md +++ b/site/user/api/SkPoint_Reference.md @@ -13,6 +13,7 @@ SkPoint <code>typedef</code> define a data type. <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> </table> + <a href='#SkPoint'>SkPoint</a> holds two 32-bit floating point coordinates. ## Overview @@ -68,7 +69,6 @@ SkPoint global, <code>struct</code>, and <code>class</code> related member funct </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -178,7 +178,6 @@ SkPoint member functions read and modify the structure properties. </tr> </table> - ## <a name='Member'>Member</a> @@ -216,7 +215,6 @@ SkPoint members may be read and written directly without using a member function </tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -254,7 +252,6 @@ SkPoint can be constructed or initialized by these functions, including C++ clas </tr> </table> - <a name='SkPoint_Make'></a> ## Make @@ -336,7 +333,6 @@ all equal </tr> </table> - <a name='SkPoint_x'></a> ## x @@ -479,7 +475,6 @@ pt.isZero() == true </tr> </table> - <a name='SkPoint_set'></a> ## set @@ -665,7 +660,6 @@ pt: nan, -nan abs: nan, nan </tr> </table> - <a name='SkPoint_Offset'></a> ## Offset @@ -1017,7 +1011,6 @@ SkPoint operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkPoint_scale'></a> ## scale diff --git a/site/user/api/SkRRect_Reference.md b/site/user/api/SkRRect_Reference.md new file mode 100644 index 0000000000..077838975e --- /dev/null +++ b/site/user/api/SkRRect_Reference.md @@ -0,0 +1,1674 @@ +SkRRect Reference +=== + +# <a name='RRect'>RRect</a> + +# <a name='SkRRect'>Class SkRRect</a> + +## <a name='Constant'>Constant</a> + + +SkRRect related constants are defined by <code>enum</code>, <code>enum class</code>, <code>#define</code>, <code>const</code>, and <code>constexpr</code>. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_Corner'>Corner</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_Type'>Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kComplex_Type'>kComplex Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kEmpty_Type'>kEmpty Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kLastType'>kLastType</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kLowerLeft_Corner'>kLowerLeft Corner</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kLowerRight_Corner'>kLowerRight Corner</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kNinePatch_Type'>kNinePatch Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kOval_Type'>kOval Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kRect_Type'>kRect Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kSimple_Type'>kSimple Type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft Corner</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kUpperRight_Corner'>kUpperRight Corner</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +The <a href='#SkRRect'>SkRRect</a> class represents a rounded rect with a potentially different +radii for each corner. It does not have a constructor so must be +initialized with one of the initialization functions (e.g., <a href='#SkRRect_setEmpty'>setEmpty</a>, +<a href='#SkRRect_setRectRadii'>setRectRadii</a>, etc.) + +This class allows implementing CSS properties that describe rounded corners. +A rectangle may have up to eight radii, one for each axis on each of its four +corners. + +If either corner's radii are zero, the corner is square. +Negative radii are treated as zero. +If corner curves overlap, they are proportionally reduced to fit. + +## Overview + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Constant'>Constants</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>enum and enum class, and their const values</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Constructor'>Constructors</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>functions that construct <a href='#SkRRect'>SkRRect</a></td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Member_Function'>Functions</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>global and class member functions</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Operator'>Operators</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>operator overloading methods</td> + </tr> +</table> + + +## <a name='Constructor'>Constructor</a> + + +SkRRect can be constructed or initialized by these functions, including C++ class constructors. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeEmpty'>MakeEmpty</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeOval'>MakeOval</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeRect'>MakeRect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeRectXY'>MakeRectXY</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_empty_constructor'>SkRRect()</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_copy_const_SkRRect'>SkRRect(const SkRRect& rrect)</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_makeOffset'>makeOffset</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +## <a name='Operator'>Operator</a> + + +SkRRect operators inline class member functions with arithmetic equivalents. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_notequal_operator'>operator!=(const SkRRect& a, const SkRRect& b)</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_copy_operator'>operator=(const SkRRect& rrect)</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_equal_operator'>operator==(const SkRRect& a, const SkRRect& b)</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +## <a name='Member_Function'>Member Function</a> + + +SkRRect member functions read and modify the structure properties. +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Topic</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeEmpty'>MakeEmpty</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeOval'>MakeOval</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeRect'>MakeRect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_MakeRectXY'>MakeRectXY</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_contains'>contains</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_dump_2'>dump</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_dumpHex'>dumpHex</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_getBounds'>getBounds</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_getSimpleRadii'>getSimpleRadii</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns corner radii for simple types</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_getType'>getType</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_height'>height</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in y</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_inset'>inset</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isComplex'>isComplex</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect, oval, simple, or nine-patch</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isEmpty'>isEmpty</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if width or height are zero</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isNinePatch'>isNinePatch</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect, oval or simple; and radii are axis-aligned</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isOval'>isOval</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, axes radii are equal, radii fill bounds</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isRect'>isRect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, and one radius at each corner is zero</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isSimple'>isSimple</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect or oval; and axes radii are equal</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isValid'>isValid</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_makeOffset'>makeOffset</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_offset'>offset</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_outset'>outset</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_radii'>radii</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_readFromMemory'>readFromMemory</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_rect'>rect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setEmpty'>setEmpty</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>zeroes width, height, and corner radii</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setNinePatch'>setNinePatch</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setOval'>setOval</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setRect'>setRect</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets rect bounds with zeroed corners</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setRectRadii'>setRectRadii</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setRectXY'>setRectXY</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_transform'>transform</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_type'>type</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_width'>width</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in x</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_writeToMemory'>writeToMemory</a></td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td> + </tr> +</table> + +<a name='SkRRect_empty_constructor'></a> +## SkRRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect'>SkRRect</a>() = default +</pre> + +Default initialized to a rrect at the origin with zero width and height. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_copy_const_SkRRect'></a> +## SkRRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect'>SkRRect</a>(const <a href='#SkRRect'>SkRRect</a>& rrect) = default +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_copy_const_SkRRect_rrect'><code><strong>rrect</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='SkRRect_copy_operator'></a> +## operator= + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect'>SkRRect</a>& <a href='#SkRRect_copy_operator'>operator=(const SkRRect& rrect)</a> = default +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_copy_operator_rrect'><code><strong>rrect</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='SkRRect_Type'>Enum SkRRect::Type</a> + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> + enum <a href='#SkRRect_Type'>Type</a> { + <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>, + <a href='#SkRRect_kRect_Type'>kRect Type</a>, + <a href='#SkRRect_kOval_Type'>kOval Type</a>, + <a href='#SkRRect_kSimple_Type'>kSimple Type</a>, + <a href='#SkRRect_kNinePatch_Type'>kNinePatch Type</a>, + <a href='#SkRRect_kComplex_Type'>kComplex Type</a>, + <a href='#SkRRect_kLastType'>kLastType</a> = <a href='#SkRRect_kComplex_Type'>kComplex Type</a>, + }; +</pre> + +Enum to capture the various possible subtypes of <a href='#RRect'>Round Rect</a>. Accessed +by <a href='#SkRRect_type'>type</a>. The subtypes become progressively less restrictive. + +### Constants + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> +<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kEmpty_Type'><code>SkRRect::kEmpty_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +<a href='#RRect'>Round Rect</a> has zero width or height. All radii are zero. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kRect_Type'><code>SkRRect::kRect_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +<a href='#RRect'>Round Rect</a> has width and height. All radii are zero. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kOval_Type'><code>SkRRect::kOval_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +<a href='#RRect'>Round Rect</a> has width and height. All four x-radii are equal, +and at least half the width. All four y-radii are equal, +and at least half the height. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSimple_Type'><code>SkRRect::kSimple_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +<a href='#RRect'>Round Rect</a> has width and height. All four x-radii are equal and +greater than zero, and all four y-radii are equal and greater than +zero. Either x-radii are less than half the width, or y-radii is +less than half the height, or both. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kNinePatch_Type'><code>SkRRect::kNinePatch_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +<a href='#RRect'>Round Rect</a> has width and height. Left x-radii are equal, top +y-radii are equal, right x-radii are equal, and bottom y-radii +are equal. The radii do not descript a rect, oval, or simple type. + +The centers of the corner ellipses form an axis-aligned rectangle +that divides the <a href='#RRect'>Round Rect</a> into nine rectangular patches; an +interior rectangle, four edges, and four corners. +</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kComplex_Type'><code>SkRRect::kComplex_Type</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +both radii are non-zero. +</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLastType'><code>SkRRect::kLastType</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>= kComplex_Type</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +<a name='SkRRect_getType'></a> +## getType + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a>() const +</pre> + +Returns the RR's sub type. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_type'></a> +## type + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_type'>type</a>() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_isEmpty'></a> +## isEmpty + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isEmpty'>isEmpty</a>() const +</pre> + +Returns true if <a href='#SkRRect_rect'>rect</a>.fLeft is equal to <a href='#SkRRect_rect'>rect</a>.fRight, or if <a href='#SkRRect_rect'>rect</a>.fTop is equal +to <a href='#SkRRect_rect'>rect</a>.fBottom. + +### Return Value + +true if <a href='#SkRRect_width'>width</a> or <a href='#SkRRect_height'>height</a> are zero + +### Example + +<div><fiddle-embed name="3afe4ea247923e06326aeb2b165c7485"></fiddle-embed></div> + +### See Also + +<a href='SkRect_Reference#SkRect_isEmpty'>SkRect::isEmpty</a> <a href='#SkRRect_height'>height</a> <a href='#SkRRect_width'>width</a> + +--- + +<a name='SkRRect_isRect'></a> +## isRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isRect'>isRect</a>() const +</pre> + +Returns true if not empty, and if either x or y radius at each corner is zero. + +### Return Value + +true if not empty, and one radius at each corner is zero + +### Example + +<div><fiddle-embed name="e2dcdad0e9cb7ba3e78a9871e9229753"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_radii'>radii</a> + +--- + +<a name='SkRRect_isOval'></a> +## isOval + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isOval'>isOval</a>() const +</pre> + +Returns true if not empty, if all x-axis radii are equal, if all y-axis radii +are equal, x-axis radii are at least half the width, and y-axis radii are at +least half the height. + +### Return Value + +true if has identical geometry to <a href='undocumented#Oval'>Oval</a> + +### Example + +<div><fiddle-embed name="ab9b3aef7896aee80b780789848fbba4"><div>The first radii are scaled down proportionately until both x-axis and y-axis fit +within the bounds. After scaling, x-axis radius is smaller than half the width; +left round rect is not an oval. The second radii are equal to half the +dimensions; right round rect is an oval. +</div></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='SkCanvas_Reference#SkCanvas_drawOval'>SkCanvas::drawOval</a> + +--- + +<a name='SkRRect_isSimple'></a> +## isSimple + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isSimple'>isSimple</a>() const +</pre> + +Returns true if not empty, if all x-axis radii are equal but not zero, +if all y-axis radii are equal but not zero; and x-axis radius is less than half +<a href='#SkRRect_width'>width</a>, or y-axis radius is less than half <a href='#SkRRect_height'>height</a>. + +### Return Value + +true if not empty, rect or oval; and axes radii are equal + +### Example + +<div><fiddle-embed name="65bbb109483ed79edb32027cf71851eb"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isNinePatch'>isNinePatch</a> + +--- + +<a name='SkRRect_isNinePatch'></a> +## isNinePatch + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isNinePatch'>isNinePatch</a>() const +</pre> + +Returns true if <a href='#SkRRect_isEmpty'>isEmpty</a>, <a href='#SkRRect_isRect'>isRect</a>, <a href='#SkRRect_isOval'>isOval</a>, and <a href='#SkRRect_isSimple'>isSimple</a> return false; and if +left x-axis radii are equal, right x-axis radii are equal, top y-axis radii are +equal, and bottom y-axis radii are equal. + +### Return Value + +true if not empty, rect, oval or simple; and radii are axis-aligned + +### Example + +<div><fiddle-embed name="568cb730e66d0df09a7d9bd9d6142c9e"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='#SkRRect_isComplex'>isComplex</a> + +--- + +<a name='SkRRect_isComplex'></a> +## isComplex + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +inline bool <a href='#SkRRect_isComplex'>isComplex</a>() const +</pre> + +Returns true if <a href='#SkRRect_isEmpty'>isEmpty</a>, <a href='#SkRRect_isRect'>isRect</a>, <a href='#SkRRect_isOval'>isOval</a>, <a href='#SkRRect_isSimple'>isSimple</a>, and <a href='#SkRRect_isNinePatch'>isNinePatch</a> return false. +If true: width and height are greater than zero, at least one corner radii are +both greater than zero; left x-axis radii are not equal, or right x-axis radii +are not equal, or top y-axis radii are not equal, or bottom y-axis radii are not +equal. + +### Return Value + +true if not empty, rect, oval, simple, or nine-patch + +### Example + +<div><fiddle-embed name="75db3f4e4757478bca641bccf89b9398"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='#SkRRect_isNinePatch'>isNinePatch</a> + +--- + +<a name='SkRRect_width'></a> +## width + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_width'>width</a>() const +</pre> + +Returns span on the x-axis. This does not check if result fits in 32-bit float; +result may be infinity. + +### Return Value + +bounds().fRight minus bounds().fLeft + +### Example + +<div><fiddle-embed name="c675a480b41dee157f84fa2550a2a53c"><div><a href='#SkRRect_MakeRect'>SkRRect::MakeRect</a> sorts its input, so <a href='#SkRRect_width'>width</a> is always zero or larger. +</div> + +#### Example Output + +~~~~ +unsorted width: 5 +large width: inf +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href='SkRect_Reference#SkRect_width'>SkRect::width</a> <a href='#SkRRect_height'>height</a> <a href='#SkRRect_getBounds'>getBounds</a> + +--- + +<a name='SkRRect_height'></a> +## height + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_height'>height</a>() const +</pre> + +Returns span on the y-axis. This does not check if result fits in 32-bit float; +result may be infinity. + +### Return Value + +bounds().fBottom minus bounds().fTop + +### Example + +<div><fiddle-embed name="5a3eb1755164a7becec33cec6e6eca31"><div><a href='#SkRRect_MakeRect'>SkRRect::MakeRect</a> sorts its input, so <a href='#SkRRect_height'>height</a> is always zero or larger. +</div> + +#### Example Output + +~~~~ +unsorted height: 5 +large height: inf +~~~~ + +</fiddle-embed></div> + +### See Also + +<a href='SkRect_Reference#SkRect'>SkRect</a>.<a href='#SkRRect_height'>height</a> <a href='#SkRRect_width'>width</a> <a href='#SkRRect_getBounds'>getBounds</a> + +--- + +<a name='SkRRect_getSimpleRadii'></a> +## getSimpleRadii + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkRRect_getSimpleRadii'>getSimpleRadii</a>() const +</pre> + +Returns top-left corner x-radii. If <a href='#SkRRect_type'>type</a> returns <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>, <a href='#SkRRect_kRect_Type'>kRect Type</a>, +<a href='#SkRRect_kOval_Type'>kOval Type</a>, or <a href='#SkRRect_kSimple_Type'>kSimple Type</a>, returns a value representative of all corner radii. +If <a href='#SkRRect_type'>type</a> returns <a href='#SkRRect_kNinePatch_Type'>kNinePatch Type</a> or <a href='#SkRRect_kComplex_Type'>kComplex Type</a>, at least one of the +remaining three corners has a different value. + +### Return Value + +corner radii for simple types + +### Example + +<div><fiddle-embed name="f0e02101ecbdb5a2963ec82e7832afb1"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_radii'>radii</a> <a href='#SkRRect_getBounds'>getBounds</a> <a href='#SkRRect_getType'>getType</a> <a href='#SkRRect_isSimple'>isSimple</a> + +--- + +<a name='SkRRect_setEmpty'></a> +## setEmpty + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setEmpty'>setEmpty</a>() +</pre> + +Sets bounds to zero width and height at (0, 0), the origin. Sets +corner radii to zero and sets type to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>. + +### Example + +<div><fiddle-embed name="59c1025b8116ec1d3b55f4f6306d1e37"><div>Nothing blue is drawn because rrect is set to empty. +</div></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_MakeEmpty'>MakeEmpty</a> <a href='#SkRRect_setRect'>setRect</a> + +--- + +<a name='SkRRect_setRect'></a> +## setRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setRect'>setRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect) +</pre> + +Sets bounds to sorted rect, and sets corner radii to zero. +If set bounds has width and height, and sets type to <a href='#SkRRect_kRect_Type'>kRect Type</a>; +otherwise, sets type to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>. + +### Parameters + +<table> <tr> <td><a name='SkRRect_setRect_rect'><code><strong>rect</strong></code></a></td> + <td>bounds to set</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="fc97ef7310473b9ba6dc7202efbebb3b"></fiddle-embed></div> + +### See Also + +<a href='#SkRRect_MakeRect'>MakeRect</a> <a href='#SkRRect_setRectXY'>setRectXY</a> + +--- + +<a name='SkRRect_MakeEmpty'></a> +## MakeEmpty + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeEmpty'>MakeEmpty</a>() +</pre> + +Makes an empty rrect at the origin with zero width and height. + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_MakeRect'></a> +## MakeRect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRect'>MakeRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& r) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_MakeRect_r'><code><strong>r</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='SkRRect_MakeOval'></a> +## MakeOval + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeOval'>MakeOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_MakeOval_oval'><code><strong>oval</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='SkRRect_MakeRectXY'></a> +## MakeRectXY + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRectXY'>MakeRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_MakeRectXY_rect'><code><strong>rect</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_MakeRectXY_xRad'><code><strong>xRad</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_MakeRectXY_yRad'><code><strong>yRad</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='SkRRect_setOval'></a> +## setOval + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setOval'>setOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval) +</pre> + +Sets <a href='#RRect'>Round Rect</a> to match the supplied <a href='#SkRRect_setOval_oval'>oval</a>. All x-radii will equal half the +width and all y-radii will equal half the height. + +### Parameters + +<table> <tr> <td><a name='SkRRect_setOval_oval'><code><strong>oval</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_setRectXY'></a> +## setRectXY + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setRectXY'>setRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad) +</pre> + +Initializes <a href='#RRect'>Round Rect</a> with the same radii for all four corners. + +### Parameters + +<table> <tr> <td><a name='SkRRect_setRectXY_rect'><code><strong>rect</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setRectXY_xRad'><code><strong>xRad</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setRectXY_yRad'><code><strong>yRad</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_setNinePatch'></a> +## setNinePatch + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setNinePatch'>setNinePatch</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> leftRad, <a href='undocumented#SkScalar'>SkScalar</a> topRad, <a href='undocumented#SkScalar'>SkScalar</a> rightRad, + <a href='undocumented#SkScalar'>SkScalar</a> bottomRad) +</pre> + +Initializes <a href='#RRect'>Round Rect</a> with one radius per-side. + +### Parameters + +<table> <tr> <td><a name='SkRRect_setNinePatch_rect'><code><strong>rect</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setNinePatch_leftRad'><code><strong>leftRad</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setNinePatch_topRad'><code><strong>topRad</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setNinePatch_rightRad'><code><strong>rightRad</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setNinePatch_bottomRad'><code><strong>bottomRad</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_setRectRadii'></a> +## setRectRadii + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_setRectRadii'>setRectRadii</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const <a href='SkPoint_Reference#SkVector'>SkVector</a> radii[4]) +</pre> + +Initializes <a href='#RRect'>Round Rect</a> with potentially different radii for all four corners. + +### Parameters + +<table> <tr> <td><a name='SkRRect_setRectRadii_rect'><code><strong>rect</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_setRectRadii_radii'><code><strong>radii</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +## <a name='SkRRect_Corner'>Enum SkRRect::Corner</a> + +<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> + enum <a href='#SkRRect_Corner'>Corner</a> { + <a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft Corner</a>, + <a href='#SkRRect_kUpperRight_Corner'>kUpperRight Corner</a>, + <a href='#SkRRect_kLowerRight_Corner'>kLowerRight Corner</a>, + <a href='#SkRRect_kLowerLeft_Corner'>kLowerLeft Corner</a>, + }; +</pre> + +The radii are stored: top-left, top-right, bottom-right, bottom-left. + +### Constants + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> +<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kUpperLeft_Corner'><code>SkRRect::kUpperLeft_Corner</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kUpperRight_Corner'><code>SkRRect::kUpperRight_Corner</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +incomplete</td> + </tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLowerRight_Corner'><code>SkRRect::kLowerRight_Corner</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +incomplete</td> + </tr> + <tr> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLowerLeft_Corner'><code>SkRRect::kLowerLeft_Corner</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # incomplete ##</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> +incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +<a name='SkRRect_rect'></a> +## rect + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_rect'>rect</a>() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_radii'></a> +## radii + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkRRect_radii'>radii</a>(<a href='#SkRRect_Corner'>Corner</a> corner) const +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_radii_corner'><code><strong>corner</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='SkRRect_getBounds'></a> +## getBounds + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_getBounds'>getBounds</a>() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_equal_operator'></a> +## operator== + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +bool <a href='#SkRRect_equal_operator'>operator==(const SkRRect& a, const SkRRect& b)</a> +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_equal_operator_a'><code><strong>a</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_equal_operator_b'><code><strong>b</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='SkRRect_notequal_operator'></a> +## operator!= + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +bool <a href='#SkRRect_notequal_operator'>operator!=(const SkRRect& a, const SkRRect& b)</a> +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_notequal_operator_a'><code><strong>a</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_notequal_operator_b'><code><strong>b</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='SkRRect_inset'></a> +## inset + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkRRect'>SkRRect</a>* dst) const +</pre> + +Calls inset on the bounds, and adjust the radii to reflect what happens. +If the corner is sharp (no curvature), leave it alone, +otherwise we grow/shrink the radii by the amount of the inset. If a +given radius becomes negative, it is pinned to 0. +If the inset amount is larger than the width/height then the rrect collapses to +a degenerate line or point. +If the inset is sufficiently negative to cause the bounds to become infinite then +the result is a default initialized rrect. +It is valid for <a href='#SkRRect_inset_dst'>dst</a> == this. + +### Parameters + +<table> <tr> <td><a name='SkRRect_inset_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_inset_dy'><code><strong>dy</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_inset_dst'><code><strong>dst</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_inset_2'></a> + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_inset_2_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_inset_2_dy'><code><strong>dy</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_outset'></a> +## outset + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkRRect'>SkRRect</a>* dst) const +</pre> + +Call outset on the bounds, and adjust the radii to reflect what happens +in stroking. If the corner is sharp (no curvature), leave it alone, +otherwise we grow/shrink the radii by the amount of the inset. If a +given radius becomes negative, it is pinned to 0. +It is valid for <a href='#SkRRect_outset_dst'>dst</a> == this. + +### Parameters + +<table> <tr> <td><a name='SkRRect_outset_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_outset_dy'><code><strong>dy</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_outset_dst'><code><strong>dst</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_outset_2'></a> + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_outset_2_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_outset_2_dy'><code><strong>dy</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_offset'></a> +## offset + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) +</pre> + +Translate the rrect by (<a href='#SkRRect_offset_dx'>dx</a>, <a href='#SkRRect_offset_dy'>dy</a>). + +### Parameters + +<table> <tr> <td><a name='SkRRect_offset_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_offset_dy'><code><strong>dy</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_makeOffset'></a> +## makeOffset + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +<a href='#SkRRect'>SkRRect</a> SK_WARN_UNUSED_RESULT <a href='#SkRRect_makeOffset'>makeOffset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) const +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_makeOffset_dx'><code><strong>dx</strong></code></a></td> + <td>incomplete</td> + </tr> + <tr> <td><a name='SkRRect_makeOffset_dy'><code><strong>dy</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='SkRRect_contains'></a> +## contains + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +bool <a href='#SkRRect_contains'>contains</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect) const +</pre> + +Returns true if 'rect' is wholy inside the RR, and both +are not empty. + +### Parameters + +<table> <tr> <td><a name='SkRRect_contains_rect'><code><strong>rect</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='SkRRect_isValid'></a> +## isValid + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +bool <a href='#SkRRect_isValid'>isValid</a>() const +</pre> + +### Return Value + +incomplete + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +### Constants + +<table style='border-collapse: collapse; width: 62.5em'> + <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> +<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> +<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> + <tr style='background-color: #f0f0f0; '> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSizeInMemory'><code>SkRRect::kSizeInMemory</code></a></td> + <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>48</td> + <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> + + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>incomplete + +</td> + </tr> +</table> + +<a name='SkRRect_writeToMemory'></a> +## writeToMemory + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +size_t <a href='#SkRRect_writeToMemory'>writeToMemory</a>(void* buffer) const +</pre> + +Write the rrect into the specified <a href='#SkRRect_writeToMemory_buffer'>buffer</a>. This is guaranteed to always +write <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes, and that value is guaranteed to always be +a multiple of 4. Return <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>. + +### Parameters + +<table> <tr> <td><a name='SkRRect_writeToMemory_buffer'><code><strong>buffer</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='SkRRect_readFromMemory'></a> +## readFromMemory + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +size_t <a href='#SkRRect_readFromMemory'>readFromMemory</a>(const void* buffer, size_t length) +</pre> + +Reads the rrect from the specified <a href='#SkRRect_readFromMemory_buffer'>buffer</a>. +If the specified <a href='#SkRRect_readFromMemory_buffer'>buffer</a> is large enough, this will read <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes, +and that value is guaranteed to always be a multiple of 4. + +### Parameters + +<table> <tr> <td><a name='SkRRect_readFromMemory_buffer'><code><strong>buffer</strong></code></a></td> + <td>memory to read from</td> + </tr> + <tr> <td><a name='SkRRect_readFromMemory_length'><code><strong>length</strong></code></a></td> + <td>amount of memory available in the <a href='#SkRRect_readFromMemory_buffer'>buffer</a></td> + </tr> +</table> + +### Return Value + +number of bytes read (must be a multiple of 4) or +0 if there was not enough memory available + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_transform'></a> +## transform + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +bool <a href='#SkRRect_transform'>transform</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix, <a href='#SkRRect'>SkRRect</a>* dst) const +</pre> + +Transform by the specified <a href='#SkRRect_transform_matrix'>matrix</a>, and put the result in <a href='#SkRRect_transform_dst'>dst</a>. + +### Parameters + +<table> <tr> <td><a name='SkRRect_transform_matrix'><code><strong>matrix</strong></code></a></td> + <td><a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a> specifying the transform. Must only contain +scale and/or translate, or this call will fail. +</td> + </tr> + <tr> <td><a name='SkRRect_transform_dst'><code><strong>dst</strong></code></a></td> + <td><a href='#SkRRect'>SkRRect</a> to store the result. It is an error to use this, +which would make this function no longer const. +</td> + </tr> +</table> + +### Return Value + +true on success, false on failure. + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_dump'></a> +## dump + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_dump'>dump</a>(bool asHex) const +</pre> + +### Parameters + +<table> <tr> <td><a name='SkRRect_dump_asHex'><code><strong>asHex</strong></code></a></td> + <td>incomplete</td> + </tr> +</table> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_dump_2'></a> + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_dump'>dump</a>() const +</pre> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + +<a name='SkRRect_dumpHex'></a> +## dumpHex + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +void <a href='#SkRRect_dumpHex'>dumpHex</a>() const +</pre> + +### Example + +<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> + +### See Also + +incomplete + +--- + diff --git a/site/user/api/SkRect_Reference.md b/site/user/api/SkRect_Reference.md index fcd018d0df..02438608ca 100644 --- a/site/user/api/SkRect_Reference.md +++ b/site/user/api/SkRect_Reference.md @@ -86,7 +86,6 @@ SkRect global, <code>struct</code>, and <code>class</code> related member functi </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -308,7 +307,6 @@ SkRect member functions read and modify the structure properties. </tr> </table> - ## <a name='Member'>Member</a> @@ -364,7 +362,6 @@ SkRect members may be read and written directly without using a member function. </tr> </table> - ### Members <table style='border-collapse: collapse; width: 62.5em'> @@ -458,7 +455,6 @@ SkRect can be constructed or initialized by these functions, including C++ class </tr> </table> - <a name='SkRect_MakeEmpty'></a> ## MakeEmpty @@ -888,7 +884,6 @@ than <a href='#SkRect_fBottom'>fBottom</a>. </tr> </table> - <a name='SkRect_isEmpty'></a> ## isEmpty @@ -1234,7 +1229,7 @@ large width: 4294967296 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRect_height'>height</a>() 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 y-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 @@ -1345,7 +1340,6 @@ SkRect operators inline class member functions with arithmetic equivalents. </tr> </table> - <a name='SkRect_equal_operator'></a> ## operator== @@ -1459,7 +1453,6 @@ test with NaN is not equal to itself </tr> </table> - <a name='SkRect_toQuad'></a> ## toQuad @@ -1470,8 +1463,6 @@ void <a href='#SkRect_toQuad'>toQuad</a>(<a href='SkPoint_Reference#SkPoint'>SkP 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. -Consider adding param to control whether <a href='#SkRect_toQuad_quad'>quad</a> is clockwise or counterclockwise. - ### Parameters <table> <tr> <td><a name='SkRect_toQuad_quad'><code><strong>quad</strong></code></a></td> @@ -1629,7 +1620,6 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 success: false </tr> </table> - <a name='SkRect_setBoundsNoCheck'></a> ## setBoundsNoCheck @@ -1995,7 +1985,6 @@ rect: -15, 0, 0, 25 isEmpty: false </tr> </table> - <a name='SkRect_iset'></a> ## iset @@ -2111,7 +2100,6 @@ rect2: {0, 0, 1, 2} </tr> </table> - <a name='SkRect_makeOffset'></a> ## makeOffset @@ -2462,8 +2450,8 @@ rect: 5, 1, 55, 86 must describe area; <a href='#SkRect_fLeft'>fLeft</a> is less than <a href='#SkRect_fRight'>fRight</a>, and <a href='#SkRect_fTop'>fTop</a> is less than <a href='#SkRect_fBottom'>fBottom</a>; empty() returns false. The intersection of <a href='#Rect'>Rect</a> pair can be described by: -(max(a.fLeft, b.fLeft), max(a.fTop, b.fTop), -min(a.fRight, b.fRight), min(a.fBottom, b.fBottom)) +(max(a.<a href='#SkRect_fLeft'>fLeft</a>, b.<a href='#SkRect_fLeft'>fLeft</a>), max(a.<a href='#SkRect_fTop'>fTop</a>, b.<a href='#SkRect_fTop'>fTop</a>), +min(a.<a href='#SkRect_fRight'>fRight</a>, b.<a href='#SkRect_fRight'>fRight</a>), min(a.<a href='#SkRect_fBottom'>fBottom</a>, b.<a href='#SkRect_fBottom'>fBottom</a>)) . The intersection is only meaningful if the resulting <a href='#Rect'>Rect</a> is not empty and @@ -2503,7 +2491,6 @@ describes an area: <a href='#SkRect_fLeft'>fLeft</a> is less than <a href='#SkRe </tr> </table> - <a name='SkRect_contains'></a> ## contains @@ -2929,7 +2916,6 @@ intersection </tr> </table> - <a name='SkRect_join'></a> ## join @@ -3122,7 +3108,6 @@ sorted: 10, 0, 55, 100 </tr> </table> - <a name='SkRect_round'></a> ## round @@ -3348,7 +3333,6 @@ round: 30, 50, 41, 61 </tr> </table> - <a name='SkRect_sort'></a> ## sort diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md index 76f2de6716..387c6cbae6 100644 --- a/site/user/api/SkSurface_Reference.md +++ b/site/user/api/SkSurface_Reference.md @@ -72,7 +72,6 @@ SkSurface related constants are defined by <code>enum</code>, <code>enum class</ </tr> </table> - ## <a name='Related_Function'>Related Function</a> @@ -98,7 +97,6 @@ SkSurface global, <code>struct</code>, and <code>class</code> related member fun </tr> </table> - ## <a name='Member_Function'>Member Function</a> @@ -216,7 +214,6 @@ SkSurface member functions read and modify the structure properties. </tr> </table> - ## <a name='Constructor'>Constructor</a> @@ -270,7 +267,6 @@ SkSurface can be constructed or initialized by these functions, including C++ cl </tr> </table> - <a name='SkSurface_MakeRasterDirect'></a> ## MakeRasterDirect @@ -1071,7 +1067,6 @@ surf->makeImageSnapshot() == nullptr </tr> </table> - <a name='SkSurface_width'></a> ## width @@ -1220,7 +1215,6 @@ If a snapshot has been generated, this copies the <a href='#Surface'>Surface</a> </tr> </table> - <a name='SkSurface_notifyContentWillChange'></a> ## notifyContentWillChange @@ -1233,8 +1227,6 @@ Subsequent calls to <a href='#SkSurface_generationID'>generationID</a> return a <a href='#SkSurface_notifyContentWillChange_mode'>mode</a> is normally passed as <a href='#SkSurface_kRetain_ContentChangeMode'>kRetain ContentChangeMode</a>. -Can we deprecate this? - ### Parameters <table> <tr> <td><a name='SkSurface_notifyContentWillChange_mode'><code><strong>mode</strong></code></a></td> @@ -1527,7 +1519,6 @@ are not captured. <a href='SkImage_Reference#Image'>Image</a> allocation is acco </tr> </table> - <a name='SkSurface_draw'></a> ## draw @@ -1538,7 +1529,7 @@ void <a href='#SkSurface_draw'>draw</a>(<a href='SkCanvas_Reference#SkCanvas'>Sk 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='SkColor_Reference#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>. +<a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, and <a href='undocumented#Draw_Looper'>Draw Looper</a>. ### Parameters @@ -1552,7 +1543,7 @@ If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkSurface_draw_paint'>p <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>, + <td><a href='SkPaint_Reference#Paint'>Paint</a> containing <a href='SkBlendMode_Reference#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> @@ -1941,7 +1932,6 @@ soon </tr> </table> - <a name='SkSurface_flush'></a> ## flush diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm index e8b4e7e70a..e1f9d3ef77 100644 --- a/site/user/api/catalog.htm +++ b/site/user/api/catalog.htm @@ -350,6 +350,13 @@ "name": "SkBitmap::width()", "stdout": "bitmap width: 16 info width: 16\\n" }, + "SkBlendMode_Name": { + "code": "void draw(SkCanvas* canvas) {\n SkDebugf(\"default blend: SkBlendMode::k%s\\n\", SkBlendMode_Name(SkPaint().getBlendMode()));\n}", + "hash": "3996f4994bf4e90b4cd86524c1f9f1a6", + "file": "SkBlendMode_Reference", + "name": "SkBlendMode_Name", + "stdout": "default blend: SkBlendMode::kSrcOver\\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.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", @@ -364,25 +371,11 @@ "name": "SkCanvas::MakeRasterDirectN32", "stdout": "---\\n-x-\\n---\\n" }, - "SkCanvas_SaveLayerRec_SaveLayerRec": { + "SkCanvas_SaveLayerRec_empty_constructor": { "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n rec1.fSaveLayerFlags = SkCanvas::kPreserveLCDText_SaveLayerFlag;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr, SkCanvas::kPreserveLCDText_SaveLayerFlag);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", "hash": "b5cea1eed80a0eb04ddbab3f36dff73f", "file": "SkCanvas_Reference", - "name": "SkCanvas::SaveLayerRec::SaveLayerRec", - "stdout": "rec1 == rec2\\n" - }, - "SkCanvas_SaveLayerRec_SaveLayerRec_2": { - "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", - "hash": "027f920259888fc19591ea9a90d92873", - "file": "SkCanvas_Reference", - "name": "SkCanvas::SaveLayerRec::SaveLayerRec_2", - "stdout": "rec1 == rec2\\n" - }, - "SkCanvas_SaveLayerRec_SaveLayerRec_3": { - "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr, nullptr, 0);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", - "hash": "9b7fa2fe855642ffff6538829db15328", - "file": "SkCanvas_Reference", - "name": "SkCanvas::SaveLayerRec::SaveLayerRec_3", + "name": "SkCanvas::SaveLayerRec::SaveLayerRec()", "stdout": "rec1 == rec2\\n" }, "SkCanvas_accessTopRasterHandle": { @@ -399,6 +392,21 @@ "name": "SkCanvas::SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)", "stdout": "-----\\n---x-\\n---x-\\n---x-\\n---x-\\n---x-\\n---x-\\n-----\\n---x-\\n---x-\\n-----\\n" }, + "SkCanvas_const_SkRect_star_const_SkPaint_star": { + "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", + "hash": "027f920259888fc19591ea9a90d92873", + "file": "SkCanvas_Reference", + "name": "SkCanvas::SaveLayerRec::SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0)", + "stdout": "rec1 == rec2\\n" + }, + "SkCanvas_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star": { + "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr, nullptr, 0);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", + "hash": "9b7fa2fe855642ffff6538829db15328", + "file": "SkCanvas_Reference", + "name": "SkCanvas::SaveLayerRec::SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + SaveLayerFlags saveLayerFlags)", + "stdout": "rec1 == rec2\\n" + }, "SkCanvas_copy_const_SkBitmap": { "code": "void draw(SkCanvas* ) {\n SkBitmap bitmap;\n // create a bitmap 5 wide and 11 high\n bitmap.allocPixels(SkImageInfo::MakeN32Premul(5, 11));\n SkCanvas canvas(bitmap);\n canvas.clear(SK_ColorWHITE); // white is Unpremultiplied, in ARGB order\n SkPixmap pixmap; // provides guaranteed access to the drawn pixels\n if (!canvas.peekPixels(&pixmap)) {\n SkDebugf(\"peekPixels should never fail.\\n\");\n }\n const SkPMColor* pixels = pixmap.addr32(); // points to top-left of bitmap\n SkPMColor pmWhite = pixels[0]; // the Premultiplied format may vary\n SkPaint paint; // by default, draws black, 12 point text\n canvas.drawString(\"!\", 1, 10, paint); // 1 char at baseline (1, 10)\n for (int y = 0; y < bitmap.height(); ++y) {\n for (int x = 0; x < bitmap.width(); ++x) {\n SkDebugf(\"%c\", *pixels++ == pmWhite ? '-' : 'x');\n }\n SkDebugf(\"\\n\");\n }\n}", "hash": "dd92db963af190e849894038f39b598a", @@ -2002,20 +2010,6 @@ "name": "SkPath::IsQuadDegenerate", "stdout": "quad (100,100), (100.00001,100.00001), (100.00002,100.00002) is degenerate, nearly\\nquad (1100,1100), (1100,1100), (1100,1100) is degenerate, nearly\\nquad (100,100), (100.00001,100.00001), (100.00002,100.00002) is not degenerate, exactly\\nquad (1100,1100), (1100,1100), (1100,1100) is degenerate, exactly\\n" }, - "SkPath_Iter_Iter": { - "code": "void draw(SkCanvas* canvas) {\n SkPath::Iter iter;\n SkPoint points[4];\n SkDebugf(\"iter is \" \"%s\" \"done\\n\", SkPath::kDone_Verb == iter.next(points) ? \"\" : \"not \");\n SkPath path;\n iter.setPath(path, false);\n SkDebugf(\"iter is \" \"%s\" \"done\\n\", SkPath::kDone_Verb == iter.next(points) ? \"\" : \"not \");\n}\n", - "hash": "01648775cb9b354b2f1836dad82a25ab", - "file": "SkPath_Reference", - "name": "SkPath::Iter::Iter", - "stdout": "iter is done\\niter is done\\n" - }, - "SkPath_Iter_Iter_2": { - "code": "void draw(SkCanvas* canvas) {\n auto debugster = [](const char* prefix, SkPath::Iter& iter) -> void {\n SkDebugf(\"%s:\\n\", prefix);\n const char* verbStr[] = { \"Move\", \"Line\", \"Quad\", \"Conic\", \"Cubic\", \"Close\", \"Done\" };\n const int pointCount[] = { 1 , 2 , 3 , 3 , 4 , 1 , 0 };\n SkPath::Verb verb;\n do {\n SkPoint points[4];\n verb = iter.next(points);\n SkDebugf(\"k%s_Verb \", verbStr[(int) verb]);\n for (int i = 0; i < pointCount[(int) verb]; ++i) {\n SkDebugf(\"{%g, %g}, \", points[i].fX, points[i].fY);\n }\n if (SkPath::kConic_Verb == verb) {\n SkDebugf(\"weight = %g\", iter.conicWeight());\n }\n SkDebugf(\"\\n\");\n } while (SkPath::kDone_Verb != verb);\n SkDebugf(\"\\n\");\n };\n SkPath path;\n path.quadTo(10, 20, 30, 40);\n SkPath::Iter openIter(path, false);\n debugster(\"open\", openIter);\n SkPath::Iter closedIter(path, true);\n debugster(\"closed\", closedIter);\n}\n", - "hash": "13044dbf68885c0f15322c0633b633a3", - "file": "SkPath_Reference", - "name": "SkPath::Iter::Iter_2", - "stdout": "open:\\nkMove_Verb {0, 0}, \\nkQuad_Verb {0, 0}, {10, 20}, {30, 40}, \\nkDone_Verb \\n\\nclosed:\\nkMove_Verb {0, 0}, \\nkQuad_Verb {0, 0}, {10, 20}, {30, 40}, \\nkLine_Verb {30, 40}, {0, 0}, \\nkClose_Verb {0, 0}, \\nkDone_Verb \\n\\n" - }, "SkPath_Iter_conicWeight": { "code": "void draw(SkCanvas* canvas) {\n SkPath path;\n path.conicTo(1, 2, 3, 4, .5f);\n SkPath::Iter iter(path, false);\n SkPoint p[4];\n SkDebugf(\"first verb is \" \"%s\" \"move\\n\", SkPath::kMove_Verb == iter.next(p) ? \"\" : \"not \");\n SkDebugf(\"next verb is \" \"%s\" \"conic\\n\", SkPath::kConic_Verb == iter.next(p) ? \"\" : \"not \");\n SkDebugf(\"conic points: {%g,%g}, {%g,%g}, {%g,%g}\\n\", p[0].fX, p[0].fY, p[1].fX, p[1].fY,\n p[2].fX, p[2].fY);\n SkDebugf(\"conic weight: %g\\n\", iter.conicWeight());\n}\n", "hash": "7cdea37741d50f0594c6244eb07fd175", @@ -2023,6 +2017,13 @@ "name": "SkPath::Iter::conicWeight", "stdout": "first verb is move\\nnext verb is conic\\nconic points: {0,0}, {1,2}, {3,4}\\nconic weight: 0.5\\n" }, + "SkPath_Iter_empty_constructor": { + "code": "void draw(SkCanvas* canvas) {\n SkPath::Iter iter;\n SkPoint points[4];\n SkDebugf(\"iter is \" \"%s\" \"done\\n\", SkPath::kDone_Verb == iter.next(points) ? \"\" : \"not \");\n SkPath path;\n iter.setPath(path, false);\n SkDebugf(\"iter is \" \"%s\" \"done\\n\", SkPath::kDone_Verb == iter.next(points) ? \"\" : \"not \");\n}\n", + "hash": "01648775cb9b354b2f1836dad82a25ab", + "file": "SkPath_Reference", + "name": "SkPath::Iter::Iter()", + "stdout": "iter is done\\niter is done\\n" + }, "SkPath_Iter_isCloseLine": { "code": "void draw(SkCanvas* canvas) {\n SkPath path;\n path.moveTo(6, 7);\n path.conicTo(1, 2, 3, 4, .5f);\n path.close();\n SkPath::Iter iter(path, false);\n SkPoint p[4];\n SkDebugf(\"1st verb is \" \"%s\" \"move\\n\", SkPath::kMove_Verb == iter.next(p) ? \"\" : \"not \");\n SkDebugf(\"moveTo point: {%g,%g}\\n\", p[0].fX, p[0].fY);\n SkDebugf(\"2nd verb is \" \"%s\" \"conic\\n\", SkPath::kConic_Verb == iter.next(p) ? \"\" : \"not \");\n SkDebugf(\"3rd verb is \" \"%s\" \"line\\n\", SkPath::kLine_Verb == iter.next(p) ? \"\" : \"not \");\n SkDebugf(\"line points: {%g,%g}, {%g,%g}\\n\", p[0].fX, p[0].fY, p[1].fX, p[1].fY);\n SkDebugf(\"line \" \"%s\" \"generated by close\\n\", iter.isCloseLine() ? \"\" : \"not \");\n SkDebugf(\"4th verb is \" \"%s\" \"close\\n\", SkPath::kClose_Verb == iter.next(p) ? \"\" : \"not \");\n}\n", "hash": "7000b501f49341629bfdd9f80e686103", @@ -2107,6 +2108,13 @@ "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_const_SkPath": { + "code": "void draw(SkCanvas* canvas) {\n auto debugster = [](const char* prefix, SkPath::Iter& iter) -> void {\n SkDebugf(\"%s:\\n\", prefix);\n const char* verbStr[] = { \"Move\", \"Line\", \"Quad\", \"Conic\", \"Cubic\", \"Close\", \"Done\" };\n const int pointCount[] = { 1 , 2 , 3 , 3 , 4 , 1 , 0 };\n SkPath::Verb verb;\n do {\n SkPoint points[4];\n verb = iter.next(points);\n SkDebugf(\"k%s_Verb \", verbStr[(int) verb]);\n for (int i = 0; i < pointCount[(int) verb]; ++i) {\n SkDebugf(\"{%g, %g}, \", points[i].fX, points[i].fY);\n }\n if (SkPath::kConic_Verb == verb) {\n SkDebugf(\"weight = %g\", iter.conicWeight());\n }\n SkDebugf(\"\\n\");\n } while (SkPath::kDone_Verb != verb);\n SkDebugf(\"\\n\");\n };\n SkPath path;\n path.quadTo(10, 20, 30, 40);\n SkPath::Iter openIter(path, false);\n debugster(\"open\", openIter);\n SkPath::Iter closedIter(path, true);\n debugster(\"closed\", closedIter);\n}\n", + "hash": "13044dbf68885c0f15322c0633b633a3", + "file": "SkPath_Reference", + "name": "SkPath::Iter::Iter(const SkPath& path, bool forceClose)", + "stdout": "open:\\nkMove_Verb {0, 0}, \\nkQuad_Verb {0, 0}, {10, 20}, {30, 40}, \\nkDone_Verb \\n\\nclosed:\\nkMove_Verb {0, 0}, \\nkQuad_Verb {0, 0}, {10, 20}, {30, 40}, \\nkLine_Verb {30, 40}, {0, 0}, \\nkClose_Verb {0, 0}, \\nkDone_Verb \\n\\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", @@ -2695,6 +2703,20 @@ "name": "SkPoint::y()", "stdout": "pt1.fY == pt1.y()\\n" }, + "SkRRect_height": { + "code": "void draw(SkCanvas* canvas) {\n SkRRect unsorted = SkRRect::MakeRect({ 15, 25, 10, 20 });\n SkDebugf(\"unsorted height: %g\\n\", unsorted.height());\n SkRRect large = SkRRect::MakeRect({ 1, -FLT_MAX, 2, FLT_MAX });\n SkDebugf(\"large height: %.0f\\n\", large.height());\n}", + "hash": "5a3eb1755164a7becec33cec6e6eca31", + "file": "SkRRect_Reference", + "name": "SkRRect::height()", + "stdout": "unsorted height: 5\\nlarge height: inf\\n" + }, + "SkRRect_width": { + "code": "void draw(SkCanvas* canvas) {\n SkRRect unsorted = SkRRect::MakeRect({ 15, 25, 10, 5 });\n SkDebugf(\"unsorted width: %g\\n\", unsorted.width());\n SkRRect large = SkRRect::MakeRect({ -FLT_MAX, 1, FLT_MAX, 2 });\n SkDebugf(\"large width: %.0f\\n\", large.width());\n}", + "hash": "c675a480b41dee157f84fa2550a2a53c", + "file": "SkRRect_Reference", + "name": "SkRRect::width()", + "stdout": "unsorted width: 5\\nlarge width: inf\\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", @@ -3264,7 +3286,239 @@ } } - var pngs = {"Canvas_Clip": { + var pngs = {"Blend_Mode_Clear": { + "code": "void draw(SkCanvas* canvas) {\n canvas->saveLayer(nullptr, nullptr);\n canvas->drawColor(SK_ColorYELLOW, SkBlendMode::kClear);\n SkPaint paint;\n for (auto color : { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN } ) {\n SkColor colors[] = { color, SkColorSetA(color, 0) }; \n paint.setShader(SkGradientShader::MakeRadial({ 64, 64}, 100,\n colors, nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode));\n canvas->drawCircle(64, 64, 100, paint);\n canvas->translate(64, 64);\n }\n canvas->restore();\n}", + "width": 256, + "height": 256, + "hash": "a9b56a26ca469bab9ab10e16f62fb2e2", + "file": "SkBlendMode_Reference", + "name": "Clear" +}, + "Blend_Mode_Color": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawColor(0xFF00FF00, SkBlendMode::kColor);\n}", + "width": 256, + "height": 256, + "hash": "953eb53ac00e22d098c1a1290379282e", + "file": "SkBlendMode_Reference", + "name": "Color" +}, + "Blend_Mode_Color_Burn": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->clipRect({128, 0, 256, 256});\n canvas->drawColor(SkColorSetARGB(0x80, 0x90, 0x90, 0x90), SkBlendMode::kColorBurn);\n}", + "width": 256, + "height": 256, + "hash": "3eeef529375d8083ae0d615789d55e89", + "file": "SkBlendMode_Reference", + "name": "Color_Burn" +}, + "Blend_Mode_Color_Dodge": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->clipRect({128, 0, 256, 256});\n canvas->drawColor(SkColorSetARGB(0x80, 0x90, 0x90, 0x90), SkBlendMode::kColorDodge);\n}", + "width": 256, + "height": 256, + "hash": "280ad6267a7d2d77b6d2c4531c6fc0bf", + "file": "SkBlendMode_Reference", + "name": "Color_Dodge" +}, + "Blend_Mode_Darken": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n SkColor colors[] = { SK_ColorWHITE, SK_ColorBLACK };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n paint.setBlendMode(SkBlendMode::kDarken);\n canvas->drawPaint(paint);\n}", + "width": 256, + "height": 256, + "hash": "8c5065ba642f815602000f6b53cefc48", + "file": "SkBlendMode_Reference", + "name": "Darken" +}, + "Blend_Mode_Difference": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawImage(image, 128, 0);\n canvas->drawImage(image, 0, 128);\n canvas->drawImage(image, 128, 128);\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(0x80bb9977, SkBlendMode::kDifference);\n}", + "width": 256, + "height": 256, + "hash": "52d2c8d1b9b428de4477b4caa1543a3d", + "file": "SkBlendMode_Reference", + "name": "Difference" +}, + "Blend_Mode_Dst": { + "code": "void draw(SkCanvas* canvas) {\n SkRSXform xforms[] = { { .5f, 0, 0, 0 }, {0, .5f, 125, 128 } };\n SkRect tex[] = { { 0, 0, 250, 250 }, { 0, 0, 250, 250 } };\n SkColor colors[] = { 0x7f55aa00, 0x7f3333bf };\n canvas->drawAtlas(image.get(), xforms, tex, colors, 2, SkBlendMode::kSrc, nullptr, nullptr);\n canvas->translate(128, 0);\n canvas->drawAtlas(image.get(), xforms, tex, colors, 2, SkBlendMode::kDst, nullptr, nullptr);\n}", + "width": 256, + "height": 256, + "hash": "35915a2273be1076f00f2e47998ce808", + "file": "SkBlendMode_Reference", + "name": "Dst" +}, + "Blend_Mode_Dst_Atop": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kSrcATop);\n}", + "width": 256, + "height": 256, + "hash": "1955856d45773a4fd914fcc1f813222f", + "file": "SkBlendMode_Reference", + "name": "Dst_Atop" +}, + "Blend_Mode_Dst_In": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kDstIn);\n}", + "width": 256, + "height": 256, + "hash": "a5eeba05ccf6097a5d110a9d64f97c25", + "file": "SkBlendMode_Reference", + "name": "Dst_In" +}, + "Blend_Mode_Dst_Out": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kDstOut);\n}", + "width": 256, + "height": 256, + "hash": "b9a894c9accfc5d94081bbd77d5d790a", + "file": "SkBlendMode_Reference", + "name": "Dst_Out" +}, + "Blend_Mode_Dst_Over": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kDstOver);\n}", + "width": 256, + "height": 256, + "hash": "10dbb4d97902956ef5f5f8562f65119e", + "file": "SkBlendMode_Reference", + "name": "Dst_Over" +}, + "Blend_Mode_Exclusion": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawImage(image, 128, 0);\n canvas->drawImage(image, 0, 128);\n canvas->drawImage(image, 128, 128);\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(0x80bb9977, SkBlendMode::kExclusion);\n}", + "width": 256, + "height": 256, + "hash": "a544ee1c67c7c557a9e54d5e99f94bb6", + "file": "SkBlendMode_Reference", + "name": "Exclusion" +}, + "Blend_Mode_Hard_Light": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n const SkColor colors[] = { 0xFFFFFFFF, 0x00000000 };\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kHardLight);\n paint.setShader(SkGradientShader::MakeRadial({ 128, 128}, 100, colors,\n nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode));\n canvas->clipRect({0, 128, 256, 256});\n canvas->drawPaint(paint);\n}", + "width": 256, + "height": 256, + "hash": "ac2fe555e2196e15863ea4ce74db3d54", + "file": "SkBlendMode_Reference", + "name": "Hard_Light" +}, + "Blend_Mode_Hue": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawColor(0xFF00FF00, SkBlendMode::kHue);\n}", + "width": 256, + "height": 256, + "hash": "ade7ea4d06775cb252a1d15c7a8112d3", + "file": "SkBlendMode_Reference", + "name": "Hue" +}, + "Blend_Mode_Lighten": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n SkColor colors[] = { SK_ColorBLACK, SK_ColorWHITE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n paint.setBlendMode(SkBlendMode::kLighten);\n canvas->drawPaint(paint);\n}", + "width": 256, + "height": 256, + "hash": "bbbe1a7b2587e76f9b2c7996b188a054", + "file": "SkBlendMode_Reference", + "name": "Lighten" +}, + "Blend_Mode_Luminosity": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawColor(0xFF00FF00, SkBlendMode::kLuminosity);\n}", + "width": 256, + "height": 256, + "hash": "7161fa58aa064ee229ae346cb2e165c4", + "file": "SkBlendMode_Reference", + "name": "Luminosity" +}, + "Blend_Mode_Modulate": { + "code": "void draw(SkCanvas* canvas) {\n auto drawSquare = [=](int dx, int dy, SkBlendMode mode, const char* label) -> void {\n const SkColor colors[] = { SK_ColorBLACK, SK_ColorWHITE };\n const SkPoint horz[] = { { 0, 0 }, { 128, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n paint.setBlendMode(mode);\n canvas->translate(dx, dy);\n canvas->drawRect({0, 0, 128, 128}, paint);\n paint.setBlendMode(SkBlendMode::kXor);\n canvas->drawString(label, 40, 100, paint);\n };\n drawSquare(0, 0, SkBlendMode::kSrc, \"destination\");\n drawSquare(128, 0, SkBlendMode::kSrc, \"\");\n drawSquare(0, 128, SkBlendMode::kSrc, \"\");\n canvas->translate(-128, -128);\n canvas->rotate(90, 0, 128);\n drawSquare(0, 0, SkBlendMode::kSrc, \"source\");\n drawSquare(0, -128, SkBlendMode::kModulate, \"modulate\");\n drawSquare(-128, 0, SkBlendMode::kMultiply, \"multiply\");\n}", + "width": 256, + "height": 256, + "hash": "3fdac2b2f48bd227d2e74234c260bc8e", + "file": "SkBlendMode_Reference", + "name": "Modulate" +}, + "Blend_Mode_Multiply": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawImage(image, 128, 0);\n canvas->drawImage(image, 0, 128);\n canvas->drawImage(image, 128, 128);\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(0x80bb9977, SkBlendMode::kMultiply);\n}", + "width": 256, + "height": 256, + "hash": "145418271d58afc4070e7df42095c750", + "file": "SkBlendMode_Reference", + "name": "Multiply" +}, + "Blend_Mode_Overlay": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kOverlay);\n}", + "width": 256, + "height": 256, + "hash": "03bf042201de02d6d131938ccd3172eb", + "file": "SkBlendMode_Reference", + "name": "Overlay" +}, + "Blend_Mode_Plus": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawColor(SK_ColorBLACK);\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kPlus);\n for (auto color : { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN } ) {\n SkColor colors[] = { color, SkColorSetA(color, 192), SkColorSetA(color, 128),\n SkColorSetA(color, 0) }; \n paint.setShader(SkGradientShader::MakeRadial({ 64, 64}, 100,\n colors, nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode));\n canvas->drawCircle(64, 64, 100, paint);\n canvas->translate(64, 64);\n }\n}", + "width": 256, + "height": 256, + "hash": "05383441e510d54008402e128fc8ad2b", + "file": "SkBlendMode_Reference", + "name": "Plus" +}, + "Blend_Mode_Saturation": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->drawColor(0xFF00FF00, SkBlendMode::kSaturation);\n}", + "width": 256, + "height": 256, + "hash": "4a99f5f6738b18afd92a4cb2bd762bf0", + "file": "SkBlendMode_Reference", + "name": "Saturation" +}, + "Blend_Mode_Screen": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstATop);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kScreen);\n}", + "width": 256, + "height": 256, + "hash": "b7b42965927788d853f449f08ddf46de", + "file": "SkBlendMode_Reference", + "name": "Screen" +}, + "Blend_Mode_Soft_Light": { + "code": "void draw(SkCanvas* canvas) {\n const SkColor colors[] = { 0xFFFFFFFF, 0x3FFFFFFF };\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kSoftLight);\n paint.setShader(SkGradientShader::MakeRadial({ 128, 128}, 100, colors,\n nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode));\n canvas->drawImage(image, 0, 0);\n canvas->drawCircle(128, 128, 100, paint);\n}", + "width": 256, + "height": 256, + "hash": "ac93f30dff13f8a8bb31398de370863b", + "file": "SkBlendMode_Reference", + "name": "Soft_Light" +}, + "Blend_Mode_Src": { + "code": "void draw(SkCanvas* canvas) {\n canvas->drawImage(image, 0, 0);\n canvas->clipRect({50, 50, 200, 200});\n SkPaint srcBlend;\n srcBlend.setBlendMode(SkBlendMode::kSrc);\n canvas->saveLayer(nullptr, &srcBlend);\n canvas->drawColor(0);\n SkPaint transRed;\n transRed.setColor(SkColorSetA(SK_ColorRED, 127));\n canvas->drawCircle(125, 125, 75, transRed);\n canvas->restore();\n}", + "width": 256, + "height": 256, + "hash": "0fc85dd916cc1a5896d36c80b9847391", + "file": "SkBlendMode_Reference", + "name": "Src" +}, + "Blend_Mode_Src_Atop": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kSrcATop);\n}", + "width": 256, + "height": 256, + "hash": "a13148977bfc985934a92752c83a2041", + "file": "SkBlendMode_Reference", + "name": "Src_Atop" +}, + "Blend_Mode_Src_In": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kSrcIn);\n}", + "width": 256, + "height": 256, + "hash": "b0833c18fe8b0eeaab9bd6d2160d272f", + "file": "SkBlendMode_Reference", + "name": "Src_In" +}, + "Blend_Mode_Src_Out": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kSrcOut);\n}", + "width": 256, + "height": 256, + "hash": "ccc1e74226e0c9eacbc21f1eed017b84", + "file": "SkBlendMode_Reference", + "name": "Src_Out" +}, + "Blend_Mode_Src_Over": { + "code": "void draw(SkCanvas* canvas) {\n SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };\n SkPoint horz[] = { { 0, 0 }, { 256, 0 } };\n SkPaint paint;\n paint.setShader(SkGradientShader::MakeLinear(horz, colors, nullptr, SK_ARRAY_COUNT(colors),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n paint.setBlendMode(SkBlendMode::kDstIn);\n SkColor alphas[] = { SK_ColorBLACK, SK_ColorTRANSPARENT };\n SkPoint vert[] = { { 0, 0 }, { 0, 256 } };\n paint.setShader(SkGradientShader::MakeLinear(vert, alphas, nullptr, SK_ARRAY_COUNT(alphas),\n SkShader::kClamp_TileMode));\n canvas->drawPaint(paint);\n canvas->clipRect( { 30, 30, 226, 226 } );\n canvas->drawColor(SkColorSetA(SK_ColorGREEN, 128), SkBlendMode::kSrcOver);\n}", + "width": 256, + "height": 256, + "hash": "2ea9c149964a06cdb4929158cb4f15f8", + "file": "SkBlendMode_Reference", + "name": "Src_Over" +}, + "Blend_Mode_Xor": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setBlendMode(SkBlendMode::kXor);\n for (auto color : { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN } ) {\n SkColor colors[] = { color, SkColorSetA(color, 192), SkColorSetA(color, 128),\n SkColorSetA(color, 0) }; \n paint.setShader(SkGradientShader::MakeRadial({ 64, 64}, 100,\n colors, nullptr, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode));\n canvas->drawCircle(64, 64, 100, paint);\n canvas->translate(64, 64);\n }\n}", + "width": 256, + "height": 256, + "hash": "29db2c7493d9098b8a086ddbe30dd6d6", + "file": "SkBlendMode_Reference", + "name": "Xor" +}, + "Canvas_Clip": { "code": "void draw(SkCanvas* canvas) {\n SkPaint redPaint, scalePaint;\n redPaint.setAntiAlias(true);\n redPaint.setColor(SK_ColorRED);\n canvas->save();\n for (bool antialias : { false, true } ) {\n canvas->save();\n canvas->clipRect(SkRect::MakeWH(19.5f, 11.5f), antialias);\n canvas->drawCircle(17, 11, 8, redPaint);\n canvas->restore();\n canvas->translate(16, 0);\n }\n canvas->restore();\n SkMatrix matrix;\n matrix.setScale(6, 6);\n scalePaint.setImageFilter(\n SkImageFilter::MakeMatrixFilter(matrix, kNone_SkFilterQuality, nullptr));\n SkCanvas::SaveLayerRec saveLayerRec(\n nullptr, &scalePaint, SkCanvas::kInitWithPrevious_SaveLayerFlag);\n canvas->saveLayer(saveLayerRec);\n canvas->restore();\n}", "width": 256, "height": 90, @@ -3336,6 +3590,46 @@ "file": "SkColor_Reference", "name": "Color_Constants_White" }, + "Illustrations_Blend_Mode_Color_Blends": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint srcPaint;\n srcPaint.setAntiAlias(true);\n SkPaint labelPaint = srcPaint;\n labelPaint.setTextAlign(SkPaint::kCenter_Align);\n labelPaint.setTextSize(16);\n SkPaint dstPaint = labelPaint;\n dstPaint.setTextSize(80);\n dstPaint.setColor(0xFF606080);\n dstPaint.setTypeface(SkTypeface::MakeFromName(\"Roboto\", SkFontStyle::Bold()));\n srcPaint.setColor(0xFFcc6633);\n SkPath srcPath;\n const SkPoint points[] = {{20, 20}, {80, 45}, {45, 80}};\n srcPath.addPoly(points, SK_ARRAY_COUNT(points), true);\n canvas->drawColor(0, SkBlendMode::kClear);\n for (auto blend : { SkBlendMode::kHue, SkBlendMode::kSaturation, SkBlendMode::kColor,\n SkBlendMode::kLuminosity } ) {\n canvas->drawString(\"&\", 50, 80, dstPaint);\n srcPaint.setBlendMode(blend);\n canvas->drawPath(srcPath, srcPaint);\n canvas->drawString(SkBlendMode_Name(blend), 50, 100, labelPaint);\n canvas->translate(90, 0);\n }\n}", + "width": 480, + "height": 110, + "hash": "03710c1770728da885fa4ac24a19d5d1", + "file": "illustrations", + "name": "Blend_Mode_Color_Blends" +}, + "Illustrations_Blend_Mode_Lighten_Darken": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint srcPaint;\n srcPaint.setAntiAlias(true);\n SkPaint labelPaint = srcPaint;\n labelPaint.setTextAlign(SkPaint::kCenter_Align);\n labelPaint.setTextSize(16);\n SkPaint dstPaint = labelPaint;\n dstPaint.setTextSize(80);\n dstPaint.setColor(0xFF606080);\n dstPaint.setTypeface(SkTypeface::MakeFromName(\"Roboto\", SkFontStyle::Bold()));\n srcPaint.setColor(0xFFcc6633);\n SkPath srcPath;\n const SkPoint points[] = {{20, 20}, {80, 45}, {45, 80}};\n srcPath.addPoly(points, SK_ARRAY_COUNT(points), true);\n canvas->drawColor(0, SkBlendMode::kClear);\n for (auto blend : { SkBlendMode::kPlus, SkBlendMode::kScreen, SkBlendMode::kOverlay,\n SkBlendMode::kDarken, SkBlendMode::kLighten, SkBlendMode::kColorDodge,\n SkBlendMode::kColorBurn, SkBlendMode::kHardLight, SkBlendMode::kSoftLight,\n SkBlendMode::kDifference, SkBlendMode::kExclusion, SkBlendMode::kMultiply } ) {\n canvas->drawString(\"&\", 50, 80, dstPaint);\n srcPaint.setBlendMode(blend);\n canvas->drawPath(srcPath, srcPaint);\n canvas->drawString(SkBlendMode_Name(blend), 50, 100, labelPaint);\n canvas->translate(90, 0);\n if (SkBlendMode::kLighten == blend || SkBlendMode::kDifference == blend) {\n canvas->translate(-90 * 5, 100);\n }\n }\n}", + "width": 480, + "height": 330, + "hash": "8e04f89252632da0fffe713f07f2296f", + "file": "illustrations", + "name": "Blend_Mode_Lighten_Darken" +}, + "Illustrations_Blend_Mode_Modulate_Blend": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint srcPaint;\n srcPaint.setAntiAlias(true);\n SkPaint labelPaint = srcPaint;\n labelPaint.setTextAlign(SkPaint::kCenter_Align);\n labelPaint.setTextSize(16);\n SkPaint dstPaint = labelPaint;\n dstPaint.setTextSize(80);\n dstPaint.setColor(0xFF606080);\n dstPaint.setTypeface(SkTypeface::MakeFromName(\"Roboto\", SkFontStyle::Bold()));\n SkBitmap srcBits;\n srcBits.allocN32Pixels(80, 84);\n SkCanvas srcCanvas(srcBits);\n srcPaint.setColor(0xFFcc6633);\n SkPath srcPath;\n const SkPoint points[] = {{20, 20}, {80, 45}, {45, 80}};\n srcPath.addPoly(points, SK_ARRAY_COUNT(points), true);\n srcBits.eraseColor(0);\n srcCanvas.drawPath(srcPath, srcPaint);\n canvas->drawColor(0, SkBlendMode::kClear);\n srcPaint.setBlendMode(SkBlendMode::kModulate);\n for (auto step: { 1, 2 } ) {\n canvas->drawString(\"&\", 50, 80, dstPaint);\n if (1 == step) {\n canvas->drawBitmap(srcBits, 0, 0, &srcPaint);\n canvas->drawString(\"Bitmap\", 50, 18, labelPaint);\n } else {\n canvas->drawPath(srcPath, srcPaint);\n canvas->drawString(\"Geometry\", 50, 18, labelPaint);\n }\n canvas->drawString(SkBlendMode_Name(SkBlendMode::kModulate), 50, 100, labelPaint);\n canvas->translate(120, 0);\n }\n}", + "width": 480, + "height": 110, + "hash": "d8abdd8fb56f9e69342d745d425c4a17", + "file": "illustrations", + "name": "Blend_Mode_Modulate_Blend" +}, + "Illustrations_Blend_Mode_Porter_Duff": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint srcPaint;\n srcPaint.setAntiAlias(true);\n SkPaint labelPaint = srcPaint;\n labelPaint.setTextAlign(SkPaint::kCenter_Align);\n labelPaint.setTextSize(16);\n SkPaint dstPaint = labelPaint;\n dstPaint.setTextSize(80);\n dstPaint.setColor(0xFF606080);\n dstPaint.setTypeface(SkTypeface::MakeFromName(\"Roboto\", SkFontStyle::Bold()));\n SkBitmap srcBits;\n srcBits.allocN32Pixels(80, 84);\n SkCanvas srcCanvas(srcBits);\n srcPaint.setColor(0xFFcc6633);\n SkPath srcPath;\n const SkPoint points[] = {{20, 20}, {80, 45}, {45, 80}};\n srcPath.addPoly(points, SK_ARRAY_COUNT(points), true);\n srcBits.eraseColor(0);\n srcCanvas.drawPath(srcPath, srcPaint);\n canvas->drawColor(0, SkBlendMode::kClear);\n for (auto blend : { SkBlendMode::kSrc, SkBlendMode::kSrcATop, SkBlendMode::kSrcOver,\n SkBlendMode::kSrcIn, SkBlendMode::kSrcOut,\n SkBlendMode::kDst, SkBlendMode::kDstATop, SkBlendMode::kDstOver,\n SkBlendMode::kDstIn, SkBlendMode::kDstOut,\n SkBlendMode::kClear, SkBlendMode::kXor } ) {\n canvas->drawString(\"&\", 50, 80, dstPaint);\n srcPaint.setBlendMode(blend);\n canvas->drawBitmap(srcBits, 0, 0, &srcPaint);\n canvas->drawString(SkBlendMode_Name(blend), 50, 100, labelPaint);\n canvas->translate(80, 0);\n if (SkBlendMode::kSrcOut == blend || SkBlendMode::kDstOut == blend) {\n canvas->translate(-80 * 5, 100);\n }\n }\n}", + "width": 480, + "height": 330, + "hash": "8c27fb2a58f63505cffa74c1c79e16ba", + "file": "illustrations", + "name": "Blend_Mode_Porter_Duff" +}, + "Illustrations_Blend_Mode_Porter_Duff_2": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint srcPaint;\n srcPaint.setAntiAlias(true);\n SkPaint labelPaint = srcPaint;\n labelPaint.setTextAlign(SkPaint::kCenter_Align);\n labelPaint.setTextSize(16);\n SkPaint dstPaint = labelPaint;\n dstPaint.setTextSize(80);\n dstPaint.setColor(0xFF606080);\n dstPaint.setTypeface(SkTypeface::MakeFromName(\"Roboto\", SkFontStyle::Bold()));\n srcPaint.setColor(0xFFcc6633);\n SkPath srcPath;\n const SkPoint points[] = {{20, 20}, {80, 45}, {45, 80}};\n srcPath.addPoly(points, SK_ARRAY_COUNT(points), true);\n canvas->drawColor(0, SkBlendMode::kClear);\n SkBitmap dstBits;\n dstBits.allocN32Pixels(80, 80);\n SkCanvas dstCanvas(dstBits);\n for (auto blend : { SkBlendMode::kSrc, SkBlendMode::kSrcATop, SkBlendMode::kSrcOver,\n SkBlendMode::kSrcIn, SkBlendMode::kSrcOut,\n SkBlendMode::kDst, SkBlendMode::kDstATop, SkBlendMode::kDstOver,\n SkBlendMode::kDstIn, SkBlendMode::kDstOut,\n SkBlendMode::kClear, SkBlendMode::kXor } ) {\n canvas->drawString(\"&\", 50, 80, dstPaint);\n srcPaint.setBlendMode(blend);\n canvas->drawPath(srcPath, srcPaint);\n canvas->drawString(SkBlendMode_Name(blend), 50, 100, labelPaint);\n canvas->translate(80, 0);\n if (SkBlendMode::kSrcOut == blend || SkBlendMode::kDstOut == blend) {\n canvas->translate(-80 * 5, 100);\n }\n }\n}", + "width": 480, + "height": 330, + "hash": "50ebbb0162bbf60524a196236d66c915", + "file": "illustrations", + "name": "Blend_Mode_Porter_Duff_2" +}, "Illustrations_Image_Info_Color_Type_ARGB_4444": { "code": "void draw(SkCanvas* canvas) {\n canvas->scale(1.25f, 1.25f);\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextSize(10);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"16-bit word\", 5 + 20 * 8, 20, paint);\n canvas->drawString(\"little endian byte order\", 5 + 20 * 4, 85, paint);\n auto drawBoxText = [=](SkScalar e[], const char* s[], int count, int n, SkScalar yPos) -> void {\n SkPaint p(paint);\n p.setColor(SK_ColorRED);\n SkScalar xPos = 15;\n int width = n % 32 + 1;\n int lastN = n > 32 ? 32 : 0;\n for (; n >= lastN; --n) {\n for (int i = 0; i <= count; ++i) {\n int a = width - e[i];\n if (a == n || a == n + 1 || a == n - 32 || a == n - 31) {\n char num[3] = {(char) ('0' + n / 10), (char) ('0' + n % 10), '\\0'};\n canvas->drawString(n >= 10 ? num : &num[1], xPos, yPos - 5, p);\n break;\n }\n }\n xPos += 20;\n }\n p.setColor(SK_ColorBLACK);\n for (int i = 0; i < count; ++i) {\n canvas->drawString(s[i], 5 + (e[i] + e[i + 1]) * 10, yPos + 10, p);\n }\n p.setStyle(SkPaint::kStroke_Style);\n for (int i = 0; i <= count; ++i) {\n canvas->drawLine(5 + e[i] * 20, yPos, 5 + e[i] * 20, yPos + 15, p);\n }\n for (int i = 0; i < 2; ++i) {\n canvas->drawLine(5 + e[0] * 20, yPos + i * 15, 5 + e[count] * 20, yPos + i * 15, p);\n }\n };\n SkScalar edges[] = { 0, 4, 8, 12, 16 };\n const char* labels[] = { \"red\", \"green\", \"blue\", \"alpha\" };\n drawBoxText(&edges[0], &labels[0], 4, 15, 45);\n drawBoxText(&edges[0], &labels[2], 2, 7, 110);\n drawBoxText(&edges[0], &labels[0], 2, 7, 160);\n}\n", "width": 415, @@ -3376,6 +3670,14 @@ "file": "illustrations", "name": "Image_Info_Color_Type_RGBA_F16" }, + "Illustrations_Image_Info_Color_Type_RGBA_F32": { + "code": "void draw(SkCanvas* canvas) {\n canvas->scale(1.25f, 1.25f);\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextSize(10);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"128-bit word\", 5 + 20 * 16, 20, paint);\n canvas->drawString(\"little endian byte order\", 5 + 20 * 4, 135, paint);\n for (int i = 0; i < 4; ++i) {\n canvas->drawString(\"(low bits)\", 5 + 10 * 4, 187 + i * 100, paint);\n canvas->drawString(\"(high bits)\", 105 + 10 * 4, 237 + i * 100, paint);\n }\n auto drawBoxText = [=](SkScalar e[], const char* s[], const char* nums[] , \n int count, int n, SkScalar yPos) -> void {\n SkPaint p(paint);\n p.setColor(SK_ColorRED);\n SkScalar xPos = 15;\n int stringIndex = 0;\n for (int i = n; i >= 0; --i) {\n if (0 == i || n == i || 32 == i || 31 == i) {\n int x = xPos;\n if (2 == count) {\n x += stringIndex * 12 + (stringIndex ? 8 : 0);\n }\n canvas->drawString(nums[stringIndex], x, yPos - 5, p);\n if (1 == count) {\n canvas->drawString(nums[stringIndex], xPos + 100, yPos - 5, p);\n }\n ++stringIndex;\n }\n xPos += 9;\n }\n p.setColor(SK_ColorBLACK);\n for (int i = 0; i < count; ++i) {\n canvas->drawString(s[i], 5 + (e[i] + e[i + 1]) * 5, yPos + 10, p);\n if (1 == count) {\n canvas->drawString(s[i], 105 + (e[i] + e[i + 1]) * 5, yPos + 10, p);\n }\n }\n p.setStyle(SkPaint::kStroke_Style);\n for (int i = 0; i <= count; ++i) {\n canvas->drawLine(5 + e[i] * 10, yPos, 5 + e[i] * 10, yPos + 15, p);\n if (1 == count) {\n canvas->drawLine(105 + e[i] * 10, yPos, 105 + e[i] * 10, yPos + 15, p);\n }\n }\n for (int i = 0; i < 2; ++i) {\n canvas->drawLine(5 + e[0] * 10, yPos + i * 15,\n 5 + e[count] * 10, yPos + i * 15, p);\n if (1 == count) {\n canvas->drawLine(105 + e[0] * 10, yPos + i * 15,\n 105 + e[count] * 10, yPos + i * 15, p);\n }\n }\n };\n SkScalar edges[] = { 0, 32, 64,\n 0, 8\n };\n const char* labels[] = { \"alpha\", \"blue\", \"green\", \"red\" };\n const char* nums128[] = { \"127\", \"96\", \"95\", \"64\"};\n const char* nums64[] = { \"63\", \"32\", \"31\", \"0\"};\n const char* nums8[] = { \"7\", \"0\"};\n drawBoxText(&edges[0], &labels[0], nums128, 2, 63, 45);\n drawBoxText(&edges[0], &labels[2], nums64, 2, 63, 95);\n drawBoxText(&edges[3], &labels[3], nums8, 1, 7, 160);\n drawBoxText(&edges[3], &labels[3], nums8, 1, 7, 210);\n drawBoxText(&edges[3], &labels[2], nums8, 1, 7, 260);\n drawBoxText(&edges[3], &labels[2], nums8, 1, 7, 310);\n drawBoxText(&edges[3], &labels[1], nums8, 1, 7, 360);\n drawBoxText(&edges[3], &labels[1], nums8, 1, 7, 410);\n drawBoxText(&edges[3], &labels[0], nums8, 1, 7, 460);\n drawBoxText(&edges[3], &labels[0], nums8, 1, 7, 510);\n}\n", + "width": 812, + "height": 685, + "hash": "b26119f9312d5f5d4011bf2dac94fafe", + "file": "illustrations", + "name": "Image_Info_Color_Type_RGBA_F32" +}, "Illustrations_Image_Info_Color_Type_RGB_101010": { "code": "void draw(SkCanvas* canvas) {\n canvas->scale(1.25f, 1.25f);\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextSize(10);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"32-bit word\", 5 + 20 * 16, 20, paint);\n canvas->drawString(\"little endian byte order\", 5 + 20 * 4, 85, paint);\n canvas->drawString(\"(low bits)\", 5 + 20 * 4, 137, paint);\n canvas->drawString(\"(low bits)\", 5 + 20 * 3, 187, paint);\n canvas->drawString(\"(high bits)\", 5 + 20 * 7, 187, paint);\n canvas->drawString(\"(low bits)\", 5 + 20 * 2, 237, paint);\n canvas->drawString(\"(high bits)\", 5 + 20 * 6, 237, paint);\n canvas->drawString(\"(high bits)\", 5 + 20 * 5, 287, paint);\n auto drawBoxText = [=](SkScalar e[], const char* s[], int count, int n, SkScalar yPos) -> void {\n SkPaint p(paint);\n p.setColor(SK_ColorRED);\n SkScalar xPos = 15;\n int width = n % 32 + 1;\n int lastN = n > 32 ? 32 : 0;\n for (; n >= lastN; --n) {\n for (int i = 0; i <= count; ++i) {\n int a = width - e[i];\n if (a == n || a == n + 1 || a == n - 32 || a == n - 31) {\n char num[3] = {(char) ('0' + n / 10), (char) ('0' + n % 10), '\\0'};\n canvas->drawString(n >= 10 ? num : &num[1], xPos, yPos - 5, p);\n break;\n }\n }\n xPos += 20;\n }\n p.setColor(SK_ColorBLACK);\n for (int i = 0; i < count; ++i) {\n canvas->drawString(s[i], 5 + (e[i] + e[i + 1]) * 10, yPos + 10, p);\n }\n p.setStyle(SkPaint::kStroke_Style);\n for (int i = 0; i <= count; ++i) {\n canvas->drawLine(5 + e[i] * 20, yPos, 5 + e[i] * 20, yPos + 15, p);\n }\n for (int i = 0; i < 2; ++i) {\n canvas->drawLine(5 + e[0] * 20, yPos + i * 15, 5 + e[count] * 20, yPos + i * 15, p);\n }\n };\n SkScalar edges[] = { 0, 2, 12, 22, 32,\n 0, 8,\n 0, 6, 8,\n 0, 4, 8,\n 0, 2, 8\n };\n const char* labels[] = { \"unused\", \"blue\", \"green\", \"red\" };\n drawBoxText(&edges[0], &labels[0], 4, 31, 45);\n drawBoxText(&edges[5], &labels[3], 1, 7, 110);\n drawBoxText(&edges[7], &labels[2], 2, 7, 160);\n drawBoxText(&edges[10], &labels[1], 2, 7, 210);\n drawBoxText(&edges[13], &labels[0], 2, 7, 260);\n}\n", "width": 812, @@ -3473,10 +3775,10 @@ "name": "Color_Type_RGBA_8888" }, "Image_Info_Color_Type_RGBA_F16": { - "code": "union FloatUIntUnion {\n uint32_t fUInt;\n float fFloat;\n};\nuint16_t FloatToHalf(float f) {\n static const FloatUIntUnion magic = { 15 << 23 };\n static const uint32_t round_mask = ~0xfffu;\n FloatUIntUnion floatUnion;\n floatUnion.fFloat = f;\n uint32_t sign = floatUnion.fUInt & 0x80000000u;\n floatUnion.fUInt ^= sign;\n floatUnion.fUInt &= round_mask;\n floatUnion.fFloat *= magic.fFloat;\n floatUnion.fUInt -= round_mask;\n return (floatUnion.fUInt >> 13) | (sign >> 16);\n}\n\nvoid draw(SkCanvas* canvas) {\n canvas->scale(16, 16);\n SkBitmap bitmap;\n SkImageInfo imageInfo = SkImageInfo::Make(2, 2, kRGBA_F16_SkColorType, kPremul_SkAlphaType);\n bitmap.allocPixels(imageInfo);\n SkCanvas offscreen(bitmap);\n offscreen.clear(SK_ColorGREEN);\n canvas->drawBitmap(bitmap, 0, 0);\n auto H = [](float c) -> uint16_t {\n return FloatToHalf(c);\n };\n // R G B A\n uint16_t red_f16[][4] = { { H(1.0f), H(0.0f), H(0.0f), H(1.0f) },\n { H(.75f), H(0.0f), H(0.0f), H(1.0f) },\n { H(.50f), H(0.0f), H(0.0f), H(1.0f) },\n { H(.25f), H(0.0f), H(0.0f), H(1.0f) } };\n uint16_t blue_f16[][4] = { { H(0.0f), H(0.0f), H(1.0f), H(1.0f) },\n { H(0.0f), H(0.0f), H(.75f), H(1.0f) },\n { H(0.0f), H(0.0f), H(.50f), H(1.0f) },\n { H(0.0f), H(0.0f), H(.25f), H(1.0f) } };\n SkPixmap redPixmap(imageInfo, red_f16, imageInfo.minRowBytes());\n if (bitmap.writePixels(redPixmap, 0, 0)) {\n canvas->drawBitmap(bitmap, 2, 2);\n }\n SkPixmap bluePixmap(imageInfo, blue_f16, imageInfo.minRowBytes());\n if (bitmap.writePixels(bluePixmap, 0, 0)) {\n canvas->drawBitmap(bitmap, 4, 4);\n }\n}\n", + "code": "union FloatUIntUnion {\n uint32_t fUInt;\n float fFloat;\n};\nuint16_t FloatToHalf(float f) {\n static const FloatUIntUnion magic = { 15 << 23 };\n static const uint32_t round_mask = ~0xfffu;\n FloatUIntUnion floatUnion;\n floatUnion.fFloat = f;\n uint32_t sign = floatUnion.fUInt & 0x80000000u;\n floatUnion.fUInt ^= sign;\n floatUnion.fUInt &= round_mask;\n floatUnion.fFloat *= magic.fFloat;\n floatUnion.fUInt -= round_mask;\n return (floatUnion.fUInt >> 13) | (sign >> 16);\n}\n\nvoid draw(SkCanvas* canvas) {\n canvas->scale(16, 16);\n SkBitmap bitmap;\n SkImageInfo imageInfo = SkImageInfo::Make(2, 2, kRGBA_F16_SkColorType, kPremul_SkAlphaType);\n bitmap.allocPixels(imageInfo);\n SkCanvas offscreen(bitmap);\n offscreen.clear(SK_ColorGREEN);\n canvas->drawBitmap(bitmap, 0, 0);\n auto H = [](float c) -> uint16_t {\n return FloatToHalf(c);\n };\n // R G B A\n uint16_t red_f16[][4] = { { H(1.0), H(0.0), H(0.0), H(1.0) },\n { H(.75), H(0.0), H(0.0), H(1.0) },\n { H(.50), H(0.0), H(0.0), H(1.0) },\n { H(.25), H(0.0), H(0.0), H(1.0) } };\n uint16_t blue_f16[][4] = { { H(0.0), H(0.0), H(1.0), H(1.0) },\n { H(0.0), H(0.0), H(.75), H(1.0) },\n { H(0.0), H(0.0), H(.50), H(1.0) },\n { H(0.0), H(0.0), H(.25), H(1.0) } };\n SkPixmap redPixmap(imageInfo, red_f16, imageInfo.minRowBytes());\n if (bitmap.writePixels(redPixmap, 0, 0)) {\n canvas->drawBitmap(bitmap, 2, 2);\n }\n SkPixmap bluePixmap(imageInfo, blue_f16, imageInfo.minRowBytes());\n if (bitmap.writePixels(bluePixmap, 0, 0)) {\n canvas->drawBitmap(bitmap, 4, 4);\n }\n}\n", "width": 256, "height": 96, - "hash": "788ac33198103a14a5076dc3e03f2f4b", + "hash": "dd81527bbdf5eaae7dd21ac04ab84f9e", "file": "SkImageInfo_Reference", "name": "Color_Type_RGBA_F16" }, @@ -6808,6 +7110,118 @@ "file": "SkPath_Reference", "name": "SkPath::transform_2" }, + "SkPicture_AbortCallback_abort": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::AbortCallback::abort()" +}, + "SkPicture_AbortCallback_empty_constructor": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::AbortCallback::AbortCallback()" +}, + "SkPicture_MakeFromData": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::MakeFromData" +}, + "SkPicture_MakeFromData_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::MakeFromData_2" +}, + "SkPicture_MakeFromStream": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::MakeFromStream" +}, + "SkPicture_MakePlaceholder": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::MakePlaceholder" +}, + "SkPicture_approximateBytesUsed": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::approximateBytesUsed" +}, + "SkPicture_approximateOpCount": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::approximateOpCount" +}, + "SkPicture_cullRect": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::cullRect" +}, + "SkPicture_destructor": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::AbortCallback::~AbortCallback()" +}, + "SkPicture_playback": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::playback()" +}, + "SkPicture_serialize": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::serialize()" +}, + "SkPicture_serialize_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::serialize_2" +}, + "SkPicture_uniqueID": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkPicture_Reference", + "name": "SkPicture::uniqueID" +}, "SkPixmap_erase": { "code": "void draw(SkCanvas* canvas) {\n uint32_t storage[2];\n SkImageInfo info = SkImageInfo::MakeN32Premul(1, 2);\n SkPixmap pixmap(info, storage, info.minRowBytes());\n pixmap.erase(SK_ColorBLUE, {0, 0, 1, 1});\n pixmap.erase(SK_ColorRED, {0, 1, 1, 2});\n SkBitmap bitmap;\n canvas->scale(20, 20);\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 0, 0);\n}", "width": 256, @@ -7152,6 +7566,358 @@ "file": "SkColor_Reference", "name": "SkRGBToHSV" }, + "SkRRect_Corner": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::Corner" +}, + "SkRRect_MakeEmpty": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::MakeEmpty" +}, + "SkRRect_MakeOval": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::MakeOval" +}, + "SkRRect_MakeRect": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::MakeRect" +}, + "SkRRect_MakeRectXY": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::MakeRectXY" +}, + "SkRRect_Type": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::Type" +}, + "SkRRect_contains": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::contains()" +}, + "SkRRect_copy_const_SkRRect": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::SkRRect(const SkRRect& rrect)" +}, + "SkRRect_copy_operator": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::operator=(const SkRRect& rrect)" +}, + "SkRRect_dump": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::dump()" +}, + "SkRRect_dumpHex": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::dumpHex" +}, + "SkRRect_dump_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::dump_2" +}, + "SkRRect_empty_constructor": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::SkRRect()" +}, + "SkRRect_equal_operator": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::operator==(const SkRRect& a, const SkRRect& b)" +}, + "SkRRect_getBounds": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::getBounds" +}, + "SkRRect_getSimpleRadii": { + "code": "void draw(SkCanvas* canvas) {\n auto drawDetails = [=](const SkRRect& rrect) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(12);\n canvas->drawRRect(rrect, paint);\n SkVector corner = rrect.getSimpleRadii();\n std::string label = \"corner: \" + std::to_string(corner.fX).substr(0, 3) + \", \" +\n std::to_string(corner.fY).substr(0, 3);\n canvas->drawString(label.c_str(), 64, 90, paint);\n canvas->translate(128, 0);\n };\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n drawDetails(rrect);\n rrect.setRectXY(rrect.getBounds(), 5, 8);\n drawDetails(rrect);\n}", + "width": 256, + "height": 256, + "hash": "f0e02101ecbdb5a2963ec82e7832afb1", + "file": "SkRRect_Reference", + "name": "SkRRect::getSimpleRadii" +}, + "SkRRect_getType": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::getType" +}, + "SkRRect_inset": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::inset()" +}, + "SkRRect_inset_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::inset_2" +}, + "SkRRect_isComplex": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkVector radii[] = {{25, 30}, {40, 30}, {40, 30}, {20, 30}};\n SkRRect rrect;\n rrect.setRectRadii({30, 10, 100, 60}, radii);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isComplex() ? \"complex\" : \"not complex\", 64, 90, paint);\n radii[0].fX = 20;\n rrect.setRectRadii(rrect.getBounds(), radii);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isComplex() ? \"complex\" : \"not complex\", 64, 90, paint);\n}", + "width": 256, + "height": 256, + "hash": "75db3f4e4757478bca641bccf89b9398", + "file": "SkRRect_Reference", + "name": "SkRRect::isComplex" +}, + "SkRRect_isEmpty": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkRRect rrect = SkRRect::MakeRectXY({30, 10, 100, 60}, 10, 5);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isEmpty() ? \"empty\" : \"not empty\", 64, 90, paint);\n rrect.inset(40, 0);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isEmpty() ? \"empty\" : \"not empty\", 64, 90, paint);\n}", + "width": 256, + "height": 100, + "hash": "3afe4ea247923e06326aeb2b165c7485", + "file": "SkRRect_Reference", + "name": "SkRRect::isEmpty" +}, + "SkRRect_isNinePatch": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkVector radii[] = {{20, 30}, {40, 30}, {40, 30}, {20, 30}};\n SkRRect rrect;\n rrect.setRectRadii({30, 10, 100, 60}, radii);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isNinePatch() ? \"9 patch\" : \"not 9 patch\", 64, 90, paint);\n radii[0].fX = 35;\n rrect.setRectRadii(rrect.getBounds(), radii);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isNinePatch() ? \"9 patch\" : \"not 9 patch\", 64, 90, paint);\n}", + "width": 256, + "height": 100, + "hash": "568cb730e66d0df09a7d9bd9d6142c9e", + "file": "SkRRect_Reference", + "name": "SkRRect::isNinePatch" +}, + "SkRRect_isOval": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkRRect rrect = SkRRect::MakeRectXY({30, 10, 100, 60}, 40, 30);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isOval() ? \"oval\" : \"not oval\", 64, 90, paint);\n rrect.setRectXY(rrect.getBounds(), 35, 25);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isOval() ? \"oval\" : \"not oval\", 64, 90, paint);\n}", + "width": 256, + "height": 100, + "hash": "ab9b3aef7896aee80b780789848fbba4", + "file": "SkRRect_Reference", + "name": "SkRRect::isOval" +}, + "SkRRect_isRect": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isRect() ? \"rect\" : \"not rect\", 64, 90, paint);\n SkVector radii[] = {{10, 10}, {0, 0}, {0, 0}, {0, 0}};\n rrect.setRectRadii(rrect.getBounds(), radii);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isRect() ? \"rect\" : \"not rect\", 64, 90, paint);\n}", + "width": 256, + "height": 100, + "hash": "e2dcdad0e9cb7ba3e78a9871e9229753", + "file": "SkRRect_Reference", + "name": "SkRRect::isRect" +}, + "SkRRect_isSimple": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkVector radii[] = {{40, 30}, {40, 30}, {40, 30}, {40, 30}};\n SkRRect rrect;\n rrect.setRectRadii({30, 10, 100, 60}, radii);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isSimple() ? \"simple\" : \"not simple\", 64, 90, paint);\n radii[0].fX = 35;\n rrect.setRectRadii(rrect.getBounds(), radii);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isSimple() ? \"simple\" : \"not simple\", 64, 90, paint);\n}", + "width": 256, + "height": 100, + "hash": "65bbb109483ed79edb32027cf71851eb", + "file": "SkRRect_Reference", + "name": "SkRRect::isSimple" +}, + "SkRRect_isValid": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::isValid" +}, + "SkRRect_kSizeInMemory": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::kSizeInMemory" +}, + "SkRRect_makeOffset": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::makeOffset" +}, + "SkRRect_notequal_operator": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::operator!=(const SkRRect& a, const SkRRect& b)" +}, + "SkRRect_offset": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::offset()" +}, + "SkRRect_outset": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::outset()" +}, + "SkRRect_outset_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::outset_2" +}, + "SkRRect_radii": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::radii()" +}, + "SkRRect_readFromMemory": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::readFromMemory" +}, + "SkRRect_rect": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::rect()" +}, + "SkRRect_setEmpty": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n canvas->drawRRect(rrect, paint);\n rrect.setEmpty();\n paint.setColor(SK_ColorBLUE);\n canvas->drawRRect(rrect, paint);\n}", + "width": 256, + "height": 256, + "hash": "59c1025b8116ec1d3b55f4f6306d1e37", + "file": "SkRRect_Reference", + "name": "SkRRect::setEmpty" +}, + "SkRRect_setNinePatch": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::setNinePatch" +}, + "SkRRect_setOval": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::setOval" +}, + "SkRRect_setRect": { + "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n canvas->drawRRect(rrect, paint);\n rrect.setRect({60, 30, 120, 80});\n paint.setColor(SK_ColorBLUE);\n canvas->drawRRect(rrect, paint);\n}", + "width": 256, + "height": 256, + "hash": "fc97ef7310473b9ba6dc7202efbebb3b", + "file": "SkRRect_Reference", + "name": "SkRRect::setRect" +}, + "SkRRect_setRectRadii": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::setRectRadii" +}, + "SkRRect_setRectXY": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::setRectXY" +}, + "SkRRect_transform": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::transform()" +}, + "SkRRect_type": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::type()" +}, + "SkRRect_writeToMemory": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkRRect_Reference", + "name": "SkRRect::writeToMemory" +}, "SkSurface_MakeFromBackendTexture": { "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::MakeFromBackendTexture(context,\n backEndTexture, kTopLeft_GrSurfaceOrigin, 0,\n kRGBA_8888_SkColorType, nullptr, nullptr);\n auto surfaceCanvas = gpuSurface->getCanvas();\n surfaceCanvas->drawString(\"GPU rocks!\", 20, 40, paint);\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n canvas->drawImage(image, 0, 0);\n}", "width": 256, diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md index bb8977a294..26e9795b37 100644 --- a/site/user/api/undocumented.md +++ b/site/user/api/undocumented.md @@ -17,36 +17,6 @@ undocumented # <a name='Big_Endian'>Big Endian</a> -# <a name='Blend_Mode'>Blend Mode</a> - -## <a name='SkBlendMode'>Enum SkBlendMode</a> - -### Constants - -<table style='border-collapse: collapse; width: 62.5em'> - <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> -<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> -<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> - <tr style='background-color: #f0f0f0; '> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrc'><code>SkBlendMode::kSrc</code></a></td> - <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -</td> - </tr> - <tr> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOver'><code>SkBlendMode::kSrcOver</code></a></td> - <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -</td> - </tr> - <tr style='background-color: #f0f0f0; '> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kPlus'><code>SkBlendMode::kPlus</code></a></td> - <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td> - <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> -</td> - </tr> -</table> - # <a name='Cartesian_Coordinate'>Cartesian Coordinate</a> # <a name='Circle'>Circle</a> @@ -181,6 +151,10 @@ SK_API void <a href='#SkDebugf'>SkDebugf</a>(const char format[], ...) # <a name='Descenders'>Descenders</a> +# <a name='Deserial_Procs'>Deserial Procs</a> + +# <a name='SkDeserialProcs'>Struct SkDeserialProcs</a> + # <a name='Destructor'>Destructor</a> # <a name='Device'>Device</a> @@ -417,20 +391,7 @@ bool SK_API <a href='#Op'>Op</a>(const <a href='SkPath_Reference#SkPath'>SkPath< # <a name='SkPathEffect'>Class SkPathEffect</a> -# <a name='Picture'>Picture</a> - -# <a name='SkPicture'>Class SkPicture</a> - -<a name='SkPicture_playback'></a> -## playback - -<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -virtual void <a href='#SkPicture_playback'>playback</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>*, AbortCallback* = nullptr) const = 0 -</pre> - ---- - -## <a name='Recorder'>Recorder</a> +# <a name='Picture_Recorder'>Picture Recorder</a> # <a name='SkPictureRecorder'>Class SkPictureRecorder</a> @@ -555,28 +516,6 @@ bool <a href='#GrBackendRenderTarget_isValid'>isValid</a>() const # <a name='Right_Side_Bearing'>Right Side Bearing</a> -# <a name='Round_Rect'>Round Rect</a> - -# <a name='SkRRect'>Class SkRRect</a> - -<a name='SkRRect_dump'></a> -## dump - -<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkRRect_dump'>dump</a>() const -</pre> - ---- - -<a name='SkRRect_dumpHex'></a> -## dumpHex - -<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> -void <a href='#SkRRect_dumpHex'>dumpHex</a>() const -</pre> - ---- - # <a name='SVG'>SVG</a> ## <a name='Canvas'>Canvas</a> @@ -591,6 +530,10 @@ void <a href='#SkRRect_dumpHex'>dumpHex</a>() const ## <a name='SkScalar'>Typedef SkScalar</a> +# <a name='Serial_Procs'>Serial Procs</a> + +# <a name='SkSerialProcs'>Struct SkSerialProcs</a> + # <a name='Shader'>Shader</a> # <a name='SkShader'>Class SkShader</a> @@ -633,6 +576,16 @@ static <a href='#sk_sp'>sk sp</a><<a href='#SkShader'>SkShader</a>> <a hre --- +<a name='SkShader_MakeCompose'></a> +## MakeCompose + +<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> +static <a href='#sk_sp'>sk sp</a><<a href='#SkShader'>SkShader</a>> <a href='#SkShader_MakeCompose'>MakeCompose</a>(<a href='#sk_sp'>sk sp</a><<a href='#SkShader'>SkShader</a>> dst, <a href='#sk_sp'>sk sp</a><<a href='#SkShader'>SkShader</a>> src, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, + float lerp = 1) +</pre> + +--- + # <a name='Size'>Size</a> # <a name='SkSize'>Struct SkSize</a> @@ -641,7 +594,7 @@ static <a href='#sk_sp'>sk sp</a><<a href='#SkShader'>SkShader</a>> <a hre # <a name='Stream'>Stream</a> -# <a name='SkWStream'>Class SkWStream</a> +# <a name='SkStream'>Class SkStream</a> # <a name='String'>String</a> @@ -719,6 +672,14 @@ bool <a href='#GrBackendTexture_isValid'>isValid</a>() const ## <a name='Texs'>Texs</a> +# <a name='WStream'>WStream</a> + +# <a name='SkWStream'>Class SkWStream</a> + +# <a name='Xfermode_Image_Filter'>Xfermode Image Filter</a> + +# <a name='SkXfermodeImageFilter'>Class SkXfermodeImageFilter</a> + # <a name='YUV_Component_U'>YUV Component U</a> # <a name='YUV_Component_V'>YUV Component V</a> |