fix bookmaker

Remove references to old SkPaint::Hinting.

Also fix bug recently introduced that made
unlinkable words use the last link found.

TBR=reed@google.com

Docs-Preview: https://skia.org/?cl=170266
Bug: skia:
Change-Id: I8b83bcb479bd3f79699a1c74818a817190fd42a5
Reviewed-on: https://skia-review.googlesource.com/c/170266
Commit-Queue: Cary Clark <caryclark@skia.org>
Auto-Submit: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
This commit is contained in:
Cary Clark 2018-11-09 16:04:58 -05:00 committed by Skia Commit-Bot
parent 540d57181f
commit 777eede780
27 changed files with 9255 additions and 9458 deletions

View File

@ -296,70 +296,7 @@ $$$# # restore original markup character
#Line # glyph outline adjustment ##
##
#Enum Hinting
#Line # level of glyph outline adjustment ##
#Code
#Populate
##
Hinting adjusts the glyph outlines so that the shape provides a uniform
look at a given point size on font engines that support it. Hinting may have a
muted effect or no effect at all depending on the platform.
The four levels roughly control corresponding features on platforms that use FreeType
as the Font_Engine.
#Const kNo_Hinting 0
#Line # glyph outlines unchanged ##
Leaves glyph outlines unchanged from their native representation.
With FreeType, this is equivalent to the FT_LOAD_NO_HINTING
bit-field constant supplied to FT_Load_Glyph, which indicates that the vector
outline being loaded should not be fitted to the pixel grid but simply scaled
to 26.6 fractional pixels.
##
#Const kSlight_Hinting 1
#Line # minimal modification to improve contrast ##
Modifies glyph outlines minimally to improve contrast.
With FreeType, this is equivalent in spirit to the
FT_LOAD_TARGET_LIGHT value supplied to FT_Load_Glyph. It chooses a
lighter hinting algorithm for non-monochrome modes.
Generated Glyphs may be fuzzy but better resemble their original shape.
##
#Const kNormal_Hinting 2
#Line # glyph outlines modified to improve contrast ##
Modifies glyph outlines to improve contrast. This is the default.
With FreeType, this supplies FT_LOAD_TARGET_NORMAL to FT_Load_Glyph,
choosing the default hinting algorithm, which is optimized for standard
gray-level rendering.
##
#Const kFull_Hinting 3
#Line # modifies glyph outlines for maximum contrast ##
Modifies glyph outlines for maximum contrast. With FreeType, this selects
FT_LOAD_TARGET_LCD or FT_LOAD_TARGET_LCD_V if kLCDRenderText_Flag is set.
FT_LOAD_TARGET_LCD is a variant of FT_LOAD_TARGET_NORMAL optimized for
horizontally decimated LCD displays; FT_LOAD_TARGET_LCD_V is a
variant of FT_LOAD_TARGET_NORMAL optimized for vertically decimated LCD displays.
##
#Bug 915
On OS_X and iOS, hinting controls whether Core_Graphics dilates the font outlines
to account for LCD text. No hinting uses Core_Text grayscale output.
Normal hinting uses Core_Text LCD output. If kLCDRenderText_Flag is clear,
the LCD output is reduced to a single grayscale channel.
On Windows with DirectWrite, Hinting has no effect.
Hinting defaults to SkFontHinting::kNormal.
Set SkPaintDefaults_Hinting at compile time to change the default setting.
#ToDo add an illustration? linux running GM:typefacerendering is best for this
the hinting variations are every other character horizontally
#ToDo ##
#Enum ##
#Method Hinting getHinting() const
#Method SkFontHinting getHinting() const
#In Hinting
#Line # returns Hinting, glyph outline adjustment level ##
#Populate
@ -391,21 +328,6 @@ Set SkPaintDefaults_Hinting at compile time to change the default setting.
##
##
#Method void setHinting(Hinting h)
#In Hinting
#Populate
#Example
SkPaint paint1, paint2;
paint2.setHinting(SkFontHinting::kNormal);
SkDebugf("paint1 %c= paint2\n", paint1 == paint2 ? '=' : ':');
#StdOut
paint1 == paint2
##
##
##
# ------------------------------------------------------------------------------
#Subtopic Flags
#Line # attributes represented by single bits ##
@ -1050,8 +972,8 @@ kEmbeddedBitmapText_Flag at compile time.
If Hinting is set to SkFontHinting::kNormal or SkFontHinting::kFull, Automatic_Hinting
instructs the Font_Manager to always hint Glyphs.
Automatic_Hinting has no effect if Hinting is set to kNo_Hinting or
kSlight_Hinting.
Automatic_Hinting has no effect if Hinting is set to SkFontHinting::kNone or
SkFontHinting::kSlight.
Automatic_Hinting only affects platforms that use FreeType as the Font_Manager.
#Subtopic Automatic_Hinting ##
@ -1187,7 +1109,7 @@ void draw(SkCanvas* canvas) {
#Line # glyph spacing affected by hinting ##
#Alias Full_Hinting_Spacing ## # long winded enough -- maybe things with two underscores auto-aliased?
if Hinting is set to kFull_Hinting, Full_Hinting_Spacing adjusts the character
if Hinting is set to SkFontHinting::kFull, Full_Hinting_Spacing adjusts the character
spacing by the difference of the hinted and unhinted Left_Side_Bearing and
Right_Side_Bearing. Full_Hinting_Spacing only applies to platforms that use
FreeType as their Font_Engine.

View File

@ -355,9 +355,9 @@ public:
*/
void setEmbeddedBitmapText(bool useEmbeddedBitmapText);
/** Returns true if SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting, and if
platform uses FreeType as the font manager. If true, instructs
the font manager to always hint glyphs.
/** Returns true if SkPaint::Hinting is set to SkFontHinting::kNormal or
SkFontHinting::kFull, and if platform uses FreeType as the font manager.
If true, instructs the font manager to always hint glyphs.
Equivalent to getFlags() masked with kAutoHinting_Flag.
@ -368,10 +368,10 @@ public:
}
/** Sets whether to always hint glyphs.
If SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting and useAutohinter is set,
instructs the font manager to always hint glyphs.
auto-hinting has no effect if SkPaint::Hinting is set to kNo_Hinting or
kSlight_Hinting.
If SkPaint::Hinting is set to SkFontHinting::kNormal or SkFontHinting::kFull
and useAutohinter is set, instructs the font manager to always hint glyphs.
auto-hinting has no effect if SkPaint::Hinting is set to SkFontHinting::kNone or
SkFontHinting::kSlight.
Only affects platforms that use FreeType as the font manager.

View File

@ -8,31 +8,31 @@ SkAutoCanvasRestore Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a> {
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>public</a>:
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <a href='SkCanvas_Reference#Canvas'>bool</a> <a href='SkCanvas_Reference#Canvas'>doSave</a>);
public:
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, bool doSave);
~<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>();
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>void</a> <a href='#SkAutoCanvasRestore_restore'>restore()</a>;
void <a href='#SkAutoCanvasRestore_restore'>restore()</a>;
};
</pre>
Stack helper class calls <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_restoreToCount'>restoreToCount</a> <a href='#SkCanvas_restoreToCount'>when</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>goes</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>out</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>of</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>scope</a>. <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>Use</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>this</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>to</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>guarantee</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>that</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>the</a> <a href='SkCanvas_Reference#Canvas'>canvas</a> <a href='SkCanvas_Reference#Canvas'>is</a> <a href='SkCanvas_Reference#Canvas'>restored</a> <a href='SkCanvas_Reference#Canvas'>to</a> <a href='SkCanvas_Reference#Canvas'>a</a> <a href='SkCanvas_Reference#Canvas'>known</a>
<a href='SkCanvas_Reference#Canvas'>state</a>.
Stack helper class calls <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_restoreToCount'>restoreToCount</a> when <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>
goes out of scope. Use this to guarantee that the <a href='SkCanvas_Reference#Canvas'>canvas</a> is restored to a known
state.
<a name='SkAutoCanvasRestore_SkCanvas_star'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <a href='SkCanvas_Reference#Canvas'>bool</a> <a href='SkCanvas_Reference#Canvas'>doSave</a>)
<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, bool doSave)
</pre>
Preserves <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save()</a> <a href='#SkCanvas_save'>count</a>. <a href='#SkCanvas_save'>Optionally</a> <a href='#SkCanvas_save'>saves</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>clip</a> <a href='SkCanvas_Reference#SkCanvas'>and</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkMatrix_Reference#Matrix'>matrix</a>.
Preserves <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save()</a> count. Optionally saves <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> clip and <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkMatrix_Reference#Matrix'>matrix</a>.
### Parameters
<table> <tr> <td><a name='SkAutoCanvasRestore_SkCanvas_star_canvas'><code><strong>canvas</strong></code></a></td>
<td><a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>to</a> <a href='SkCanvas_Reference#SkCanvas'>guard</a></td>
<td><a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> to guard</td>
</tr>
<tr> <td><a name='SkAutoCanvasRestore_SkCanvas_star_doSave'><code><strong>doSave</strong></code></a></td>
<td>call <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save()</a></td>
@ -41,7 +41,7 @@ Preserves <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas
### Return Value
utility to restore <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>state</a> <a href='SkCanvas_Reference#SkCanvas'>on</a> <a href='SkCanvas_Reference#SkCanvas'>destructor</a>
utility to restore <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> state on destructor
### Example
@ -59,7 +59,7 @@ utility to restore <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='S
~<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a>()
</pre>
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>to</a> <a href='SkCanvas_Reference#SkCanvas'>saved</a> <a href='SkCanvas_Reference#SkCanvas'>state</a>. <a href='SkCanvas_Reference#SkCanvas'>Destructor</a> <a href='SkCanvas_Reference#SkCanvas'>is</a> <a href='SkCanvas_Reference#SkCanvas'>called</a> <a href='SkCanvas_Reference#SkCanvas'>when</a> <a href='SkCanvas_Reference#SkCanvas'>container</a> <a href='SkCanvas_Reference#SkCanvas'>goes</a> <a href='SkCanvas_Reference#SkCanvas'>out</a> <a href='SkCanvas_Reference#SkCanvas'>of</a>
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> to saved state. Destructor is called when container goes out of
scope.
### See Also
@ -74,8 +74,8 @@ scope.
void <a href='#SkAutoCanvasRestore_restore'>restore()</a>
</pre>
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>to</a> <a href='SkCanvas_Reference#SkCanvas'>saved</a> <a href='SkCanvas_Reference#SkCanvas'>state</a> <a href='SkCanvas_Reference#SkCanvas'>immediately</a>. <a href='SkCanvas_Reference#SkCanvas'>Subsequent</a> <a href='SkCanvas_Reference#SkCanvas'>calls</a> <a href='SkCanvas_Reference#SkCanvas'>and</a>
~<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>have</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>no</a> <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>effect</a>.
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> to saved state immediately. Subsequent calls and
~<a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a> have no effect.
### Example

File diff suppressed because it is too large Load Diff

View File

@ -4,41 +4,41 @@ SkBlendMode Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
enum class <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> {
<a href='SkBlendMode_Reference#SkBlendMode'>kClear</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSrc</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDst</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSrcOver</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDstOver</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSrcIn</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDstIn</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSrcOut</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDstOut</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSrcATop</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDstATop</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kXor</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kPlus</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kModulate</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kScreen</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kLastCoeffMode</a> = <a href='SkBlendMode_Reference#SkBlendMode'>kScreen</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kOverlay</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDarken</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kLighten</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kColorDodge</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kColorBurn</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kHardLight</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSoftLight</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kDifference</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kExclusion</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kMultiply</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kLastSeparableMode</a> = <a href='SkBlendMode_Reference#SkBlendMode'>kMultiply</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kHue</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kSaturation</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kColor</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kLuminosity</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>kLastMode</a> = <a href='SkBlendMode_Reference#SkBlendMode'>kLuminosity</a>,
kClear,
kSrc,
kDst,
kSrcOver,
kDstOver,
kSrcIn,
kDstIn,
kSrcOut,
kDstOut,
kSrcATop,
kDstATop,
kXor,
kPlus,
kModulate,
kScreen,
kLastCoeffMode = kScreen,
kOverlay,
kDarken,
kLighten,
kColorDodge,
kColorBurn,
kHardLight,
kSoftLight,
kDifference,
kExclusion,
kMultiply,
kLastSeparableMode = kMultiply,
kHue,
kSaturation,
kColor,
kLuminosity,
kLastMode = kLuminosity,
};
<a href='SkBlendMode_Reference#SkBlendMode'>const</a> <a href='SkBlendMode_Reference#SkBlendMode'>char</a>* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> <a href='SkBlendMode_Reference#SkBlendMode'>blendMode</a>);
const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> blendMode);
</pre>
<a name='SkBlendMode'></a>
@ -57,8 +57,8 @@ enum class <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> {
<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='#Clear'>Clear</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>components</a> <a href='SkColor_Reference#Color'>set</a> <a href='SkColor_Reference#Color'>to</a> <a href='SkColor_Reference#Color'>zero</a>;
<a href='SkColor_Reference#Color'>a</a> <a href='SkColor_Reference#Color'>fully</a> <a href='SkColor_Reference#Color'>transparent</a> <a href='undocumented#Pixel'>pixel</a>.
Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components set to zero;
a fully transparent <a href='undocumented#Pixel'>pixel</a>.
</td>
</tr>
<tr>
@ -66,8 +66,8 @@ Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='S
<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='#Src'>Src</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source. Destination <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>component</a> <a href='SkColor_Reference#Color'>values</a>
<a href='SkColor_Reference#Color'>are</a> <a href='SkColor_Reference#Color'>ignored</a>.
Replaces destination with source. Destination <a href='SkColor_Reference#Alpha'>alpha</a> and <a href='SkColor_Reference#Color'>color</a> component values
are ignored.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
@ -75,8 +75,8 @@ Replaces destination with source. Destination <a href='SkColor_Reference#Alpha'>
<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='#Dst'>Dst</a>&nbsp;</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> <a href='SkPaint_Reference#Paint'>set</a> <a href='SkPaint_Reference#Paint'>to</a> <a href='#SkBlendMode_kDst'>kDst</a> <a href='#SkBlendMode_kDst'>has</a>
<a href='#SkBlendMode_kDst'>no</a> <a href='#SkBlendMode_kDst'>effect</a>.
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>
@ -85,7 +85,7 @@ Preserves destination, ignoring source. Drawing with <a href='SkPaint_Reference#
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Over'>Src&nbsp;Over</a>&nbsp;</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> <a href='#Blend_Mode'>for</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>.
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; '>
@ -328,14 +328,14 @@ Used by tests to iterate through all valid values.
---
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> <a href='#SkBlendMode_kClear'>sets</a> <a href='#SkBlendMode_kClear'>destination</a> <a href='#SkBlendMode_kClear'>to</a>: <code>[0, 0]</code>.
Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> <a href='#SkBlendMode_kClear'>to</a> <a href='#SkBlendMode_kClear'>initialize</a> <a href='#SkBlendMode_kClear'>a</a> <a href='#SkBlendMode_kClear'>buffer</a> <a href='#SkBlendMode_kClear'>to</a> <a href='#SkBlendMode_kClear'>fully</a> <a href='#SkBlendMode_kClear'>transparent</a> <a href='#SkBlendMode_kClear'>pixels</a> <a href='#SkBlendMode_kClear'>when</a>
<a href='#SkBlendMode_kClear'>creating</a> <a href='#SkBlendMode_kClear'>a</a> <a href='#SkBlendMode_kClear'>mask</a> <a href='#SkBlendMode_kClear'>with</a> <a href='#SkBlendMode_kClear'>irregular</a> <a href='#SkBlendMode_kClear'>edges</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> sets destination to: <code>[0, 0]</code>.
Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>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> <a href='SkColor_Reference#SK_ColorYELLOW'>is</a> <a href='SkColor_Reference#SK_ColorYELLOW'>ignored</a> <a href='SkColor_Reference#SK_ColorYELLOW'>because</a> <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> <a href='#SkBlendMode_kClear'>ignores</a> <a href='#SkBlendMode_kClear'>the</a> <a href='#SkBlendMode_kClear'>source</a> <a href='undocumented#Pixel'>pixel</a>
<a href='undocumented#Pixel'>value</a> <a href='undocumented#Pixel'>and</a> <a href='undocumented#Pixel'>the</a> <a href='undocumented#Pixel'>destination</a> <a href='undocumented#Pixel'>pixel</a> <a href='undocumented#Pixel'>value</a>, <a href='undocumented#Pixel'>always</a> <a href='undocumented#Pixel'>setting</a> <a href='undocumented#Pixel'>the</a> <a href='undocumented#Pixel'>destination</a> <a href='undocumented#Pixel'>to</a> <a href='undocumented#Pixel'>zero</a>.
<div><fiddle-embed name="a9b56a26ca469bab9ab10e16f62fb2e2"><div><a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a> is ignored because <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> ignores the source <a href='undocumented#Pixel'>pixel</a>
value and the destination <a href='undocumented#Pixel'>pixel</a> value, always setting the destination to zero.
</div></fiddle-embed></div>
### See Also
@ -346,16 +346,16 @@ Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBle
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> <a href='#SkBlendMode_kSrc'>sets</a> <a href='#SkBlendMode_kSrc'>destination</a> <a href='#SkBlendMode_kSrc'>to</a>: <code>[Sa, Sc]</code>.
Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> <a href='#SkBlendMode_kSrc'>to</a> <a href='#SkBlendMode_kSrc'>copy</a> <a href='#SkBlendMode_kSrc'>one</a> <a href='#SkBlendMode_kSrc'>buffer</a> <a href='#SkBlendMode_kSrc'>to</a> <a href='#SkBlendMode_kSrc'>another</a>. <a href='#SkBlendMode_kSrc'>All</a> <a href='#SkBlendMode_kSrc'>pixels</a> <a href='#SkBlendMode_kSrc'>are</a> <a href='#SkBlendMode_kSrc'>copied</a>,
<a href='#SkBlendMode_kSrc'>regardless</a> <a href='#SkBlendMode_kSrc'>of</a> <a href='#SkBlendMode_kSrc'>source</a> <a href='#SkBlendMode_kSrc'>and</a> <a href='#SkBlendMode_kSrc'>destination</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>values</a>. <a href='SkColor_Reference#Alpha'>As</a> <a href='SkColor_Reference#Alpha'>a</a> <a href='SkColor_Reference#Alpha'>parameter</a> <a href='SkColor_Reference#Alpha'>to</a>
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>, <a href='#SkCanvas_drawAtlas'>selects</a> <a href='undocumented#Sprite'>sprites</a> <a href='undocumented#Sprite'>and</a> <a href='undocumented#Sprite'>ignores</a> <a href='undocumented#Sprite'>colors</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> sets destination to: <code>[Sa, Sc]</code>.
Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>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'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>, selects <a href='undocumented#Sprite'>sprites</a> and ignores colors.
### Example
<div><fiddle-embed name="0fc85dd916cc1a5896d36c80b9847391"><div><a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> <a href='#SkBlendMode_kSrc'>does</a> <a href='#SkBlendMode_kSrc'>not</a> <a href='#SkBlendMode_kSrc'>blend</a> <a href='#SkBlendMode_kSrc'>transparent</a> <a href='#SkBlendMode_kSrc'>pixels</a> <a href='#SkBlendMode_kSrc'>with</a> <a href='#SkBlendMode_kSrc'>existing</a> <a href='#SkBlendMode_kSrc'>background</a>;
<a href='#SkBlendMode_kSrc'>it</a> <a href='#SkBlendMode_kSrc'>punches</a> <a href='#SkBlendMode_kSrc'>a</a> <a href='#SkBlendMode_kSrc'>transparent</a> <a href='#SkBlendMode_kSrc'>hole</a> <a href='#SkBlendMode_kSrc'>in</a> <a href='#SkBlendMode_kSrc'>the</a> <a href='#SkBlendMode_kSrc'>existing</a> <a href='SkImage_Reference#Image'>image</a>.
<div><fiddle-embed name="0fc85dd916cc1a5896d36c80b9847391"><div><a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> does not blend transparent pixels with existing background;
it punches a transparent hole in the existing <a href='SkImage_Reference#Image'>image</a>.
</div></fiddle-embed></div>
### See Also
@ -366,11 +366,11 @@ Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBle
---
Given: <code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a> <a href='#SkBlendMode_kDst'>preserves</a> <a href='#SkBlendMode_kDst'>destination</a> <a href='#SkBlendMode_kDst'>set</a> <a href='#SkBlendMode_kDst'>to</a>: <code>[Da, Dc]</code>.
Setting <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#Blend_Mode'>Blend_Mode</a> <a href='#Blend_Mode'>to</a> <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a> <a href='#SkBlendMode_kDst'>causes</a> <a href='#SkBlendMode_kDst'>drawing</a> <a href='#SkBlendMode_kDst'>with</a>
<a href='SkPaint_Reference#Paint'>Paint</a> <a href='SkPaint_Reference#Paint'>to</a> <a href='SkPaint_Reference#Paint'>have</a> <a href='SkPaint_Reference#Paint'>no</a> <a href='SkPaint_Reference#Paint'>effect</a>. <a href='SkPaint_Reference#Paint'>As</a> <a href='SkPaint_Reference#Paint'>a</a> <a href='SkPaint_Reference#Paint'>parameter</a> <a href='SkPaint_Reference#Paint'>to</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>,
<a href='#SkCanvas_drawAtlas'>selects</a> <a href='#SkCanvas_drawAtlas'>colors</a> <a href='#SkCanvas_drawAtlas'>and</a> <a href='#SkCanvas_drawAtlas'>ignores</a> <a href='undocumented#Sprite'>sprites</a>.
Given: <code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a> preserves destination set to: <code>[Da, Dc]</code>.
Setting <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#Blend_Mode'>Blend_Mode</a> to <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>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'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>,
selects colors and ignores <a href='undocumented#Sprite'>sprites</a>.
### Example
@ -380,13 +380,13 @@ Setting <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#Blend_Mode'>Blend_
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> <a href='#SkBlendMode_kSrcOver'>replaces</a> <a href='#SkBlendMode_kSrcOver'>destination</a> <a href='#SkBlendMode_kSrcOver'>with</a>: <code>[Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)]</code>,
drawing source over destination. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> <a href='#SkBlendMode_kSrcOver'>is</a> <a href='#SkBlendMode_kSrcOver'>the</a> <a href='#SkBlendMode_kSrcOver'>default</a> <a href='#SkBlendMode_kSrcOver'>for</a> <a href='SkPaint_Reference#Paint'>Paint</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> replaces destination with: <code>[Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)]</code>,
drawing source over destination. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> is the default for <a href='SkPaint_Reference#Paint'>Paint</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> <a href='#SkBlendMode_kSrcOver'>cannot</a> <a href='#SkBlendMode_kSrcOver'>make</a> <a href='#SkBlendMode_kSrcOver'>destination</a> <a href='#SkBlendMode_kSrcOver'>more</a> <a href='#SkBlendMode_kSrcOver'>transparent</a>; <a href='#SkBlendMode_kSrcOver'>the</a> <a href='#SkBlendMode_kSrcOver'>result</a> <a href='#SkBlendMode_kSrcOver'>will</a>
<a href='#SkBlendMode_kSrcOver'>be</a> <a href='#SkBlendMode_kSrcOver'>at</a> <a href='#SkBlendMode_kSrcOver'>least</a> <a href='#SkBlendMode_kSrcOver'>as</a> <a href='#SkBlendMode_kSrcOver'>opaque</a> <a href='#SkBlendMode_kSrcOver'>as</a> <a href='#SkBlendMode_kSrcOver'>the</a> <a href='#SkBlendMode_kSrcOver'>less</a> <a href='#SkBlendMode_kSrcOver'>transparent</a> <a href='#SkBlendMode_kSrcOver'>of</a> <a href='#SkBlendMode_kSrcOver'>source</a> <a href='#SkBlendMode_kSrcOver'>and</a> <a href='#SkBlendMode_kSrcOver'>original</a> <a href='#SkBlendMode_kSrcOver'>destination</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>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
@ -396,9 +396,9 @@ drawing source over destination. <a href='SkBlendMode_Reference#SkBlendMode'>SkB
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOver'>kDstOver</a> <a href='#SkBlendMode_kDstOver'>replaces</a> <a href='#SkBlendMode_kDstOver'>destination</a> <a href='#SkBlendMode_kDstOver'>with</a>: <code>[Da + Sa * (1 - Da), Dc + Sc * (1 - Da)]</code>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOver'>kDstOver</a> replaces destination with: <code>[Da + Sa * (1 - Da), Dc + Sc * (1 - Da)]</code>,
drawing destination over source. Has no effect destination if is opaque.
### Example
@ -409,9 +409,9 @@ drawing destination over source. Has no effect destination if is opaque.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcIn'>kSrcIn</a> <a href='#SkBlendMode_kSrcIn'>replaces</a> <a href='#SkBlendMode_kSrcIn'>destination</a> <a href='#SkBlendMode_kSrcIn'>with</a>: <code>[Sa * Da, Sc * Da]</code>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcIn'>kSrcIn</a> replaces destination with: <code>[Sa * Da, Sc * Da]</code>,
drawing source with destination opacity.
### Example
@ -423,10 +423,10 @@ drawing source with destination opacity.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstIn'>kDstIn</a> <a href='#SkBlendMode_kDstIn'>replaces</a> <a href='#SkBlendMode_kDstIn'>destination</a> <a href='#SkBlendMode_kDstIn'>with</a>: <code>[Da * Sa, Dc * Sa]</code>,
scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>by</a> <a href='SkColor_Reference#Alpha'>source</a> <a href='SkColor_Reference#Alpha'>Alpha</a>. <a href='SkColor_Reference#Alpha'>Resulting</a>
<a href='SkColor_Reference#Alpha'>destination</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>visible</a> <a href='SkColor_Reference#Alpha'>where</a> <a href='SkColor_Reference#Alpha'>source</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>visible</a>.
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstIn'>kDstIn</a> replaces destination with: <code>[Da * Sa, Dc * Sa]</code>,
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
@ -436,11 +436,11 @@ scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOut'>kSrcOut</a> <a href='#SkBlendMode_kSrcOut'>replaces</a> <a href='#SkBlendMode_kSrcOut'>destination</a> <a href='#SkBlendMode_kSrcOut'>with</a>: <code>[Sa * (1 - Da), Sc * (1 - Da)]</code>,
drawing source fully where destination <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>zero</a>. <a href='SkColor_Reference#Alpha'>Is</a> <a href='SkColor_Reference#Alpha'>destination</a>
<a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>opaque</a>, <a href='SkColor_Reference#Alpha'>has</a> <a href='SkColor_Reference#Alpha'>no</a> <a href='SkColor_Reference#Alpha'>effect</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOut'>kSrcOut</a> replaces destination with: <code>[Sa * (1 - Da), Sc * (1 - Da)]</code>,
drawing source fully where destination <a href='SkColor_Reference#Alpha'>Alpha</a> is zero. Is destination
is opaque, has no effect.
### Example
@ -451,11 +451,11 @@ drawing source fully where destination <a href='SkColor_Reference#Alpha'>Alpha</
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOut'>kDstOut</a> <a href='#SkBlendMode_kDstOut'>replaces</a> <a href='#SkBlendMode_kDstOut'>destination</a> <a href='#SkBlendMode_kDstOut'>with</a>: <code>[Da * (1 - Sa), Dc * (1 - Sa)]</code>,
scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>by</a> <a href='SkColor_Reference#Alpha'>source</a> <a href='SkColor_Reference#Alpha'>transparency</a>. <a href='SkColor_Reference#Alpha'>Resulting</a>
<a href='SkColor_Reference#Alpha'>destination</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>visible</a> <a href='SkColor_Reference#Alpha'>where</a> <a href='SkColor_Reference#Alpha'>source</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>transparent</a>. <a href='SkColor_Reference#Alpha'>If</a> <a href='SkColor_Reference#Alpha'>source</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>transparent</a>,
<a href='SkColor_Reference#Alpha'>has</a> <a href='SkColor_Reference#Alpha'>no</a> <a href='SkColor_Reference#Alpha'>effect</a>.
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOut'>kDstOut</a> replaces destination with: <code>[Da * (1 - Sa), Dc * (1 - Sa)]</code>,
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
@ -465,9 +465,9 @@ scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> <a href='#SkBlendMode_kSrcATop'>replaces</a> <a href='#SkBlendMode_kSrcATop'>destination</a> <a href='#SkBlendMode_kSrcATop'>with</a>: <code>[Da, Sc * Da + Dc * (1 - Sa)]</code>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> replaces destination with: <code>[Da, Sc * Da + Dc * (1 - Sa)]</code>,
replacing opaque destination with opaque source. If source or destination
is transparent, has no effect.
@ -479,9 +479,9 @@ is transparent, has no effect.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstATop'>kDstATop</a> <a href='#SkBlendMode_kDstATop'>replaces</a> <a href='#SkBlendMode_kDstATop'>destination</a> <a href='#SkBlendMode_kDstATop'>with</a>: <code>[Sa, Dc * Sa + Sc * (1 - Da)]</code>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstATop'>kDstATop</a> replaces destination with: <code>[Sa, Dc * Sa + Sc * (1 - Da)]</code>,
making destination transparent where source is transparent.
### Example
@ -492,9 +492,9 @@ making destination transparent where source is transparent.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a> <a href='#SkBlendMode_kXor'>replaces</a> <a href='#SkBlendMode_kXor'>destination</a> <a href='#SkBlendMode_kXor'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a> replaces destination with:
<code>[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa)]</code>,
exchanging the transparency of the source and destination.
@ -506,10 +506,10 @@ exchanging the transparency of the source and destination.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a> <a href='#SkBlendMode_kPlus'>replaces</a> <a href='#SkBlendMode_kPlus'>destination</a> <a href='#SkBlendMode_kPlus'>with</a>: <code>[Sa + Da, Sc + Dc]</code>,
summing the <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>components</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a> replaces destination with: <code>[Sa + Da, Sc + Dc]</code>,
summing the <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components.
### Example
@ -519,32 +519,32 @@ summing the <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Referen
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> <a href='#SkBlendMode_kModulate'>replaces</a> <a href='#SkBlendMode_kModulate'>destination</a> <a href='#SkBlendMode_kModulate'>with</a>: <code>[Sa * Da, Sc * Dc]</code>,
scaling <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>components</a> <a href='SkColor_Reference#Color'>by</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>lesser</a> <a href='SkColor_Reference#Color'>of</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>values</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> <a href='#SkBlendMode_kModulate'>differs</a> <a href='#SkBlendMode_kModulate'>from</a> <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>in</a> <a href='#SkBlendMode_kMultiply'>two</a> <a href='#SkBlendMode_kMultiply'>ways</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> <a href='#SkBlendMode_kModulate'>like</a> <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> <a href='#SkBlendMode_kSrcATop'>alters</a> <a href='#SkBlendMode_kSrcATop'>the</a> <a href='#SkBlendMode_kSrcATop'>destination</a> <a href='#SkBlendMode_kSrcATop'>inside</a>
<a href='#SkBlendMode_kSrcATop'>the</a> <a href='#SkBlendMode_kSrcATop'>destination</a> <a href='#SkBlendMode_kSrcATop'>area</a>, <a href='#SkBlendMode_kSrcATop'>as</a> <a href='#SkBlendMode_kSrcATop'>if</a> <a href='#SkBlendMode_kSrcATop'>the</a> <a href='#SkBlendMode_kSrcATop'>destination</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>defined</a> <a href='SkColor_Reference#Alpha'>the</a> <a href='SkColor_Reference#Alpha'>boundaries</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkColor_Reference#Alpha'>a</a>
<a href='SkColor_Reference#Alpha'>soft</a> <a href='SkColor_Reference#Alpha'>clip</a>. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>like</a> <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> <a href='#SkBlendMode_kSrcOver'>can</a> <a href='#SkBlendMode_kSrcOver'>alter</a> <a href='#SkBlendMode_kSrcOver'>the</a>
<a href='#SkBlendMode_kSrcOver'>destination</a> <a href='#SkBlendMode_kSrcOver'>where</a> <a href='#SkBlendMode_kSrcOver'>the</a> <a href='#SkBlendMode_kSrcOver'>destination</a> <a href='#SkBlendMode_kSrcOver'>is</a> <a href='#SkBlendMode_kSrcOver'>transparent</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> <a href='#SkBlendMode_kModulate'>computes</a> <a href='#SkBlendMode_kModulate'>the</a> <a href='#SkBlendMode_kModulate'>product</a> <a href='#SkBlendMode_kModulate'>of</a> <a href='#SkBlendMode_kModulate'>the</a> <a href='#SkBlendMode_kModulate'>source</a> <a href='#SkBlendMode_kModulate'>and</a> <a href='#SkBlendMode_kModulate'>destination</a> <a href='#SkBlendMode_kModulate'>using</a>
<a href='undocumented#Premultiply'>Premultiplied</a> <a href='undocumented#Premultiply'>component</a> <a href='undocumented#Premultiply'>values</a>. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>the</a> <a href='#SkBlendMode_kMultiply'>product</a> <a href='#SkBlendMode_kMultiply'>of</a> <a href='#SkBlendMode_kMultiply'>the</a> <a href='#SkBlendMode_kMultiply'>source</a>
<a href='#SkBlendMode_kMultiply'>and</a> <a href='#SkBlendMode_kMultiply'>destination</a> <a href='#SkBlendMode_kMultiply'>using</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='undocumented#Unpremultiply'>component</a> <a href='undocumented#Unpremultiply'>values</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> replaces destination with: <code>[Sa * Da, Sc * Dc]</code>,
scaling <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components by the lesser of the values.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> differs from <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> in two ways.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> like <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> alters the destination inside
the destination area, as if the destination <a href='SkColor_Reference#Alpha'>Alpha</a> defined the boundaries of a
soft clip. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> like <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> can alter the
destination where the destination is transparent.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> computes the product of the source and destination using
<a href='undocumented#Premultiply'>Premultiplied</a> component values. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>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_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> <a href='#SkBlendMode_kModulate'>and</a>
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>produce</a> <a href='#SkBlendMode_kMultiply'>the</a> <a href='#SkBlendMode_kMultiply'>same</a> <a href='#SkBlendMode_kMultiply'>results</a>.
<div><fiddle-embed name="3fdac2b2f48bd227d2e74234c260bc8e"><div>If source and destination are opaque, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> and
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> produce the same results.
</div></fiddle-embed></div>
<a name='Screen'></a>
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a> <a href='#SkBlendMode_kScreen'>replaces</a> <a href='#SkBlendMode_kScreen'>destination</a> <a href='#SkBlendMode_kScreen'>with</a>: <code>[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]</code>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a> replaces destination with: <code>[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]</code>.
### Example
@ -554,9 +554,9 @@ Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <c
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a> <a href='#SkBlendMode_kOverlay'>replaces</a> <a href='#SkBlendMode_kOverlay'>destination</a> <a href='#SkBlendMode_kOverlay'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) +
(2 * Dc <= Da ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc))]</code>.
@ -568,12 +568,12 @@ Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <c
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> <a href='#SkBlendMode_kDarken'>replaces</a> <a href='#SkBlendMode_kDarken'>destination</a> <a href='#SkBlendMode_kDarken'>with</a>:
<code>[Sa + Da - Sa * Da, Sc + Dc - <a href='undocumented#max()'>max</a>(<a href='undocumented#max()'>Sc</a> * <a href='undocumented#max()'>Da</a>, <a href='undocumented#max()'>Dc</a> * <a href='undocumented#max()'>Sa</a>)]</code>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> <a href='#SkBlendMode_kDarken'>does</a> <a href='#SkBlendMode_kDarken'>not</a> <a href='#SkBlendMode_kDarken'>make</a> <a href='#SkBlendMode_kDarken'>an</a> <a href='SkImage_Reference#Image'>image</a> <a href='SkImage_Reference#Image'>darker</a>; <a href='SkImage_Reference#Image'>it</a> <a href='SkImage_Reference#Image'>replaces</a> <a href='SkImage_Reference#Image'>the</a> <a href='SkImage_Reference#Image'>destination</a>
<a href='SkImage_Reference#Image'>component</a> <a href='SkImage_Reference#Image'>with</a> <a href='SkImage_Reference#Image'>source</a> <a href='SkImage_Reference#Image'>if</a> <a href='SkImage_Reference#Image'>source</a> <a href='SkImage_Reference#Image'>is</a> <a href='SkImage_Reference#Image'>darker</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc + Dc - <a href='undocumented#max()'>max</a>(Sc * Da, Dc * Sa)]</code>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> does not make an <a href='SkImage_Reference#Image'>image</a> darker; it replaces the destination
component with source if source is darker.
### Example
@ -583,12 +583,12 @@ Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <c
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLighten'>kLighten</a> <a href='#SkBlendMode_kLighten'>replaces</a> <a href='#SkBlendMode_kLighten'>destination</a> <a href='#SkBlendMode_kLighten'>with</a>:
<code>[Sa + Da - Sa * Da, Sc + Dc - <a href='undocumented#min()'>min</a>(<a href='undocumented#min()'>Sc</a> * <a href='undocumented#min()'>Da</a>, <a href='undocumented#min()'>Dc</a> * <a href='undocumented#min()'>Sa</a>)]</code>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> <a href='#SkBlendMode_kDarken'>does</a> <a href='#SkBlendMode_kDarken'>not</a> <a href='#SkBlendMode_kDarken'>make</a> <a href='#SkBlendMode_kDarken'>an</a> <a href='SkImage_Reference#Image'>image</a> <a href='SkImage_Reference#Image'>lighter</a>; <a href='SkImage_Reference#Image'>it</a> <a href='SkImage_Reference#Image'>replaces</a> <a href='SkImage_Reference#Image'>the</a> <a href='SkImage_Reference#Image'>destination</a>
<a href='SkImage_Reference#Image'>component</a> <a href='SkImage_Reference#Image'>with</a> <a href='SkImage_Reference#Image'>source</a> <a href='SkImage_Reference#Image'>if</a> <a href='SkImage_Reference#Image'>source</a> <a href='SkImage_Reference#Image'>is</a> <a href='SkImage_Reference#Image'>lighter</a>.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLighten'>kLighten</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc + Dc - <a href='undocumented#min()'>min</a>(Sc * Da, Dc * Sa)]</code>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> does not make an <a href='SkImage_Reference#Image'>image</a> lighter; it replaces the destination
component with source if source is lighter.
### Example
@ -598,11 +598,11 @@ Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <c
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorDodge'>kColorDodge</a> <a href='#SkBlendMode_kColorDodge'>replaces</a> <a href='#SkBlendMode_kColorDodge'>destination</a> <a href='#SkBlendMode_kColorDodge'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorDodge'>kColorDodge</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Dc == 0 ? Sc * (1 - Da) : Sc == Sa ? Sc + Da * (1 - Sa) :
Sa * <a href='undocumented#min()'>min</a>(<a href='undocumented#min()'>Da</a>, <a href='undocumented#min()'>Dc</a> * <a href='undocumented#min()'>Sa</a> / (<a href='undocumented#min()'>Sa</a> - <a href='undocumented#min()'>Sc</a>)) + <a href='undocumented#min()'>Sc</a> * (1 - <a href='undocumented#min()'>Da</a>) + <a href='undocumented#min()'>Da</a> * (1 - <a href='undocumented#min()'>Sa</a>)]</code>,
Sa * <a href='undocumented#min()'>min</a>(Da, Dc * Sa / (Sa - Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
making destination brighter to reflect source.
### Example
@ -613,11 +613,11 @@ making destination brighter to reflect source.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorBurn'>kColorBurn</a> <a href='#SkBlendMode_kColorBurn'>replaces</a> <a href='#SkBlendMode_kColorBurn'>destination</a> <a href='#SkBlendMode_kColorBurn'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorBurn'>kColorBurn</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Dc == Da ? Dc + Sc * (1 - Da) : Sc == 0 ? Da * (1 - Sa) :
Sa * (Da - <a href='undocumented#min()'>min</a>(<a href='undocumented#min()'>Da</a>, (<a href='undocumented#min()'>Da</a> - <a href='undocumented#min()'>Dc</a>) * <a href='undocumented#min()'>Sa</a> / <a href='undocumented#min()'>Sc</a>)) + <a href='undocumented#min()'>Sc</a> * (1 - <a href='undocumented#min()'>Da</a>) + <a href='undocumented#min()'>Da</a> * (1 - <a href='undocumented#min()'>Sa</a>)]</code>,
Sa * (Da - <a href='undocumented#min()'>min</a>(Da, (Da - Dc) * Sa / Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
making destination darker to reflect source.
### Example
@ -628,9 +628,9 @@ making destination darker to reflect source.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHardLight'>kHardLight</a> <a href='#SkBlendMode_kHardLight'>replaces</a> <a href='#SkBlendMode_kHardLight'>destination</a> <a href='#SkBlendMode_kHardLight'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHardLight'>kHardLight</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) +
2 * Sc <= Sa ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc)]</code>,
making destination lighter or darker, depending on source.
@ -643,12 +643,12 @@ making destination lighter or darker, depending on source.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkColor_Reference#Color'>where</a> <code>m = Da > 0 ? Dc / Da : 0</code>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSoftLight'>kSoftLight</a> <a href='#SkBlendMode_kSoftLight'>replaces</a> <a href='#SkBlendMode_kSoftLight'>destination</a> <a href='#SkBlendMode_kSoftLight'>with</a>: <code>[Sa + Da - Sa * Da, Sc / Da + Dc / Sa +
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
where <code>m = Da > 0 ? Dc / Da : 0</code>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSoftLight'>kSoftLight</a> replaces destination with: <code>[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 : <a href='undocumented#sqrt()'>sqrt</a>(<a href='undocumented#sqrt()'>m</a>) - <a href='undocumented#sqrt()'>m</a>))]</code>,
(4 * Dc <= Da ? (16 * m * m + 4 * m) * (m - 1) + 7 * m : <a href='undocumented#sqrt()'>sqrt</a>(m) - m))]</code>,
making destination lighter or darker, depending on source.
### Example
@ -659,10 +659,10 @@ making destination lighter or darker, depending on source.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDifference'>kDifference</a> <a href='#SkBlendMode_kDifference'>replaces</a> <a href='#SkBlendMode_kDifference'>destination</a> <a href='#SkBlendMode_kDifference'>with</a>:
<code>[Sa + Da - Sa * Da, Sc + Dc - 2 * <a href='undocumented#min()'>min</a>(<a href='undocumented#min()'>Sc</a> * <a href='undocumented#min()'>Da</a>, <a href='undocumented#min()'>Dc</a> * <a href='undocumented#min()'>Sa</a>)]</code>,
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDifference'>kDifference</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc + Dc - 2 * <a href='undocumented#min()'>min</a>(Sc * Da, Dc * Sa)]</code>,
replacing destination with lighter less darker.
### Example
@ -673,9 +673,9 @@ replacing destination with lighter less darker.
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kExclusion'>kExclusion</a> <a href='#SkBlendMode_kExclusion'>replaces</a> <a href='#SkBlendMode_kExclusion'>destination</a> <a href='#SkBlendMode_kExclusion'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kExclusion'>kExclusion</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc + Dc - 2 * Sc * Dc]</code>,
replacing destination with lighter less darker, ignoring <a href='SkColor_Reference#Alpha'>Alpha</a>.
@ -687,12 +687,12 @@ replacing destination with lighter less darker, ignoring <a href='SkColor_Refere
---
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>component</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>replaces</a> <a href='#SkBlendMode_kMultiply'>destination</a> <a href='#SkBlendMode_kMultiply'>with</a>:
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> replaces destination with:
<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) + Sc * Dc]</code>,
the product of <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='undocumented#Unpremultiply'>source</a> <a href='undocumented#Unpremultiply'>and</a> <a href='undocumented#Unpremultiply'>destination</a>.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> <a href='#SkBlendMode_kMultiply'>makes</a> <a href='#SkBlendMode_kMultiply'>the</a> <a href='SkImage_Reference#Image'>image</a> <a href='SkImage_Reference#Image'>darker</a>.
the product of <a href='undocumented#Unpremultiply'>Unpremultiplied</a> source and destination.
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> makes the <a href='SkImage_Reference#Image'>image</a> darker.
### Example
@ -704,8 +704,8 @@ the product of <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href=
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> <a href='#SkBlendMode_kHue'>replaces</a> <a href='#SkBlendMode_kHue'>destination</a> <a href='#SkBlendMode_kHue'>with</a>:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(<a href='undocumented#SetSaturation'>S</a>, <a href='undocumented#Saturation'>Saturation</a>(<a href='undocumented#Saturation'>D</a>)), <a href='undocumented#Luminosity'>Luminosity</a>(<a href='undocumented#Luminosity'>D</a>))]</code>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> replaces destination with:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(S, <a href='undocumented#Saturation'>Saturation</a>(D)), <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
source hue, leaving destination luminosity and saturation unchanged.
### Example
@ -718,8 +718,8 @@ source hue, leaving destination luminosity and saturation unchanged.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> <a href='#SkBlendMode_kHue'>replaces</a> <a href='#SkBlendMode_kHue'>destination</a> <a href='#SkBlendMode_kHue'>with</a>:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(<a href='undocumented#SetSaturation'>D</a>, <a href='undocumented#Saturation'>Saturation</a>(<a href='undocumented#Saturation'>S</a>)), <a href='undocumented#Luminosity'>Luminosity</a>(<a href='undocumented#Luminosity'>D</a>))]</code>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> replaces destination with:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(D, <a href='undocumented#Saturation'>Saturation</a>(S)), <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
source hue, leaving destination luminosity and saturation unchanged.
### Example
@ -732,8 +732,8 @@ source hue, leaving destination luminosity and saturation unchanged.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a> <a href='#SkBlendMode_kColor'>replaces</a> <a href='#SkBlendMode_kColor'>destination</a> <a href='#SkBlendMode_kColor'>with</a>:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetLuminosity'>S</a>, <a href='undocumented#Luminosity'>Luminosity</a>(<a href='undocumented#Luminosity'>D</a>))]</code>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a> replaces destination with:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(S, <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
source hue and saturation, leaving destination luminosity unchanged.
### Example
@ -746,8 +746,8 @@ source hue and saturation, leaving destination luminosity unchanged.
Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a> <a href='#SkBlendMode_kLuminosity'>replaces</a> <a href='#SkBlendMode_kLuminosity'>destination</a> <a href='#SkBlendMode_kLuminosity'>with</a>:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetLuminosity'>D</a>, <a href='undocumented#Luminosity'>Luminosity</a>(<a href='undocumented#Luminosity'>S</a>))]</code>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a> replaces destination with:
<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(D, <a href='undocumented#Luminosity'>Luminosity</a>(S))]</code>,
source luminosity, leaving destination hue and saturation unchanged.
### Example
@ -759,10 +759,10 @@ source luminosity, leaving destination hue and saturation unchanged.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> <a href='SkBlendMode_Reference#SkBlendMode'>blendMode</a>)
const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> blendMode)
</pre>
Returns name of <a href='#SkBlendMode_Name_blendMode'>blendMode</a> <a href='#SkBlendMode_Name_blendMode'>as</a> <a href='#SkBlendMode_Name_blendMode'>null-terminated</a> <a href='#SkBlendMode_Name_blendMode'>C</a> <a href='undocumented#String'>string</a>.
Returns name of <a href='#SkBlendMode_Name_blendMode'>blendMode</a> as null-terminated C <a href='undocumented#String'>string</a>.
### Parameters

File diff suppressed because it is too large Load Diff

View File

@ -12,44 +12,44 @@ SkColor4f Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
struct <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> {
<a href='SkColor4f_Reference#SkRGBA4f'>float</a> <a href='#SkRGBA4f_fR'>fR</a>;
<a href='#SkRGBA4f_fR'>float</a> <a href='#SkRGBA4f_fG'>fG</a>;
<a href='#SkRGBA4f_fG'>float</a> <a href='#SkRGBA4f_fB'>fB</a>;
<a href='#SkRGBA4f_fB'>float</a> <a href='#SkRGBA4f_fA'>fA</a>;
float <a href='#SkRGBA4f_fR'>fR</a>;
float <a href='#SkRGBA4f_fG'>fG</a>;
float <a href='#SkRGBA4f_fB'>fB</a>;
float <a href='#SkRGBA4f_fA'>fA</a>;
<a href='#SkRGBA4f_fA'>bool</a> <a href='#SkRGBA4f_fA'>operator</a>==(<a href='#SkRGBA4f_fA'>const</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>other</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>;
<a href='SkColor4f_Reference#SkRGBA4f'>bool</a> <a href='SkColor4f_Reference#SkRGBA4f'>operator</a>!=(<a href='SkColor4f_Reference#SkRGBA4f'>const</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>other</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>operator</a>*(<a href='SkColor4f_Reference#SkRGBA4f'>float</a> <a href='SkColor4f_Reference#SkRGBA4f'>scale</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>operator</a>*(<a href='SkColor4f_Reference#SkRGBA4f'>const</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>scale</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>;
<a href='SkColor4f_Reference#SkRGBA4f'>const</a> <a href='SkColor4f_Reference#SkRGBA4f'>float</a>* <a href='#SkRGBA4f_vec'>vec()</a> <a href='#SkRGBA4f_vec'>const</a>;
<a href='#SkRGBA4f_vec'>float</a>* <a href='#SkRGBA4f_vec'>vec()</a>;
<a href='#SkRGBA4f_vec'>float</a> <a href='#SkRGBA4f_vec'>operator</a>[](<a href='#SkRGBA4f_vec'>int</a> <a href='#SkRGBA4f_vec'>index</a>) <a href='#SkRGBA4f_vec'>const</a>;
<a href='#SkRGBA4f_vec'>float</a>& <a href='#SkRGBA4f_vec'>operator</a>[](<a href='#SkRGBA4f_vec'>int</a> <a href='#SkRGBA4f_vec'>index</a>);
<a href='#SkRGBA4f_vec'>bool</a> <a href='#SkRGBA4f_isOpaque'>isOpaque</a>() <a href='#SkRGBA4f_isOpaque'>const</a>;
<a href='#SkRGBA4f_isOpaque'>static</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromColor'>FromColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a>);
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkRGBA4f_toSkColor'>toSkColor</a>() <a href='#SkRGBA4f_toSkColor'>const</a>;
<a href='#SkRGBA4f_toSkColor'>static</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromPMColor'>FromPMColor</a>(<a href='SkColor_Reference#SkPMColor'>SkPMColor</a>);
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a><<a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>> <a href='#SkRGBA4f_premul'>premul()</a> <a href='#SkRGBA4f_premul'>const</a>;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a><<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>> <a href='#SkRGBA4f_unpremul'>unpremul()</a> <a href='#SkRGBA4f_unpremul'>const</a>;
<a href='#SkRGBA4f_unpremul'>uint32_t</a> <a href='#SkRGBA4f_toBytes_RGBA'>toBytes_RGBA</a>() <a href='#SkRGBA4f_toBytes_RGBA'>const</a>;
<a href='#SkRGBA4f_toBytes_RGBA'>static</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromBytes_RGBA'>FromBytes_RGBA</a>(<a href='#SkRGBA4f_FromBytes_RGBA'>uint32_t</a> <a href='SkColor_Reference#Color'>color</a>);
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_makeOpaque'>makeOpaque</a>() <a href='#SkRGBA4f_makeOpaque'>const</a>;
bool operator==(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const;
bool operator!=(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> operator*(float scale) const;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> operator*(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& scale) const;
const float* <a href='#SkRGBA4f_vec'>vec()</a> const;
float* <a href='#SkRGBA4f_vec'>vec()</a>;
float operator[](int index) const;
float& operator[](int index);
bool <a href='#SkRGBA4f_isOpaque'>isOpaque</a>() const;
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromColor'>FromColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a>);
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkRGBA4f_toSkColor'>toSkColor</a>() const;
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromPMColor'>FromPMColor</a>(<a href='SkColor_Reference#SkPMColor'>SkPMColor</a>);
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a><<a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>> <a href='#SkRGBA4f_premul'>premul()</a> const;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a><<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>> <a href='#SkRGBA4f_unpremul'>unpremul()</a> const;
uint32_t <a href='#SkRGBA4f_toBytes_RGBA'>toBytes_RGBA</a>() const;
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromBytes_RGBA'>FromBytes_RGBA</a>(uint32_t <a href='SkColor_Reference#Color'>color</a>);
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_makeOpaque'>makeOpaque</a>() const;
};
</pre>
Each component is stored as a 32-bit single precision floating <a href='SkPoint_Reference#Point'>point</a> <a href='SkPoint_Reference#Point'>float</a> <a href='SkPoint_Reference#Point'>value</a>.
<a href='SkPoint_Reference#Point'>All</a> <a href='SkPoint_Reference#Point'>values</a> <a href='SkPoint_Reference#Point'>are</a> <a href='SkPoint_Reference#Point'>allowed</a>, <a href='SkPoint_Reference#Point'>but</a> <a href='SkPoint_Reference#Point'>only</a> <a href='SkPoint_Reference#Point'>the</a> <a href='SkPoint_Reference#Point'>range</a> <a href='SkPoint_Reference#Point'>from</a> <a href='SkPoint_Reference#Point'>zero</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>one</a> <a href='SkPoint_Reference#Point'>is</a> <a href='SkPoint_Reference#Point'>meaningful</a>.
Each component is stored as a 32-bit single precision floating <a href='SkPoint_Reference#Point'>point</a> float value.
All values are allowed, but only the range from zero to one is meaningful.
<a href='SkPoint_Reference#Point'>Components</a> <a href='SkPoint_Reference#Point'>are</a> <a href='SkPoint_Reference#Point'>independent</a> <a href='SkPoint_Reference#Point'>of</a> <a href='SkPoint_Reference#Point'>the</a> <a href='SkPoint_Reference#Point'>others</a> <a href='SkPoint_Reference#Point'>if</a> <a href='SkPoint_Reference#Point'>defined</a> <a href='SkPoint_Reference#Point'>with</a> <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>;
<a href='#SkRGBA4f_fA'>fA</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>may</a> <a href='SkColor_Reference#Alpha'>be</a> <a href='SkColor_Reference#Alpha'>greater</a> <a href='SkColor_Reference#Alpha'>or</a> <a href='SkColor_Reference#Alpha'>smaller</a> <a href='SkColor_Reference#Alpha'>than</a> <a href='#SkRGBA4f_fG'>fG</a> <a href='#SkRGBA4f_fG'>green</a>, <a href='#SkRGBA4f_fB'>fB</a> <a href='#SkRGBA4f_fB'>blue</a>, <a href='#SkRGBA4f_fB'>or</a> <a href='#SkRGBA4f_fR'>fR</a> <a href='#SkRGBA4f_fR'>red</a>.
<a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f_Reference#SkColor4f'>is</a> <a href='SkColor4f_Reference#SkColor4f'>shorthand</a> <a href='SkColor4f_Reference#SkColor4f'>for</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>.
Components are independent of the others if defined with <a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>;
<a href='#SkRGBA4f_fA'>fA</a> <a href='SkColor_Reference#Alpha'>Alpha</a> is may be greater or smaller than <a href='#SkRGBA4f_fG'>fG</a> green, <a href='#SkRGBA4f_fB'>fB</a> blue, or <a href='#SkRGBA4f_fR'>fR</a> red.
<a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> is shorthand for <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>.
<a href='SkColor4f_Reference#SkRGBA4f'>Components</a> <a href='SkColor4f_Reference#SkRGBA4f'>are</a> <a href='SkColor4f_Reference#SkRGBA4f'>connected</a> <a href='SkColor4f_Reference#SkRGBA4f'>if</a> <a href='SkColor4f_Reference#SkRGBA4f'>defined</a> <a href='SkColor4f_Reference#SkRGBA4f'>with</a> <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>;
<a href='#SkRGBA4f_fA'>fA</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>equal</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>or</a> <a href='SkColor_Reference#Alpha'>larger</a> <a href='SkColor_Reference#Alpha'>than</a> <a href='#SkRGBA4f_fG'>fG</a> <a href='#SkRGBA4f_fG'>green</a>, <a href='#SkRGBA4f_fB'>fB</a> <a href='#SkRGBA4f_fB'>blue</a>, <a href='#SkRGBA4f_fB'>and</a> <a href='#SkRGBA4f_fR'>fR</a> <a href='#SkRGBA4f_fR'>red</a>. <a href='#SkRGBA4f_fR'>The</a> <a href='#SkRGBA4f_fR'>values</a>
<a href='#SkRGBA4f_fR'>stored</a> <a href='#SkRGBA4f_fR'>in</a> <a href='#SkRGBA4f_fG'>fG</a>, <a href='#SkRGBA4f_fB'>fB</a>, <a href='#SkRGBA4f_fB'>and</a> <a href='#SkRGBA4f_fR'>fR</a> <a href='#SkRGBA4f_fR'>combine</a> <a href='#SkRGBA4f_fR'>the</a> <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>component</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>component</a>.
Components are connected if defined with <a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>;
<a href='#SkRGBA4f_fA'>fA</a> <a href='SkColor_Reference#Alpha'>Alpha</a> is equal to or larger than <a href='#SkRGBA4f_fG'>fG</a> green, <a href='#SkRGBA4f_fB'>fB</a> blue, and <a href='#SkRGBA4f_fR'>fR</a> red. The values
stored in <a href='#SkRGBA4f_fG'>fG</a>, <a href='#SkRGBA4f_fB'>fB</a>, and <a href='#SkRGBA4f_fR'>fR</a> combine the <a href='SkColor_Reference#Color'>color</a> component with the <a href='SkColor_Reference#Alpha'>Alpha</a> component.
<a href='SkColor_Reference#Alpha'>Values</a> <a href='SkColor_Reference#Alpha'>smaller</a> <a href='SkColor_Reference#Alpha'>than</a> <a href='SkColor_Reference#Alpha'>zero</a> <a href='SkColor_Reference#Alpha'>or</a> <a href='SkColor_Reference#Alpha'>larger</a> <a href='SkColor_Reference#Alpha'>than</a> <a href='SkColor_Reference#Alpha'>one</a> <a href='SkColor_Reference#Alpha'>are</a> <a href='SkColor_Reference#Alpha'>allowed</a>. <a href='SkColor_Reference#Alpha'>Values</a> <a href='SkColor_Reference#Alpha'>out</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkColor_Reference#Alpha'>range</a>
<a href='SkColor_Reference#Alpha'>may</a> <a href='SkColor_Reference#Alpha'>be</a> <a href='SkColor_Reference#Alpha'>used</a> <a href='SkColor_Reference#Alpha'>with</a> <a href='#Blend_Mode'>Blend_Mode</a> <a href='#Blend_Mode'>so</a> <a href='#Blend_Mode'>that</a> <a href='#Blend_Mode'>the</a> <a href='#Blend_Mode'>final</a> <a href='#Blend_Mode'>component</a> <a href='#Blend_Mode'>is</a> <a href='#Blend_Mode'>in</a> <a href='#Blend_Mode'>range</a>.<table style='border-collapse: collapse; width: 62.5em'>
Values smaller than zero or larger than one are allowed. Values out of range
may be used with <a href='#Blend_Mode'>Blend_Mode</a> so that the final component is in range.<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
@ -79,7 +79,7 @@ Single precision float for blue ranges from no blue (0.0) to full blue (1.0).
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>float</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRGBA4f_fA'><code>fA</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Single precision float for <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>ranges</a> <a href='SkColor_Reference#Alpha'>from</a> <a href='SkColor_Reference#Alpha'>no</a> <a href='SkColor_Reference#Alpha'>Alpha</a> (0.0) <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>full</a> <a href='SkColor_Reference#Alpha'>Alpha</a> (1.0).
Single precision float for <a href='SkColor_Reference#Alpha'>Alpha</a> ranges from no <a href='SkColor_Reference#Alpha'>Alpha</a> (0.0) to full <a href='SkColor_Reference#Alpha'>Alpha</a> (1.0).
</td>
</tr>
</table>
@ -89,21 +89,21 @@ Single precision float for <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator==(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>other</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>
bool operator==(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const
</pre>
Compares <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>with</a> <a href='#SkRGBA4f_equal1_operator_other'>other</a>, <a href='#SkRGBA4f_equal1_operator_other'>and</a> <a href='#SkRGBA4f_equal1_operator_other'>returns</a> <a href='#SkRGBA4f_equal1_operator_other'>true</a> <a href='#SkRGBA4f_equal1_operator_other'>if</a> <a href='#SkRGBA4f_equal1_operator_other'>all</a> <a href='#SkRGBA4f_equal1_operator_other'>components</a> <a href='#SkRGBA4f_equal1_operator_other'>are</a> <a href='#SkRGBA4f_equal1_operator_other'>equivalent</a>.
Compares <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> with <a href='#SkRGBA4f_equal1_operator_other'>other</a>, and returns true if all components are equivalent.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_equal1_operator_other'><code><strong>other</strong></code></a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>to</a> <a href='SkColor4f_Reference#SkRGBA4f'>compare</a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>equals</a> <a href='#SkRGBA4f_equal1_operator_other'>other</a>
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> equals <a href='#SkRGBA4f_equal1_operator_other'>other</a>
### Example
@ -126,22 +126,22 @@ colorRed == colorNamedRed
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator!=(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>other</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>
bool operator!=(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const
</pre>
Compares <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>with</a> <a href='#SkRGBA4f_notequal1_operator_other'>other</a>, <a href='#SkRGBA4f_notequal1_operator_other'>and</a> <a href='#SkRGBA4f_notequal1_operator_other'>returns</a> <a href='#SkRGBA4f_notequal1_operator_other'>true</a> <a href='#SkRGBA4f_notequal1_operator_other'>if</a> <a href='#SkRGBA4f_notequal1_operator_other'>all</a> <a href='#SkRGBA4f_notequal1_operator_other'>components</a> <a href='#SkRGBA4f_notequal1_operator_other'>are</a> <a href='#SkRGBA4f_notequal1_operator_other'>not</a>
<a href='#SkRGBA4f_notequal1_operator_other'>equivalent</a>.
Compares <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> with <a href='#SkRGBA4f_notequal1_operator_other'>other</a>, and returns true if all components are not
equivalent.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_notequal1_operator_other'><code><strong>other</strong></code></a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>to</a> <a href='SkColor4f_Reference#SkRGBA4f'>compare</a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>is</a> <a href='SkColor4f_Reference#SkRGBA4f'>not</a> <a href='SkColor4f_Reference#SkRGBA4f'>equal</a> <a href='SkColor4f_Reference#SkRGBA4f'>to</a> <a href='#SkRGBA4f_notequal1_operator_other'>other</a>
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> is not equal to <a href='#SkRGBA4f_notequal1_operator_other'>other</a>
### Example
@ -164,10 +164,10 @@ colorGray != colorNamedGray
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>operator</a>*(<a href='SkColor4f_Reference#SkRGBA4f'>float</a> <a href='SkColor4f_Reference#SkRGBA4f'>scale</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> operator*(float scale) const
</pre>
Multiplies each component by <a href='#SkRGBA4f_multiply_operator_scale'>scale</a>. <a href='#SkRGBA4f_multiply_operator_scale'>Does</a> <a href='#SkRGBA4f_multiply_operator_scale'>not</a> <a href='#SkRGBA4f_multiply_operator_scale'>pin</a> <a href='#SkRGBA4f_multiply_operator_scale'>the</a> <a href='#SkRGBA4f_multiply_operator_scale'>result</a>.
Multiplies each component by <a href='#SkRGBA4f_multiply_operator_scale'>scale</a>. Does not pin the result.
### Parameters
@ -189,15 +189,15 @@ scaled <a href='SkColor_Reference#Color'>color</a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>operator</a>*(<a href='SkColor4f_Reference#SkRGBA4f'>const</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='SkColor4f_Reference#SkRGBA4f'>scale</a>) <a href='SkColor4f_Reference#SkRGBA4f'>const</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> operator*(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& scale) const
</pre>
Multiplies each component by <a href='#SkRGBA4f_multiply1_operator_scale'>scale</a> <a href='#SkRGBA4f_multiply1_operator_scale'>component</a>. <a href='#SkRGBA4f_multiply1_operator_scale'>Does</a> <a href='#SkRGBA4f_multiply1_operator_scale'>not</a> <a href='#SkRGBA4f_multiply1_operator_scale'>pin</a> <a href='#SkRGBA4f_multiply1_operator_scale'>the</a> <a href='#SkRGBA4f_multiply1_operator_scale'>result</a>.
Multiplies each component by <a href='#SkRGBA4f_multiply1_operator_scale'>scale</a> component. Does not pin the result.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_multiply1_operator_scale'><code><strong>scale</strong></code></a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>component</a> <a href='SkColor4f_Reference#SkRGBA4f'>multipliers</a></td>
<td><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> component multipliers</td>
</tr>
</table>
@ -216,10 +216,10 @@ scaled <a href='SkColor_Reference#Color'>color</a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const float* <a href='#SkRGBA4f_vec'>vec()</a> <a href='#SkRGBA4f_vec'>const</a>
const float* <a href='#SkRGBA4f_vec'>vec()</a> const
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>components</a> <a href='SkColor4f_Reference#SkRGBA4f'>as</a> <a href='SkColor4f_Reference#SkRGBA4f'>a</a> <a href='SkColor4f_Reference#SkRGBA4f'>read-only</a> <a href='SkColor4f_Reference#SkRGBA4f'>array</a>.
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> components as a read-only array.
### Return Value
@ -250,7 +250,7 @@ red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
float* <a href='#SkRGBA4f_vec'>vec()</a>
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>components</a> <a href='SkColor4f_Reference#SkRGBA4f'>as</a> <a href='SkColor4f_Reference#SkRGBA4f'>a</a> <a href='SkColor4f_Reference#SkRGBA4f'>writable</a> <a href='SkColor4f_Reference#SkRGBA4f'>array</a>.
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> components as a writable array.
### Return Value
@ -281,8 +281,8 @@ red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
float operator[](int index) const
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>component</a> <a href='SkColor4f_Reference#SkRGBA4f'>by</a> <a href='SkColor4f_Reference#SkRGBA4f'>index</a>, <a href='SkColor4f_Reference#SkRGBA4f'>zero</a> <a href='SkColor4f_Reference#SkRGBA4f'>through</a> <a href='SkColor4f_Reference#SkRGBA4f'>three</a>. <a href='SkColor4f_Reference#SkRGBA4f'>index</a> <a href='SkColor4f_Reference#SkRGBA4f'>out</a> <a href='SkColor4f_Reference#SkRGBA4f'>of</a> <a href='SkColor4f_Reference#SkRGBA4f'>range</a>
<a href='SkColor4f_Reference#SkRGBA4f'>triggers</a> <a href='SkColor4f_Reference#SkRGBA4f'>an</a> <a href='SkColor4f_Reference#SkRGBA4f'>assert</a> <a href='SkColor4f_Reference#SkRGBA4f'>in</a> <a href='SkColor4f_Reference#SkRGBA4f'>debug</a> <a href='SkColor4f_Reference#SkRGBA4f'>builds</a>.
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> component by index, zero through three. index out of range
triggers an assert in debug builds.
### Parameters
@ -332,16 +332,16 @@ writable component reference by index
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkRGBA4f_isOpaque'>isOpaque</a>() <a href='#SkRGBA4f_isOpaque'>const</a>
bool <a href='#SkRGBA4f_isOpaque'>isOpaque</a>() const
</pre>
Returns true if <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>component</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>one</a>. <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>has</a> <a href='SkColor_Reference#Color'>no</a> <a href='SkColor_Reference#Color'>transparency</a> <a href='SkColor_Reference#Color'>regardless</a> <a href='SkColor_Reference#Color'>of</a>
<a href='SkColor_Reference#Color'>whether</a> <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>is</a> <a href='undocumented#Premultiply'>Premultiplied</a> <a href='undocumented#Premultiply'>or</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a>. <a href='undocumented#Unpremultiply'>Triggers</a> <a href='undocumented#Unpremultiply'>a</a> <a href='undocumented#Debugging'>debugging</a> <a href='undocumented#Debugging'>assert</a>
<a href='undocumented#Debugging'>if</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>not</a> <a href='SkColor_Reference#Alpha'>valid</a>.
Returns true if <a href='SkColor_Reference#Alpha'>Alpha</a> component is one. <a href='SkColor_Reference#Color'>Color</a> has no transparency regardless of
whether <a href='SkColor_Reference#Color'>color</a> is <a href='undocumented#Premultiply'>Premultiplied</a> or <a href='undocumented#Unpremultiply'>Unpremultiplied</a>. Triggers a <a href='undocumented#Debugging'>debugging</a> assert
if <a href='SkColor_Reference#Alpha'>Alpha</a> not valid.
### Return Value
true if <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>one</a>
true if <a href='SkColor_Reference#Alpha'>Alpha</a> is one
### See Also
@ -360,13 +360,13 @@ Converts to closest <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_FromColor_SkColor'><code><strong>SkColor</strong></code></a></td>
<td><a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a>, <a href='SkColor_Reference#Alpha'>red</a>, <a href='SkColor_Reference#Alpha'>blue</a>, <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>green</a> <a href='SkColor_Reference#Alpha'>components</a></td>
<td><a href='SkColor_Reference#Color'>Color</a> with <a href='SkColor_Reference#Alpha'>Alpha</a>, red, blue, and green components</td>
</tr>
</table>
### Return Value
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>equivalent</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> equivalent
### Example
@ -390,7 +390,7 @@ red=77 green=101 blue=153 alpha=43
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkRGBA4f_toSkColor'>toSkColor</a>() <a href='#SkRGBA4f_toSkColor'>const</a>
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkRGBA4f_toSkColor'>toSkColor</a>() const
</pre>
Converts to closest <a href='SkColor_Reference#SkColor'>SkColor</a>.
@ -424,8 +424,8 @@ red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromPMColor'>FromPMColor</a>(<a href='SkColor_Reference#SkPMColor'>SkPMColor</a>)
</pre>
Converts from <a href='undocumented#Premultiply'>Premultiplied</a> <a href='undocumented#Premultiply'>integer</a> <a href='undocumented#Premultiply'>components</a> <a href='undocumented#Premultiply'>to</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='undocumented#Unpremultiply'>float</a>
<a href='undocumented#Unpremultiply'>components</a>.
Converts from <a href='undocumented#Premultiply'>Premultiplied</a> integer components to <a href='undocumented#Unpremultiply'>Unpremultiplied</a> float
components.
### Parameters
@ -447,10 +447,10 @@ Converts from <a href='undocumented#Premultiply'>Premultiplied</a> <a href='undo
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>&<a href='SkColor4f_Reference#SkRGBA4f'>lt</a>;<a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>&<a href='SkImageInfo_Reference#kPremul_SkAlphaType'>gt</a>; <a href='#SkRGBA4f_premul'>premul()</a> <a href='#SkRGBA4f_premul'>const</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>&lt;<a href='SkImageInfo_Reference#kPremul_SkAlphaType'>kPremul_SkAlphaType</a>&gt; <a href='#SkRGBA4f_premul'>premul()</a> const
</pre>
Returns <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f_Reference#SkColor4f'>with</a> <a href='SkColor4f_Reference#SkColor4f'>all</a> <a href='SkColor4f_Reference#SkColor4f'>components</a> <a href='undocumented#Premultiply'>premultiplied</a> <a href='undocumented#Premultiply'>by</a> <a href='SkColor_Reference#Alpha'>Alpha</a>.
Returns <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> with all components <a href='undocumented#Premultiply'>premultiplied</a> by <a href='SkColor_Reference#Alpha'>Alpha</a>.
### Return Value
@ -465,10 +465,10 @@ Returns <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>&<a href='SkColor4f_Reference#SkRGBA4f'>lt</a>;<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>&<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>gt</a>; <a href='#SkRGBA4f_unpremul'>unpremul()</a> <a href='#SkRGBA4f_unpremul'>const</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>&lt;<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>&gt; <a href='#SkRGBA4f_unpremul'>unpremul()</a> const
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>with</a> <a href='SkColor4f_Reference#SkRGBA4f'>all</a> <a href='SkColor4f_Reference#SkRGBA4f'>components</a> <a href='SkColor4f_Reference#SkRGBA4f'>independent</a> <a href='SkColor4f_Reference#SkRGBA4f'>of</a> <a href='SkColor_Reference#Alpha'>Alpha</a>.
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> with all components independent of <a href='SkColor_Reference#Alpha'>Alpha</a>.
### Return Value
@ -483,7 +483,7 @@ Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_R
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
uint32_t <a href='#SkRGBA4f_toBytes_RGBA'>toBytes_RGBA</a>() <a href='#SkRGBA4f_toBytes_RGBA'>const</a>
uint32_t <a href='#SkRGBA4f_toBytes_RGBA'>toBytes_RGBA</a>() const
</pre>
Produces bytes in RGBA order. Component values are not affected by <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Alpha'>Alpha</a>.
@ -497,16 +497,16 @@ Produces bytes in RGBA order. Component values are not affected by <a href='SkCo
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromBytes_RGBA'>FromBytes_RGBA</a>(<a href='#SkRGBA4f_FromBytes_RGBA'>uint32_t</a> <a href='SkColor_Reference#Color'>color</a>)
static <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_FromBytes_RGBA'>FromBytes_RGBA</a>(uint32_t <a href='SkColor_Reference#Color'>color</a>)
</pre>
Returns from <a href='SkColor_Reference#Color'>color</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>order</a>. <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>Component</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>values</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>are</a>
<a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>not</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>affected</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>by</a> <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Alpha'>Alpha</a>.
Returns from <a href='SkColor_Reference#Color'>color</a> <a href='SkImageInfo_Reference#kRGBA_8888_SkColorType'>kRGBA_8888_SkColorType</a> order. Component values are
not affected by <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Alpha'>Alpha</a>.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_FromBytes_RGBA_color'><code><strong>color</strong></code></a></td>
<td><a href='undocumented#Premultiply'>Premultiplied</a> <a href='undocumented#Premultiply'>or</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a></td>
<td><a href='undocumented#Premultiply'>Premultiplied</a> or <a href='undocumented#Unpremultiply'>Unpremultiplied</a></td>
</tr>
</table>
@ -519,10 +519,10 @@ Returns from <a href='SkColor_Reference#Color'>color</a> <a href='SkImageInfo_Re
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_makeOpaque'>makeOpaque</a>() <a href='#SkRGBA4f_makeOpaque'>const</a>
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_makeOpaque'>makeOpaque</a>() const
</pre>
Returns <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>set</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>one</a>.
Returns <a href='SkColor_Reference#Color'>color</a> with <a href='SkColor_Reference#Alpha'>Alpha</a> set to one.
### Return Value

View File

@ -4,65 +4,65 @@ SkColor Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
typedef uint8_t <a href='SkColor_Reference#SkAlpha'>SkAlpha</a>;
<a href='SkColor_Reference#SkAlpha'>typedef</a> <a href='SkColor_Reference#SkAlpha'>uint32_t</a> <a href='SkColor_Reference#SkColor'>SkColor</a>;
typedef uint32_t <a href='SkColor_Reference#SkColor'>SkColor</a>;
<a href='SkColor_Reference#SkColor'>static</a> <a href='SkColor_Reference#SkColor'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>r</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>g</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>b</a>);
#<a href='undocumented#U8CPU'>define</a> <a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a>(<a href='SkColor_Reference#SkColorSetRGB'>r</a>, <a href='SkColor_Reference#SkColorSetRGB'>g</a>, <a href='SkColor_Reference#SkColorSetRGB'>b</a>) <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, <a href='SkColor_Reference#SkColorSetARGB'>r</a>, <a href='SkColor_Reference#SkColorSetARGB'>g</a>, <a href='SkColor_Reference#SkColorSetARGB'>b</a>)
#<a href='SkColor_Reference#SkColorSetARGB'>define</a> <a href='SkColor_Reference#SkColorGetA'>SkColorGetA</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 24) & 0<a href='SkColor_Reference#Color'>xFF</a>)
#<a href='SkColor_Reference#Color'>define</a> <a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 16) & 0<a href='SkColor_Reference#Color'>xFF</a>)
#<a href='SkColor_Reference#Color'>define</a> <a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 8) & 0<a href='SkColor_Reference#Color'>xFF</a>)
#<a href='SkColor_Reference#Color'>define</a> <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 0) & 0<a href='SkColor_Reference#Color'>xFF</a>)
static constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b);
#define <a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a>(r, g, b) <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, r, g, b)
#define <a href='SkColor_Reference#SkColorGetA'>SkColorGetA</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 24) & 0xFF)
#define <a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 16) & 0xFF)
#define <a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 8) & 0xFF)
#define <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 0) & 0xFF)
<a href='SkColor_Reference#Color'>static</a> <a href='SkColor_Reference#Color'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetA'>SkColorSetA</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColor'>c</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>);
<a href='undocumented#U8CPU'>constexpr</a> <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaTRANSPARENT'>SK_AlphaTRANSPARENT</a> = 0<a href='SkColor_Reference#SK_AlphaTRANSPARENT'>x00</a>;
<a href='SkColor_Reference#SK_AlphaTRANSPARENT'>constexpr</a> <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaOPAQUE'>SK_AlphaOPAQUE</a> = 0<a href='SkColor_Reference#SK_AlphaOPAQUE'>xFF</a>;
<a href='SkColor_Reference#SK_AlphaOPAQUE'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorDKGRAY'>SK_ColorDKGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x44</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x44</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x44</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGRAY'>SK_ColorGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x88</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x88</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x88</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorLTGRAY'>SK_ColorLTGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xCC</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xCC</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xCC</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorRED'>SK_ColorRED</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGREEN'>SK_ColorGREEN</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLUE'>SK_ColorBLUE</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorCYAN'>SK_ColorCYAN</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>);
<a href='SkColor_Reference#SkColorSetARGB'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorMAGENTA'>SK_ColorMAGENTA</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>x00</a>, 0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>);
static constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetA'>SkColorSetA</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c, <a href='undocumented#U8CPU'>U8CPU</a> a);
constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaTRANSPARENT'>SK_AlphaTRANSPARENT</a> = 0x00;
constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaOPAQUE'>SK_AlphaOPAQUE</a> = 0xFF;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0x00, 0x00, 0x00, 0x00);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x00, 0x00, 0x00);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorDKGRAY'>SK_ColorDKGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x44, 0x44, 0x44);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGRAY'>SK_ColorGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x88, 0x88, 0x88);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorLTGRAY'>SK_ColorLTGRAY</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0xCC, 0xCC, 0xCC);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0xFF, 0xFF, 0xFF);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorRED'>SK_ColorRED</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0xFF, 0x00, 0x00);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGREEN'>SK_ColorGREEN</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x00, 0xFF, 0x00);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLUE'>SK_ColorBLUE</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x00, 0x00, 0xFF);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0xFF, 0xFF, 0x00);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorCYAN'>SK_ColorCYAN</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0x00, 0xFF, 0xFF);
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorMAGENTA'>SK_ColorMAGENTA</a> = <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, 0xFF, 0x00, 0xFF);
<a href='SkColor_Reference#SkColorSetARGB'>void</a> <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>red</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>green</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>blue</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3]);
void <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>(<a href='undocumented#U8CPU'>U8CPU</a> red, <a href='undocumented#U8CPU'>U8CPU</a> green, <a href='undocumented#U8CPU'>U8CPU</a> blue, <a href='undocumented#SkScalar'>SkScalar</a> hsv[3]);
<a href='undocumented#SkScalar'>static</a> <a href='undocumented#SkScalar'>void</a> <a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#Color'>color</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3]);
static void <a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#Color'>color</a>, <a href='undocumented#SkScalar'>SkScalar</a> hsv[3]);
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='SkColor_Reference#Alpha'>alpha</a>, <a href='SkColor_Reference#Alpha'>const</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3]);
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='SkColor_Reference#Alpha'>alpha</a>, const <a href='undocumented#SkScalar'>SkScalar</a> hsv[3]);
<a href='undocumented#SkScalar'>static</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='SkColor_Reference#SkHSVToColor'>const</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3]);
<a href='undocumented#SkScalar'>typedef</a> <a href='undocumented#SkScalar'>uint32_t</a> <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>;
static <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(const <a href='undocumented#SkScalar'>SkScalar</a> hsv[3]);
typedef uint32_t <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>;
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>r</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>g</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>b</a>);
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b);
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyColor'>SkPreMultiplyColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColor'>c</a>);
<a href='SkColor_Reference#SkColor'>template</a> <<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> <a href='SkImageInfo_Reference#SkAlphaType'>kAT</a>>
<a href='SkImageInfo_Reference#SkAlphaType'>struct</a> <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> {
// <<a href='SkColor4f_Reference#SkRGBA4f'>i</a>><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='SkColor4f_Reference#SkRGBA4f'>interface</a></<a href='SkColor4f_Reference#SkRGBA4f'>i</a>>
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyColor'>SkPreMultiplyColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c);
template <<a href='SkImageInfo_Reference#SkAlphaType'>SkAlphaType</a> kAT>
struct <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> {
// <i><a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> interface</i>
};
<a href='SkColor4f_Reference#SkRGBA4f'>template</a> <> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::<a href='SkColor4f_Reference#SkColor4f'>FromColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a>);
<a href='SkColor_Reference#SkColor'>template</a> <> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::<a href='SkColor4f_Reference#SkColor4f'>toSkColor</a>() <a href='SkColor4f_Reference#SkColor4f'>const</a>;
template <> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::FromColor(<a href='SkColor_Reference#SkColor'>SkColor</a>);
template <> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::toSkColor() const;
</pre>
<a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>constants</a> <a href='SkColor_Reference#Color'>can</a> <a href='SkColor_Reference#Color'>be</a> <a href='SkColor_Reference#Color'>helpful</a> <a href='SkColor_Reference#Color'>to</a> <a href='SkColor_Reference#Color'>write</a> <a href='SkColor_Reference#Color'>code</a>, <a href='SkColor_Reference#Color'>documenting</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>meaning</a> <a href='SkColor_Reference#Color'>of</a> <a href='SkColor_Reference#Color'>values</a>
<a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>represent</a> <a href='SkColor_Reference#Color'>transparency</a> <a href='SkColor_Reference#Color'>and</a> <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>values</a>. <a href='SkColor_Reference#Color'>The</a> <a href='SkColor_Reference#Color'>use</a> <a href='SkColor_Reference#Color'>of</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>constants</a> <a href='SkColor_Reference#Color'>is</a> <a href='SkColor_Reference#Color'>not</a>
<a href='SkColor_Reference#Color'>required</a>.
<a href='SkColor_Reference#Color'>Color</a> constants can be helpful to write code, documenting the meaning of values
the represent transparency and <a href='SkColor_Reference#Color'>color</a> values. The use of <a href='SkColor_Reference#Color'>Color</a> constants is not
required.
<a name='Functions'></a>
<a name='Alpha'></a>
<a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>represents</a> <a href='SkColor_Reference#Alpha'>the</a> <a href='SkColor_Reference#Alpha'>transparency</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkColor_Reference#Color'>Color</a>. <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkColor_Reference#Alpha'>zero</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>fully</a>
<a href='SkColor_Reference#Alpha'>transparent</a>. <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>of</a> 255 <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a>. <a href='SkColor_Reference#Alpha'>Some</a>, <a href='SkColor_Reference#Alpha'>but</a> <a href='SkColor_Reference#Alpha'>not</a> <a href='SkColor_Reference#Alpha'>all</a> <a href='undocumented#Pixel'>pixel</a>
<a href='undocumented#Pixel'>formats</a> <a href='undocumented#Pixel'>contain</a> <a href='SkColor_Reference#Alpha'>Alpha</a>. <a href='SkColor_Reference#Alpha'>Pixels</a> <a href='SkColor_Reference#Alpha'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>may</a> <a href='SkColor_Reference#Alpha'>store</a> <a href='SkColor_Reference#Alpha'>it</a> <a href='SkColor_Reference#Alpha'>as</a> <a href='SkColor_Reference#Alpha'>unsigned</a> <a href='SkColor_Reference#Alpha'>integers</a> <a href='SkColor_Reference#Alpha'>or</a>
<a href='SkColor_Reference#Alpha'>floating</a> <a href='SkPoint_Reference#Point'>point</a> <a href='SkPoint_Reference#Point'>values</a>. <a href='SkPoint_Reference#Point'>Unsigned</a> <a href='SkPoint_Reference#Point'>integer</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>ranges</a> <a href='SkColor_Reference#Alpha'>from</a> <a href='SkColor_Reference#Alpha'>zero</a>, <a href='SkColor_Reference#Alpha'>fully</a>
<a href='SkColor_Reference#Alpha'>transparent</a>, <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>all</a> <a href='SkColor_Reference#Alpha'>bits</a> <a href='SkColor_Reference#Alpha'>set</a>, <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a>. <a href='SkColor_Reference#Alpha'>Floating</a> <a href='SkPoint_Reference#Point'>point</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>ranges</a> <a href='SkColor_Reference#Alpha'>from</a>
<a href='SkColor_Reference#Alpha'>zero</a>, <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>transparent</a>, <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>one</a>, <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a>.
<a href='SkColor_Reference#Alpha'>Alpha</a> represents the transparency of <a href='SkColor_Reference#Color'>Color</a>. <a href='SkColor_Reference#Color'>Color</a> with <a href='SkColor_Reference#Alpha'>Alpha</a> of zero is fully
transparent. <a href='SkColor_Reference#Color'>Color</a> with <a href='SkColor_Reference#Alpha'>Alpha</a> of 255 is fully opaque. Some, but not all <a href='undocumented#Pixel'>pixel</a>
formats contain <a href='SkColor_Reference#Alpha'>Alpha</a>. Pixels with <a href='SkColor_Reference#Alpha'>Alpha</a> may store it as unsigned integers or
floating <a href='SkPoint_Reference#Point'>point</a> values. Unsigned integer <a href='SkColor_Reference#Alpha'>Alpha</a> ranges from zero, fully
transparent, to all bits set, fully opaque. Floating <a href='SkPoint_Reference#Point'>point</a> <a href='SkColor_Reference#Alpha'>Alpha</a> ranges from
zero, fully transparent, to one, fully opaque.
<a name='SkAlpha'></a>
@ -72,7 +72,7 @@ typedef uint8_t <a href='SkColor_Reference#SkAlpha'>SkAlpha</a>;
typedef uint8_t <a href='SkColor_Reference#SkAlpha'>SkAlpha</a>;
</pre>
8-bit type for an <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkColor_Reference#Alpha'>value</a>. 255 <a href='SkColor_Reference#Alpha'>is</a> 100% <a href='SkColor_Reference#Alpha'>opaque</a>, <a href='SkColor_Reference#Alpha'>zero</a> <a href='SkColor_Reference#Alpha'>is</a> 100% <a href='SkColor_Reference#Alpha'>transparent</a>.
8-bit type for an <a href='SkColor_Reference#Alpha'>alpha</a> value. 255 is 100% opaque, zero is 100% transparent.
<a name='SkColor'></a>
@ -82,14 +82,14 @@ typedef uint8_t <a href='SkColor_Reference#SkAlpha'>SkAlpha</a>;
typedef uint32_t <a href='SkColor_Reference#SkColor'>SkColor</a>;
</pre>
32-bit ARGB <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>value</a>, <a href='undocumented#Unpremultiply'>Unpremultiplied</a>. <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>components</a> <a href='SkColor_Reference#Color'>are</a> <a href='SkColor_Reference#Color'>always</a> <a href='SkColor_Reference#Color'>in</a>
<a href='SkColor_Reference#Color'>a</a> <a href='SkColor_Reference#Color'>known</a> <a href='SkColor_Reference#Color'>order</a>. <a href='SkColor_Reference#Color'>This</a> <a href='SkColor_Reference#Color'>is</a> <a href='SkColor_Reference#Color'>different</a> <a href='SkColor_Reference#Color'>from</a> <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>, <a href='SkColor_Reference#SkPMColor'>which</a> <a href='SkColor_Reference#SkPMColor'>has</a> <a href='SkColor_Reference#SkPMColor'>its</a> <a href='SkColor_Reference#SkPMColor'>bytes</a> <a href='SkColor_Reference#SkPMColor'>in</a> <a href='SkColor_Reference#SkPMColor'>a</a> <a href='SkColor_Reference#SkPMColor'>configuration</a>
<a href='SkColor_Reference#SkPMColor'>dependent</a> <a href='SkColor_Reference#SkPMColor'>order</a>, <a href='SkColor_Reference#SkPMColor'>to</a> <a href='SkColor_Reference#SkPMColor'>match</a> <a href='SkColor_Reference#SkPMColor'>the</a> <a href='SkColor_Reference#SkPMColor'>format</a> <a href='SkColor_Reference#SkPMColor'>of</a> <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>. <a href='SkColor_Reference#SkColor'>SkColor</a>
<a href='SkColor_Reference#SkColor'>is</a> <a href='SkColor_Reference#SkColor'>the</a> <a href='SkColor_Reference#SkColor'>type</a> <a href='SkColor_Reference#SkColor'>used</a> <a href='SkColor_Reference#SkColor'>to</a> <a href='SkColor_Reference#SkColor'>specify</a> <a href='SkColor_Reference#SkColor'>colors</a> <a href='SkColor_Reference#SkColor'>in</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a> <a href='SkPaint_Reference#SkPaint'>and</a> <a href='SkPaint_Reference#SkPaint'>in</a> <a href='SkPaint_Reference#SkPaint'>gradients</a>.
32-bit ARGB <a href='SkColor_Reference#Color'>Color</a> value, <a href='undocumented#Unpremultiply'>Unpremultiplied</a>. <a href='SkColor_Reference#Color'>Color</a> components are always in
a known order. This is different from <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>, which has its bytes in a configuration
dependent order, to match the format of <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>. <a href='SkColor_Reference#SkColor'>SkColor</a>
is the type used to specify colors in <a href='SkPaint_Reference#SkPaint'>SkPaint</a> and in gradients.
<a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>that</a> <a href='SkColor_Reference#Color'>is</a> <a href='undocumented#Premultiply'>Premultiplied</a> <a href='undocumented#Premultiply'>has</a> <a href='undocumented#Premultiply'>the</a> <a href='undocumented#Premultiply'>same</a> <a href='undocumented#Premultiply'>component</a> <a href='undocumented#Premultiply'>values</a> <a href='undocumented#Premultiply'>as</a> <a href='SkColor_Reference#Color'>Color</a>
<a href='SkColor_Reference#Color'>that</a> <a href='SkColor_Reference#Color'>is</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='undocumented#Unpremultiply'>if</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> 255, <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a>, <a href='SkColor_Reference#Alpha'>although</a> <a href='SkColor_Reference#Alpha'>may</a> <a href='SkColor_Reference#Alpha'>have</a> <a href='SkColor_Reference#Alpha'>the</a>
<a href='SkColor_Reference#Alpha'>component</a> <a href='SkColor_Reference#Alpha'>values</a> <a href='SkColor_Reference#Alpha'>in</a> <a href='SkColor_Reference#Alpha'>a</a> <a href='SkColor_Reference#Alpha'>different</a> <a href='SkColor_Reference#Alpha'>order</a>.
<a href='SkColor_Reference#Color'>Color</a> that is <a href='undocumented#Premultiply'>Premultiplied</a> has the same component values as <a href='SkColor_Reference#Color'>Color</a>
that is <a href='undocumented#Unpremultiply'>Unpremultiplied</a> if <a href='SkColor_Reference#Alpha'>Alpha</a> is 255, fully opaque, although may have the
component values in a different order.
### See Also
@ -100,17 +100,17 @@ typedef uint32_t <a href='SkColor_Reference#SkColor'>SkColor</a>;
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static constexpr inline <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>r</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>g</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>b</a>)
static constexpr inline <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b)
</pre>
Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>value</a> <a href='SkColor_Reference#Color'>from</a> 8-<a href='SkColor_Reference#Color'>bit</a> <a href='SkColor_Reference#Color'>component</a> <a href='SkColor_Reference#Color'>values</a>. <a href='SkColor_Reference#Color'>Asserts</a> <a href='SkColor_Reference#Color'>if</a> <a href='SkColor_Reference#Color'>SK_DEBUG</a> <a href='SkColor_Reference#Color'>is</a> <a href='SkColor_Reference#Color'>defined</a>
<a href='SkColor_Reference#Color'>if</a> <a href='#SkColorSetARGB_a'>a</a>, <a href='#SkColorSetARGB_r'>r</a>, <a href='#SkColorSetARGB_g'>g</a>, <a href='#SkColorSetARGB_g'>or</a> <a href='#SkColorSetARGB_b'>b</a> <a href='#SkColorSetARGB_b'>exceed</a> 255. <a href='#SkColorSetARGB_b'>Since</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>is</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a>, <a href='#SkColorSetARGB_a'>a</a> <a href='#SkColorSetARGB_a'>may</a> <a href='#SkColorSetARGB_a'>be</a> <a href='#SkColorSetARGB_a'>smaller</a>
<a href='#SkColorSetARGB_a'>than</a> <a href='#SkColorSetARGB_a'>the</a> <a href='#SkColorSetARGB_a'>largest</a> <a href='#SkColorSetARGB_a'>of</a> <a href='#SkColorSetARGB_r'>r</a>, <a href='#SkColorSetARGB_g'>g</a>, <a href='#SkColorSetARGB_g'>and</a> <a href='#SkColorSetARGB_b'>b</a>.
Returns <a href='SkColor_Reference#Color'>Color</a> value from 8-bit component values. Asserts if SK_DEBUG is defined
if <a href='#SkColorSetARGB_a'>a</a>, <a href='#SkColorSetARGB_r'>r</a>, <a href='#SkColorSetARGB_g'>g</a>, or <a href='#SkColorSetARGB_b'>b</a> exceed 255. Since <a href='SkColor_Reference#Color'>Color</a> is <a href='undocumented#Unpremultiply'>Unpremultiplied</a>, <a href='#SkColorSetARGB_a'>a</a> may be smaller
than the largest of <a href='#SkColorSetARGB_r'>r</a>, <a href='#SkColorSetARGB_g'>g</a>, and <a href='#SkColorSetARGB_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkColorSetARGB_a'><code><strong>a</strong></code></a></td>
<td>amount of <a href='SkColor_Reference#Alpha'>Alpha</a>, <a href='SkColor_Reference#Alpha'>from</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>transparent</a> (0) <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a> (255)</td>
<td>amount of <a href='SkColor_Reference#Alpha'>Alpha</a>, from fully transparent (0) to fully opaque (255)</td>
</tr>
<tr> <td><a name='SkColorSetARGB_r'><code><strong>r</strong></code></a></td>
<td>amount of red, from no red (0) to full red (255)</td>
@ -125,7 +125,7 @@ Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#C
### Return Value
<a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>and</a> <a href='SkColor_Reference#Alpha'>alpha</a>, <a href='undocumented#Unpremultiply'>Unpremultiplied</a>
<a href='SkColor_Reference#Color'>color</a> and <a href='SkColor_Reference#Alpha'>alpha</a>, <a href='undocumented#Unpremultiply'>Unpremultiplied</a>
### Example
@ -140,11 +140,11 @@ Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#C
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a>(<a href='SkColor_Reference#SkColorSetRGB'>r</a>, <a href='SkColor_Reference#SkColorSetRGB'>g</a>, <a href='SkColor_Reference#SkColorSetRGB'>b</a>) <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0<a href='SkColor_Reference#SkColorSetARGB'>xFF</a>, <a href='SkColor_Reference#SkColorSetARGB'>r</a>, <a href='SkColor_Reference#SkColorSetARGB'>g</a>, <a href='SkColor_Reference#SkColorSetARGB'>b</a>);
#define <a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a>(r, g, b) <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, r, g, b);
</pre>
Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>value</a> <a href='SkColor_Reference#Color'>from</a> 8-<a href='SkColor_Reference#Color'>bit</a> <a href='SkColor_Reference#Color'>component</a> <a href='SkColor_Reference#Color'>values</a>, <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>set</a>
<a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a> <a href='SkColor_Reference#Alpha'>to</a> 255.
Returns <a href='SkColor_Reference#Color'>Color</a> value from 8-bit component values, with <a href='SkColor_Reference#Alpha'>Alpha</a> set
fully opaque to 255.
### Parameters
@ -161,7 +161,7 @@ Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#C
### Return Value
<a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Color'>opaque</a> <a href='SkColor_Reference#Alpha'>alpha</a>
<a href='SkColor_Reference#Color'>color</a> with opaque <a href='SkColor_Reference#Alpha'>alpha</a>
### Example
@ -176,15 +176,15 @@ Returns <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#C
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorGetA'>SkColorGetA</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 24) & 0<a href='SkColor_Reference#Color'>xFF</a>);
#define <a href='SkColor_Reference#SkColorGetA'>SkColorGetA</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 24) & 0xFF);
</pre>
Returns <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>byte</a> <a href='SkColor_Reference#Alpha'>from</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>value</a>.
Returns <a href='SkColor_Reference#Alpha'>Alpha</a> byte from <a href='SkColor_Reference#Color'>Color</a> value.
### Parameters
<table> <tr> <td><a name='SkColorGetA_color'><code><strong>color</strong></code></a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, <a href='SkColor_Reference#SkColor'>a</a> 32-<a href='SkColor_Reference#SkColor'>bit</a> <a href='SkColor_Reference#SkColor'>unsigned</a> <a href='SkColor_Reference#SkColor'>int</a>, <a href='SkColor_Reference#SkColor'>in</a> 0<a href='SkColor_Reference#SkColor'>xAARRGGBB</a> <a href='SkColor_Reference#SkColor'>format</a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, a 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
@ -201,15 +201,15 @@ Returns <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#A
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 16) & 0<a href='SkColor_Reference#Color'>xFF</a>);
#define <a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 16) & 0xFF);
</pre>
Returns red component of <a href='SkColor_Reference#Color'>Color</a>, <a href='SkColor_Reference#Color'>from</a> <a href='SkColor_Reference#Color'>zero</a> <a href='SkColor_Reference#Color'>to</a> 255.
Returns red component of <a href='SkColor_Reference#Color'>Color</a>, from zero to 255.
### Parameters
<table> <tr> <td><a name='SkColorGetR_color'><code><strong>color</strong></code></a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, <a href='SkColor_Reference#SkColor'>a</a> 32-<a href='SkColor_Reference#SkColor'>bit</a> <a href='SkColor_Reference#SkColor'>unsigned</a> <a href='SkColor_Reference#SkColor'>int</a>, <a href='SkColor_Reference#SkColor'>in</a> 0<a href='SkColor_Reference#SkColor'>xAARRGGBB</a> <a href='SkColor_Reference#SkColor'>format</a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, a 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
@ -230,15 +230,15 @@ red byte
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 8) & 0<a href='SkColor_Reference#Color'>xFF</a>);
#define <a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 8) & 0xFF);
</pre>
Returns green component of <a href='SkColor_Reference#Color'>Color</a>, <a href='SkColor_Reference#Color'>from</a> <a href='SkColor_Reference#Color'>zero</a> <a href='SkColor_Reference#Color'>to</a> 255.
Returns green component of <a href='SkColor_Reference#Color'>Color</a>, from zero to 255.
### Parameters
<table> <tr> <td><a name='SkColorGetG_color'><code><strong>color</strong></code></a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, <a href='SkColor_Reference#SkColor'>a</a> 32-<a href='SkColor_Reference#SkColor'>bit</a> <a href='SkColor_Reference#SkColor'>unsigned</a> <a href='SkColor_Reference#SkColor'>int</a>, <a href='SkColor_Reference#SkColor'>in</a> 0<a href='SkColor_Reference#SkColor'>xAARRGGBB</a> <a href='SkColor_Reference#SkColor'>format</a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, a 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
@ -259,15 +259,15 @@ green byte
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 0) & 0<a href='SkColor_Reference#Color'>xFF</a>);
#define <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>(<a href='SkColor_Reference#Color'>color</a>) (((<a href='SkColor_Reference#Color'>color</a>) >> 0) & 0xFF);
</pre>
Returns blue component of <a href='SkColor_Reference#Color'>Color</a>, <a href='SkColor_Reference#Color'>from</a> <a href='SkColor_Reference#Color'>zero</a> <a href='SkColor_Reference#Color'>to</a> 255.
Returns blue component of <a href='SkColor_Reference#Color'>Color</a>, from zero to 255.
### Parameters
<table> <tr> <td><a name='SkColorGetB_color'><code><strong>color</strong></code></a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, <a href='SkColor_Reference#SkColor'>a</a> 32-<a href='SkColor_Reference#SkColor'>bit</a> <a href='SkColor_Reference#SkColor'>unsigned</a> <a href='SkColor_Reference#SkColor'>int</a>, <a href='SkColor_Reference#SkColor'>in</a> 0<a href='SkColor_Reference#SkColor'>xAARRGGBB</a> <a href='SkColor_Reference#SkColor'>format</a></td>
<td><a href='SkColor_Reference#SkColor'>SkColor</a>, a 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
@ -288,11 +288,11 @@ blue byte
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static constexpr inline <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetA'>SkColorSetA</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColor'>c</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>)
static constexpr inline <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColorSetA'>SkColorSetA</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c, <a href='undocumented#U8CPU'>U8CPU</a> a)
</pre>
Returns <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Color'>red</a>, <a href='SkColor_Reference#Color'>blue</a>, <a href='SkColor_Reference#Color'>and</a> <a href='SkColor_Reference#Color'>green</a> <a href='SkColor_Reference#Color'>set</a> <a href='SkColor_Reference#Color'>from</a> <a href='#SkColorSetA_c'>c</a>; <a href='#SkColorSetA_c'>and</a> <a href='SkColor_Reference#Alpha'>alpha</a> <a href='SkColor_Reference#Alpha'>set</a>
<a href='SkColor_Reference#Alpha'>from</a> <a href='#SkColorSetA_a'>a</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>component</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='#SkColorSetA_c'>c</a> <a href='#SkColorSetA_c'>is</a> <a href='#SkColorSetA_c'>ignored</a> <a href='#SkColorSetA_c'>and</a> <a href='#SkColorSetA_c'>is</a> <a href='#SkColorSetA_c'>replaced</a> <a href='#SkColorSetA_c'>by</a> <a href='#SkColorSetA_a'>a</a> <a href='#SkColorSetA_a'>in</a> <a href='#SkColorSetA_a'>result</a>.
Returns <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor_Reference#Color'>Color</a> with red, blue, and green set from <a href='#SkColorSetA_c'>c</a>; and <a href='SkColor_Reference#Alpha'>alpha</a> set
from <a href='#SkColorSetA_a'>a</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> component of <a href='#SkColorSetA_c'>c</a> is ignored and is replaced by <a href='#SkColorSetA_a'>a</a> in result.
### Parameters
@ -300,13 +300,13 @@ Returns <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColo
<td>packed RGB, eight bits per component</td>
</tr>
<tr> <td><a name='SkColorSetA_a'><code><strong>a</strong></code></a></td>
<td><a href='SkColor_Reference#Alpha'>Alpha</a>: <a href='SkColor_Reference#Alpha'>transparent</a> <a href='SkColor_Reference#Alpha'>at</a> <a href='SkColor_Reference#Alpha'>zero</a>, <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a> <a href='SkColor_Reference#Alpha'>at</a> 255</td>
<td><a href='SkColor_Reference#Alpha'>Alpha</a>: transparent at zero, fully opaque at 255</td>
</tr>
</table>
### Return Value
<a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>with</a> <a href='SkColor_Reference#Color'>transparency</a>
<a href='SkColor_Reference#Color'>Color</a> with transparency
### Example
@ -321,12 +321,12 @@ Returns <a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColo
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaTRANSPARENT'>SK_AlphaTRANSPARENT</a> = 0<a href='SkColor_Reference#SK_AlphaTRANSPARENT'>x00</a>;
<a href='SkColor_Reference#SK_AlphaTRANSPARENT'>constexpr</a> <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaOPAQUE'>SK_AlphaOPAQUE</a> = 0<a href='SkColor_Reference#SK_AlphaOPAQUE'>xFF</a>;
constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaTRANSPARENT'>SK_AlphaTRANSPARENT</a> = 0x00;
constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_AlphaOPAQUE'>SK_AlphaOPAQUE</a> = 0xFF;
</pre>
<a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>constants</a> <a href='SkColor_Reference#Alpha'>are</a> <a href='SkColor_Reference#Alpha'>conveniences</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>represent</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>transparent</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>fully</a>
<a href='SkColor_Reference#Alpha'>opaque</a> <a href='SkColor_Reference#Alpha'>colors</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>masks</a>. <a href='SkColor_Reference#Alpha'>Their</a> <a href='SkColor_Reference#Alpha'>use</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>not</a> <a href='SkColor_Reference#Alpha'>required</a>.
<a href='SkColor_Reference#Alpha'>Alpha</a> constants are conveniences to represent fully transparent and fully
opaque colors and masks. Their use is not required.
### Constants
@ -338,28 +338,28 @@ constexpr <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Refer
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_AlphaTRANSPARENT'><code>SK_AlphaTRANSPARENT</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x00</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully transparent <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SkAlpha'>value</a>. <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SkAlpha'>ranges</a> <a href='SkColor_Reference#SkAlpha'>from</a> <a href='SkColor_Reference#SkAlpha'>zero</a>,
<a href='SkColor_Reference#SkAlpha'>fully</a> <a href='SkColor_Reference#SkAlpha'>transparent</a>; <a href='SkColor_Reference#SkAlpha'>to</a> 255, <a href='SkColor_Reference#SkAlpha'>fully</a> <a href='SkColor_Reference#SkAlpha'>opaque</a>.
Represents fully transparent <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> value. <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> ranges from zero,
fully transparent; to 255, fully opaque.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_AlphaOPAQUE'><code>SK_AlphaOPAQUE</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SkAlpha'>value</a>. <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SkAlpha'>ranges</a> <a href='SkColor_Reference#SkAlpha'>from</a> <a href='SkColor_Reference#SkAlpha'>zero</a>,
<a href='SkColor_Reference#SkAlpha'>fully</a> <a href='SkColor_Reference#SkAlpha'>transparent</a>; <a href='SkColor_Reference#SkAlpha'>to</a> 255, <a href='SkColor_Reference#SkAlpha'>fully</a> <a href='SkColor_Reference#SkAlpha'>opaque</a>.
Represents fully opaque <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> value. <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> ranges from zero,
fully transparent; to 255, fully opaque.
</td>
</tr>
</table>
### Example
<div><fiddle-embed name="bc9c7ea424d10bbcd1e5a88770d4794e"><div><a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>parts</a> <a href='SkColor_Reference#Color'>of</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkBitmap_Reference#Bitmap'>bitmap</a> <a href='SkBitmap_Reference#Bitmap'>red</a> <a href='SkBitmap_Reference#Bitmap'>if</a> <a href='SkBitmap_Reference#Bitmap'>they</a> <a href='SkBitmap_Reference#Bitmap'>mostly</a> <a href='SkBitmap_Reference#Bitmap'>contain</a> <a href='SkBitmap_Reference#Bitmap'>transparent</a> <a href='SkBitmap_Reference#Bitmap'>pixels</a>.
<div><fiddle-embed name="bc9c7ea424d10bbcd1e5a88770d4794e"><div><a href='SkColor_Reference#Color'>Color</a> the parts of the <a href='SkBitmap_Reference#Bitmap'>bitmap</a> red if they mostly contain transparent pixels.
</div></fiddle-embed></div>
### Example
<div><fiddle-embed name="0424f67ebc2858e8fd04ae3367b115ff"><div><a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>parts</a> <a href='SkColor_Reference#Color'>of</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkBitmap_Reference#Bitmap'>bitmap</a> <a href='SkBitmap_Reference#Bitmap'>green</a> <a href='SkBitmap_Reference#Bitmap'>if</a> <a href='SkBitmap_Reference#Bitmap'>they</a> <a href='SkBitmap_Reference#Bitmap'>contain</a> <a href='SkBitmap_Reference#Bitmap'>fully</a> <a href='SkBitmap_Reference#Bitmap'>opaque</a> <a href='SkBitmap_Reference#Bitmap'>pixels</a>.
<div><fiddle-embed name="0424f67ebc2858e8fd04ae3367b115ff"><div><a href='SkColor_Reference#Color'>Color</a> the parts of the <a href='SkBitmap_Reference#Bitmap'>bitmap</a> green if they contain fully opaque pixels.
</div></fiddle-embed></div>
### See Also
@ -372,22 +372,22 @@ Represents fully opaque <a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href=
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a>;
<a href='SkColor_Reference#SK_ColorTRANSPARENT'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a>;
<a href='SkColor_Reference#SK_ColorBLACK'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorDKGRAY'>SK_ColorDKGRAY</a>;
<a href='SkColor_Reference#SK_ColorDKGRAY'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGRAY'>SK_ColorGRAY</a>;
<a href='SkColor_Reference#SK_ColorGRAY'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorLTGRAY'>SK_ColorLTGRAY</a>;
<a href='SkColor_Reference#SK_ColorLTGRAY'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a>;
<a href='SkColor_Reference#SK_ColorWHITE'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorRED'>SK_ColorRED</a>;
<a href='SkColor_Reference#SK_ColorRED'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGREEN'>SK_ColorGREEN</a>;
<a href='SkColor_Reference#SK_ColorGREEN'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLUE'>SK_ColorBLUE</a>;
<a href='SkColor_Reference#SK_ColorBLUE'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a>;
<a href='SkColor_Reference#SK_ColorYELLOW'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorCYAN'>SK_ColorCYAN</a>;
<a href='SkColor_Reference#SK_ColorCYAN'>constexpr</a> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorMAGENTA'>SK_ColorMAGENTA</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorDKGRAY'>SK_ColorDKGRAY</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGRAY'>SK_ColorGRAY</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorLTGRAY'>SK_ColorLTGRAY</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorRED'>SK_ColorRED</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorGREEN'>SK_ColorGREEN</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorBLUE'>SK_ColorBLUE</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorCYAN'>SK_ColorCYAN</a>;
constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SK_ColorMAGENTA'>SK_ColorMAGENTA</a>;
</pre>
<a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Color'>names</a> <a href='SkColor_Reference#Color'>are</a> <a href='SkColor_Reference#Color'>provided</a> <a href='SkColor_Reference#Color'>as</a> <a href='SkColor_Reference#Color'>conveniences</a>, <a href='SkColor_Reference#Color'>but</a> <a href='SkColor_Reference#Color'>are</a> <a href='SkColor_Reference#Color'>not</a> <a href='SkColor_Reference#Color'>otherwise</a> <a href='SkColor_Reference#Color'>special</a>.
<a href='SkColor_Reference#Color'>The</a> <a href='SkColor_Reference#Color'>values</a> <a href='SkColor_Reference#Color'>chosen</a> <a href='SkColor_Reference#Color'>for</a> <a href='SkColor_Reference#Color'>names</a> <a href='SkColor_Reference#Color'>may</a> <a href='SkColor_Reference#Color'>not</a> <a href='SkColor_Reference#Color'>be</a> <a href='SkColor_Reference#Color'>the</a> <a href='SkColor_Reference#Color'>same</a> <a href='SkColor_Reference#Color'>as</a> <a href='SkColor_Reference#Color'>values</a> <a href='SkColor_Reference#Color'>used</a> <a href='SkColor_Reference#Color'>by</a>
<a href='undocumented#SVG'>SVG</a>, <a href='undocumented#SVG'>HTML</a>, <a href='undocumented#SVG'>CSS</a>, <a href='undocumented#SVG'>or</a> <a href='undocumented#SVG'>colors</a> <a href='undocumented#SVG'>named</a> <a href='undocumented#SVG'>by</a> <a href='undocumented#SVG'>a</a> <a href='undocumented#SVG'>platform</a>.
<a href='SkColor_Reference#Color'>Color</a> names are provided as conveniences, but are not otherwise special.
The values chosen for names may not be the same as values used by
<a href='undocumented#SVG'>SVG</a>, HTML, CSS, or colors named by a platform.
### Constants
@ -399,8 +399,8 @@ constexpr <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Refer
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorTRANSPARENT'><code>SK_ColorTRANSPARENT</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x00000000</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully transparent <a href='SkColor_Reference#SkColor'>SkColor</a>. <a href='SkColor_Reference#SkColor'>May</a> <a href='SkColor_Reference#SkColor'>be</a> <a href='SkColor_Reference#SkColor'>used</a> <a href='SkColor_Reference#SkColor'>to</a> <a href='SkColor_Reference#SkColor'>initialize</a> <a href='SkColor_Reference#SkColor'>a</a> <a href='SkColor_Reference#SkColor'>destination</a>
<a href='SkColor_Reference#SkColor'>containing</a> <a href='SkColor_Reference#SkColor'>a</a> <a href='SkColor_Reference#SkColor'>mask</a> <a href='SkColor_Reference#SkColor'>or</a> <a href='SkColor_Reference#SkColor'>a</a> <a href='SkColor_Reference#SkColor'>non-rectangular</a> <a href='SkImage_Reference#Image'>image</a>.
Represents fully transparent <a href='SkColor_Reference#SkColor'>SkColor</a>. May be used to initialize a destination
containing a mask or a non-rectangular <a href='SkImage_Reference#Image'>image</a>.
</td>
</tr>
<tr>
@ -415,7 +415,7 @@ Represents fully opaque black.
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF444444</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque dark gray.
Note that <a href='#SVG_darkgray'>SVG_darkgray</a> <a href='#SVG_darkgray'>is</a> <a href='#SVG_darkgray'>equivalent</a> <a href='#SVG_darkgray'>to</a> 0<a href='#SVG_darkgray'>xFFA9A9A9</a>.
Note that <a href='#SVG_darkgray'>SVG_darkgray</a> is equivalent to 0xFFA9A9A9.
</td>
</tr>
<tr>
@ -423,15 +423,15 @@ Note that <a href='#SVG_darkgray'>SVG_darkgray</a> <a href='#SVG_darkgray'>is</a
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF888888</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque gray.
Note that <a href='#HTML_Gray'>HTML_Gray</a> <a href='#HTML_Gray'>is</a> <a href='#HTML_Gray'>equivalent</a> <a href='#HTML_Gray'>to</a> 0<a href='#HTML_Gray'>xFF808080</a>.
Note that <a href='#HTML_Gray'>HTML_Gray</a> is equivalent to 0xFF808080.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorLTGRAY'><code>SK_ColorLTGRAY</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFFCCCCCC</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque light gray. <a href='#HTML_Silver'>HTML_Silver</a> <a href='#HTML_Silver'>is</a> <a href='#HTML_Silver'>equivalent</a> <a href='#HTML_Silver'>to</a> 0<a href='#HTML_Silver'>xFFC0C0C0</a>.
<a href='#HTML_Silver'>Note</a> <a href='#HTML_Silver'>that</a> <a href='#SVG_lightgray'>SVG_lightgray</a> <a href='#SVG_lightgray'>is</a> <a href='#SVG_lightgray'>equivalent</a> <a href='#SVG_lightgray'>to</a> 0<a href='#SVG_lightgray'>xFFD3D3D3</a>.
Represents fully opaque light gray. <a href='#HTML_Silver'>HTML_Silver</a> is equivalent to 0xFFC0C0C0.
Note that <a href='#SVG_lightgray'>SVG_lightgray</a> is equivalent to 0xFFD3D3D3.
</td>
</tr>
<tr>
@ -452,8 +452,8 @@ Represents fully opaque red.
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorGREEN'><code>SK_ColorGREEN</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF00FF00</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque green. <a href='#HTML_Lime'>HTML_Lime</a> <a href='#HTML_Lime'>is</a> <a href='#HTML_Lime'>equivalent</a>.
<a href='#HTML_Lime'>Note</a> <a href='#HTML_Lime'>that</a> <a href='#HTML_Green'>HTML_Green</a> <a href='#HTML_Green'>is</a> <a href='#HTML_Green'>equivalent</a> <a href='#HTML_Green'>to</a> 0<a href='#HTML_Green'>xFF008000</a>.
Represents fully opaque green. <a href='#HTML_Lime'>HTML_Lime</a> is equivalent.
Note that <a href='#HTML_Green'>HTML_Green</a> is equivalent to 0xFF008000.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
@ -474,14 +474,14 @@ Represents fully opaque yellow.
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorCYAN'><code>SK_ColorCYAN</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF00FFFF</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque cyan. <a href='#HTML_Aqua'>HTML_Aqua</a> <a href='#HTML_Aqua'>is</a> <a href='#HTML_Aqua'>equivalent</a>.
Represents fully opaque cyan. <a href='#HTML_Aqua'>HTML_Aqua</a> is equivalent.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorMAGENTA'><code>SK_ColorMAGENTA</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFFFF00FF</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque magenta. <a href='#HTML_Fuchsia'>HTML_Fuchsia</a> <a href='#HTML_Fuchsia'>is</a> <a href='#HTML_Fuchsia'>equivalent</a>.
Represents fully opaque magenta. <a href='#HTML_Fuchsia'>HTML_Fuchsia</a> is equivalent.
</td>
</tr>
</table>
@ -492,17 +492,17 @@ Represents fully opaque magenta. <a href='#HTML_Fuchsia'>HTML_Fuchsia</a> <a hre
### Example
<div><fiddle-embed name="9ca1e2a5b9b4c92ecf4409d0813867d6"><div><a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> <a href='SkColor_Reference#SK_ColorTRANSPARENT'>sets</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>components</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>zero</a>.
<div><fiddle-embed name="9ca1e2a5b9b4c92ecf4409d0813867d6"><div><a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> sets <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> and components to zero.
</div></fiddle-embed></div>
### Example
<div><fiddle-embed name="6971489f28291f08e429cc6ccc73b09b"><div><a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a> <a href='SkColor_Reference#SK_ColorBLACK'>sets</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>one</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>components</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>zero</a>.
<div><fiddle-embed name="6971489f28291f08e429cc6ccc73b09b"><div><a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a> sets <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> to one and components to zero.
</div></fiddle-embed></div>
### Example
<div><fiddle-embed name="fce650f997e802d4e55edf62b8437a2d"><div><a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a> <a href='SkColor_Reference#SK_ColorWHITE'>sets</a> <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>components</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>one</a>.
<div><fiddle-embed name="fce650f997e802d4e55edf62b8437a2d"><div><a href='SkColor_Reference#SK_ColorWHITE'>SK_ColorWHITE</a> sets <a href='SkColor_Reference#Color'>Color</a> <a href='SkColor_Reference#Alpha'>Alpha</a> and components to one.
</div></fiddle-embed></div>
### See Also
@ -513,42 +513,42 @@ Represents fully opaque magenta. <a href='#HTML_Fuchsia'>HTML_Fuchsia</a> <a hre
<a name='HSV_Hue'></a>
Hue represents an angle, in degrees, on a <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>wheel</a>. <a href='SkColor_Reference#Color'>Hue</a> <a href='SkColor_Reference#Color'>has</a> <a href='SkColor_Reference#Color'>a</a> <a href='SkColor_Reference#Color'>positive</a> <a href='SkColor_Reference#Color'>value</a>
<a href='SkColor_Reference#Color'>modulo</a> 360, <a href='SkColor_Reference#Color'>where</a> <a href='SkColor_Reference#Color'>zero</a> <a href='SkColor_Reference#Color'>degrees</a> <a href='SkColor_Reference#Color'>is</a> <a href='SkColor_Reference#Color'>red</a>.
Hue represents an angle, in degrees, on a <a href='SkColor_Reference#Color'>color</a> wheel. Hue has a positive value
modulo 360, where zero degrees is red.
<a name='HSV_Saturation'></a>
<a href='undocumented#Saturation'>Saturation</a> <a href='undocumented#Saturation'>represents</a> <a href='undocumented#Saturation'>the</a> <a href='undocumented#Saturation'>intensity</a> <a href='undocumented#Saturation'>of</a> <a href='undocumented#Saturation'>the</a> <a href='SkColor_Reference#Color'>color</a>. <a href='undocumented#Saturation'>Saturation</a> <a href='undocumented#Saturation'>varies</a> <a href='undocumented#Saturation'>from</a> <a href='undocumented#Saturation'>zero</a>,
<a href='undocumented#Saturation'>with</a> <a href='undocumented#Saturation'>no</a> <a href='undocumented#Saturation'>Hue</a> <a href='undocumented#Saturation'>contribution</a>; <a href='undocumented#Saturation'>to</a> <a href='undocumented#Saturation'>one</a>, <a href='undocumented#Saturation'>with</a> <a href='undocumented#Saturation'>full</a> <a href='undocumented#Saturation'>Hue</a> <a href='undocumented#Saturation'>contribution</a>.
<a href='undocumented#Saturation'>Saturation</a> represents the intensity of the <a href='SkColor_Reference#Color'>color</a>. <a href='undocumented#Saturation'>Saturation</a> varies from zero,
with no Hue contribution; to one, with full Hue contribution.
<a name='HSV_Value'></a>
Value represents the lightness of the <a href='SkColor_Reference#Color'>color</a>. <a href='SkColor_Reference#Color'>Value</a> <a href='SkColor_Reference#Color'>varies</a> <a href='SkColor_Reference#Color'>from</a> <a href='SkColor_Reference#Color'>zero</a>, <a href='SkColor_Reference#Color'>black</a>; <a href='SkColor_Reference#Color'>to</a>
<a href='SkColor_Reference#Color'>one</a>, <a href='SkColor_Reference#Color'>full</a> <a href='SkColor_Reference#Color'>brightness</a>.
Value represents the lightness of the <a href='SkColor_Reference#Color'>color</a>. Value varies from zero, black; to
one, full brightness.
<a name='SkRGBToHSV'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>red</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>green</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>blue</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3])
void <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>(<a href='undocumented#U8CPU'>U8CPU</a> red, <a href='undocumented#U8CPU'>U8CPU</a> green, <a href='undocumented#U8CPU'>U8CPU</a> blue, <a href='undocumented#SkScalar'>SkScalar</a> hsv[3])
</pre>
Converts RGB to its HSV components.
<a href='#SkRGBToHSV_hsv'>hsv</a>[0] <a href='#SkRGBToHSV_hsv'>contains</a> <a href='#Color_HSV_Hue'>HSV_Hue</a>, <a href='#Color_HSV_Hue'>a</a> <a href='#Color_HSV_Hue'>value</a> <a href='#Color_HSV_Hue'>from</a> <a href='#Color_HSV_Hue'>zero</a> <a href='#Color_HSV_Hue'>to</a> <a href='#Color_HSV_Hue'>less</a> <a href='#Color_HSV_Hue'>than</a> 360.
<a href='#SkRGBToHSV_hsv'>hsv</a>[1] <a href='#SkRGBToHSV_hsv'>contains</a> <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, <a href='#Color_HSV_Saturation'>a</a> <a href='#Color_HSV_Saturation'>value</a> <a href='#Color_HSV_Saturation'>from</a> <a href='#Color_HSV_Saturation'>zero</a> <a href='#Color_HSV_Saturation'>to</a> <a href='#Color_HSV_Saturation'>one</a>.
<a href='#SkRGBToHSV_hsv'>hsv</a>[2] <a href='#SkRGBToHSV_hsv'>contains</a> <a href='#Color_HSV_Value'>HSV_Value</a>, <a href='#Color_HSV_Value'>a</a> <a href='#Color_HSV_Value'>value</a> <a href='#Color_HSV_Value'>from</a> <a href='#Color_HSV_Value'>zero</a> <a href='#Color_HSV_Value'>to</a> <a href='#Color_HSV_Value'>one</a>.
<a href='#SkRGBToHSV_hsv'>hsv</a>[0] contains <a href='#Color_HSV_Hue'>HSV_Hue</a>, a value from zero to less than 360.
<a href='#SkRGBToHSV_hsv'>hsv</a>[1] contains <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, a value from zero to one.
<a href='#SkRGBToHSV_hsv'>hsv</a>[2] contains <a href='#Color_HSV_Value'>HSV_Value</a>, a value from zero to one.
### Parameters
<table> <tr> <td><a name='SkRGBToHSV_red'><code><strong>red</strong></code></a></td>
<td><a href='#SkRGBToHSV_red'>red</a> <a href='#SkRGBToHSV_red'>component</a> <a href='#SkRGBToHSV_red'>value</a> <a href='#SkRGBToHSV_red'>from</a> <a href='#SkRGBToHSV_red'>zero</a> <a href='#SkRGBToHSV_red'>to</a> 255</td>
<td><a href='#SkRGBToHSV_red'>red</a> component value from zero to 255</td>
</tr>
<tr> <td><a name='SkRGBToHSV_green'><code><strong>green</strong></code></a></td>
<td><a href='#SkRGBToHSV_green'>green</a> <a href='#SkRGBToHSV_green'>component</a> <a href='#SkRGBToHSV_green'>value</a> <a href='#SkRGBToHSV_green'>from</a> <a href='#SkRGBToHSV_green'>zero</a> <a href='#SkRGBToHSV_green'>to</a> 255</td>
<td><a href='#SkRGBToHSV_green'>green</a> component value from zero to 255</td>
</tr>
<tr> <td><a name='SkRGBToHSV_blue'><code><strong>blue</strong></code></a></td>
<td><a href='#SkRGBToHSV_blue'>blue</a> <a href='#SkRGBToHSV_blue'>component</a> <a href='#SkRGBToHSV_blue'>value</a> <a href='#SkRGBToHSV_blue'>from</a> <a href='#SkRGBToHSV_blue'>zero</a> <a href='#SkRGBToHSV_blue'>to</a> 255</td>
<td><a href='#SkRGBToHSV_blue'>blue</a> component value from zero to 255</td>
</tr>
<tr> <td><a name='SkRGBToHSV_hsv'><code><strong>hsv</strong></code></a></td>
<td>three element array which holds the resulting HSV components
@ -569,18 +569,18 @@ Converts RGB to its HSV components.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#Color'>color</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3])
void <a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#Color'>color</a>, <a href='undocumented#SkScalar'>SkScalar</a> hsv[3])
</pre>
Converts ARGB to its HSV components. <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>in</a> <a href='SkColor_Reference#Alpha'>ARGB</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>ignored</a>.
<a href='#SkColorToHSV_hsv'>hsv</a>[0] <a href='#SkColorToHSV_hsv'>contains</a> <a href='#Color_HSV_Hue'>HSV_Hue</a>, <a href='#Color_HSV_Hue'>and</a> <a href='#Color_HSV_Hue'>is</a> <a href='#Color_HSV_Hue'>assigned</a> <a href='#Color_HSV_Hue'>a</a> <a href='#Color_HSV_Hue'>value</a> <a href='#Color_HSV_Hue'>from</a> <a href='#Color_HSV_Hue'>zero</a> <a href='#Color_HSV_Hue'>to</a> <a href='#Color_HSV_Hue'>less</a> <a href='#Color_HSV_Hue'>than</a> 360.
<a href='#SkColorToHSV_hsv'>hsv</a>[1] <a href='#SkColorToHSV_hsv'>contains</a> <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, <a href='#Color_HSV_Saturation'>a</a> <a href='#Color_HSV_Saturation'>value</a> <a href='#Color_HSV_Saturation'>from</a> <a href='#Color_HSV_Saturation'>zero</a> <a href='#Color_HSV_Saturation'>to</a> <a href='#Color_HSV_Saturation'>one</a>.
<a href='#SkColorToHSV_hsv'>hsv</a>[2] <a href='#SkColorToHSV_hsv'>contains</a> <a href='#Color_HSV_Value'>HSV_Value</a>, <a href='#Color_HSV_Value'>a</a> <a href='#Color_HSV_Value'>value</a> <a href='#Color_HSV_Value'>from</a> <a href='#Color_HSV_Value'>zero</a> <a href='#Color_HSV_Value'>to</a> <a href='#Color_HSV_Value'>one</a>.
Converts ARGB to its HSV components. <a href='SkColor_Reference#Alpha'>Alpha</a> in ARGB is ignored.
<a href='#SkColorToHSV_hsv'>hsv</a>[0] contains <a href='#Color_HSV_Hue'>HSV_Hue</a>, and is assigned a value from zero to less than 360.
<a href='#SkColorToHSV_hsv'>hsv</a>[1] contains <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, a value from zero to one.
<a href='#SkColorToHSV_hsv'>hsv</a>[2] contains <a href='#Color_HSV_Value'>HSV_Value</a>, a value from zero to one.
### Parameters
<table> <tr> <td><a name='SkColorToHSV_color'><code><strong>color</strong></code></a></td>
<td>ARGB <a href='#SkColorToHSV_color'>color</a> <a href='#SkColorToHSV_color'>to</a> <a href='#SkColorToHSV_color'>convert</a>
<td>ARGB <a href='#SkColorToHSV_color'>color</a> to convert
</td>
</tr>
<tr> <td><a name='SkColorToHSV_hsv'><code><strong>hsv</strong></code></a></td>
@ -602,20 +602,20 @@ Converts ARGB to its HSV components. <a href='SkColor_Reference#Alpha'>Alpha</a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='SkColor_Reference#Alpha'>alpha</a>, <a href='SkColor_Reference#Alpha'>const</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3])
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='SkColor_Reference#Alpha'>alpha</a>, const <a href='undocumented#SkScalar'>SkScalar</a> hsv[3])
</pre>
Converts HSV components to an ARGB <a href='SkColor_Reference#Color'>color</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>passed</a> <a href='SkColor_Reference#Alpha'>through</a> <a href='SkColor_Reference#Alpha'>unchanged</a>.
<a href='#SkHSVToColor_hsv'>hsv</a>[0] <a href='#SkHSVToColor_hsv'>represents</a> <a href='#Color_HSV_Hue'>HSV_Hue</a>, <a href='#Color_HSV_Hue'>an</a> <a href='#Color_HSV_Hue'>angle</a> <a href='#Color_HSV_Hue'>from</a> <a href='#Color_HSV_Hue'>zero</a> <a href='#Color_HSV_Hue'>to</a> <a href='#Color_HSV_Hue'>less</a> <a href='#Color_HSV_Hue'>than</a> 360.
<a href='#SkHSVToColor_hsv'>hsv</a>[1] <a href='#SkHSVToColor_hsv'>represents</a> <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, <a href='#Color_HSV_Saturation'>and</a> <a href='#Color_HSV_Saturation'>varies</a> <a href='#Color_HSV_Saturation'>from</a> <a href='#Color_HSV_Saturation'>zero</a> <a href='#Color_HSV_Saturation'>to</a> <a href='#Color_HSV_Saturation'>one</a>.
<a href='#SkHSVToColor_hsv'>hsv</a>[2] <a href='#SkHSVToColor_hsv'>represents</a> <a href='#Color_HSV_Value'>HSV_Value</a>, <a href='#Color_HSV_Value'>and</a> <a href='#Color_HSV_Value'>varies</a> <a href='#Color_HSV_Value'>from</a> <a href='#Color_HSV_Value'>zero</a> <a href='#Color_HSV_Value'>to</a> <a href='#Color_HSV_Value'>one</a>.
Converts HSV components to an ARGB <a href='SkColor_Reference#Color'>color</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> is passed through unchanged.
<a href='#SkHSVToColor_hsv'>hsv</a>[0] represents <a href='#Color_HSV_Hue'>HSV_Hue</a>, an angle from zero to less than 360.
<a href='#SkHSVToColor_hsv'>hsv</a>[1] represents <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, and varies from zero to one.
<a href='#SkHSVToColor_hsv'>hsv</a>[2] represents <a href='#Color_HSV_Value'>HSV_Value</a>, and varies from zero to one.
<a href='#Color_HSV_Value'>Out</a> <a href='#Color_HSV_Value'>of</a> <a href='#Color_HSV_Value'>range</a> <a href='#SkHSVToColor_hsv'>hsv</a> <a href='#SkHSVToColor_hsv'>values</a> <a href='#SkHSVToColor_hsv'>are</a> <a href='#SkHSVToColor_hsv'>pinned</a>.
Out of range <a href='#SkHSVToColor_hsv'>hsv</a> values are pinned.
### Parameters
<table> <tr> <td><a name='SkHSVToColor_alpha'><code><strong>alpha</strong></code></a></td>
<td><a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>component</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkColor_Reference#Alpha'>the</a> <a href='SkColor_Reference#Alpha'>returned</a> <a href='SkColor_Reference#Alpha'>ARGB</a> <a href='SkColor_Reference#Color'>color </a>
<td><a href='SkColor_Reference#Alpha'>Alpha</a> component of the returned ARGB <a href='SkColor_Reference#Color'>color </a>
</td>
</tr>
<tr> <td><a name='SkHSVToColor_hsv'><code><strong>hsv</strong></code></a></td>
@ -641,15 +641,15 @@ ARGB equivalent to HSV
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(<a href='SkColor_Reference#SkHSVToColor'>const</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>hsv</a>[3])
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>(const <a href='undocumented#SkScalar'>SkScalar</a> hsv[3])
</pre>
Converts HSV components to an ARGB <a href='SkColor_Reference#Color'>color</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='SkColor_Reference#Alpha'>is</a> <a href='SkColor_Reference#Alpha'>set</a> <a href='SkColor_Reference#Alpha'>to</a> 255.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[0] <a href='#SkHSVToColor_2_hsv'>represents</a> <a href='#Color_HSV_Hue'>HSV_Hue</a>, <a href='#Color_HSV_Hue'>an</a> <a href='#Color_HSV_Hue'>angle</a> <a href='#Color_HSV_Hue'>from</a> <a href='#Color_HSV_Hue'>zero</a> <a href='#Color_HSV_Hue'>to</a> <a href='#Color_HSV_Hue'>less</a> <a href='#Color_HSV_Hue'>than</a> 360.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[1] <a href='#SkHSVToColor_2_hsv'>represents</a> <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, <a href='#Color_HSV_Saturation'>and</a> <a href='#Color_HSV_Saturation'>varies</a> <a href='#Color_HSV_Saturation'>from</a> <a href='#Color_HSV_Saturation'>zero</a> <a href='#Color_HSV_Saturation'>to</a> <a href='#Color_HSV_Saturation'>one</a>.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[2] <a href='#SkHSVToColor_2_hsv'>represents</a> <a href='#Color_HSV_Value'>HSV_Value</a>, <a href='#Color_HSV_Value'>and</a> <a href='#Color_HSV_Value'>varies</a> <a href='#Color_HSV_Value'>from</a> <a href='#Color_HSV_Value'>zero</a> <a href='#Color_HSV_Value'>to</a> <a href='#Color_HSV_Value'>one</a>.
Converts HSV components to an ARGB <a href='SkColor_Reference#Color'>color</a>. <a href='SkColor_Reference#Alpha'>Alpha</a> is set to 255.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[0] represents <a href='#Color_HSV_Hue'>HSV_Hue</a>, an angle from zero to less than 360.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[1] represents <a href='#Color_HSV_Saturation'>HSV_Saturation</a>, and varies from zero to one.
<a href='#SkHSVToColor_2_hsv'>hsv</a>[2] represents <a href='#Color_HSV_Value'>HSV_Value</a>, and varies from zero to one.
<a href='#Color_HSV_Value'>Out</a> <a href='#Color_HSV_Value'>of</a> <a href='#Color_HSV_Value'>range</a> <a href='#SkHSVToColor_2_hsv'>hsv</a> <a href='#SkHSVToColor_2_hsv'>values</a> <a href='#SkHSVToColor_2_hsv'>are</a> <a href='#SkHSVToColor_2_hsv'>pinned</a>.
Out of range <a href='#SkHSVToColor_2_hsv'>hsv</a> values are pinned.
### Parameters
@ -681,25 +681,25 @@ RGB equivalent to HSV
typedef uint32_t <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>;
</pre>
32-bit ARGB <a href='SkColor_Reference#Color'>color</a> <a href='SkColor_Reference#Color'>value</a>, <a href='undocumented#Premultiply'>Premultiplied</a>. <a href='undocumented#Premultiply'>The</a> <a href='undocumented#Premultiply'>byte</a> <a href='undocumented#Premultiply'>order</a> <a href='undocumented#Premultiply'>for</a> <a href='undocumented#Premultiply'>this</a> <a href='undocumented#Premultiply'>value</a> <a href='undocumented#Premultiply'>is</a>
<a href='undocumented#Premultiply'>configuration</a> <a href='undocumented#Premultiply'>dependent</a>, <a href='undocumented#Premultiply'>matching</a> <a href='undocumented#Premultiply'>the</a> <a href='undocumented#Premultiply'>format</a> <a href='undocumented#Premultiply'>of</a> <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>.
<a href='SkBitmap_Reference#Bitmap'>This</a> <a href='SkBitmap_Reference#Bitmap'>is</a> <a href='SkBitmap_Reference#Bitmap'>different</a> <a href='SkBitmap_Reference#Bitmap'>from</a> <a href='SkColor_Reference#SkColor'>SkColor</a>, <a href='SkColor_Reference#SkColor'>which</a> <a href='SkColor_Reference#SkColor'>is</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a>, <a href='undocumented#Unpremultiply'>and</a> <a href='undocumented#Unpremultiply'>is</a> <a href='undocumented#Unpremultiply'>always</a> <a href='undocumented#Unpremultiply'>in</a> <a href='undocumented#Unpremultiply'>the</a>
<a href='undocumented#Unpremultiply'>same</a> <a href='undocumented#Unpremultiply'>byte</a> <a href='undocumented#Unpremultiply'>order</a>.
32-bit ARGB <a href='SkColor_Reference#Color'>color</a> value, <a href='undocumented#Premultiply'>Premultiplied</a>. The byte order for this value is
configuration dependent, matching the format of <a href='SkImageInfo_Reference#kBGRA_8888_SkColorType'>kBGRA_8888_SkColorType</a> <a href='SkBitmap_Reference#Bitmap'>bitmaps</a>.
This is different from <a href='SkColor_Reference#SkColor'>SkColor</a>, which is <a href='undocumented#Unpremultiply'>Unpremultiplied</a>, and is always in the
same byte order.
<a name='SkPreMultiplyARGB'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>a</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>r</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>g</a>, <a href='undocumented#U8CPU'>U8CPU</a> <a href='undocumented#U8CPU'>b</a>)
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b)
</pre>
Returns <a href='#SkPreMultiplyARGB_a'>a</a> <a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPMColor'>value</a> <a href='SkColor_Reference#SkPMColor'>from</a> <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 8-<a href='undocumented#Unpremultiply'>bit</a> <a href='undocumented#Unpremultiply'>component</a> <a href='undocumented#Unpremultiply'>values</a>.
Returns <a href='#SkPreMultiplyARGB_a'>a</a> <a href='SkColor_Reference#SkPMColor'>SkPMColor</a> value from <a href='undocumented#Unpremultiply'>Unpremultiplied</a> 8-bit component values.
### Parameters
<table> <tr> <td><a name='SkPreMultiplyARGB_a'><code><strong>a</strong></code></a></td>
<td>amount of <a href='SkColor_Reference#Alpha'>Alpha</a>, <a href='SkColor_Reference#Alpha'>from</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>transparent</a> (0) <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>fully</a> <a href='SkColor_Reference#Alpha'>opaque</a> (255)</td>
<td>amount of <a href='SkColor_Reference#Alpha'>Alpha</a>, from fully transparent (0) to fully opaque (255)</td>
</tr>
<tr> <td><a name='SkPreMultiplyARGB_r'><code><strong>r</strong></code></a></td>
<td>amount of red, from no red (0) to full red (255)</td>
@ -729,16 +729,16 @@ Returns <a href='#SkPreMultiplyARGB_a'>a</a> <a href='SkColor_Reference#SkPMColo
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyColor'>SkPreMultiplyColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor_Reference#SkColor'>c</a>)
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a> <a href='SkColor_Reference#SkPreMultiplyColor'>SkPreMultiplyColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c)
</pre>
Returns <a href='#Color_PM_Color'>PM_Color</a> <a href='#Color_PM_Color'>closest</a> <a href='#Color_PM_Color'>to</a> <a href='SkColor_Reference#Color'>Color</a> <a href='#SkPreMultiplyColor_c'>c</a>. <a href='#SkPreMultiplyColor_c'>Multiplies</a> <a href='#SkPreMultiplyColor_c'>c</a> <a href='#SkPreMultiplyColor_c'>RGB</a> <a href='#SkPreMultiplyColor_c'>components</a> <a href='#SkPreMultiplyColor_c'>by</a> <a href='#SkPreMultiplyColor_c'>the</a> <a href='#SkPreMultiplyColor_c'>c</a> <a href='SkColor_Reference#Alpha'>Alpha</a>,
<a href='SkColor_Reference#Alpha'>and</a> <a href='SkColor_Reference#Alpha'>arranges</a> <a href='SkColor_Reference#Alpha'>the</a> <a href='SkColor_Reference#Alpha'>bytes</a> <a href='SkColor_Reference#Alpha'>to</a> <a href='SkColor_Reference#Alpha'>match</a> <a href='SkColor_Reference#Alpha'>the</a> <a href='SkColor_Reference#Alpha'>format</a> <a href='SkColor_Reference#Alpha'>of</a> <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>.
Returns <a href='#Color_PM_Color'>PM_Color</a> closest to <a href='SkColor_Reference#Color'>Color</a> <a href='#SkPreMultiplyColor_c'>c</a>. Multiplies <a href='#SkPreMultiplyColor_c'>c</a> RGB components by the <a href='#SkPreMultiplyColor_c'>c</a> <a href='SkColor_Reference#Alpha'>Alpha</a>,
and arranges the bytes to match the format of <a href='SkImageInfo_Reference#kN32_SkColorType'>kN32_SkColorType</a>.
### Parameters
<table> <tr> <td><a name='SkPreMultiplyColor_c'><code><strong>c</strong></code></a></td>
<td><a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='undocumented#Unpremultiply'>ARGB</a> <a href='SkColor_Reference#Color'>Color</a></td>
<td><a href='undocumented#Unpremultiply'>Unpremultiplied</a> ARGB <a href='SkColor_Reference#Color'>Color</a></td>
</tr>
</table>

View File

@ -8,26 +8,26 @@ SkIPoint Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
struct <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> {
<a href='SkIPoint_Reference#SkIPoint'>int32_t</a> <a href='#SkIPoint_fX'>fX</a>;
<a href='#SkIPoint_fX'>int32_t</a> <a href='#SkIPoint_fY'>fY</a>;
int32_t <a href='#SkIPoint_fX'>fX</a>;
int32_t <a href='#SkIPoint_fY'>fY</a>;
<a href='#SkIPoint_fY'>static</a> <a href='#SkIPoint_fY'>constexpr</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkIPoint_Make'>Make</a>(<a href='#SkIPoint_Make'>int32_t</a> <a href='#SkIPoint_Make'>x</a>, <a href='#SkIPoint_Make'>int32_t</a> <a href='#SkIPoint_Make'>y</a>);
<a href='#SkIPoint_Make'>int32_t</a> <a href='#SkIPoint_x'>x()</a> <a href='#SkIPoint_x'>const</a>;
<a href='#SkIPoint_x'>int32_t</a> <a href='#SkIPoint_y'>y()</a> <a href='#SkIPoint_y'>const</a>;
<a href='#SkIPoint_y'>bool</a> <a href='#SkIPoint_isZero'>isZero</a>() <a href='#SkIPoint_isZero'>const</a>;
<a href='#SkIPoint_isZero'>void</a> <a href='#SkIPoint_isZero'>set</a>(<a href='#SkIPoint_isZero'>int32_t</a> <a href='#SkIPoint_isZero'>x</a>, <a href='#SkIPoint_isZero'>int32_t</a> <a href='#SkIPoint_isZero'>y</a>);
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>-() <a href='SkIPoint_Reference#SkIPoint'>const</a>;
<a href='SkIPoint_Reference#SkIPoint'>void</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>+=(<a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>v</a>);
<a href='SkIPoint_Reference#SkIVector'>void</a> <a href='SkIPoint_Reference#SkIVector'>operator</a>-=(<a href='SkIPoint_Reference#SkIVector'>const</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>v</a>);
<a href='SkIPoint_Reference#SkIVector'>bool</a> <a href='SkIPoint_Reference#SkIVector'>equals</a>(<a href='SkIPoint_Reference#SkIVector'>int32_t</a> <a href='SkIPoint_Reference#SkIVector'>x</a>, <a href='SkIPoint_Reference#SkIVector'>int32_t</a> <a href='SkIPoint_Reference#SkIVector'>y</a>) <a href='SkIPoint_Reference#SkIVector'>const</a>;
<a href='SkIPoint_Reference#SkIVector'>friend</a> <a href='SkIPoint_Reference#SkIVector'>bool</a> <a href='SkIPoint_Reference#SkIVector'>operator</a>==(<a href='SkIPoint_Reference#SkIVector'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>);
<a href='SkIPoint_Reference#SkIPoint'>friend</a> <a href='SkIPoint_Reference#SkIPoint'>bool</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>!=(<a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>);
<a href='SkIPoint_Reference#SkIPoint'>friend</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a> <a href='SkIPoint_Reference#SkIVector'>operator</a>-(<a href='SkIPoint_Reference#SkIVector'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>);
<a href='SkIPoint_Reference#SkIPoint'>friend</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>+(<a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>b</a>);
static constexpr <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkIPoint_Make'>Make</a>(int32_t x, int32_t y);
int32_t <a href='#SkIPoint_x'>x()</a> const;
int32_t <a href='#SkIPoint_y'>y()</a> const;
bool <a href='#SkIPoint_isZero'>isZero</a>() const;
void set(int32_t x, int32_t y);
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator-() const;
void operator+=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v);
void operator-=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v);
bool equals(int32_t x, int32_t y) const;
friend bool operator==(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b);
friend bool operator!=(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b);
friend <a href='SkIPoint_Reference#SkIVector'>SkIVector</a> operator-(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b);
friend <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator+(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& b);
};
</pre>
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>holds</a> <a href='SkIPoint_Reference#SkIPoint'>two</a> 32-<a href='SkIPoint_Reference#SkIPoint'>bit</a> <a href='SkIPoint_Reference#SkIPoint'>integer</a> <a href='SkIPoint_Reference#SkIPoint'>coordinates</a>.<table style='border-collapse: collapse; width: 62.5em'>
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> holds two 32-bit integer coordinates.<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
@ -53,10 +53,10 @@ y-axis value used by <a href='SkIPoint_Reference#IPoint'>IPoint</a>.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static constexpr <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkIPoint_Make'>Make</a>(<a href='#SkIPoint_Make'>int32_t</a> <a href='#SkIPoint_Make'>x</a>, <a href='#SkIPoint_Make'>int32_t</a> <a href='#SkIPoint_Make'>y</a>)
static constexpr <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkIPoint_Make'>Make</a>(int32_t x, int32_t y)
</pre>
Sets <a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>to</a> <a href='#SkIPoint_Make_x'>x</a>, <a href='#SkIPoint_fY'>fY</a> <a href='#SkIPoint_fY'>to</a> <a href='#SkIPoint_Make_y'>y</a>.
Sets <a href='#SkIPoint_fX'>fX</a> to <a href='#SkIPoint_Make_x'>x</a>, <a href='#SkIPoint_fY'>fY</a> to <a href='#SkIPoint_Make_y'>y</a>.
### Parameters
@ -95,7 +95,7 @@ pt1 == pt2
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkIPoint_x'>x()</a> <a href='#SkIPoint_x'>const</a>
int32_t <a href='#SkIPoint_x'>x()</a> const
</pre>
Returns x-axis value of <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>.
@ -125,7 +125,7 @@ pt1.fX == pt1.x()
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkIPoint_y'>y()</a> <a href='#SkIPoint_y'>const</a>
int32_t <a href='#SkIPoint_y'>y()</a> const
</pre>
Returns y-axis value of <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>.
@ -155,14 +155,14 @@ pt1.fY == pt1.y()
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkIPoint_isZero'>isZero</a>() <a href='#SkIPoint_isZero'>const</a>
bool <a href='#SkIPoint_isZero'>isZero</a>() const
</pre>
Returns true if <a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkIPoint_fY'>fY</a> <a href='#SkIPoint_fY'>are</a> <a href='#SkIPoint_fY'>both</a> <a href='#SkIPoint_fY'>zero</a>.
Returns true if <a href='#SkIPoint_fX'>fX</a> and <a href='#SkIPoint_fY'>fY</a> are both zero.
### Return Value
true if <a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>is</a> <a href='#SkIPoint_fX'>zero</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkIPoint_fY'>fY</a> <a href='#SkIPoint_fY'>is</a> <a href='#SkIPoint_fY'>zero</a>
true if <a href='#SkIPoint_fX'>fX</a> is zero and <a href='#SkIPoint_fY'>fY</a> is zero
### Example
@ -190,7 +190,7 @@ pt.isZero() == true
void set(int32_t x, int32_t y)
</pre>
Sets <a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>to</a> <a href='#SkIPoint_set_x'>x</a> <a href='#SkIPoint_set_x'>and</a> <a href='#SkIPoint_fY'>fY</a> <a href='#SkIPoint_fY'>to</a> <a href='#SkIPoint_set_y'>y</a>.
Sets <a href='#SkIPoint_fX'>fX</a> to <a href='#SkIPoint_set_x'>x</a> and <a href='#SkIPoint_fY'>fY</a> to <a href='#SkIPoint_set_y'>y</a>.
### Parameters
@ -223,14 +223,14 @@ pt1 == pt2
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>-() <a href='SkIPoint_Reference#SkIPoint'>const</a>
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator-() const
</pre>
Returns <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>changing</a> <a href='SkIPoint_Reference#SkIPoint'>the</a> <a href='SkIPoint_Reference#SkIPoint'>signs</a> <a href='SkIPoint_Reference#SkIPoint'>of</a> <a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkIPoint_fY'>fY</a>.
Returns <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> changing the signs of <a href='#SkIPoint_fX'>fX</a> and <a href='#SkIPoint_fY'>fY</a>.
### Return Value
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>as</a> (-<a href='#SkIPoint_fX'>fX</a>, -<a href='#SkIPoint_fY'>fY</a>)
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> as (-<a href='#SkIPoint_fX'>fX</a>, -<a href='#SkIPoint_fY'>fY</a>)
### Example
@ -249,22 +249,22 @@ pt: -2147483648, -2147483648 negate: -2147483648, -2147483648
### See Also
<a href='#SkIPoint_subtract_operator'>operator-(const SkIPoint& a, const SkIPoint& b)</a> operator-(const SkIPoint& a, const SkIPoint& b)<a href='#SkIPoint_subtractfrom_operator'>operator-=(const SkIVector& v)</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='SkPoint_Reference#SkPoint'>operator</a>-()_<a href='SkPoint_Reference#SkPoint'>const</a>
<a href='#SkIPoint_subtract_operator'>operator-(const SkIPoint& a, const SkIPoint& b)</a> operator-(const SkIPoint& a, const SkIPoint& b)<a href='#SkIPoint_subtractfrom_operator'>operator-=(const SkIVector& v)</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::operator-()_const
<a name='SkIPoint_addto_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void operator+=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>v</a>)
void operator+=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v)
</pre>
Offsets <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>by</a> <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_addto_operator_v'>v</a>. <a href='#SkIPoint_addto_operator_v'>Sets</a> <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>to</a> <code>(<a href='#SkIPoint_fX'>fX</a> + <a href='#SkIPoint_addto_operator_v'>v</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_fY'>fY</a> + <a href='#SkIPoint_addto_operator_v'>v</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
Offsets <a href='SkIPoint_Reference#IPoint'>IPoint</a> by <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_addto_operator_v'>v</a>. Sets <a href='SkIPoint_Reference#IPoint'>IPoint</a> to <code>(<a href='#SkIPoint_fX'>fX</a> + <a href='#SkIPoint_addto_operator_v'>v</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_fY'>fY</a> + <a href='#SkIPoint_addto_operator_v'>v</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
### Parameters
<table> <tr> <td><a name='SkIPoint_addto_operator_v'><code><strong>v</strong></code></a></td>
<td><a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>add</a></td>
<td><a href='#IPoint_IVector'>IVector</a> to add</td>
</tr>
</table>
@ -281,15 +281,15 @@ Offsets <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Referen
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void operator-=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>v</a>)
void operator-=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v)
</pre>
Subtracts <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_subtractfrom_operator_v'>v</a> <a href='#SkIPoint_subtractfrom_operator_v'>from</a> <a href='SkIPoint_Reference#IPoint'>IPoint</a>. <a href='SkIPoint_Reference#IPoint'>Sets</a> <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>to</a>: <code>(<a href='#SkIPoint_fX'>fX</a> - <a href='#SkIPoint_subtractfrom_operator_v'>v</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_fY'>fY</a> - <a href='#SkIPoint_subtractfrom_operator_v'>v</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
Subtracts <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_subtractfrom_operator_v'>v</a> from <a href='SkIPoint_Reference#IPoint'>IPoint</a>. Sets <a href='SkIPoint_Reference#IPoint'>IPoint</a> to: <code>(<a href='#SkIPoint_fX'>fX</a> - <a href='#SkIPoint_subtractfrom_operator_v'>v</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_fY'>fY</a> - <a href='#SkIPoint_subtractfrom_operator_v'>v</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
### Parameters
<table> <tr> <td><a name='SkIPoint_subtractfrom_operator_v'><code><strong>v</strong></code></a></td>
<td><a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>subtract</a></td>
<td><a href='#IPoint_IVector'>IVector</a> to subtract</td>
</tr>
</table>
@ -309,7 +309,7 @@ Subtracts <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_subtractfrom_
bool equals(int32_t x, int32_t y) const
</pre>
Returns true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>is</a> <a href='SkIPoint_Reference#SkIPoint'>equivalent</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>constructed</a> <a href='SkIPoint_Reference#SkIPoint'>from</a> (<a href='#SkIPoint_equals_x'>x</a>, <a href='#SkIPoint_equals_y'>y</a>).
Returns true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> is equivalent to <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> constructed from (<a href='#SkIPoint_equals_x'>x</a>, <a href='#SkIPoint_equals_y'>y</a>).
### Parameters
@ -323,7 +323,7 @@ Returns true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIP
### Return Value
true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>equals</a> (<a href='#SkIPoint_equals_x'>x</a>, <a href='#SkIPoint_equals_y'>y</a>)
true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> equals (<a href='#SkIPoint_equals_x'>x</a>, <a href='#SkIPoint_equals_y'>y</a>)
### Example
@ -349,24 +349,24 @@ pt: -2147483648, -1 == pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator==(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>)
bool operator==(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b)
</pre>
Returns true if <a href='#SkIPoint_equal_operator_a'>a</a> <a href='#SkIPoint_equal_operator_a'>is</a> <a href='#SkIPoint_equal_operator_a'>equivalent</a> <a href='#SkIPoint_equal_operator_a'>to</a> <a href='#SkIPoint_equal_operator_b'>b</a>.
Returns true if <a href='#SkIPoint_equal_operator_a'>a</a> is equivalent to <a href='#SkIPoint_equal_operator_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkIPoint_equal_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='SkIPoint_Reference#SkIPoint'>compare</a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> to compare</td>
</tr>
<tr> <td><a name='SkIPoint_equal_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='SkIPoint_Reference#SkIPoint'>compare</a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
true if <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
### Example
@ -392,24 +392,24 @@ pt: -2147483648, -1 == pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator!=(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>)
bool operator!=(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b)
</pre>
Returns true if <a href='#SkIPoint_notequal_operator_a'>a</a> <a href='#SkIPoint_notequal_operator_a'>is</a> <a href='#SkIPoint_notequal_operator_a'>not</a> <a href='#SkIPoint_notequal_operator_a'>equivalent</a> <a href='#SkIPoint_notequal_operator_a'>to</a> <a href='#SkIPoint_notequal_operator_b'>b</a>.
Returns true if <a href='#SkIPoint_notequal_operator_a'>a</a> is not equivalent to <a href='#SkIPoint_notequal_operator_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkIPoint_notequal_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='SkIPoint_Reference#SkIPoint'>compare</a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> to compare</td>
</tr>
<tr> <td><a name='SkIPoint_notequal_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='SkIPoint_Reference#SkIPoint'>compare</a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>or</a> <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
true if <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> or <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
### Example
@ -435,26 +435,26 @@ pt: -2147483648, -1 == pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIVector'>SkIVector</a> <a href='SkIPoint_Reference#SkIVector'>operator</a>-(<a href='SkIPoint_Reference#SkIVector'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>b</a>)
<a href='SkIPoint_Reference#SkIVector'>SkIVector</a> operator-(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b)
</pre>
Returns <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>from</a> <a href='#SkIPoint_subtract_operator_b'>b</a> <a href='#SkIPoint_subtract_operator_b'>to</a> <a href='#SkIPoint_subtract_operator_a'>a</a>; <a href='#SkIPoint_subtract_operator_a'>computed</a> <a href='#SkIPoint_subtract_operator_a'>as </a> <code>(<a href='#SkIPoint_subtract_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> - <a href='#SkIPoint_subtract_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_subtract_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> - <a href='#SkIPoint_subtract_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
Returns <a href='#IPoint_IVector'>IVector</a> from <a href='#SkIPoint_subtract_operator_b'>b</a> to <a href='#SkIPoint_subtract_operator_a'>a</a>; computed as <code>(<a href='#SkIPoint_subtract_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> - <a href='#SkIPoint_subtract_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_subtract_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> - <a href='#SkIPoint_subtract_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
Can also be used to subtract <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>from</a> <a href='#IPoint_IVector'>IVector</a>, <a href='#IPoint_IVector'>returning</a> <a href='#IPoint_IVector'>IVector</a>.
Can also be used to subtract <a href='#IPoint_IVector'>IVector</a> from <a href='#IPoint_IVector'>IVector</a>, returning <a href='#IPoint_IVector'>IVector</a>.
### Parameters
<table> <tr> <td><a name='SkIPoint_subtract_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>or</a> <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>subtract</a> <a href='#IPoint_IVector'>from</a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> or <a href='#IPoint_IVector'>IVector</a> to subtract from</td>
</tr>
<tr> <td><a name='SkIPoint_subtract_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>subtract</a></td>
<td><a href='#IPoint_IVector'>IVector</a> to subtract</td>
</tr>
</table>
### Return Value
<a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>from</a> <a href='#SkIPoint_subtract_operator_b'>b</a> <a href='#SkIPoint_subtract_operator_b'>to</a> <a href='#SkIPoint_subtract_operator_a'>a</a>
<a href='#IPoint_IVector'>IVector</a> from <a href='#SkIPoint_subtract_operator_b'>b</a> to <a href='#SkIPoint_subtract_operator_a'>a</a>
### Example
@ -469,28 +469,28 @@ Can also be used to subtract <a href='#IPoint_IVector'>IVector</a> <a href='#IPo
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>operator</a>+(<a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>a</a>, <a href='SkIPoint_Reference#SkIPoint'>const</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='SkIPoint_Reference#SkIVector'>b</a>)
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator+(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& b)
</pre>
Returns <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>resulting</a> <a href='SkIPoint_Reference#IPoint'>from</a> <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='#SkIPoint_add_operator_a'>a</a> <a href='#SkIPoint_add_operator_a'>offset</a> <a href='#SkIPoint_add_operator_a'>by</a> <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_add_operator_b'>b</a>, <a href='#SkIPoint_add_operator_b'>computed</a> <a href='#SkIPoint_add_operator_b'>as</a>:
Returns <a href='SkIPoint_Reference#IPoint'>IPoint</a> resulting from <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='#SkIPoint_add_operator_a'>a</a> offset by <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_add_operator_b'>b</a>, computed as:
<code>(<a href='#SkIPoint_add_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> + <a href='#SkIPoint_add_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a>, <a href='#SkIPoint_add_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> + <a href='#SkIPoint_add_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>)</code>.
Can also be used to offset <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='#SkIPoint_add_operator_b'>b</a> <a href='#SkIPoint_add_operator_b'>by</a> <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_add_operator_a'>a</a>, <a href='#SkIPoint_add_operator_a'>returning</a> <a href='SkIPoint_Reference#IPoint'>IPoint</a>.
<a href='SkIPoint_Reference#IPoint'>Can</a> <a href='SkIPoint_Reference#IPoint'>also</a> <a href='SkIPoint_Reference#IPoint'>be</a> <a href='SkIPoint_Reference#IPoint'>used</a> <a href='SkIPoint_Reference#IPoint'>to</a> <a href='SkIPoint_Reference#IPoint'>add</a> <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>IVector</a>, <a href='#IPoint_IVector'>returning</a> <a href='#IPoint_IVector'>IVector</a>.
Can also be used to offset <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='#SkIPoint_add_operator_b'>b</a> by <a href='#IPoint_IVector'>IVector</a> <a href='#SkIPoint_add_operator_a'>a</a>, returning <a href='SkIPoint_Reference#IPoint'>IPoint</a>.
Can also be used to add <a href='#IPoint_IVector'>IVector</a> to <a href='#IPoint_IVector'>IVector</a>, returning <a href='#IPoint_IVector'>IVector</a>.
### Parameters
<table> <tr> <td><a name='SkIPoint_add_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>or</a> <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>add</a> <a href='#IPoint_IVector'>to</a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> or <a href='#IPoint_IVector'>IVector</a> to add to</td>
</tr>
<tr> <td><a name='SkIPoint_add_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>or</a> <a href='#IPoint_IVector'>IVector</a> <a href='#IPoint_IVector'>to</a> <a href='#IPoint_IVector'>add</a></td>
<td><a href='SkIPoint_Reference#IPoint'>IPoint</a> or <a href='#IPoint_IVector'>IVector</a> to add</td>
</tr>
</table>
### Return Value
<a href='SkIPoint_Reference#IPoint'>IPoint</a> <a href='SkIPoint_Reference#IPoint'>equal</a> <a href='SkIPoint_Reference#IPoint'>to</a> <a href='#SkIPoint_add_operator_a'>a</a> <a href='#SkIPoint_add_operator_a'>offset</a> <a href='#SkIPoint_add_operator_a'>by</a> <a href='#SkIPoint_add_operator_b'>b</a>
<a href='SkIPoint_Reference#IPoint'>IPoint</a> equal to <a href='#SkIPoint_add_operator_a'>a</a> offset by <a href='#SkIPoint_add_operator_b'>b</a>
### Example
@ -510,5 +510,5 @@ Can also be used to offset <a href='SkIPoint_Reference#IPoint'>IPoint</a> <a hre
typedef <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>;
</pre>
<a href='SkIPoint_Reference#SkIVector'>SkIVector</a> <a href='SkIPoint_Reference#SkIVector'>provides</a> <a href='SkIPoint_Reference#SkIVector'>an</a> <a href='SkIPoint_Reference#SkIVector'>alternative</a> <a href='SkIPoint_Reference#SkIVector'>name</a> <a href='SkIPoint_Reference#SkIVector'>for</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>. <a href='SkIPoint_Reference#SkIVector'>SkIVector</a> <a href='SkIPoint_Reference#SkIVector'>and</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>
<a href='SkIPoint_Reference#SkIPoint'>can</a> <a href='SkIPoint_Reference#SkIPoint'>be</a> <a href='SkIPoint_Reference#SkIPoint'>used</a> <a href='SkIPoint_Reference#SkIPoint'>interchangeably</a> <a href='SkIPoint_Reference#SkIPoint'>for</a> <a href='SkIPoint_Reference#SkIPoint'>all</a> <a href='SkIPoint_Reference#SkIPoint'>purposes</a>.
<a href='SkIPoint_Reference#SkIVector'>SkIVector</a> provides an alternative name for <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>. <a href='SkIPoint_Reference#SkIVector'>SkIVector</a> and <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>
can be used interchangeably for all purposes.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,43 +7,43 @@ SkPicture Reference
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkPicture_Reference#SkPicture'>SkPicture</a> : <a href='SkPicture_Reference#SkPicture'>public</a> <a href='undocumented#SkRefCnt'>SkRefCnt</a> {
<a href='undocumented#SkRefCnt'>public</a>:
<a href='undocumented#SkRefCnt'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='SkStream_Reference#SkStream'>SkStream</a>* <a href='SkStream_Reference#Stream'>stream</a>,
<a href='SkStream_Reference#Stream'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>);
<a href='undocumented#SkDeserialProcs'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(<a href='#SkPicture_MakeFromData'>const</a> <a href='undocumented#SkData'>SkData</a>* <a href='undocumented#Data'>data</a>,
<a href='undocumented#Data'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>);
<a href='undocumented#SkDeserialProcs'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(<a href='#SkPicture_MakeFromData'>const</a> <a href='#SkPicture_MakeFromData'>void</a>* <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>size_t</a> <a href='undocumented#Size'>size</a>,
<a href='undocumented#Size'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>);
class <a href='SkPicture_Reference#SkPicture'>SkPicture</a> : public <a href='undocumented#SkRefCnt'>SkRefCnt</a> {
public:
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='SkStream_Reference#SkStream'>SkStream</a>* <a href='SkStream_Reference#Stream'>stream</a>,
const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr);
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const <a href='undocumented#SkData'>SkData</a>* <a href='undocumented#Data'>data</a>,
const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr);
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>,
const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr);
<a href='undocumented#SkDeserialProcs'>class</a> <a href='#SkPicture_AbortCallback'>AbortCallback</a> {
<a href='#SkPicture_AbortCallback'>public</a>:
class <a href='#SkPicture_AbortCallback'>AbortCallback</a> {
public:
<a href='#SkPicture_AbortCallback'>AbortCallback</a>();
<a href='#SkPicture_AbortCallback'>virtual</a> ~<a href='#SkPicture_AbortCallback'>AbortCallback</a>();
<a href='#SkPicture_AbortCallback'>virtual</a> <a href='#SkPicture_AbortCallback'>bool</a> <a href='#SkPicture_AbortCallback'>abort()</a> = 0;
virtual ~<a href='#SkPicture_AbortCallback'>AbortCallback</a>();
virtual bool abort() = 0;
};
<a href='#SkPicture_AbortCallback'>virtual</a> <a href='#SkPicture_AbortCallback'>void</a> <a href='#SkPicture_AbortCallback'>playback</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <a href='#SkPicture_AbortCallback'>AbortCallback</a>* <a href='#SkPicture_AbortCallback'>callback</a> = <a href='#SkPicture_AbortCallback'>nullptr</a>) <a href='#SkPicture_AbortCallback'>const</a> = 0;
<a href='#SkPicture_AbortCallback'>virtual</a> <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() <a href='#SkPicture_cullRect'>const</a> = 0;
<a href='#SkPicture_cullRect'>uint32_t</a> <a href='#SkPicture_uniqueID'>uniqueID</a>() <a href='#SkPicture_uniqueID'>const</a>;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkPicture_serialize'>serialize</a>(<a href='#SkPicture_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* <a href='undocumented#SkSerialProcs'>procs</a> = <a href='undocumented#SkSerialProcs'>nullptr</a>) <a href='undocumented#SkSerialProcs'>const</a>;
<a href='undocumented#SkSerialProcs'>void</a> <a href='#SkPicture_serialize'>serialize</a>(<a href='SkWStream_Reference#SkWStream'>SkWStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, <a href='SkStream_Reference#Stream'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* <a href='undocumented#SkSerialProcs'>procs</a> = <a href='undocumented#SkSerialProcs'>nullptr</a>) <a href='undocumented#SkSerialProcs'>const</a>;
<a href='undocumented#SkSerialProcs'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='SkRect_Reference#SkRect'>cull</a>);
<a href='SkRect_Reference#SkRect'>virtual</a> <a href='SkRect_Reference#SkRect'>int</a> <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() <a href='#SkPicture_approximateOpCount'>const</a> = 0;
<a href='#SkPicture_approximateOpCount'>virtual</a> <a href='#SkPicture_approximateOpCount'>size_t</a> <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() <a href='#SkPicture_approximateBytesUsed'>const</a> = 0;
virtual void playback(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <a href='#SkPicture_AbortCallback'>AbortCallback</a>* callback = nullptr) const = 0;
virtual <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() const = 0;
uint32_t <a href='#SkPicture_uniqueID'>uniqueID</a>() const;
<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;
void <a href='#SkPicture_serialize'>serialize</a>(<a href='SkWStream_Reference#SkWStream'>SkWStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const;
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkPicture_Reference#SkPicture'>SkPicture</a>> <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> cull);
virtual int <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() const = 0;
virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() const = 0;
};
</pre>
<a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>records</a> <a href='SkPicture_Reference#Picture'>drawing</a> <a href='SkPicture_Reference#Picture'>commands</a> <a href='SkPicture_Reference#Picture'>made</a> <a href='SkPicture_Reference#Picture'>to</a> <a href='SkCanvas_Reference#Canvas'>Canvas</a>. <a href='SkCanvas_Reference#Canvas'>The</a> <a href='SkCanvas_Reference#Canvas'>command</a> <a href='SkStream_Reference#Stream'>stream</a> <a href='SkStream_Reference#Stream'>may</a> <a href='SkStream_Reference#Stream'>be</a>
<a href='SkStream_Reference#Stream'>played</a> <a href='SkStream_Reference#Stream'>in</a> <a href='SkStream_Reference#Stream'>whole</a> <a href='SkStream_Reference#Stream'>or</a> <a href='SkStream_Reference#Stream'>in</a> <a href='SkStream_Reference#Stream'>part</a> <a href='SkStream_Reference#Stream'>at</a> <a href='SkStream_Reference#Stream'>a</a> <a href='SkStream_Reference#Stream'>later</a> <a href='SkStream_Reference#Stream'>time</a>.
<a href='SkPicture_Reference#Picture'>Picture</a> records drawing commands made to <a href='SkCanvas_Reference#Canvas'>Canvas</a>. The command <a href='SkStream_Reference#Stream'>stream</a> may be
played in whole or in part at a later time.
<a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>is</a> <a href='SkPicture_Reference#Picture'>an</a> <a href='SkPicture_Reference#Picture'>abstract</a> <a href='SkPicture_Reference#Picture'>class</a>. <a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>may</a> <a href='SkPicture_Reference#Picture'>be</a> <a href='SkPicture_Reference#Picture'>generated</a> <a href='SkPicture_Reference#Picture'>by</a> <a href='#Picture_Recorder'>Picture_Recorder</a>
<a href='#Picture_Recorder'>or</a> <a href='undocumented#Drawable'>Drawable</a>, <a href='undocumented#Drawable'>or</a> <a href='undocumented#Drawable'>from</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>previously</a> <a href='SkPicture_Reference#Picture'>saved</a> <a href='SkPicture_Reference#Picture'>to</a> <a href='undocumented#Data'>Data</a> <a href='undocumented#Data'>or</a> <a href='SkStream_Reference#Stream'>Stream</a>.
<a href='SkPicture_Reference#Picture'>Picture</a> is an abstract class. <a href='SkPicture_Reference#Picture'>Picture</a> may be generated by <a href='#Picture_Recorder'>Picture_Recorder</a>
or <a href='undocumented#Drawable'>Drawable</a>, or from <a href='SkPicture_Reference#Picture'>Picture</a> previously saved to <a href='undocumented#Data'>Data</a> or <a href='SkStream_Reference#Stream'>Stream</a>.
<a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>may</a> <a href='SkPicture_Reference#Picture'>contain</a> <a href='SkPicture_Reference#Picture'>any</a> <a href='SkCanvas_Reference#Canvas'>Canvas</a> <a href='SkCanvas_Reference#Canvas'>drawing</a> <a href='SkCanvas_Reference#Canvas'>command</a>, <a href='SkCanvas_Reference#Canvas'>as</a> <a href='SkCanvas_Reference#Canvas'>well</a> <a href='SkCanvas_Reference#Canvas'>as</a> <a href='SkCanvas_Reference#Canvas'>one</a> <a href='SkCanvas_Reference#Canvas'>or</a> <a href='SkCanvas_Reference#Canvas'>more</a>
<a href='#Canvas_Matrix'>Canvas_Matrix</a> <a href='#Canvas_Matrix'>or</a> <a href='#Canvas_Clip'>Canvas_Clip</a>. <a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>has</a> <a href='SkPicture_Reference#Picture'>a</a> <a href='SkPicture_Reference#Picture'>cull</a> <a href='SkRect_Reference#Rect'>Rect</a>, <a href='SkRect_Reference#Rect'>which</a> <a href='SkRect_Reference#Rect'>is</a> <a href='SkRect_Reference#Rect'>used</a> <a href='SkRect_Reference#Rect'>as</a>
<a href='SkRect_Reference#Rect'>a</a> <a href='SkRect_Reference#Rect'>bounding</a> <a href='SkRect_Reference#Rect'>box</a> <a href='SkRect_Reference#Rect'>hint</a>. <a href='SkRect_Reference#Rect'>To</a> <a href='SkRect_Reference#Rect'>limit</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>bounds</a>, <a href='SkPicture_Reference#Picture'>use</a> <a href='#Canvas_Clip'>Canvas_Clip</a> <a href='#Canvas_Clip'>when</a>
<a href='#Canvas_Clip'>recording</a> <a href='#Canvas_Clip'>or</a> <a href='#Canvas_Clip'>drawing</a> <a href='SkPicture_Reference#Picture'>Picture</a>.
<a href='SkPicture_Reference#Picture'>Picture</a> may contain any <a href='SkCanvas_Reference#Canvas'>Canvas</a> drawing command, as well as one or more
<a href='#Canvas_Matrix'>Canvas_Matrix</a> or <a href='#Canvas_Clip'>Canvas_Clip</a>. <a href='SkPicture_Reference#Picture'>Picture</a> has a cull <a href='SkRect_Reference#Rect'>Rect</a>, which is used as
a bounding box hint. To limit <a href='SkPicture_Reference#Picture'>Picture</a> bounds, use <a href='#Canvas_Clip'>Canvas_Clip</a> when
recording or drawing <a href='SkPicture_Reference#Picture'>Picture</a>.
<a name='SkPicture_AbortCallback'></a>
@ -51,18 +51,18 @@ class <a href='SkPicture_Reference#SkPicture'>SkPicture</a> : <a href='SkPicture
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='#SkPicture_AbortCallback'>AbortCallback</a> {
<a href='#SkPicture_AbortCallback'>public</a>:
public:
<a href='#SkPicture_AbortCallback_AbortCallback'>AbortCallback()</a> {}
<a href='#SkPicture_AbortCallback'>virtual</a> ~<a href='#SkPicture_AbortCallback_AbortCallback'>AbortCallback()</a> {}
<a href='#SkPicture_AbortCallback'>virtual</a> <a href='#SkPicture_AbortCallback'>bool</a> <a href='#SkPicture_AbortCallback_abort'>abort()</a> = 0;
virtual ~<a href='#SkPicture_AbortCallback_AbortCallback'>AbortCallback()</a> {}
virtual bool <a href='#SkPicture_AbortCallback_abort'>abort()</a> = 0;
};
</pre>
<a href='#SkPicture_AbortCallback'>AbortCallback</a> <a href='#SkPicture_AbortCallback'>is</a> <a href='#SkPicture_AbortCallback'>an</a> <a href='#SkPicture_AbortCallback'>abstract</a> <a href='#SkPicture_AbortCallback'>class</a>. <a href='#SkPicture_AbortCallback'>An</a> <a href='#SkPicture_AbortCallback'>implementation</a> <a href='#SkPicture_AbortCallback'>of</a> <a href='#SkPicture_AbortCallback'>AbortCallback</a> <a href='#SkPicture_AbortCallback'>may</a>
<a href='#SkPicture_AbortCallback'>passed</a> <a href='#SkPicture_AbortCallback'>as</a> <a href='#SkPicture_AbortCallback'>a</a> <a href='#SkPicture_AbortCallback'>parameter</a> <a href='#SkPicture_AbortCallback'>to</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a>, <a href='#SkPicture_playback'>to</a> <a href='#SkPicture_playback'>stop</a> <a href='#SkPicture_playback'>it</a> <a href='#SkPicture_playback'>before</a> <a href='#SkPicture_playback'>all</a> <a href='#SkPicture_playback'>drawing</a>
<a href='#SkPicture_playback'>commands</a> <a href='#SkPicture_playback'>have</a> <a href='#SkPicture_playback'>been</a> <a href='#SkPicture_playback'>processed</a>.
<a href='#SkPicture_AbortCallback'>AbortCallback</a> is an abstract class. An implementation of <a href='#SkPicture_AbortCallback'>AbortCallback</a> may
passed as a parameter to <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a>, to stop it before all drawing
commands have been processed.
<a href='#SkPicture_playback'>If</a> <a href='#SkPicture_AbortCallback'>AbortCallback</a>::<a href='#SkPicture_AbortCallback_abort'>abort</a> <a href='#SkPicture_AbortCallback_abort'>returns</a> <a href='#SkPicture_AbortCallback_abort'>true</a>, <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a> <a href='#SkPicture_playback'>is</a> <a href='#SkPicture_playback'>interrupted</a>.
If <a href='#SkPicture_AbortCallback'>AbortCallback</a>::<a href='#SkPicture_AbortCallback_abort'>abort</a> returns true, <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a> is interrupted.
<a name='SkPicture_AbortCallback_AbortCallback'></a>
@ -104,15 +104,15 @@ Has no effect.
virtual bool <a href='#SkPicture_AbortCallback_abort'>abort()</a> = 0
</pre>
Stops <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>playback</a> <a href='SkPicture_Reference#SkPicture'>when</a> <a href='SkPicture_Reference#SkPicture'>some</a> <a href='SkPicture_Reference#SkPicture'>condition</a> <a href='SkPicture_Reference#SkPicture'>is</a> <a href='SkPicture_Reference#SkPicture'>met</a>. <a href='SkPicture_Reference#SkPicture'>A</a> <a href='SkPicture_Reference#SkPicture'>subclass</a> <a href='SkPicture_Reference#SkPicture'>of</a>
<a href='#SkPicture_AbortCallback'>AbortCallback</a> <a href='#SkPicture_AbortCallback'>provides</a> <a href='#SkPicture_AbortCallback'>an</a> <a href='#SkPicture_AbortCallback'>override</a> <a href='#SkPicture_AbortCallback'>for</a> <a href='#SkPicture_AbortCallback_abort'>abort()</a> <a href='#SkPicture_AbortCallback_abort'>that</a> <a href='#SkPicture_AbortCallback_abort'>can</a> <a href='#SkPicture_AbortCallback_abort'>stop</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a>.
Stops <a href='SkPicture_Reference#SkPicture'>SkPicture</a> playback when some condition is met. A subclass of
<a href='#SkPicture_AbortCallback'>AbortCallback</a> provides an override for <a href='#SkPicture_AbortCallback_abort'>abort()</a> that can stop <a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a>.
The part of <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>drawn</a> <a href='SkPicture_Reference#SkPicture'>when</a> <a href='SkPicture_Reference#SkPicture'>aborted</a> <a href='SkPicture_Reference#SkPicture'>is</a> <a href='SkPicture_Reference#SkPicture'>undefined</a>. <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>instantiations</a> <a href='SkPicture_Reference#SkPicture'>are</a>
free to stop drawing at different <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>during</a> <a href='SkPoint_Reference#Point'>playback</a>.
The part of <a href='SkPicture_Reference#SkPicture'>SkPicture</a> drawn when aborted is undefined. <a href='SkPicture_Reference#SkPicture'>SkPicture</a> instantiations are
free to stop drawing at different <a href='SkPoint_Reference#Point'>points</a> during playback.
If the abort happens inside one or more calls to <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save()</a>, <a href='#SkCanvas_save'>stack</a>
of <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkMatrix_Reference#Matrix'>matrix</a> <a href='SkMatrix_Reference#Matrix'>and</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>clip</a> <a href='SkCanvas_Reference#SkCanvas'>values</a> <a href='SkCanvas_Reference#SkCanvas'>is</a> <a href='SkCanvas_Reference#SkCanvas'>restored</a> <a href='SkCanvas_Reference#SkCanvas'>to</a> <a href='SkCanvas_Reference#SkCanvas'>its</a> <a href='SkCanvas_Reference#SkCanvas'>state</a> <a href='SkCanvas_Reference#SkCanvas'>before</a>
<a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a> <a href='#SkPicture_playback'>was</a> <a href='#SkPicture_playback'>called</a>.
If the abort happens inside one or more calls to <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save()</a>, stack
of <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkMatrix_Reference#Matrix'>matrix</a> and <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> clip values is restored to its state before
<a href='SkPicture_Reference#SkPicture'>SkPicture</a>::<a href='#SkPicture_playback'>playback</a> was called.
### Return Value
@ -133,17 +133,17 @@ white rectangle appears.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&<a href='SkPicture_Reference#SkPicture'>gt</a>; <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='SkStream_Reference#SkStream'>SkStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, <a href='SkStream_Reference#Stream'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='SkStream_Reference#SkStream'>SkStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr)
</pre>
Recreates <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>that</a> <a href='SkPicture_Reference#SkPicture'>was</a> <a href='SkPicture_Reference#SkPicture'>serialized</a> <a href='SkPicture_Reference#SkPicture'>into</a> <a href='SkPicture_Reference#SkPicture'>a</a> <a href='#SkPicture_MakeFromStream_stream'>stream</a>. <a href='#SkPicture_MakeFromStream_stream'>Returns</a> <a href='#SkPicture_MakeFromStream_stream'>constructed</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
if successful; otherwise, returns nullptr. Fails if <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>does</a> <a href='undocumented#Data'>not</a> <a href='undocumented#Data'>permit</a>
Recreates <a href='SkPicture_Reference#SkPicture'>SkPicture</a> that was serialized into a <a href='#SkPicture_MakeFromStream_stream'>stream</a>. Returns constructed <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
if successful; otherwise, returns nullptr. Fails if <a href='undocumented#Data'>data</a> does not permit
constructing valid <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
<a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> <a href='#SkDeserialProcs_fPictureProc'>permits</a> <a href='#SkDeserialProcs_fPictureProc'>supplying</a> <a href='#SkDeserialProcs_fPictureProc'>a</a> <a href='#SkDeserialProcs_fPictureProc'>custom</a> <a href='#SkDeserialProcs_fPictureProc'>function</a> <a href='#SkDeserialProcs_fPictureProc'>to</a> <a href='#SkDeserialProcs_fPictureProc'>decode</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> <a href='#SkDeserialProcs_fPictureProc'>is</a> <a href='#SkDeserialProcs_fPictureProc'>nullptr</a>, <a href='#SkDeserialProcs_fPictureProc'>default</a> <a href='#SkDeserialProcs_fPictureProc'>decoding</a> <a href='#SkDeserialProcs_fPictureProc'>is</a> <a href='#SkDeserialProcs_fPictureProc'>used</a>. <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureCtx'>fPictureCtx</a>
<a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> permits supplying a custom function to decode <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> is nullptr, default decoding is used. <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureCtx'>fPictureCtx</a>
may be used to provide user context to <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a>; <a href='#SkPicture_MakeFromStream_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a>
is called with a pointer to <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>byte</a> <a href='undocumented#Data'>length</a>, <a href='undocumented#Data'>and</a> <a href='undocumented#Data'>user</a> <a href='undocumented#Data'>context</a>.
is called with a pointer to <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>data</a> byte length, and user context.
### Parameters
@ -151,13 +151,13 @@ is called with a pointer to <a href='undocumented#Data'>data</a>, <a href='undoc
<td>container for serial <a href='undocumented#Data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromStream_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>decoders</a>; <a href='undocumented#Data'>may</a> <a href='undocumented#Data'>be</a> <a href='undocumented#Data'>nullptr</a></td>
<td>custom serial <a href='undocumented#Data'>data</a> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>constructed</a> <a href='SkPicture_Reference#SkPicture'>from</a> <a href='#SkPicture_MakeFromStream_stream'>stream</a> <a href='undocumented#Data'>data</a>
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromStream_stream'>stream</a> <a href='undocumented#Data'>data</a>
### Example
@ -172,17 +172,17 @@ is called with a pointer to <a href='undocumented#Data'>data</a>, <a href='undoc
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&<a href='SkPicture_Reference#SkPicture'>gt</a>; <a href='#SkPicture_MakeFromData'>MakeFromData</a>(<a href='#SkPicture_MakeFromData'>const</a> <a href='undocumented#SkData'>SkData</a>* <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const <a href='undocumented#SkData'>SkData</a>* <a href='undocumented#Data'>data</a>, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr)
</pre>
Recreates <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>that</a> <a href='SkPicture_Reference#SkPicture'>was</a> <a href='SkPicture_Reference#SkPicture'>serialized</a> <a href='SkPicture_Reference#SkPicture'>into</a> <a href='#SkPicture_MakeFromData_data'>data</a>. <a href='#SkPicture_MakeFromData_data'>Returns</a> <a href='#SkPicture_MakeFromData_data'>constructed</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
if successful; otherwise, returns nullptr. Fails if <a href='#SkPicture_MakeFromData_data'>data</a> <a href='#SkPicture_MakeFromData_data'>does</a> <a href='#SkPicture_MakeFromData_data'>not</a> <a href='#SkPicture_MakeFromData_data'>permit</a>
Recreates <a href='SkPicture_Reference#SkPicture'>SkPicture</a> that was serialized into <a href='#SkPicture_MakeFromData_data'>data</a>. Returns constructed <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
if successful; otherwise, returns nullptr. Fails if <a href='#SkPicture_MakeFromData_data'>data</a> does not permit
constructing valid <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
<a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> <a href='#SkDeserialProcs_fPictureProc'>permits</a> <a href='#SkDeserialProcs_fPictureProc'>supplying</a> <a href='#SkDeserialProcs_fPictureProc'>a</a> <a href='#SkDeserialProcs_fPictureProc'>custom</a> <a href='#SkDeserialProcs_fPictureProc'>function</a> <a href='#SkDeserialProcs_fPictureProc'>to</a> <a href='#SkDeserialProcs_fPictureProc'>decode</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> <a href='#SkDeserialProcs_fPictureProc'>is</a> <a href='#SkDeserialProcs_fPictureProc'>nullptr</a>, <a href='#SkDeserialProcs_fPictureProc'>default</a> <a href='#SkDeserialProcs_fPictureProc'>decoding</a> <a href='#SkDeserialProcs_fPictureProc'>is</a> <a href='#SkDeserialProcs_fPictureProc'>used</a>. <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureCtx'>fPictureCtx</a>
<a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> permits supplying a custom function to decode <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a> is nullptr, default decoding is used. <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureCtx'>fPictureCtx</a>
may be used to provide user context to <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a>; <a href='#SkPicture_MakeFromData_procs'>procs</a>-><a href='#SkDeserialProcs_fPictureProc'>fPictureProc</a>
is called with a pointer to <a href='#SkPicture_MakeFromData_data'>data</a>, <a href='#SkPicture_MakeFromData_data'>data</a> <a href='#SkPicture_MakeFromData_data'>byte</a> <a href='#SkPicture_MakeFromData_data'>length</a>, <a href='#SkPicture_MakeFromData_data'>and</a> <a href='#SkPicture_MakeFromData_data'>user</a> <a href='#SkPicture_MakeFromData_data'>context</a>.
is called with a pointer to <a href='#SkPicture_MakeFromData_data'>data</a>, <a href='#SkPicture_MakeFromData_data'>data</a> byte length, and user context.
### Parameters
@ -190,13 +190,13 @@ is called with a pointer to <a href='#SkPicture_MakeFromData_data'>data</a>, <a
<td>container for serial <a href='#SkPicture_MakeFromData_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='#SkPicture_MakeFromData_data'>data</a> <a href='#SkPicture_MakeFromData_data'>decoders</a>; <a href='#SkPicture_MakeFromData_data'>may</a> <a href='#SkPicture_MakeFromData_data'>be</a> <a href='#SkPicture_MakeFromData_data'>nullptr</a></td>
<td>custom serial <a href='#SkPicture_MakeFromData_data'>data</a> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>constructed</a> <a href='SkPicture_Reference#SkPicture'>from</a> <a href='#SkPicture_MakeFromData_data'>data</a>
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromData_data'>data</a>
### Example
@ -211,8 +211,8 @@ is called with a pointer to <a href='#SkPicture_MakeFromData_data'>data</a>, <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='undocumented#sk_sp'>lt</a>;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&<a href='SkPicture_Reference#SkPicture'>gt</a>; <a href='#SkPicture_MakeFromData'>MakeFromData</a>(<a href='#SkPicture_MakeFromData'>const</a> <a href='#SkPicture_MakeFromData'>void</a>* <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>size_t</a> <a href='undocumented#Size'>size</a>,
<a href='undocumented#Size'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* <a href='undocumented#SkDeserialProcs'>procs</a> = <a href='undocumented#SkDeserialProcs'>nullptr</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>,
const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr)
</pre>
### Parameters
@ -221,16 +221,16 @@ static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a
<td>pointer to serial <a href='#SkPicture_MakeFromData_2_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_2_size'><code><strong>size</strong></code></a></td>
<td><a href='#SkPicture_MakeFromData_2_size'>size</a> <a href='#SkPicture_MakeFromData_2_size'>of</a> <a href='#SkPicture_MakeFromData_2_data'>data</a></td>
<td><a href='#SkPicture_MakeFromData_2_size'>size</a> of <a href='#SkPicture_MakeFromData_2_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_2_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='#SkPicture_MakeFromData_2_data'>data</a> <a href='#SkPicture_MakeFromData_2_data'>decoders</a>; <a href='#SkPicture_MakeFromData_2_data'>may</a> <a href='#SkPicture_MakeFromData_2_data'>be</a> <a href='#SkPicture_MakeFromData_2_data'>nullptr</a></td>
<td>custom serial <a href='#SkPicture_MakeFromData_2_data'>data</a> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>constructed</a> <a href='SkPicture_Reference#SkPicture'>from</a> <a href='#SkPicture_MakeFromData_2_data'>data</a>
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromData_2_data'>data</a>
### Example
@ -245,14 +245,14 @@ static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual void playback(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <a href='#SkPicture_AbortCallback'>AbortCallback</a>* <a href='#SkPicture_AbortCallback'>callback</a> = <a href='#SkPicture_AbortCallback'>nullptr</a>) <a href='#SkPicture_AbortCallback'>const</a> = 0
virtual void playback(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, <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>. <a href='#SkPicture_playback_canvas'>In</a> <a href='#SkPicture_playback_canvas'>the</a> <a href='#SkPicture_playback_canvas'>case</a> <a href='#SkPicture_playback_canvas'>that</a> <a href='#SkPicture_playback_canvas'>the</a>
commands are recorded, each command in the <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>is</a> <a href='SkPicture_Reference#SkPicture'>sent</a> <a href='SkPicture_Reference#SkPicture'>separately</a> <a href='SkPicture_Reference#SkPicture'>to</a> <a href='#SkPicture_playback_canvas'>canvas</a>.
Replays the drawing commands on the specified <a href='#SkPicture_playback_canvas'>canvas</a>. In the case that the
commands are recorded, each command in the <a href='SkPicture_Reference#SkPicture'>SkPicture</a> is sent separately to <a href='#SkPicture_playback_canvas'>canvas</a>.
To add a single command to draw <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>to</a> <a href='SkPicture_Reference#SkPicture'>recording</a> <a href='#SkPicture_playback_canvas'>canvas</a>, <a href='#SkPicture_playback_canvas'>call</a>
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawPicture'>drawPicture</a> <a href='#SkCanvas_drawPicture'>instead</a>.
To add a single command to draw <a href='SkPicture_Reference#SkPicture'>SkPicture</a> to recording <a href='#SkPicture_playback_canvas'>canvas</a>, call
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawPicture'>drawPicture</a> instead.
### Parameters
@ -277,24 +277,24 @@ To add a single command to draw <a href='SkPicture_Reference#SkPicture'>SkPictur
---
<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>() <a href='#SkPicture_cullRect'>const</a> = 0
virtual <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() const = 0
</pre>
Returns cull <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='SkRect_Reference#SkRect'>for</a> <a href='SkRect_Reference#SkRect'>this</a> <a href='SkPicture_Reference#Picture'>picture</a>, <a href='SkPicture_Reference#Picture'>passed</a> <a href='SkPicture_Reference#Picture'>in</a> <a href='SkPicture_Reference#Picture'>when</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>was</a> <a href='SkPicture_Reference#SkPicture'>created</a>.
Returned <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='SkRect_Reference#SkRect'>does</a> <a href='SkRect_Reference#SkRect'>not</a> <a href='SkRect_Reference#SkRect'>specify</a> <a href='SkRect_Reference#SkRect'>clipping</a> <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='SkRect_Reference#SkRect'>for</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>; <a href='SkPicture_Reference#SkPicture'>cull</a> <a href='SkPicture_Reference#SkPicture'>is</a> <a href='SkPicture_Reference#SkPicture'>hint</a>
of <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>bounds</a>.
Returns cull <a href='SkRect_Reference#SkRect'>SkRect</a> for this <a href='SkPicture_Reference#Picture'>picture</a>, passed in when <a href='SkPicture_Reference#SkPicture'>SkPicture</a> was created.
Returned <a href='SkRect_Reference#SkRect'>SkRect</a> does not specify clipping <a href='SkRect_Reference#SkRect'>SkRect</a> for <a href='SkPicture_Reference#SkPicture'>SkPicture</a>; cull is hint
of <a href='SkPicture_Reference#SkPicture'>SkPicture</a> bounds.
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>is</a> <a href='SkPicture_Reference#SkPicture'>free</a> <a href='SkPicture_Reference#SkPicture'>to</a> <a href='SkPicture_Reference#SkPicture'>discard</a> <a href='SkPicture_Reference#SkPicture'>recorded</a> <a href='SkPicture_Reference#SkPicture'>drawing</a> <a href='SkPicture_Reference#SkPicture'>commands</a> <a href='SkPicture_Reference#SkPicture'>that</a> <a href='SkPicture_Reference#SkPicture'>fall</a> <a href='SkPicture_Reference#SkPicture'>outside</a>
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> is free to discard recorded drawing commands that fall outside
cull.
### Return Value
bounds passed when <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>was</a> <a href='SkPicture_Reference#SkPicture'>created</a>
bounds passed when <a href='SkPicture_Reference#SkPicture'>SkPicture</a> was created
### Example
<div><fiddle-embed name="15bb9a9596b40c5e2045f76e8c1dcf8e"><div><a href='SkPicture_Reference#Picture'>Picture</a> <a href='SkPicture_Reference#Picture'>recorded</a> <a href='SkPicture_Reference#Picture'>bounds</a> <a href='SkPicture_Reference#Picture'>are</a> <a href='SkPicture_Reference#Picture'>smaller</a> <a href='SkPicture_Reference#Picture'>than</a> <a href='SkPicture_Reference#Picture'>contents</a>; <a href='SkPicture_Reference#Picture'>contents</a> <a href='SkPicture_Reference#Picture'>outside</a> <a href='SkPicture_Reference#Picture'>recorded</a>
<a href='SkPicture_Reference#Picture'>bounds</a> <a href='SkPicture_Reference#Picture'>may</a> <a href='SkPicture_Reference#Picture'>be</a> <a href='SkPicture_Reference#Picture'>drawn</a>, <a href='SkPicture_Reference#Picture'>and</a> <a href='SkPicture_Reference#Picture'>are</a> <a href='SkPicture_Reference#Picture'>drawn</a> <a href='SkPicture_Reference#Picture'>in</a> <a href='SkPicture_Reference#Picture'>this</a> <a href='SkPicture_Reference#Picture'>example</a>.
<div><fiddle-embed name="15bb9a9596b40c5e2045f76e8c1dcf8e"><div><a href='SkPicture_Reference#Picture'>Picture</a> recorded bounds are smaller than contents; contents outside recorded
bounds may be drawn, and are drawn in this example.
</div></fiddle-embed></div>
### See Also
@ -306,10 +306,10 @@ bounds passed when <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
uint32_t <a href='#SkPicture_uniqueID'>uniqueID</a>() <a href='#SkPicture_uniqueID'>const</a>
uint32_t <a href='#SkPicture_uniqueID'>uniqueID</a>() const
</pre>
Returns a non-zero value unique among <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>in</a> <a href='SkPicture_Reference#SkPicture'>Skia</a> <a href='SkPicture_Reference#SkPicture'>process</a>.
Returns a non-zero value unique among <a href='SkPicture_Reference#SkPicture'>SkPicture</a> in Skia process.
### Return Value
@ -337,21 +337,21 @@ placeholder id = 2
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='undocumented#SkData'>SkData</a>&<a href='undocumented#SkData'>gt</a>; <a href='#SkPicture_serialize'>serialize</a>(<a href='#SkPicture_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* <a href='undocumented#SkSerialProcs'>procs</a> = <a href='undocumented#SkSerialProcs'>nullptr</a>) <a href='undocumented#SkSerialProcs'>const</a>
<a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='undocumented#SkData'>SkData</a>&gt; <a href='#SkPicture_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const
</pre>
Returns storage containing <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkData'>describing</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>, <a href='SkPicture_Reference#SkPicture'>using</a> <a href='SkPicture_Reference#SkPicture'>optional</a> <a href='SkPicture_Reference#SkPicture'>custom</a>
Returns storage containing <a href='undocumented#SkData'>SkData</a> describing <a href='SkPicture_Reference#SkPicture'>SkPicture</a>, using optional custom
encoders.
<a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> <a href='#SkSerialProcs_fPictureProc'>permits</a> <a href='#SkSerialProcs_fPictureProc'>supplying</a> <a href='#SkSerialProcs_fPictureProc'>a</a> <a href='#SkSerialProcs_fPictureProc'>custom</a> <a href='#SkSerialProcs_fPictureProc'>function</a> <a href='#SkSerialProcs_fPictureProc'>to</a> <a href='#SkSerialProcs_fPictureProc'>encode</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> <a href='#SkSerialProcs_fPictureProc'>is</a> <a href='#SkSerialProcs_fPictureProc'>nullptr</a>, <a href='#SkSerialProcs_fPictureProc'>default</a> <a href='#SkSerialProcs_fPictureProc'>encoding</a> <a href='#SkSerialProcs_fPictureProc'>is</a> <a href='#SkSerialProcs_fPictureProc'>used</a>. <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureCtx'>fPictureCtx</a>
<a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> permits supplying a custom function to encode <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> is nullptr, default encoding is used. <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureCtx'>fPictureCtx</a>
may be used to provide user context to <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a>; <a href='#SkPicture_serialize_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a>
is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>and</a> <a href='SkPicture_Reference#SkPicture'>user</a> <a href='SkPicture_Reference#SkPicture'>context</a>.
is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</a> and user context.
### Parameters
<table> <tr> <td><a name='SkPicture_serialize_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>encoders</a>; <a href='undocumented#Data'>may</a> <a href='undocumented#Data'>be</a> <a href='undocumented#Data'>nullptr</a></td>
<td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td>
</tr>
</table>
@ -372,15 +372,15 @@ storage containing serialized <a href='SkPicture_Reference#SkPicture'>SkPicture<
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPicture_serialize'>serialize</a>(<a href='SkWStream_Reference#SkWStream'>SkWStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, <a href='SkStream_Reference#Stream'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* <a href='undocumented#SkSerialProcs'>procs</a> = <a href='undocumented#SkSerialProcs'>nullptr</a>) <a href='undocumented#SkSerialProcs'>const</a>
void <a href='#SkPicture_serialize'>serialize</a>(<a href='SkWStream_Reference#SkWStream'>SkWStream</a>* <a href='SkStream_Reference#Stream'>stream</a>, const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const
</pre>
Writes <a href='SkPicture_Reference#Picture'>picture</a> <a href='SkPicture_Reference#Picture'>to</a> <a href='#SkPicture_serialize_2_stream'>stream</a>, <a href='#SkPicture_serialize_2_stream'>using</a> <a href='#SkPicture_serialize_2_stream'>optional</a> <a href='#SkPicture_serialize_2_stream'>custom</a> <a href='#SkPicture_serialize_2_stream'>encoders</a>.
Writes <a href='SkPicture_Reference#Picture'>picture</a> to <a href='#SkPicture_serialize_2_stream'>stream</a>, using optional custom encoders.
<a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> <a href='#SkSerialProcs_fPictureProc'>permits</a> <a href='#SkSerialProcs_fPictureProc'>supplying</a> <a href='#SkSerialProcs_fPictureProc'>a</a> <a href='#SkSerialProcs_fPictureProc'>custom</a> <a href='#SkSerialProcs_fPictureProc'>function</a> <a href='#SkSerialProcs_fPictureProc'>to</a> <a href='#SkSerialProcs_fPictureProc'>encode</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> <a href='#SkSerialProcs_fPictureProc'>is</a> <a href='#SkSerialProcs_fPictureProc'>nullptr</a>, <a href='#SkSerialProcs_fPictureProc'>default</a> <a href='#SkSerialProcs_fPictureProc'>encoding</a> <a href='#SkSerialProcs_fPictureProc'>is</a> <a href='#SkSerialProcs_fPictureProc'>used</a>. <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureCtx'>fPictureCtx</a>
<a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> permits supplying a custom function to encode <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
If <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a> is nullptr, default encoding is used. <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureCtx'>fPictureCtx</a>
may be used to provide user context to <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a>; <a href='#SkPicture_serialize_2_procs'>procs</a>-><a href='#SkSerialProcs_fPictureProc'>fPictureProc</a>
is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</a> <a href='SkPicture_Reference#SkPicture'>and</a> <a href='SkPicture_Reference#SkPicture'>user</a> <a href='SkPicture_Reference#SkPicture'>context</a>.
is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</a> and user context.
### Parameters
@ -388,7 +388,7 @@ is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</a
<td>writable serial <a href='undocumented#Data'>data</a> <a href='#SkPicture_serialize_2_stream'>stream</a></td>
</tr>
<tr> <td><a name='SkPicture_serialize_2_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>encoders</a>; <a href='undocumented#Data'>may</a> <a href='undocumented#Data'>be</a> <a href='undocumented#Data'>nullptr</a></td>
<td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td>
</tr>
</table>
@ -405,15 +405,15 @@ is called with a pointer to <a href='SkPicture_Reference#SkPicture'>SkPicture</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='undocumented#sk_sp'>lt</a>;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&<a href='SkPicture_Reference#SkPicture'>gt</a>; <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='SkRect_Reference#SkRect'>cull</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> cull)
</pre>
Returns a placeholder <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. <a href='SkPicture_Reference#SkPicture'>Result</a> <a href='SkPicture_Reference#SkPicture'>does</a> <a href='SkPicture_Reference#SkPicture'>not</a> <a href='SkPicture_Reference#SkPicture'>draw</a>, <a href='SkPicture_Reference#SkPicture'>and</a> <a href='SkPicture_Reference#SkPicture'>contains</a> <a href='SkPicture_Reference#SkPicture'>only</a>
<a href='#SkPicture_MakePlaceholder_cull'>cull</a> <a href='SkRect_Reference#SkRect'>SkRect</a>, <a href='SkRect_Reference#SkRect'>a</a> <a href='SkRect_Reference#SkRect'>hint</a> <a href='SkRect_Reference#SkRect'>of</a> <a href='SkRect_Reference#SkRect'>its</a> <a href='SkRect_Reference#SkRect'>bounds</a>. <a href='SkRect_Reference#SkRect'>Result</a> <a href='SkRect_Reference#SkRect'>is</a> <a href='SkRect_Reference#SkRect'>immutable</a>; <a href='SkRect_Reference#SkRect'>it</a> <a href='SkRect_Reference#SkRect'>cannot</a> <a href='SkRect_Reference#SkRect'>be</a> <a href='SkRect_Reference#SkRect'>changed</a>
Returns a placeholder <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. Result does not draw, and contains only
<a href='#SkPicture_MakePlaceholder_cull'>cull</a> <a href='SkRect_Reference#SkRect'>SkRect</a>, a hint of its bounds. Result is immutable; it cannot be changed
later. Result identifier is unique.
Returned placeholder can be intercepted during playback to insert other
commands into <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>draw</a> <a href='SkStream_Reference#Stream'>stream</a>.
commands into <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> draw <a href='SkStream_Reference#Stream'>stream</a>.
### Parameters
@ -439,11 +439,11 @@ placeholder with unique identifier
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual int <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() <a href='#SkPicture_approximateOpCount'>const</a> = 0
virtual int <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() const = 0
</pre>
Returns the approximate number of operations in <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. <a href='SkPicture_Reference#SkPicture'>Returned</a> <a href='SkPicture_Reference#SkPicture'>value</a>
may be greater or less than the number of <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> <a href='SkCanvas_Reference#SkCanvas'>calls</a>
Returns the approximate number of operations in <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. Returned value
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, other
calls may be optimized away.
@ -464,10 +464,10 @@ approximate operation count
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() <a href='#SkPicture_approximateBytesUsed'>const</a> = 0
virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() const = 0
</pre>
Returns the approximate byte <a href='undocumented#Size'>size</a> <a href='undocumented#Size'>of</a> <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. <a href='SkPicture_Reference#SkPicture'>Does</a> <a href='SkPicture_Reference#SkPicture'>not</a> <a href='SkPicture_Reference#SkPicture'>include</a> <a href='SkPicture_Reference#SkPicture'>large</a> <a href='SkPicture_Reference#SkPicture'>objects</a>
Returns the approximate byte <a href='undocumented#Size'>size</a> of <a href='SkPicture_Reference#SkPicture'>SkPicture</a>. Does not include large objects
referenced by <a href='SkPicture_Reference#SkPicture'>SkPicture</a>.
### Return Value

File diff suppressed because it is too large Load Diff

View File

@ -11,48 +11,48 @@ struct <a href='SkPoint_Reference#SkPoint'>SkPoint</a> {
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_fX'>fX</a>;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_fY'>fY</a>;
<a href='#SkPoint_fY'>static</a> <a href='#SkPoint_fY'>constexpr</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a> <a href='#SkPoint_x'>const</a>;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a> <a href='#SkPoint_y'>const</a>;
<a href='#SkPoint_y'>bool</a> <a href='#SkPoint_isZero'>isZero</a>() <a href='#SkPoint_isZero'>const</a>;
<a href='#SkPoint_isZero'>void</a> <a href='#SkPoint_isZero'>set</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>);
<a href='undocumented#SkScalar'>void</a> <a href='#SkPoint_iset'>iset</a>(<a href='#SkPoint_iset'>int32_t</a> <a href='#SkPoint_iset'>x</a>, <a href='#SkPoint_iset'>int32_t</a> <a href='#SkPoint_iset'>y</a>);
<a href='#SkPoint_iset'>void</a> <a href='#SkPoint_iset'>iset</a>(<a href='#SkPoint_iset'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>p</a>);
<a href='SkIPoint_Reference#SkIPoint'>void</a> <a href='#SkPoint_setAbs'>setAbs</a>(<a href='#SkPoint_setAbs'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>pt</a>);
<a href='SkPoint_Reference#SkPoint'>static</a> <a href='SkPoint_Reference#SkPoint'>void</a> <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], <a href='SkPoint_Reference#Point'>int</a> <a href='SkPoint_Reference#Point'>count</a>, <a href='SkPoint_Reference#Point'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>offset</a>);
<a href='SkPoint_Reference#SkVector'>static</a> <a href='SkPoint_Reference#SkVector'>void</a> <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], <a href='SkPoint_Reference#Point'>int</a> <a href='SkPoint_Reference#Point'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dx</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dy</a>);
<a href='undocumented#SkScalar'>void</a> <a href='undocumented#SkScalar'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dx</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dy</a>);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_length'>const</a>;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() <a href='#SkPoint_distanceToOrigin'>const</a>;
<a href='#SkPoint_distanceToOrigin'>bool</a> <a href='#SkPoint_normalize'>normalize()</a>;
<a href='#SkPoint_normalize'>bool</a> <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>);
<a href='undocumented#SkScalar'>bool</a> <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>length</a>);
<a href='undocumented#SkScalar'>bool</a> <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>length</a>);
<a href='undocumented#SkScalar'>void</a> <a href='undocumented#SkScalar'>scale</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* <a href='SkPoint_Reference#SkPoint'>dst</a>) <a href='SkPoint_Reference#SkPoint'>const</a>;
<a href='SkPoint_Reference#SkPoint'>void</a> <a href='SkPoint_Reference#SkPoint'>scale</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>value</a>);
<a href='undocumented#SkScalar'>void</a> <a href='#SkPoint_negate'>negate()</a>;
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>-() <a href='SkPoint_Reference#SkPoint'>const</a>;
<a href='SkPoint_Reference#SkPoint'>void</a> <a href='SkPoint_Reference#SkPoint'>operator</a>+=(<a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>v</a>);
<a href='SkPoint_Reference#SkVector'>void</a> <a href='SkPoint_Reference#SkVector'>operator</a>-=(<a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>v</a>);
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>*(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>) <a href='undocumented#SkScalar'>const</a>;
<a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>operator</a>*=(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>);
<a href='undocumented#SkScalar'>bool</a> <a href='#SkPoint_isFinite'>isFinite</a>() <a href='#SkPoint_isFinite'>const</a>;
<a href='#SkPoint_isFinite'>bool</a> <a href='#SkPoint_isFinite'>equals</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>) <a href='undocumented#SkScalar'>const</a>;
<a href='undocumented#SkScalar'>friend</a> <a href='undocumented#SkScalar'>bool</a> <a href='undocumented#SkScalar'>operator</a>==(<a href='undocumented#SkScalar'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>);
<a href='SkPoint_Reference#SkPoint'>friend</a> <a href='SkPoint_Reference#SkPoint'>bool</a> <a href='SkPoint_Reference#SkPoint'>operator</a>!=(<a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>);
<a href='SkPoint_Reference#SkPoint'>friend</a> <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='SkPoint_Reference#SkVector'>operator</a>-(<a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>);
<a href='SkPoint_Reference#SkPoint'>friend</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>+(<a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>);
<a href='SkPoint_Reference#SkVector'>static</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>);
<a href='undocumented#SkScalar'>static</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* <a href='SkPoint_Reference#SkVector'>vec</a>);
<a href='SkPoint_Reference#SkVector'>static</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(<a href='#SkPoint_Distance'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>);
<a href='SkPoint_Reference#SkPoint'>static</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(<a href='#SkPoint_DotProduct'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>a</a>, <a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>);
<a href='SkPoint_Reference#SkVector'>static</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(<a href='#SkPoint_CrossProduct'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>a</a>, <a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>cross</a>(<a href='undocumented#SkScalar'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>vec</a>) <a href='SkPoint_Reference#SkVector'>const</a>;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dot</a>(<a href='undocumented#SkScalar'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>vec</a>) <a href='SkPoint_Reference#SkVector'>const</a>;
static constexpr <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a> const;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a> const;
bool <a href='#SkPoint_isZero'>isZero</a>() const;
void set(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
void <a href='#SkPoint_iset'>iset</a>(int32_t x, int32_t y);
void <a href='#SkPoint_iset'>iset</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& p);
void <a href='#SkPoint_setAbs'>setAbs</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& pt);
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& offset);
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, <a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy);
void offset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a> const;
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() const;
bool <a href='#SkPoint_normalize'>normalize()</a>;
bool <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> length);
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, <a href='undocumented#SkScalar'>SkScalar</a> length);
void scale(<a href='undocumented#SkScalar'>SkScalar</a> scale, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* dst) const;
void scale(<a href='undocumented#SkScalar'>SkScalar</a> value);
void <a href='#SkPoint_negate'>negate()</a>;
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator-() const;
void operator+=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v);
void operator-=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v);
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator*(<a href='undocumented#SkScalar'>SkScalar</a> scale) const;
<a href='SkPoint_Reference#SkPoint'>SkPoint</a>& operator*=(<a href='undocumented#SkScalar'>SkScalar</a> scale);
bool <a href='#SkPoint_isFinite'>isFinite</a>() const;
bool equals(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y) const;
friend bool operator==(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
friend bool operator!=(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
friend <a href='SkPoint_Reference#SkVector'>SkVector</a> operator-(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
friend <a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator+(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* vec);
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
<a href='undocumented#SkScalar'>SkScalar</a> cross(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const;
<a href='undocumented#SkScalar'>SkScalar</a> dot(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const;
};
</pre>
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>holds</a> <a href='SkPoint_Reference#SkPoint'>two</a> 32-<a href='SkPoint_Reference#SkPoint'>bit</a> <a href='SkPoint_Reference#SkPoint'>floating</a> <a href='SkPoint_Reference#Point'>point</a> <a href='SkPoint_Reference#Point'>coordinates</a>.<table style='border-collapse: collapse; width: 62.5em'>
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> holds two 32-bit floating <a href='SkPoint_Reference#Point'>point</a> coordinates.<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
@ -61,16 +61,16 @@ struct <a href='SkPoint_Reference#SkPoint'>SkPoint</a> {
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPoint_fX'><code>fX</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
x-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>and</a> <a href='SkPoint_Reference#Vector'>Vector</a>. <a href='SkPoint_Reference#Vector'>May</a> <a href='SkPoint_Reference#Vector'>contain</a> <a href='SkPoint_Reference#Vector'>any</a> <a href='SkPoint_Reference#Vector'>value</a>, <a href='SkPoint_Reference#Vector'>including</a>
<a href='SkPoint_Reference#Vector'>infinities</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>NaN</a>.
x-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> and <a href='SkPoint_Reference#Vector'>Vector</a>. May contain any value, including
infinities and NaN.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPoint_fY'><code>fY</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
y-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>and</a> <a href='SkPoint_Reference#Vector'>Vector</a>. <a href='SkPoint_Reference#Vector'>May</a> <a href='SkPoint_Reference#Vector'>contain</a> <a href='SkPoint_Reference#Vector'>any</a> <a href='SkPoint_Reference#Vector'>value</a>, <a href='SkPoint_Reference#Vector'>including</a>
<a href='SkPoint_Reference#Vector'>infinities</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>NaN</a>.
y-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> and <a href='SkPoint_Reference#Vector'>Vector</a>. May contain any value, including
infinities and NaN.
</td>
</tr>
</table>
@ -80,18 +80,18 @@ y-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> <a href='S
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static constexpr <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>)
static constexpr <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
Sets <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_Make_x'>x</a>, <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>to</a> <a href='#SkPoint_Make_y'>y</a>. <a href='#SkPoint_Make_y'>Used</a> <a href='#SkPoint_Make_y'>both</a> <a href='#SkPoint_Make_y'>to</a> <a href='#SkPoint_Make_y'>set</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>and</a> <a href='SkPoint_Reference#Vector'>vector</a>.
Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_Make_x'>x</a>, <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_Make_y'>y</a>. Used both to set <a href='SkPoint_Reference#SkPoint'>SkPoint</a> and <a href='SkPoint_Reference#Vector'>vector</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_Make_x'><code><strong>x</strong></code></a></td>
<td><a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x-axis</a> <a href='undocumented#SkScalar'>value</a> <a href='undocumented#SkScalar'>of</a> <a href='undocumented#SkScalar'>constructed</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>or</a> <a href='SkPoint_Reference#Vector'>vector</a></td>
<td><a href='undocumented#SkScalar'>SkScalar</a> x-axis value of constructed <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a></td>
</tr>
<tr> <td><a name='SkPoint_Make_y'><code><strong>y</strong></code></a></td>
<td><a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y-axis</a> <a href='undocumented#SkScalar'>value</a> <a href='undocumented#SkScalar'>of</a> <a href='undocumented#SkScalar'>constructed</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>or</a> <a href='SkPoint_Reference#Vector'>vector</a></td>
<td><a href='undocumented#SkScalar'>SkScalar</a> y-axis value of constructed <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a></td>
</tr>
</table>
@ -122,10 +122,10 @@ all equal
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a> <a href='#SkPoint_x'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a> const
</pre>
Returns x-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>or</a> <a href='SkPoint_Reference#Vector'>vector</a>.
Returns x-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a>.
### Return Value
@ -152,10 +152,10 @@ pt1.fX == pt1.x()
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a> <a href='#SkPoint_y'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a> const
</pre>
Returns y-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>or</a> <a href='SkPoint_Reference#Vector'>vector</a>.
Returns y-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a>.
### Return Value
@ -182,14 +182,14 @@ pt1.fY == pt1.y()
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPoint_isZero'>isZero</a>() <a href='#SkPoint_isZero'>const</a>
bool <a href='#SkPoint_isZero'>isZero</a>() const
</pre>
Returns true if <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>are</a> <a href='#SkPoint_fY'>both</a> <a href='#SkPoint_fY'>zero</a>.
Returns true if <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> are both zero.
### Return Value
true if <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>is</a> <a href='#SkPoint_fX'>zero</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>is</a> <a href='#SkPoint_fY'>zero</a>
true if <a href='#SkPoint_fX'>fX</a> is zero and <a href='#SkPoint_fY'>fY</a> is zero
### Example
@ -215,10 +215,10 @@ pt.isZero() == true
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void set(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>)
void set(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
Sets <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_set_x'>x</a> <a href='#SkPoint_set_x'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>to</a> <a href='#SkPoint_set_y'>y</a>.
Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_set_x'>x</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_set_y'>y</a>.
### Parameters
@ -251,14 +251,14 @@ pt1 == pt2
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPoint_iset'>iset</a>(<a href='#SkPoint_iset'>int32_t</a> <a href='#SkPoint_iset'>x</a>, <a href='#SkPoint_iset'>int32_t</a> <a href='#SkPoint_iset'>y</a>)
void <a href='#SkPoint_iset'>iset</a>(int32_t x, int32_t y)
</pre>
Sets <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_iset_x'>x</a> <a href='#SkPoint_iset_x'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>to</a> <a href='#SkPoint_iset_y'>y</a>, <a href='#SkPoint_iset_y'>promoting</a> <a href='#SkPoint_iset_y'>integers</a> <a href='#SkPoint_iset_y'>to</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>values</a>.
Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_iset_x'>x</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_iset_y'>y</a>, promoting integers to <a href='undocumented#SkScalar'>SkScalar</a> values.
Assigning a large integer value directly to <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>or</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>may</a> <a href='#SkPoint_fY'>cause</a> <a href='#SkPoint_fY'>a</a> <a href='#SkPoint_fY'>compiler</a>
error, triggered by narrowing conversion of int to <a href='undocumented#SkScalar'>SkScalar</a>. <a href='undocumented#SkScalar'>This</a> <a href='undocumented#SkScalar'>safely</a>
casts <a href='#SkPoint_iset_x'>x</a> <a href='#SkPoint_iset_x'>and</a> <a href='#SkPoint_iset_y'>y</a> <a href='#SkPoint_iset_y'>to</a> <a href='#SkPoint_iset_y'>avoid</a> <a href='#SkPoint_iset_y'>the</a> <a href='#SkPoint_iset_y'>error</a>.
Assigning a large integer value directly to <a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_fY'>fY</a> may cause a compiler
error, triggered by narrowing conversion of int to <a href='undocumented#SkScalar'>SkScalar</a>. This safely
casts <a href='#SkPoint_iset_x'>x</a> and <a href='#SkPoint_iset_y'>y</a> to avoid the error.
### Parameters
@ -283,19 +283,19 @@ casts <a href='#SkPoint_iset_x'>x</a> <a href='#SkPoint_iset_x'>and</a> <a href=
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPoint_iset'>iset</a>(<a href='#SkPoint_iset'>const</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='SkIPoint_Reference#SkIPoint'>p</a>)
void <a href='#SkPoint_iset'>iset</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& p)
</pre>
Sets <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>to</a> <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a>, <a href='#SkIPoint_fY'>promoting</a> <a href='#SkIPoint_fY'>integers</a> <a href='#SkIPoint_fY'>to</a> <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>values</a>.
Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a>, promoting integers to <a href='undocumented#SkScalar'>SkScalar</a> values.
Assigning an <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>containing</a> <a href='SkIPoint_Reference#SkIPoint'>a</a> <a href='SkIPoint_Reference#SkIPoint'>large</a> <a href='SkIPoint_Reference#SkIPoint'>integer</a> <a href='SkIPoint_Reference#SkIPoint'>value</a> <a href='SkIPoint_Reference#SkIPoint'>directly</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>or</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>may</a>
Assigning an <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> containing a large integer value directly to <a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_fY'>fY</a> may
cause a compiler error, triggered by narrowing conversion of int to <a href='undocumented#SkScalar'>SkScalar</a>.
This safely casts <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> <a href='#SkIPoint_fX'>and</a> <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a> <a href='#SkIPoint_fY'>to</a> <a href='#SkIPoint_fY'>avoid</a> <a href='#SkIPoint_fY'>the</a> <a href='#SkIPoint_fY'>error</a>.
This safely casts <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a> to avoid the error.
### Parameters
<table> <tr> <td><a name='SkPoint_iset_2_p'><code><strong>p</strong></code></a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIPoint'>members</a> <a href='SkIPoint_Reference#SkIPoint'>promoted</a> <a href='SkIPoint_Reference#SkIPoint'>to</a> <a href='undocumented#SkScalar'>SkScalar</a></td>
<td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> members promoted to <a href='undocumented#SkScalar'>SkScalar</a></td>
</tr>
</table>
@ -321,15 +321,15 @@ fPt: -2.14748e+09, 2.14748e+09
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPoint_setAbs'>setAbs</a>(<a href='#SkPoint_setAbs'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>pt</a>)
void <a href='#SkPoint_setAbs'>setAbs</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& pt)
</pre>
Sets <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_fX'>absolute</a> <a href='#SkPoint_fX'>value</a> <a href='#SkPoint_fX'>of</a> <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fX'>fX</a>; <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>to</a> <a href='#SkPoint_fY'>absolute</a> <a href='#SkPoint_fY'>value</a> <a href='#SkPoint_fY'>of</a> <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fY'>fY</a>.
Sets <a href='#SkPoint_fX'>fX</a> to absolute value of <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fX'>fX</a>; and <a href='#SkPoint_fY'>fY</a> to absolute value of <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fY'>fY</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_setAbs_pt'><code><strong>pt</strong></code></a></td>
<td>members providing magnitude for <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a></td>
<td>members providing magnitude for <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a></td>
</tr>
</table>
@ -359,10 +359,10 @@ pt: nan, -nan abs: nan, nan
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], <a href='SkPoint_Reference#Point'>int</a> <a href='SkPoint_Reference#Point'>count</a>, <a href='SkPoint_Reference#Point'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>offset</a>)
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& offset)
</pre>
Adds <a href='#SkPoint_Offset_offset'>offset</a> <a href='#SkPoint_Offset_offset'>to</a> <a href='#SkPoint_Offset_offset'>each</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>in</a> <a href='#SkPoint_Offset_points'>points</a> <a href='#SkPoint_Offset_points'>array</a> <a href='#SkPoint_Offset_points'>with</a> <a href='#SkPoint_Offset_count'>count</a> <a href='#SkPoint_Offset_count'>entries</a>.
Adds <a href='#SkPoint_Offset_offset'>offset</a> to each <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in <a href='#SkPoint_Offset_points'>points</a> array with <a href='#SkPoint_Offset_count'>count</a> entries.
### Parameters
@ -373,7 +373,7 @@ Adds <a href='#SkPoint_Offset_offset'>offset</a> <a href='#SkPoint_Offset_offset
<td>entries in array</td>
</tr>
<tr> <td><a name='SkPoint_Offset_offset'><code><strong>offset</strong></code></a></td>
<td><a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>added</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='#SkPoint_Offset_points'>points</a></td>
<td><a href='SkPoint_Reference#Vector'>vector</a> added to <a href='#SkPoint_Offset_points'>points</a></td>
</tr>
</table>
@ -390,10 +390,10 @@ Adds <a href='#SkPoint_Offset_offset'>offset</a> <a href='#SkPoint_Offset_offset
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], <a href='SkPoint_Reference#Point'>int</a> <a href='SkPoint_Reference#Point'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dx</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dy</a>)
static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, <a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
Adds offset (<a href='#SkPoint_Offset_2_dx'>dx</a>, <a href='#SkPoint_Offset_2_dy'>dy</a>) <a href='#SkPoint_Offset_2_dy'>to</a> <a href='#SkPoint_Offset_2_dy'>each</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>in</a> <a href='#SkPoint_Offset_2_points'>points</a> <a href='#SkPoint_Offset_2_points'>array</a> <a href='#SkPoint_Offset_2_points'>of</a> <a href='#SkPoint_Offset_2_points'>length</a> <a href='#SkPoint_Offset_2_count'>count</a>.
Adds offset (<a href='#SkPoint_Offset_2_dx'>dx</a>, <a href='#SkPoint_Offset_2_dy'>dy</a>) to each <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in <a href='#SkPoint_Offset_2_points'>points</a> array of length <a href='#SkPoint_Offset_2_count'>count</a>.
### Parameters
@ -404,10 +404,10 @@ Adds offset (<a href='#SkPoint_Offset_2_dx'>dx</a>, <a href='#SkPoint_Offset_2_d
<td>entries in array</td>
</tr>
<tr> <td><a name='SkPoint_Offset_2_dx'><code><strong>dx</strong></code></a></td>
<td>added to <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>in</a> <a href='#SkPoint_Offset_2_points'>points</a></td>
<td>added to <a href='#SkPoint_fX'>fX</a> in <a href='#SkPoint_Offset_2_points'>points</a></td>
</tr>
<tr> <td><a name='SkPoint_Offset_2_dy'><code><strong>dy</strong></code></a></td>
<td>added to <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>in</a> <a href='#SkPoint_Offset_2_points'>points</a></td>
<td>added to <a href='#SkPoint_fY'>fY</a> in <a href='#SkPoint_Offset_2_points'>points</a></td>
</tr>
</table>
@ -424,10 +424,10 @@ Adds offset (<a href='#SkPoint_Offset_2_dx'>dx</a>, <a href='#SkPoint_Offset_2_d
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void offset(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dx</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dy</a>)
void offset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
Adds offset (<a href='#SkPoint_offset_dx'>dx</a>, <a href='#SkPoint_offset_dy'>dy</a>) <a href='#SkPoint_offset_dy'>to</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
Adds offset (<a href='#SkPoint_offset_dx'>dx</a>, <a href='#SkPoint_offset_dy'>dy</a>) to <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
### Parameters
@ -452,7 +452,7 @@ Adds offset (<a href='#SkPoint_offset_dx'>dx</a>, <a href='#SkPoint_offset_dy'>d
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_length'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a> const
</pre>
Returns the Euclidean distance from origin, computed as:
@ -478,7 +478,7 @@ straight-line distance to origin
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() <a href='#SkPoint_distanceToOrigin'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() const
</pre>
Returns the Euclidean distance from origin, computed as:
@ -507,8 +507,8 @@ straight-line distance to origin
bool <a href='#SkPoint_normalize'>normalize()</a>
</pre>
Scales (<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) <a href='#SkPoint_fY'>so</a> <a href='#SkPoint_fY'>that</a> <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_length'>returns</a> <a href='#SkPoint_length'>one</a>, <a href='#SkPoint_length'>while</a> <a href='#SkPoint_length'>preserving</a> <a href='#SkPoint_length'>ratio</a> <a href='#SkPoint_length'>of</a> <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>to</a> <a href='#SkPoint_fY'>fY</a>,
if possible. If prior length is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (0, 0) <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>returns</a>
Scales (<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) so that <a href='#SkPoint_length'>length()</a> returns one, while preserving ratio of <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_fY'>fY</a>,
if possible. If prior length is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and returns
false; otherwise returns true.
### Return Value
@ -528,12 +528,12 @@ true if former length is not zero or nearly zero
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>)
bool <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
Sets <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) <a href='#SkPoint_setNormalize_y'>scaled</a> <a href='#SkPoint_setNormalize_y'>so</a> <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_length'>returns</a> <a href='#SkPoint_length'>one</a>, <a href='#SkPoint_length'>and</a> <a href='#SkPoint_length'>so</a> <a href='#SkPoint_length'>that</a>
(<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) <a href='#SkPoint_fY'>is</a> <a href='#SkPoint_fY'>proportional</a> <a href='#SkPoint_fY'>to</a> (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>). <a href='#SkPoint_setNormalize_y'>If</a> (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) <a href='#SkPoint_setNormalize_y'>length</a> <a href='#SkPoint_setNormalize_y'>is</a> <a href='#SkPoint_setNormalize_y'>nearly</a> <a href='#SkPoint_setNormalize_y'>zero</a>,
sets <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (0, 0) <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>returns</a> <a href='SkPoint_Reference#Vector'>false</a>; <a href='SkPoint_Reference#Vector'>otherwise</a> <a href='SkPoint_Reference#Vector'>returns</a> <a href='SkPoint_Reference#Vector'>true</a>.
Sets <a href='SkPoint_Reference#Vector'>vector</a> to (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) scaled so <a href='#SkPoint_length'>length()</a> returns one, and so that
(<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) is proportional to (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>). If (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) length is nearly zero,
sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and returns false; otherwise returns true.
### Parameters
@ -547,7 +547,7 @@ sets <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Ve
### Return Value
true if (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) <a href='#SkPoint_setNormalize_y'>length</a> <a href='#SkPoint_setNormalize_y'>is</a> <a href='#SkPoint_setNormalize_y'>not</a> <a href='#SkPoint_setNormalize_y'>zero</a> <a href='#SkPoint_setNormalize_y'>or</a> <a href='#SkPoint_setNormalize_y'>nearly</a> <a href='#SkPoint_setNormalize_y'>zero</a>
true if (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) length is not zero or nearly zero
### Example
@ -562,11 +562,11 @@ true if (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>length</a>)
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> length)
</pre>
Scales <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>so</a> <a href='SkPoint_Reference#Vector'>that</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() <a href='#SkPoint_distanceToOrigin'>returns</a> <a href='#SkPoint_setLength_length'>length</a>, <a href='#SkPoint_setLength_length'>if</a> <a href='#SkPoint_setLength_length'>possible</a>. <a href='#SkPoint_setLength_length'>If</a> <a href='#SkPoint_setLength_length'>former</a>
<a href='#SkPoint_setLength_length'>length</a> <a href='#SkPoint_setLength_length'>is</a> <a href='#SkPoint_setLength_length'>nearly</a> <a href='#SkPoint_setLength_length'>zero</a>, <a href='#SkPoint_setLength_length'>sets</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (0, 0) <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>return</a> <a href='SkPoint_Reference#Vector'>false</a>; <a href='SkPoint_Reference#Vector'>otherwise</a> <a href='SkPoint_Reference#Vector'>returns</a>
Scales <a href='SkPoint_Reference#Vector'>vector</a> so that <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() returns <a href='#SkPoint_setLength_length'>length</a>, if possible. If former
<a href='#SkPoint_setLength_length'>length</a> is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and return false; otherwise returns
true.
### Parameters
@ -578,7 +578,7 @@ true.
### Return Value
true if former <a href='#SkPoint_setLength_length'>length</a> <a href='#SkPoint_setLength_length'>is</a> <a href='#SkPoint_setLength_length'>not</a> <a href='#SkPoint_setLength_length'>zero</a> <a href='#SkPoint_setLength_length'>or</a> <a href='#SkPoint_setLength_length'>nearly</a> <a href='#SkPoint_setLength_length'>zero</a>
true if former <a href='#SkPoint_setLength_length'>length</a> is not zero or nearly zero
### Example
@ -593,11 +593,11 @@ true if former <a href='#SkPoint_setLength_length'>length</a> <a href='#SkPoint_
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>length</a>)
bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, <a href='undocumented#SkScalar'>SkScalar</a> length)
</pre>
Sets <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) <a href='#SkPoint_setLength_2_y'>scaled</a> <a href='#SkPoint_setLength_2_y'>to</a> <a href='#SkPoint_setLength_2_length'>length</a>, <a href='#SkPoint_setLength_2_length'>if</a> <a href='#SkPoint_setLength_2_length'>possible</a>. <a href='#SkPoint_setLength_2_length'>If</a> <a href='#SkPoint_setLength_2_length'>former</a>
<a href='#SkPoint_setLength_2_length'>length</a> <a href='#SkPoint_setLength_2_length'>is</a> <a href='#SkPoint_setLength_2_length'>nearly</a> <a href='#SkPoint_setLength_2_length'>zero</a>, <a href='#SkPoint_setLength_2_length'>sets</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>to</a> (0, 0) <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>return</a> <a href='SkPoint_Reference#Vector'>false</a>; <a href='SkPoint_Reference#Vector'>otherwise</a> <a href='SkPoint_Reference#Vector'>returns</a>
Sets <a href='SkPoint_Reference#Vector'>vector</a> to (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) scaled to <a href='#SkPoint_setLength_2_length'>length</a>, if possible. If former
<a href='#SkPoint_setLength_2_length'>length</a> is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and return false; otherwise returns
true.
### Parameters
@ -615,7 +615,7 @@ true.
### Return Value
true if (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) <a href='#SkPoint_setLength_2_length'>length</a> <a href='#SkPoint_setLength_2_length'>is</a> <a href='#SkPoint_setLength_2_length'>not</a> <a href='#SkPoint_setLength_2_length'>zero</a> <a href='#SkPoint_setLength_2_length'>or</a> <a href='#SkPoint_setLength_2_length'>nearly</a> <a href='#SkPoint_setLength_2_length'>zero</a>
true if (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) <a href='#SkPoint_setLength_2_length'>length</a> is not zero or nearly zero
### Example
@ -630,15 +630,15 @@ true if (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void scale(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* <a href='SkPoint_Reference#SkPoint'>dst</a>) <a href='SkPoint_Reference#SkPoint'>const</a>
void scale(<a href='undocumented#SkScalar'>SkScalar</a> scale, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* dst) const
</pre>
Sets <a href='#SkPoint_scale_dst'>dst</a> <a href='#SkPoint_scale_dst'>to</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>times</a> <a href='#SkPoint_scale_scale'>scale</a>. <a href='#SkPoint_scale_dst'>dst</a> <a href='#SkPoint_scale_dst'>may</a> <a href='#SkPoint_scale_dst'>be</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>modify</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>in</a> <a href='SkPoint_Reference#SkPoint'>place</a>.
Sets <a href='#SkPoint_scale_dst'>dst</a> to <a href='SkPoint_Reference#SkPoint'>SkPoint</a> times <a href='#SkPoint_scale_scale'>scale</a>. <a href='#SkPoint_scale_dst'>dst</a> may be <a href='SkPoint_Reference#SkPoint'>SkPoint</a> to modify <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in place.
### Parameters
<table> <tr> <td><a name='SkPoint_scale_scale'><code><strong>scale</strong></code></a></td>
<td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>by</a></td>
<td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> by</td>
</tr>
<tr> <td><a name='SkPoint_scale_dst'><code><strong>dst</strong></code></a></td>
<td>storage for scaled <a href='SkPoint_Reference#SkPoint'>SkPoint</a></td>
@ -658,15 +658,15 @@ Sets <a href='#SkPoint_scale_dst'>dst</a> <a href='#SkPoint_scale_dst'>to</a> <a
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void scale(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>value</a>)
void scale(<a href='undocumented#SkScalar'>SkScalar</a> value)
</pre>
Scales <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>in</a> <a href='SkPoint_Reference#SkPoint'>place</a> <a href='SkPoint_Reference#SkPoint'>by</a> <a href='SkPoint_Reference#SkPoint'>scale</a>.
Scales <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in place by scale.
### Parameters
<table> <tr> <td><a name='SkPoint_scale_2_value'><code><strong>value</strong></code></a></td>
<td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>by</a></td>
<td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> by</td>
</tr>
</table>
@ -686,7 +686,7 @@ Scales <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Referenc
void <a href='#SkPoint_negate'>negate()</a>
</pre>
Changes the sign of <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a>.
Changes the sign of <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a>.
### Example
@ -712,14 +712,14 @@ operator-()_const <a href='#SkPoint_setAbs'>setAbs</a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>-() <a href='SkPoint_Reference#SkPoint'>const</a>
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator-() const
</pre>
Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>changing</a> <a href='SkPoint_Reference#SkPoint'>the</a> <a href='SkPoint_Reference#SkPoint'>signs</a> <a href='SkPoint_Reference#SkPoint'>of</a> <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a>.
Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> changing the signs of <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a>.
### Return Value
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>as</a> (-<a href='#SkPoint_fX'>fX</a>, -<a href='#SkPoint_fY'>fY</a>)
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> as (-<a href='#SkPoint_fX'>fX</a>, -<a href='#SkPoint_fY'>fY</a>)
### Example
@ -738,22 +738,22 @@ pt: nan, -nan negate: -nan, nan
### See Also
<a href='#SkPoint_negate'>negate</a> negate<a href='#SkPoint_subtract_operator'>operator-(const SkPoint& a, const SkPoint& b)</a> operator-(const SkPoint& a, const SkPoint& b)<a href='#SkPoint_subtractfrom_operator'>operator-=(const SkVector& v)</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='SkIPoint_Reference#SkIPoint'>operator</a>-()_<a href='SkIPoint_Reference#SkIPoint'>const</a>
<a href='#SkPoint_negate'>negate</a> negate<a href='#SkPoint_subtract_operator'>operator-(const SkPoint& a, const SkPoint& b)</a> operator-(const SkPoint& a, const SkPoint& b)<a href='#SkPoint_subtractfrom_operator'>operator-=(const SkVector& v)</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::operator-()_const
<a name='SkPoint_addto_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void operator+=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>v</a>)
void operator+=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
</pre>
Adds <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_addto_operator_v'>v</a> <a href='#SkPoint_addto_operator_v'>to</a> <a href='SkPoint_Reference#Point'>Point</a>. <a href='SkPoint_Reference#Point'>Sets</a> <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>to</a>: <code>(<a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
Adds <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_addto_operator_v'>v</a> to <a href='SkPoint_Reference#Point'>Point</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
### Parameters
<table> <tr> <td><a name='SkPoint_addto_operator_v'><code><strong>v</strong></code></a></td>
<td><a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>add</a></td>
<td><a href='SkPoint_Reference#Vector'>Vector</a> to add</td>
</tr>
</table>
@ -770,15 +770,15 @@ Adds <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_addto_opera
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void operator-=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>v</a>)
void operator-=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
</pre>
Subtracts <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_subtractfrom_operator_v'>v</a> <a href='#SkPoint_subtractfrom_operator_v'>from</a> <a href='SkPoint_Reference#Point'>Point</a>. <a href='SkPoint_Reference#Point'>Sets</a> <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>to</a>: <code>(<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
Subtracts <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_subtractfrom_operator_v'>v</a> from <a href='SkPoint_Reference#Point'>Point</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
### Parameters
<table> <tr> <td><a name='SkPoint_subtractfrom_operator_v'><code><strong>v</strong></code></a></td>
<td><a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>subtract</a></td>
<td><a href='SkPoint_Reference#Vector'>Vector</a> to subtract</td>
</tr>
</table>
@ -795,21 +795,21 @@ Subtracts <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_subtra
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>*(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>) <a href='undocumented#SkScalar'>const</a>
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator*(<a href='undocumented#SkScalar'>SkScalar</a> scale) const
</pre>
Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>multiplied</a> <a href='SkPoint_Reference#SkPoint'>by</a> <a href='#SkPoint_multiply_operator_scale'>scale</a>.
Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> multiplied by <a href='#SkPoint_multiply_operator_scale'>scale</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_multiply_operator_scale'><code><strong>scale</strong></code></a></td>
<td><a href='undocumented#Scalar'>scalar</a> <a href='undocumented#Scalar'>to</a> <a href='undocumented#Scalar'>multiply</a> <a href='undocumented#Scalar'>by</a></td>
<td><a href='undocumented#Scalar'>scalar</a> to multiply by</td>
</tr>
</table>
### Return Value
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>as</a> (<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>)
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> as (<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>)
### Example
@ -824,15 +824,15 @@ Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Referen
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>operator</a>*=(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>scale</a>)
<a href='SkPoint_Reference#SkPoint'>SkPoint</a>& operator*=(<a href='undocumented#SkScalar'>SkScalar</a> scale)
</pre>
Multiplies <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>by</a> <a href='#SkPoint_multiplyby_operator_scale'>scale</a>. <a href='#SkPoint_multiplyby_operator_scale'>Sets</a> <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>to</a>: <code>(<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>)</code>.
Multiplies <a href='SkPoint_Reference#Point'>Point</a> by <a href='#SkPoint_multiplyby_operator_scale'>scale</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>)</code>.
### Parameters
<table> <tr> <td><a name='SkPoint_multiplyby_operator_scale'><code><strong>scale</strong></code></a></td>
<td><a href='undocumented#Scalar'>Scalar</a> <a href='undocumented#Scalar'>to</a> <a href='undocumented#Scalar'>multiply</a> <a href='undocumented#Scalar'>by</a></td>
<td><a href='undocumented#Scalar'>Scalar</a> to multiply by</td>
</tr>
</table>
@ -853,10 +853,10 @@ reference to <a href='SkPoint_Reference#Point'>Point</a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPoint_isFinite'>isFinite</a>() <a href='#SkPoint_isFinite'>const</a>
bool <a href='#SkPoint_isFinite'>isFinite</a>() const
</pre>
Returns true if both <a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_fY'>fY</a> <a href='#SkPoint_fY'>are</a> <a href='#SkPoint_fY'>measurable</a> <a href='#SkPoint_fY'>values</a>.
Returns true if both <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> are measurable values.
### Return Value
@ -886,10 +886,10 @@ pt: nan, -1 finite: false
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool equals(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>) <a href='undocumented#SkScalar'>const</a>
bool equals(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y) const
</pre>
Returns true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>is</a> <a href='SkPoint_Reference#SkPoint'>equivalent</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>constructed</a> <a href='SkPoint_Reference#SkPoint'>from</a> (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>).
Returns true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> is equivalent to <a href='SkPoint_Reference#SkPoint'>SkPoint</a> constructed from (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>).
### Parameters
@ -903,7 +903,7 @@ Returns true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint
### Return Value
true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>equals</a> (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>)
true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> equals (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>)
### Example
@ -929,24 +929,24 @@ pt: nan, -1 != pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator==(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>)
bool operator==(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
</pre>
Returns true if <a href='#SkPoint_equal_operator_a'>a</a> <a href='#SkPoint_equal_operator_a'>is</a> <a href='#SkPoint_equal_operator_a'>equivalent</a> <a href='#SkPoint_equal_operator_a'>to</a> <a href='#SkPoint_equal_operator_b'>b</a>.
Returns true if <a href='#SkPoint_equal_operator_a'>a</a> is equivalent to <a href='#SkPoint_equal_operator_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_equal_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>compare</a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
</tr>
<tr> <td><a name='SkPoint_equal_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>compare</a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>and</a> <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
true if <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
### Example
@ -972,24 +972,24 @@ pt: nan, -1 != pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator!=(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>)
bool operator!=(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
</pre>
Returns true if <a href='#SkPoint_notequal_operator_a'>a</a> <a href='#SkPoint_notequal_operator_a'>is</a> <a href='#SkPoint_notequal_operator_a'>not</a> <a href='#SkPoint_notequal_operator_a'>equivalent</a> <a href='#SkPoint_notequal_operator_a'>to</a> <a href='#SkPoint_notequal_operator_b'>b</a>.
Returns true if <a href='#SkPoint_notequal_operator_a'>a</a> is not equivalent to <a href='#SkPoint_notequal_operator_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_notequal_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>compare</a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
</tr>
<tr> <td><a name='SkPoint_notequal_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='SkPoint_Reference#SkPoint'>compare</a></td>
<td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> <a href='#SkPoint_fX'>or</a> <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
true if <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
### Example
@ -1015,27 +1015,27 @@ pt: nan, -1 != pt
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='SkPoint_Reference#SkVector'>operator</a>-(<a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>)
<a href='SkPoint_Reference#SkVector'>SkVector</a> operator-(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
</pre>
Returns <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>from</a> <a href='#SkPoint_subtract_operator_b'>b</a> <a href='#SkPoint_subtract_operator_b'>to</a> <a href='#SkPoint_subtract_operator_a'>a</a>, <a href='#SkPoint_subtract_operator_a'>computed</a> <a href='#SkPoint_subtract_operator_a'>as </a> <code>(<a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
Returns <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='#SkPoint_subtract_operator_b'>b</a> to <a href='#SkPoint_subtract_operator_a'>a</a>, computed as <code>(<a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>from</a> <a href='SkPoint_Reference#Point'>Point</a>, <a href='SkPoint_Reference#Point'>returning</a> <a href='SkPoint_Reference#Point'>Point</a>.
<a href='SkPoint_Reference#Point'>Can</a> <a href='SkPoint_Reference#Point'>also</a> <a href='SkPoint_Reference#Point'>be</a> <a href='SkPoint_Reference#Point'>used</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>subtract</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>from</a> <a href='SkPoint_Reference#Vector'>Vector</a>, <a href='SkPoint_Reference#Vector'>returning</a> <a href='SkPoint_Reference#Vector'>Vector</a>.
Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='SkPoint_Reference#Point'>Point</a>, returning <a href='SkPoint_Reference#Point'>Point</a>.
Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='SkPoint_Reference#Vector'>Vector</a>, returning <a href='SkPoint_Reference#Vector'>Vector</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_subtract_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>subtract</a> <a href='SkPoint_Reference#Point'>from</a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> to subtract from</td>
</tr>
<tr> <td><a name='SkPoint_subtract_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>subtract</a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> to subtract</td>
</tr>
</table>
### Return Value
<a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>from</a> <a href='#SkPoint_subtract_operator_b'>b</a> <a href='#SkPoint_subtract_operator_b'>to</a> <a href='#SkPoint_subtract_operator_a'>a</a>
<a href='SkPoint_Reference#Vector'>Vector</a> from <a href='#SkPoint_subtract_operator_b'>b</a> to <a href='#SkPoint_subtract_operator_a'>a</a>
### Example
@ -1050,28 +1050,28 @@ Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> <a hr
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>operator</a>+(<a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>)
<a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator+(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
</pre>
Returns <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>resulting</a> <a href='SkPoint_Reference#Point'>from</a> <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_a'>a</a> <a href='#SkPoint_add_operator_a'>offset</a> <a href='#SkPoint_add_operator_a'>by</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_b'>b</a>, <a href='#SkPoint_add_operator_b'>computed</a> <a href='#SkPoint_add_operator_b'>as</a>:
Returns <a href='SkPoint_Reference#Point'>Point</a> resulting from <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_a'>a</a> offset by <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_b'>b</a>, computed as:
<code>(<a href='#SkPoint_add_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_add_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_add_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> + <a href='#SkPoint_add_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
Can also be used to offset <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_b'>b</a> <a href='#SkPoint_add_operator_b'>by</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_a'>a</a>, <a href='#SkPoint_add_operator_a'>returning</a> <a href='SkPoint_Reference#Point'>Point</a>.
<a href='SkPoint_Reference#Point'>Can</a> <a href='SkPoint_Reference#Point'>also</a> <a href='SkPoint_Reference#Point'>be</a> <a href='SkPoint_Reference#Point'>used</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>add</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>Vector</a>, <a href='SkPoint_Reference#Vector'>returning</a> <a href='SkPoint_Reference#Vector'>Vector</a>.
Can also be used to offset <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_b'>b</a> by <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_a'>a</a>, returning <a href='SkPoint_Reference#Point'>Point</a>.
Can also be used to add <a href='SkPoint_Reference#Vector'>Vector</a> to <a href='SkPoint_Reference#Vector'>Vector</a>, returning <a href='SkPoint_Reference#Vector'>Vector</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_add_operator_a'><code><strong>a</strong></code></a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>or</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>add</a> <a href='SkPoint_Reference#Vector'>to</a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> or <a href='SkPoint_Reference#Vector'>Vector</a> to add to</td>
</tr>
<tr> <td><a name='SkPoint_add_operator_b'><code><strong>b</strong></code></a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>or</a> <a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>add</a></td>
<td><a href='SkPoint_Reference#Point'>Point</a> or <a href='SkPoint_Reference#Vector'>Vector</a> to add</td>
</tr>
</table>
### Return Value
<a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>equal</a> <a href='SkPoint_Reference#Point'>to</a> <a href='#SkPoint_add_operator_a'>a</a> <a href='#SkPoint_add_operator_a'>offset</a> <a href='#SkPoint_add_operator_a'>by</a> <a href='#SkPoint_add_operator_b'>b</a>
<a href='SkPoint_Reference#Point'>Point</a> equal to <a href='#SkPoint_add_operator_a'>a</a> offset by <a href='#SkPoint_add_operator_b'>b</a>
### Example
@ -1086,7 +1086,7 @@ Can also be used to offset <a href='SkPoint_Reference#Point'>Point</a> <a href='
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>)
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
Returns the <a href='undocumented#Euclidean_Distance'>Euclidean distance</a> from origin, computed as:
@ -1122,16 +1122,16 @@ straight-line distance to origin
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* <a href='SkPoint_Reference#SkVector'>vec</a>)
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* vec)
</pre>
Scales (<a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>) <a href='#SkPoint_fY'>so</a> <a href='#SkPoint_fY'>that</a> <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_length'>returns</a> <a href='#SkPoint_length'>one</a>, <a href='#SkPoint_length'>while</a> <a href='#SkPoint_length'>preserving</a> <a href='#SkPoint_length'>ratio</a> <a href='#SkPoint_length'>of</a> <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>
to <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>, <a href='#SkPoint_fY'>if</a> <a href='#SkPoint_fY'>possible</a>. <a href='#SkPoint_fY'>If</a> <a href='#SkPoint_fY'>original</a> <a href='#SkPoint_fY'>length</a> <a href='#SkPoint_fY'>is</a> <a href='#SkPoint_fY'>nearly</a> <a href='#SkPoint_fY'>zero</a>, <a href='#SkPoint_fY'>sets</a> <a href='#SkPoint_Normalize_vec'>vec</a> <a href='#SkPoint_Normalize_vec'>to</a> (0, 0) <a href='#SkPoint_Normalize_vec'>and</a> <a href='#SkPoint_Normalize_vec'>returns</a>
zero; otherwise, returns length of <a href='#SkPoint_Normalize_vec'>vec</a> <a href='#SkPoint_Normalize_vec'>before</a> <a href='#SkPoint_Normalize_vec'>vec</a> <a href='#SkPoint_Normalize_vec'>is</a> <a href='#SkPoint_Normalize_vec'>scaled</a>.
Scales (<a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>) so that <a href='#SkPoint_length'>length()</a> returns one, while preserving ratio of <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>
to <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>, if possible. If original length is nearly zero, sets <a href='#SkPoint_Normalize_vec'>vec</a> to (0, 0) and returns
zero; otherwise, returns length of <a href='#SkPoint_Normalize_vec'>vec</a> before <a href='#SkPoint_Normalize_vec'>vec</a> is scaled.
Returned prior length may be <a href='undocumented#SK_ScalarInfinity'>SK_ScalarInfinity</a> <a href='undocumented#SK_ScalarInfinity'>if</a> <a href='undocumented#SK_ScalarInfinity'>it</a> <a href='undocumented#SK_ScalarInfinity'>can</a> <a href='undocumented#SK_ScalarInfinity'>not</a> <a href='undocumented#SK_ScalarInfinity'>be</a> <a href='undocumented#SK_ScalarInfinity'>represented</a> <a href='undocumented#SK_ScalarInfinity'>by</a> <a href='undocumented#SkScalar'>SkScalar</a>.
Returned prior length may be <a href='undocumented#SK_ScalarInfinity'>SK_ScalarInfinity</a> if it can not be represented by <a href='undocumented#SkScalar'>SkScalar</a>.
Note that <a href='#SkPoint_normalize'>normalize()</a> <a href='#SkPoint_normalize'>is</a> <a href='#SkPoint_normalize'>faster</a> <a href='#SkPoint_normalize'>if</a> <a href='#SkPoint_normalize'>prior</a> <a href='#SkPoint_normalize'>length</a> <a href='#SkPoint_normalize'>is</a> <a href='#SkPoint_normalize'>not</a> <a href='#SkPoint_normalize'>required</a>.
Note that <a href='#SkPoint_normalize'>normalize()</a> is faster if prior length is not required.
### Parameters
@ -1142,7 +1142,7 @@ Note that <a href='#SkPoint_normalize'>normalize()</a> <a href='#SkPoint_normali
### Return Value
original <a href='#SkPoint_Normalize_vec'>vec</a> <a href='#SkPoint_Normalize_vec'>length</a>
original <a href='#SkPoint_Normalize_vec'>vec</a> length
### Example
@ -1157,24 +1157,24 @@ original <a href='#SkPoint_Normalize_vec'>vec</a> <a href='#SkPoint_Normalize_ve
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(<a href='#SkPoint_Distance'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>a</a>, <a href='SkPoint_Reference#SkPoint'>const</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='SkPoint_Reference#SkPoint'>b</a>)
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
</pre>
Returns the <a href='undocumented#Euclidean_Distance'>Euclidean distance</a> between <a href='#SkPoint_Distance_a'>a</a> <a href='#SkPoint_Distance_a'>and</a> <a href='#SkPoint_Distance_b'>b</a>.
Returns the <a href='undocumented#Euclidean_Distance'>Euclidean distance</a> between <a href='#SkPoint_Distance_a'>a</a> and <a href='#SkPoint_Distance_b'>b</a>.
### Parameters
<table> <tr> <td><a name='SkPoint_Distance_a'><code><strong>a</strong></code></a></td>
<td><a href='undocumented#Line'>line</a> <a href='undocumented#Line'>end</a> <a href='SkPoint_Reference#Point'>point</a></td>
<td><a href='undocumented#Line'>line</a> end <a href='SkPoint_Reference#Point'>point</a></td>
</tr>
<tr> <td><a name='SkPoint_Distance_b'><code><strong>b</strong></code></a></td>
<td><a href='undocumented#Line'>line</a> <a href='undocumented#Line'>end</a> <a href='SkPoint_Reference#Point'>point</a></td>
<td><a href='undocumented#Line'>line</a> end <a href='SkPoint_Reference#Point'>point</a></td>
</tr>
</table>
### Return Value
straight-line distance from <a href='#SkPoint_Distance_a'>a</a> <a href='#SkPoint_Distance_a'>to</a> <a href='#SkPoint_Distance_b'>b</a>
straight-line distance from <a href='#SkPoint_Distance_a'>a</a> to <a href='#SkPoint_Distance_b'>b</a>
### Example
@ -1189,10 +1189,10 @@ straight-line distance from <a href='#SkPoint_Distance_a'>a</a> <a href='#SkPoin
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(<a href='#SkPoint_DotProduct'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>a</a>, <a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>)
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
</pre>
Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_a'>a</a> <a href='#SkPoint_DotProduct_a'>and</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_b'>b</a>.
Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_a'>a</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_b'>b</a>.
### Parameters
@ -1221,13 +1221,13 @@ product of input magnitudes and cosine of the angle between them
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(<a href='#SkPoint_CrossProduct'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>a</a>, <a href='SkPoint_Reference#SkVector'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>b</a>)
static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
</pre>
Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_a'>a</a> <a href='#SkPoint_CrossProduct_a'>and</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_b'>b</a>.
Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_a'>a</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_b'>b</a>.
<a href='#SkPoint_CrossProduct_a'>a</a> <a href='#SkPoint_CrossProduct_a'>and</a> <a href='#SkPoint_CrossProduct_b'>b</a> <a href='#SkPoint_CrossProduct_b'>form</a> <a href='#SkPoint_CrossProduct_b'>three-dimensional</a> <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_Reference#Vector'>with</a> <a href='SkPoint_Reference#Vector'>z-axis</a> <a href='SkPoint_Reference#Vector'>value</a> <a href='SkPoint_Reference#Vector'>equal</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>zero</a>. <a href='SkPoint_Reference#Vector'>The</a>
cross product is <a href='#SkPoint_CrossProduct_a'>a</a> <a href='#SkPoint_CrossProduct_a'>three-dimensional</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>with</a> <a href='SkPoint_Reference#Vector'>x-axis</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>y-axis</a> <a href='SkPoint_Reference#Vector'>values</a> <a href='SkPoint_Reference#Vector'>equal</a>
<a href='#SkPoint_CrossProduct_a'>a</a> and <a href='#SkPoint_CrossProduct_b'>b</a> form three-dimensional <a href='SkPoint_Reference#Vector'>vectors</a> with z-axis value equal to zero. The
cross product is <a href='#SkPoint_CrossProduct_a'>a</a> three-dimensional <a href='SkPoint_Reference#Vector'>vector</a> with x-axis and y-axis values equal
to zero. The cross product z-axis component is returned.
### Parameters
@ -1242,7 +1242,7 @@ to zero. The cross product z-axis component is returned.
### Return Value
area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_Reference#Vector'>signed</a> <a href='SkPoint_Reference#Vector'>by</a> <a href='SkPoint_Reference#Vector'>angle</a> <a href='SkPoint_Reference#Vector'>direction</a>
area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> signed by angle direction
### Example
@ -1257,13 +1257,13 @@ area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>cross</a>(<a href='undocumented#SkScalar'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>vec</a>) <a href='SkPoint_Reference#SkVector'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> cross(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const
</pre>
Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='#SkPoint_cross_vec'>vec</a>.
Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> and <a href='#SkPoint_cross_vec'>vec</a>.
<a href='SkPoint_Reference#Vector'>Vector</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='#SkPoint_cross_vec'>vec</a> <a href='#SkPoint_cross_vec'>form</a> <a href='#SkPoint_cross_vec'>three-dimensional</a> <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_Reference#Vector'>with</a> <a href='SkPoint_Reference#Vector'>z-axis</a> <a href='SkPoint_Reference#Vector'>value</a> <a href='SkPoint_Reference#Vector'>equal</a> <a href='SkPoint_Reference#Vector'>to</a> <a href='SkPoint_Reference#Vector'>zero</a>.
The cross product is a three-dimensional <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>with</a> <a href='SkPoint_Reference#Vector'>x-axis</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>y-axis</a> <a href='SkPoint_Reference#Vector'>values</a>
<a href='SkPoint_Reference#Vector'>Vector</a> and <a href='#SkPoint_cross_vec'>vec</a> form three-dimensional <a href='SkPoint_Reference#Vector'>vectors</a> with z-axis value equal to zero.
The cross product is a three-dimensional <a href='SkPoint_Reference#Vector'>vector</a> with x-axis and y-axis values
equal to zero. The cross product z-axis component is returned.
### Parameters
@ -1275,7 +1275,7 @@ equal to zero. The cross product z-axis component is returned.
### Return Value
area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_Reference#Vector'>signed</a> <a href='SkPoint_Reference#Vector'>by</a> <a href='SkPoint_Reference#Vector'>angle</a> <a href='SkPoint_Reference#Vector'>direction</a>
area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> signed by angle direction
### Example
@ -1290,10 +1290,10 @@ area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> <a href='SkPoint_
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>dot</a>(<a href='undocumented#SkScalar'>const</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='SkPoint_Reference#SkVector'>vec</a>) <a href='SkPoint_Reference#SkVector'>const</a>
<a href='undocumented#SkScalar'>SkScalar</a> dot(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const
</pre>
Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='SkPoint_Reference#Vector'>and</a> <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_dot_vec'>vec</a>.
Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_dot_vec'>vec</a>.
### Parameters
@ -1324,5 +1324,5 @@ product of input magnitudes and cosine of the angle between them
typedef <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>;
</pre>
<a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='SkPoint_Reference#SkVector'>provides</a> <a href='SkPoint_Reference#SkVector'>an</a> <a href='SkPoint_Reference#SkVector'>alternative</a> <a href='SkPoint_Reference#SkVector'>name</a> <a href='SkPoint_Reference#SkVector'>for</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>. <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='SkPoint_Reference#SkVector'>and</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>can</a>
<a href='SkPoint_Reference#SkPoint'>be</a> <a href='SkPoint_Reference#SkPoint'>used</a> <a href='SkPoint_Reference#SkPoint'>interchangeably</a> <a href='SkPoint_Reference#SkPoint'>for</a> <a href='SkPoint_Reference#SkPoint'>all</a> <a href='SkPoint_Reference#SkPoint'>purposes</a>.
<a href='SkPoint_Reference#SkVector'>SkVector</a> provides an alternative name for <a href='SkPoint_Reference#SkPoint'>SkPoint</a>. <a href='SkPoint_Reference#SkVector'>SkVector</a> and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> can
be used interchangeably for all purposes.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,30 +8,30 @@ SkTextBlobBuilder Reference
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> {
<a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>public</a>:
public:
<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>;
~<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlobBuilder_make'>make()</a>;
<a href='#SkTextBlobBuilder_make'>struct</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> {
struct <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> {
<a href='undocumented#SkGlyphID'>SkGlyphID</a>* <a href='undocumented#Glyph'>glyphs</a>;
<a href='undocumented#SkScalar'>SkScalar</a>* <a href='undocumented#SkScalar'>pos</a>;
<a href='undocumented#SkScalar'>char</a>* <a href='undocumented#SkScalar'>utf8text</a>;
<a href='undocumented#SkScalar'>uint32_t</a>* <a href='undocumented#SkScalar'>clusters</a>;
<a href='undocumented#SkScalar'>SkScalar</a>* pos;
char* utf8text;
uint32_t* clusters;
};
<a href='undocumented#SkScalar'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(<a href='#SkTextBlobBuilder_allocRun'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
<a href='SkRect_Reference#SkRect'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(<a href='#SkTextBlobBuilder_allocRunPosH'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
<a href='SkRect_Reference#SkRect'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(<a href='#SkTextBlobBuilder_allocRunPos'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>,
<a href='undocumented#Font'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
<a href='SkRect_Reference#SkRect'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(<a href='#SkTextBlobBuilder_allocRun'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
<a href='SkRect_Reference#SkRect'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(<a href='#SkTextBlobBuilder_allocRunPosH'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
<a href='SkRect_Reference#SkRect'>const</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(<a href='#SkTextBlobBuilder_allocRunPos'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>,
<a href='undocumented#Font'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
};
</pre>
@ -45,19 +45,19 @@ Helper class for constructing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBl
struct <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> {
<a href='undocumented#SkGlyphID'>SkGlyphID</a>* <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>;
<a href='undocumented#SkScalar'>SkScalar</a>* <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
<a href='#SkTextBlobBuilder_RunBuffer_pos'>char</a>* <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>;
<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>uint32_t</a>* <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a>;
char* <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>;
uint32_t* <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a>;
};
</pre>
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> <a href='#SkTextBlobBuilder_RunBuffer'>supplies</a> <a href='#SkTextBlobBuilder_RunBuffer'>storage</a> <a href='#SkTextBlobBuilder_RunBuffer'>for</a> <a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>and</a> <a href='undocumented#Glyph'>positions</a> <a href='undocumented#Glyph'>within</a> <a href='undocumented#Glyph'>a</a> <a href='undocumented#Glyph'>run</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> supplies storage for <a href='undocumented#Glyph'>Glyphs</a> and positions within a run.
<a href='undocumented#Glyph'>A</a> <a href='undocumented#Glyph'>run</a> <a href='undocumented#Glyph'>is</a> <a href='undocumented#Glyph'>a</a> <a href='undocumented#Glyph'>sequence</a> <a href='undocumented#Glyph'>of</a> <a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>sharing</a> <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> <a href='#Paint_Font_Metrics'>and</a> <a href='#Paint_Font_Metrics'>positioning</a>.
<a href='#Paint_Font_Metrics'>Each</a> <a href='#Paint_Font_Metrics'>run</a> <a href='#Paint_Font_Metrics'>may</a> <a href='#Paint_Font_Metrics'>position</a> <a href='#Paint_Font_Metrics'>its</a> <a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>in</a> <a href='undocumented#Glyph'>one</a> <a href='undocumented#Glyph'>of</a> <a href='undocumented#Glyph'>three</a> <a href='undocumented#Glyph'>ways</a>:
<a href='undocumented#Glyph'>by</a> <a href='undocumented#Glyph'>specifying</a> <a href='undocumented#Glyph'>where</a> <a href='undocumented#Glyph'>the</a> <a href='undocumented#Glyph'>first</a> <a href='undocumented#Glyph'>Glyph</a> <a href='undocumented#Glyph'>is</a> <a href='undocumented#Glyph'>drawn</a>, <a href='undocumented#Glyph'>and</a> <a href='undocumented#Glyph'>allowing</a> <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> <a href='#Paint_Font_Metrics'>to</a>
<a href='#Paint_Font_Metrics'>determine</a> <a href='#Paint_Font_Metrics'>the</a> <a href='#Paint_Font_Metrics'>advance</a> <a href='#Paint_Font_Metrics'>to</a> <a href='#Paint_Font_Metrics'>subsequent</a> <a href='undocumented#Glyph'>Glyphs</a>; <a href='undocumented#Glyph'>by</a> <a href='undocumented#Glyph'>specifying</a> <a href='undocumented#Glyph'>a</a> <a href='undocumented#Glyph'>baseline</a>, <a href='undocumented#Glyph'>and</a>
<a href='undocumented#Glyph'>the</a> <a href='undocumented#Glyph'>position</a> <a href='undocumented#Glyph'>on</a> <a href='undocumented#Glyph'>that</a> <a href='undocumented#Glyph'>baseline</a> <a href='undocumented#Glyph'>for</a> <a href='undocumented#Glyph'>each</a> <a href='undocumented#Glyph'>Glyph</a> <a href='undocumented#Glyph'>in</a> <a href='undocumented#Glyph'>run</a>; <a href='undocumented#Glyph'>or</a> <a href='undocumented#Glyph'>by</a> <a href='undocumented#Glyph'>providing</a> <a href='SkPoint_Reference#Point'>Point</a>
<a href='SkPoint_Reference#Point'>array</a>, <a href='SkPoint_Reference#Point'>one</a> <a href='SkPoint_Reference#Point'>per</a> <a href='undocumented#Glyph'>Glyph</a>.<table style='border-collapse: collapse; width: 62.5em'>
A run is a sequence of <a href='undocumented#Glyph'>Glyphs</a> sharing <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> and positioning.
Each run may position its <a href='undocumented#Glyph'>Glyphs</a> in one of three ways:
by specifying where the first <a href='undocumented#Glyph'>Glyph</a> is drawn, and allowing <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> to
determine the advance to subsequent <a href='undocumented#Glyph'>Glyphs</a>; by specifying a baseline, and
the position on that baseline for each <a href='undocumented#Glyph'>Glyph</a> in run; or by providing <a href='SkPoint_Reference#Point'>Point</a>
array, one per <a href='undocumented#Glyph'>Glyph</a>.<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
@ -66,31 +66,31 @@ Helper class for constructing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBl
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkGlyphID*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_glyphs'><code>glyphs</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>memory</a> <a href='SkPoint_Reference#Point'>for</a> <a href='SkPoint_Reference#Point'>one</a> <a href='SkPoint_Reference#Point'>or</a> <a href='SkPoint_Reference#Point'>more</a> <a href='undocumented#Glyph'>Glyphs</a>. <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>memory</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>must</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>be</a>
<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>written</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>to</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>by</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>the</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>caller</a>.
<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='SkPoint_Reference#Point'>points</a> to memory for one or more <a href='undocumented#Glyph'>Glyphs</a>. <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> memory must be
written to by the caller.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_pos'><code>pos</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>memory</a> <a href='SkPoint_Reference#Point'>for</a> <a href='undocumented#Glyph'>Glyph</a> <a href='undocumented#Glyph'>positions</a>. <a href='undocumented#Glyph'>Depending</a> <a href='undocumented#Glyph'>on</a> <a href='undocumented#Glyph'>how</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>
<a href='#SkTextBlobBuilder_RunBuffer'>is</a> <a href='#SkTextBlobBuilder_RunBuffer'>allocated</a>, <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> <a href='#SkTextBlobBuilder_RunBuffer_pos'>may</a> <a href='SkPoint_Reference#Point'>point</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>zero</a> <a href='SkPoint_Reference#Point'>bytes</a> <a href='SkPoint_Reference#Point'>per</a> <a href='undocumented#Glyph'>Glyph</a>, <a href='undocumented#Glyph'>one</a> <a href='undocumented#Scalar'>Scalar</a> <a href='undocumented#Scalar'>per</a> <a href='undocumented#Glyph'>Glyph</a>,
<a href='undocumented#Glyph'>or</a> <a href='undocumented#Glyph'>one</a> <a href='SkPoint_Reference#Point'>Point</a> <a href='SkPoint_Reference#Point'>per</a> <a href='undocumented#Glyph'>Glyph</a>.
<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> <a href='SkPoint_Reference#Point'>points</a> to memory for <a href='undocumented#Glyph'>Glyph</a> positions. Depending on how <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>
is allocated, <a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a> may <a href='SkPoint_Reference#Point'>point</a> to zero bytes per <a href='undocumented#Glyph'>Glyph</a>, one <a href='undocumented#Scalar'>Scalar</a> per <a href='undocumented#Glyph'>Glyph</a>,
or one <a href='SkPoint_Reference#Point'>Point</a> per <a href='undocumented#Glyph'>Glyph</a>.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>char*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_utf8text'><code>utf8text</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>should</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>not</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>be</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>read</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>or</a> <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>written</a>.
Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a> should not be read or written.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uint32_t*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextBlobBuilder_RunBuffer_clusters'><code>clusters</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>should</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>not</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>be</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>read</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>or</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>written</a>.
Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should not be read or written.
</td>
</tr>
</table>
@ -107,7 +107,7 @@ Reserved for future use. <a href='#SkTextBlobBuilder_RunBuffer_clusters'>cluster
<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
</pre>
Constructs empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>By</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>default</a>, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>has</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>no</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>runs</a>.
Constructs empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. By default, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> has no runs.
### Return Value
@ -137,7 +137,7 @@ blob equals nullptr
~<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
</pre>
Deletes <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>allocated</a> <a href='undocumented#Data'>internally</a> <a href='undocumented#Data'>by</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
Deletes <a href='undocumented#Data'>data</a> allocated internally by <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
### See Also
@ -148,19 +148,19 @@ Deletes <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>allocat
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&<a href='SkTextBlob_Reference#SkTextBlob'>gt</a>; <a href='#SkTextBlobBuilder_make'>make()</a>
<a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&gt; <a href='#SkTextBlobBuilder_make'>make()</a>
</pre>
Returns <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>built</a> <a href='SkTextBlob_Reference#SkTextBlob'>from</a> <a href='SkTextBlob_Reference#SkTextBlob'>runs</a> <a href='SkTextBlob_Reference#SkTextBlob'>of</a> <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>added</a> <a href='undocumented#Glyph'>by</a> <a href='undocumented#Glyph'>builder</a>. <a href='undocumented#Glyph'>Returned</a>
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>is</a> <a href='SkTextBlob_Reference#SkTextBlob'>immutable</a>; <a href='SkTextBlob_Reference#SkTextBlob'>it</a> <a href='SkTextBlob_Reference#SkTextBlob'>may</a> <a href='SkTextBlob_Reference#SkTextBlob'>be</a> <a href='SkTextBlob_Reference#SkTextBlob'>copied</a>, <a href='SkTextBlob_Reference#SkTextBlob'>but</a> <a href='SkTextBlob_Reference#SkTextBlob'>its</a> <a href='SkTextBlob_Reference#SkTextBlob'>contents</a> <a href='SkTextBlob_Reference#SkTextBlob'>may</a> <a href='SkTextBlob_Reference#SkTextBlob'>not</a> <a href='SkTextBlob_Reference#SkTextBlob'>be</a> <a href='SkTextBlob_Reference#SkTextBlob'>altered</a>.
Returns nullptr if no runs of <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>were</a> <a href='undocumented#Glyph'>added</a> <a href='undocumented#Glyph'>by</a> <a href='undocumented#Glyph'>builder</a>.
Returns <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> built from runs of <a href='undocumented#Glyph'>glyphs</a> added by builder. Returned
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> is immutable; it may be copied, but its contents may not be altered.
Returns nullptr if no runs of <a href='undocumented#Glyph'>glyphs</a> were added by builder.
Resets <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>to</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>its</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>initial</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>empty</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>state</a>, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>allowing</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>it</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>to</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>be</a>
Resets <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> to its initial empty state, allowing it to be
reused to build a new set of runs.
### Return Value
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>or</a> <a href='SkTextBlob_Reference#SkTextBlob'>nullptr</a>
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> or nullptr
### Example
@ -185,28 +185,28 @@ blob equals nullptr
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(<a href='#SkTextBlobBuilder_allocRun'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a>. <a href='undocumented#Glyph'>Caller</a> <a href='undocumented#Glyph'>must</a> <a href='undocumented#Glyph'>write</a> <a href='#SkTextBlobBuilder_allocRun_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>to</a>
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>before</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>next</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>call</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>to</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a>. Caller must write <a href='#SkTextBlobBuilder_allocRun_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>should</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>be</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>ignored</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>share</a> <a href='undocumented#Glyph'>metrics</a> <a href='undocumented#Glyph'>in</a> <a href='#SkTextBlobBuilder_allocRun_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRun_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>are</a> <a href='undocumented#Glyph'>positioned</a> <a href='undocumented#Glyph'>on</a> <a href='undocumented#Glyph'>a</a> <a href='undocumented#Glyph'>baseline</a> <a href='undocumented#Glyph'>at</a> (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>), <a href='#SkTextBlobBuilder_allocRun_y'>using</a> <a href='#SkTextBlobBuilder_allocRun_font'>font</a> <a href='#SkTextBlobBuilder_allocRun_font'>metrics</a> <a href='#SkTextBlobBuilder_allocRun_font'>to</a>
<a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>), using <a href='#SkTextBlobBuilder_allocRun_font'>font</a> metrics to
determine their relative placement.
<a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>defines</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>an</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>optional</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounding</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>box</a>, <a href='#SkTextBlobBuilder_allocRun_bounds'>used</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>to</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>suppress</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>drawing</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>when</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>does</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>not</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>intersect</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>. <a href='#SkTextBlobBuilder_allocRun_bounds'>If</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>is</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>nullptr</a>, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>
is computed from (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>) <a href='#SkTextBlobBuilder_allocRun_y'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>metrics</a>.
<a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRun_bounds'>bounds</a>
is computed from (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTextBlobBuilder_allocRun_y'>y</a>) and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
### Parameters
<table> <tr> <td><a name='SkTextBlobBuilder_allocRun_font'><code><strong>font</strong></code></a></td>
<td><a href='undocumented#SkFont'>SkFont</a> <a href='undocumented#SkFont'>used</a> <a href='undocumented#SkFont'>for</a> <a href='undocumented#SkFont'>this</a> <a href='undocumented#SkFont'>run</a></td>
<td><a href='undocumented#SkFont'>SkFont</a> used for this run</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRun_count'><code><strong>count</strong></code></a></td>
<td>number of <a href='undocumented#Glyph'>glyphs</a></td>
@ -224,7 +224,7 @@ is computed from (<a href='#SkTextBlobBuilder_allocRun_x'>x</a>, <a href='#SkTex
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buffer</a>
writable <a href='undocumented#Glyph'>glyph</a> buffer
### Example
@ -239,29 +239,29 @@ writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buf
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(<a href='#SkTextBlobBuilder_allocRunPosH'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>and</a> <a href='undocumented#Glyph'>positions</a> <a href='undocumented#Glyph'>along</a> <a href='undocumented#Glyph'>baseline</a>. <a href='undocumented#Glyph'>Caller</a> <a href='undocumented#Glyph'>must</a>
write <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>to</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>and</a> <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Scalar'>scalars</a> <a href='undocumented#Scalar'>to</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and positions along baseline. Caller must
write <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPosH_count'>count</a> <a href='undocumented#Scalar'>scalars</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>should</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>be</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>ignored</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>share</a> <a href='undocumented#Glyph'>metrics</a> <a href='undocumented#Glyph'>in</a> <a href='#SkTextBlobBuilder_allocRunPosH_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPosH_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>are</a> <a href='undocumented#Glyph'>positioned</a> <a href='undocumented#Glyph'>on</a> <a href='undocumented#Glyph'>a</a> <a href='undocumented#Glyph'>baseline</a> <a href='undocumented#Glyph'>at</a> <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#SkTextBlobBuilder_allocRunPosH_y'>using</a> <a href='#SkTextBlobBuilder_allocRunPosH_y'>x-axis</a> <a href='#SkTextBlobBuilder_allocRunPosH_y'>positions</a> <a href='#SkTextBlobBuilder_allocRunPosH_y'>written</a> <a href='#SkTextBlobBuilder_allocRunPosH_y'>by</a>
<a href='undocumented#Glyph'>Glyphs</a> are positioned on a baseline at <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, using x-axis positions written by
caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>.
<a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>defines</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>an</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>optional</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounding</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>box</a>, <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>used</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>to</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>suppress</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>drawing</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>when</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>does</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>not</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>intersect</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>. <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>If</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>is</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>nullptr</a>, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>
is computed from <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, <a href='#SkTextBlobBuilder_RunBuffer_pos'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>metrics</a>.
<a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPosH_bounds'>bounds</a>
is computed from <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
### Parameters
<table> <tr> <td><a name='SkTextBlobBuilder_allocRunPosH_font'><code><strong>font</strong></code></a></td>
<td><a href='undocumented#SkFont'>SkFont</a> <a href='undocumented#SkFont'>used</a> <a href='undocumented#SkFont'>for</a> <a href='undocumented#SkFont'>this</a> <a href='undocumented#SkFont'>run</a></td>
<td><a href='undocumented#SkFont'>SkFont</a> used for this run</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRunPosH_count'><code><strong>count</strong></code></a></td>
<td>number of <a href='undocumented#Glyph'>glyphs</a></td>
@ -276,7 +276,7 @@ is computed from <a href='#SkTextBlobBuilder_allocRunPosH_y'>y</a>, <a href='#Sk
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buffer</a> <a href='undocumented#Glyph'>and</a> <a href='undocumented#Glyph'>x-axis</a> <a href='undocumented#Glyph'>position</a> <a href='undocumented#Glyph'>buffer</a>
writable <a href='undocumented#Glyph'>glyph</a> buffer and x-axis position buffer
### Example
@ -291,28 +291,28 @@ writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buf
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(<a href='#SkTextBlobBuilder_allocRunPos'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#Font'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>, int count, const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>and</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>positions</a>. <a href='SkPoint_Reference#SkPoint'>Caller</a> <a href='SkPoint_Reference#SkPoint'>must</a>
write <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>to</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>and</a> <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
Returns run with storage for <a href='undocumented#Glyph'>glyphs</a> and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> positions. Caller must
write <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='undocumented#Glyph'>glyphs</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a>, and <a href='#SkTextBlobBuilder_allocRunPos_count'>count</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>;
before next call to <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>should</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>be</a> <a href='#SkTextBlobBuilder_RunBuffer_clusters'>ignored</a>.
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>share</a> <a href='undocumented#Glyph'>metrics</a> <a href='undocumented#Glyph'>in</a> <a href='#SkTextBlobBuilder_allocRunPos_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPos_font'>font</a>.
<a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>are</a> <a href='undocumented#Glyph'>positioned</a> <a href='undocumented#Glyph'>using</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>written</a> <a href='SkPoint_Reference#SkPoint'>by</a> <a href='SkPoint_Reference#SkPoint'>caller</a> <a href='SkPoint_Reference#SkPoint'>to</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, <a href='#SkTextBlobBuilder_RunBuffer_pos'>using</a>
two <a href='undocumented#Scalar'>scalar</a> <a href='undocumented#Scalar'>values</a> <a href='undocumented#Scalar'>for</a> <a href='undocumented#Scalar'>each</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
<a href='undocumented#Glyph'>Glyphs</a> are positioned using <a href='SkPoint_Reference#SkPoint'>SkPoint</a> written by caller to <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, using
two <a href='undocumented#Scalar'>scalar</a> values for each <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
<a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>defines</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>an</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>optional</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounding</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>box</a>, <a href='#SkTextBlobBuilder_allocRunPos_bounds'>used</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>to</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>suppress</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>drawing</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>when</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>does</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>not</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>intersect</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>. <a href='#SkTextBlobBuilder_allocRunPos_bounds'>If</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>is</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>nullptr</a>, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>
is computed from <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, <a href='#SkTextBlobBuilder_RunBuffer_pos'>and</a> <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> <a href='#SkTextBlobBuilder_RunBuffer_glyphs'>metrics</a>.
<a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> defines an optional bounding box, used to suppress drawing when <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
<a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> does not intersect <a href='SkSurface_Reference#SkSurface'>SkSurface</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>. If <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a> is nullptr, <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='#SkTextBlobBuilder_allocRunPos_bounds'>bounds</a>
is computed from <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_pos'>pos</a>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_glyphs'>glyphs</a> metrics.
### Parameters
<table> <tr> <td><a name='SkTextBlobBuilder_allocRunPos_font'><code><strong>font</strong></code></a></td>
<td><a href='undocumented#SkFont'>SkFont</a> <a href='undocumented#SkFont'>used</a> <a href='undocumented#SkFont'>for</a> <a href='undocumented#SkFont'>this</a> <a href='undocumented#SkFont'>run</a></td>
<td><a href='undocumented#SkFont'>SkFont</a> used for this run</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRunPos_count'><code><strong>count</strong></code></a></td>
<td>number of <a href='undocumented#Glyph'>glyphs</a></td>
@ -324,7 +324,7 @@ is computed from <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buffer</a> <a href='undocumented#Glyph'>and</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkPoint'>buffer</a>
writable <a href='undocumented#Glyph'>glyph</a> buffer and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> buffer
### Example
@ -339,8 +339,8 @@ writable <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>buf
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(<a href='#SkTextBlobBuilder_allocRun'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>x</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Deprecated.
@ -350,8 +350,8 @@ Deprecated.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(<a href='#SkTextBlobBuilder_allocRunPosH'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#SkScalar'>SkScalar</a> <a href='undocumented#SkScalar'>y</a>,
<a href='undocumented#SkScalar'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Deprecated.
@ -361,7 +361,7 @@ Deprecated.
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(<a href='#SkTextBlobBuilder_allocRunPos'>const</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, <a href='undocumented#Font'>int</a> <a href='undocumented#Font'>count</a>, <a href='undocumented#Font'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>* <a href='SkRect_Reference#SkRect'>bounds</a> = <a href='SkRect_Reference#SkRect'>nullptr</a>)
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
</pre>
Deprecated.

View File

@ -7,36 +7,36 @@ SkTextBlob Reference
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>final</a> : <a href='SkTextBlob_Reference#SkTextBlob'>public</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkNVRefCnt</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> {
<a href='SkTextBlob_Reference#SkTextBlob'>public</a>:
<a href='SkTextBlob_Reference#SkTextBlob'>const</a> <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> <a href='#SkTextBlob_bounds'>const</a>;
<a href='#SkTextBlob_bounds'>uint32_t</a> <a href='#SkTextBlob_uniqueID'>uniqueID</a>() <a href='#SkTextBlob_uniqueID'>const</a>;
<a href='#SkTextBlob_uniqueID'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(<a href='#SkTextBlob_MakeFromText'>const</a> <a href='#SkTextBlob_MakeFromText'>void</a>* <a href='undocumented#Text'>text</a>, <a href='undocumented#Text'>size_t</a> <a href='undocumented#Text'>byteLength</a>, <a href='undocumented#Text'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> <a href='#SkPaint_TextEncoding'>encoding</a> = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>);
<a href='#SkPaint_kUTF8_TextEncoding'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(<a href='#SkTextBlob_MakeFromString'>const</a> <a href='#SkTextBlob_MakeFromString'>char</a>* <a href='undocumented#String'>string</a>, <a href='undocumented#String'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> <a href='#SkPaint_TextEncoding'>encoding</a> = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>);
<a href='#SkPaint_kUTF8_TextEncoding'>size_t</a> <a href='#SkTextBlob_serialize'>serialize</a>(<a href='#SkTextBlob_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& <a href='undocumented#SkSerialProcs'>procs</a>, <a href='undocumented#SkSerialProcs'>void</a>* <a href='undocumented#SkSerialProcs'>memory</a>, <a href='undocumented#SkSerialProcs'>size_t</a> <a href='undocumented#SkSerialProcs'>memory_size</a>) <a href='undocumented#SkSerialProcs'>const</a>;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkTextBlob_serialize'>serialize</a>(<a href='#SkTextBlob_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& <a href='undocumented#SkSerialProcs'>procs</a>) <a href='undocumented#SkSerialProcs'>const</a>;
<a href='undocumented#SkSerialProcs'>static</a> <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_Deserialize'>Deserialize</a>(<a href='#SkTextBlob_Deserialize'>const</a> <a href='#SkTextBlob_Deserialize'>void</a>* <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>size_t</a> <a href='undocumented#Size'>size</a>,
<a href='undocumented#Size'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& <a href='undocumented#SkDeserialProcs'>procs</a>);
class <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> final : public SkNVRefCnt<<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> {
public:
const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> const;
uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>() const;
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(const void* <a href='undocumented#Text'>text</a>, size_t byteLength, const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> encoding = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>);
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(const char* <a href='undocumented#String'>string</a>, const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> encoding = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>);
size_t <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs, void* memory, size_t memory_size) const;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkData'>SkData</a>> <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs) const;
static <a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlob_Deserialize'>Deserialize</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>,
const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& procs);
};
</pre>
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>combines</a> <a href='SkTextBlob_Reference#SkTextBlob'>multiple</a> <a href='undocumented#Text'>text</a> <a href='undocumented#Text'>runs</a> <a href='undocumented#Text'>into</a> <a href='undocumented#Text'>an</a> <a href='undocumented#Text'>immutable</a> <a href='undocumented#Text'>container</a>. <a href='undocumented#Text'>Each</a> <a href='undocumented#Text'>text</a>
<a href='undocumented#Text'>run</a> <a href='undocumented#Text'>consists</a> <a href='undocumented#Text'>of</a> <a href='undocumented#Glyph'>Glyphs</a>, <a href='SkPaint_Reference#Paint'>Paint</a>, <a href='SkPaint_Reference#Paint'>and</a> <a href='SkPaint_Reference#Paint'>position</a>. <a href='SkPaint_Reference#Paint'>Only</a> <a href='SkPaint_Reference#Paint'>parts</a> <a href='SkPaint_Reference#Paint'>of</a> <a href='SkPaint_Reference#Paint'>Paint</a> <a href='SkPaint_Reference#Paint'>related</a> <a href='SkPaint_Reference#Paint'>to</a>
<a href='SkPaint_Reference#Paint'>fonts</a> <a href='SkPaint_Reference#Paint'>and</a> <a href='undocumented#Text'>text</a> <a href='undocumented#Text'>rendering</a> <a href='undocumented#Text'>are</a> <a href='undocumented#Text'>used</a> <a href='undocumented#Text'>by</a> <a href='undocumented#Text'>run</a>.
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> combines multiple <a href='undocumented#Text'>text</a> runs into an immutable container. Each <a href='undocumented#Text'>text</a>
run consists of <a href='undocumented#Glyph'>Glyphs</a>, <a href='SkPaint_Reference#Paint'>Paint</a>, and position. Only parts of <a href='SkPaint_Reference#Paint'>Paint</a> related to
fonts and <a href='undocumented#Text'>text</a> rendering are used by run.
<a name='SkTextBlob_bounds'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> <a href='#SkTextBlob_bounds'>const</a>
const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> const
</pre>
Returns conservative bounding box. Uses <a href='SkPaint_Reference#SkPaint'>SkPaint</a> <a href='SkPaint_Reference#SkPaint'>associated</a> <a href='SkPaint_Reference#SkPaint'>with</a> <a href='SkPaint_Reference#SkPaint'>each</a> <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>to</a>
determine <a href='undocumented#Glyph'>glyph</a> <a href='undocumented#Glyph'>bounds</a>, <a href='undocumented#Glyph'>and</a> <a href='undocumented#Glyph'>unions</a> <a href='undocumented#Glyph'>all</a> <a href='undocumented#Glyph'>bounds</a>. <a href='undocumented#Glyph'>Returned</a> <a href='undocumented#Glyph'>bounds</a> <a href='undocumented#Glyph'>may</a> <a href='undocumented#Glyph'>be</a>
larger than the bounds of all <a href='undocumented#Glyph'>glyphs</a> <a href='undocumented#Glyph'>in</a> <a href='undocumented#Glyph'>runs</a>.
Returns conservative bounding box. Uses <a href='SkPaint_Reference#SkPaint'>SkPaint</a> associated with each <a href='undocumented#Glyph'>glyph</a> to
determine <a href='undocumented#Glyph'>glyph</a> bounds, and unions all bounds. Returned bounds may be
larger than the bounds of all <a href='undocumented#Glyph'>glyphs</a> in runs.
### Return Value
@ -55,10 +55,10 @@ conservative bounding box
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>() <a href='#SkTextBlob_uniqueID'>const</a>
uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>() const
</pre>
Returns a non-zero value unique among all <a href='undocumented#Text'>text</a> <a href='undocumented#Text'>blobs</a>.
Returns a non-zero value unique among all <a href='undocumented#Text'>text</a> blobs.
### Return Value
@ -77,29 +77,29 @@ identifier for <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</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='undocumented#sk_sp'>lt</a>;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&<a href='SkTextBlob_Reference#SkTextBlob'>gt</a>; <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(<a href='#SkTextBlob_MakeFromText'>const</a> <a href='#SkTextBlob_MakeFromText'>void</a>* <a href='undocumented#Text'>text</a>, <a href='undocumented#Text'>size_t</a> <a href='undocumented#Text'>byteLength</a>, <a href='undocumented#Text'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> <a href='#SkPaint_TextEncoding'>encoding</a> = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&gt; <a href='#SkTextBlob_MakeFromText'>MakeFromText</a>(const void* <a href='undocumented#Text'>text</a>, size_t byteLength, const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> encoding = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>)
</pre>
Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href='#Text_Blob'>a</a> <a href='#Text_Blob'>single</a> <a href='#Text_Blob'>run</a>. <a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='#SkTextBlob_MakeFromText_text'>meaning</a> <a href='#SkTextBlob_MakeFromText_text'>depends</a> <a href='#SkTextBlob_MakeFromText_text'>on</a> <a href='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
<a href='#Paint_Text_Encoding'>by</a> <a href='#Paint_Text_Encoding'>default</a>, <a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='#SkTextBlob_MakeFromText_text'>is</a> <a href='#SkTextBlob_MakeFromText_text'>encoded</a> <a href='#SkTextBlob_MakeFromText_text'>as</a> <a href='#SkTextBlob_MakeFromText_text'>UTF-8</a>.
Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromText_text'>text</a> meaning depends on <a href='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
by default, <a href='#SkTextBlob_MakeFromText_text'>text</a> is encoded as UTF-8.
<a href='#SkTextBlob_MakeFromText_font'>font</a> <a href='#SkTextBlob_MakeFromText_font'>contains</a> <a href='#SkTextBlob_MakeFromText_font'>attributes</a> <a href='#SkTextBlob_MakeFromText_font'>used</a> <a href='#SkTextBlob_MakeFromText_font'>to</a> <a href='#SkTextBlob_MakeFromText_font'>define</a> <a href='#SkTextBlob_MakeFromText_font'>the</a> <a href='#SkTextBlob_MakeFromText_font'>run</a> <a href='#SkTextBlob_MakeFromText_text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Paint_Text_Size'>Paint_Text_Size</a>, <a href='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<a href='#SkTextBlob_MakeFromText_font'>font</a> contains attributes used to define the run <a href='#SkTextBlob_MakeFromText_text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Paint_Text_Size'>Paint_Text_Size</a>, <a href='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<a href='#Paint_Text_Skew_X'>Paint_Text_Skew_X</a>, <a href='#Paint_Hinting'>Paint_Hinting</a>, <a href='#Paint_Anti_Alias'>Anti_Alias</a>, <a href='#Paint_Fake_Bold'>Paint_Fake_Bold</a>,
<a href='#Paint_Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a>, <a href='#Paint_LCD_Text'>LCD_Text</a>, <a href='#Paint_Linear_Text'>Linear_Text</a>,
<a href='#Paint_Linear_Text'>and</a> <a href='#Paint_Subpixel_Text'>Subpixel_Text</a>
and <a href='#Paint_Subpixel_Text'>Subpixel_Text</a>
.
### Parameters
<table> <tr> <td><a name='SkTextBlob_MakeFromText_text'><code><strong>text</strong></code></a></td>
<td>character code <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>or</a> <a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>drawn</a></td>
<td>character code <a href='SkPoint_Reference#Point'>points</a> or <a href='undocumented#Glyph'>Glyphs</a> drawn</td>
</tr>
<tr> <td><a name='SkTextBlob_MakeFromText_byteLength'><code><strong>byteLength</strong></code></a></td>
<td>byte length of <a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='#SkTextBlob_MakeFromText_text'>array</a></td>
<td>byte length of <a href='#SkTextBlob_MakeFromText_text'>text</a> array</td>
</tr>
<tr> <td><a name='SkTextBlob_MakeFromText_font'><code><strong>font</strong></code></a></td>
<td><a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='#SkTextBlob_MakeFromText_text'>text scale</a>, <a href='#SkTextBlob_MakeFromText_text'>and</a> <a href='#SkTextBlob_MakeFromText_text'>so</a> <a href='#SkTextBlob_MakeFromText_text'>on</a>, <a href='#SkTextBlob_MakeFromText_text'>used</a> <a href='#SkTextBlob_MakeFromText_text'>to</a> <a href='#SkTextBlob_MakeFromText_text'>draw</a></td>
<td><a href='#SkTextBlob_MakeFromText_text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='#SkTextBlob_MakeFromText_text'>text scale</a>, and so on, used to draw</td>
</tr>
<tr> <td><a name='SkTextBlob_MakeFromText_encoding'><code><strong>encoding</strong></code></a></td>
<td>one of: <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>, <a href='undocumented#kUTF16_SkTextEncoding'>kUTF16_SkTextEncoding</a>,
@ -110,7 +110,7 @@ Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href
### Return Value
<a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>constructed</a> <a href='#Text_Blob'>from</a> <a href='#Text_Blob'>one</a> <a href='#Text_Blob'>run</a>
<a href='#Text_Blob'>Text_Blob</a> constructed from one run
### Example
@ -125,26 +125,26 @@ Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&<a href='SkTextBlob_Reference#SkTextBlob'>gt</a>; <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(<a href='#SkTextBlob_MakeFromString'>const</a> <a href='#SkTextBlob_MakeFromString'>char</a>* <a href='undocumented#String'>string</a>, <a href='undocumented#String'>const</a> <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> <a href='#SkPaint_TextEncoding'>encoding</a> = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&gt; <a href='#SkTextBlob_MakeFromString'>MakeFromString</a>(const char* <a href='undocumented#String'>string</a>, const <a href='undocumented#SkFont'>SkFont</a>& <a href='undocumented#Font'>font</a>,
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_TextEncoding'>TextEncoding</a> encoding = <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_kUTF8_TextEncoding'>kUTF8_TextEncoding</a>)
</pre>
Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href='#Text_Blob'>a</a> <a href='#Text_Blob'>single</a> <a href='#Text_Blob'>run</a>. <a href='#SkTextBlob_MakeFromString_string'>string</a> <a href='#SkTextBlob_MakeFromString_string'>meaning</a> <a href='#SkTextBlob_MakeFromString_string'>depends</a> <a href='#SkTextBlob_MakeFromString_string'>on</a> <a href='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
<a href='#Paint_Text_Encoding'>by</a> <a href='#Paint_Text_Encoding'>default</a>, <a href='#SkTextBlob_MakeFromString_string'>string</a> <a href='#SkTextBlob_MakeFromString_string'>is</a> <a href='#SkTextBlob_MakeFromString_string'>encoded</a> <a href='#SkTextBlob_MakeFromString_string'>as</a> <a href='#SkTextBlob_MakeFromString_string'>UTF-8</a>.
Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromString_string'>string</a> meaning depends on <a href='#Paint_Text_Encoding'>Paint_Text_Encoding</a>;
by default, <a href='#SkTextBlob_MakeFromString_string'>string</a> is encoded as UTF-8.
<a href='#SkTextBlob_MakeFromString_font'>font</a> <a href='#SkTextBlob_MakeFromString_font'>contains</a> <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> <a href='#Paint_Font_Metrics'>used</a> <a href='#Paint_Font_Metrics'>to</a> <a href='#Paint_Font_Metrics'>define</a> <a href='#Paint_Font_Metrics'>the</a> <a href='#Paint_Font_Metrics'>run</a> <a href='undocumented#Text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Paint_Text_Size'>Paint_Text_Size</a>, <a href='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<a href='#SkTextBlob_MakeFromString_font'>font</a> contains <a href='#Paint_Font_Metrics'>Paint_Font_Metrics</a> used to define the run <a href='undocumented#Text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Paint_Text_Size'>Paint_Text_Size</a>, <a href='#Paint_Text_Scale_X'>Paint_Text_Scale_X</a>,
<a href='#Paint_Text_Skew_X'>Paint_Text_Skew_X</a>, <a href='#Paint_Hinting'>Paint_Hinting</a>, <a href='#Paint_Anti_Alias'>Anti_Alias</a>, <a href='#Paint_Fake_Bold'>Paint_Fake_Bold</a>,
<a href='#Paint_Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a>, <a href='#Paint_LCD_Text'>LCD_Text</a>, <a href='#Paint_Linear_Text'>Linear_Text</a>,
<a href='#Paint_Linear_Text'>and</a> <a href='#Paint_Subpixel_Text'>Subpixel_Text</a>
and <a href='#Paint_Subpixel_Text'>Subpixel_Text</a>
.
### Parameters
<table> <tr> <td><a name='SkTextBlob_MakeFromString_string'><code><strong>string</strong></code></a></td>
<td>character code <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>or</a> <a href='undocumented#Glyph'>Glyphs</a> <a href='undocumented#Glyph'>drawn</a></td>
<td>character code <a href='SkPoint_Reference#Point'>points</a> or <a href='undocumented#Glyph'>Glyphs</a> drawn</td>
</tr>
<tr> <td><a name='SkTextBlob_MakeFromString_font'><code><strong>font</strong></code></a></td>
<td><a href='undocumented#Text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='undocumented#Text'>text scale</a>, <a href='undocumented#Text'>and</a> <a href='undocumented#Text'>so</a> <a href='undocumented#Text'>on</a>, <a href='undocumented#Text'>used</a> <a href='undocumented#Text'>to</a> <a href='undocumented#Text'>draw</a></td>
<td><a href='undocumented#Text'>text</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Typeface'>typeface</a>, <a href='undocumented#Text'>text scale</a>, and so on, used to draw</td>
</tr>
<tr> <td><a name='SkTextBlob_MakeFromString_encoding'><code><strong>encoding</strong></code></a></td>
<td>one of: <a href='undocumented#kUTF8_SkTextEncoding'>kUTF8_SkTextEncoding</a>, <a href='undocumented#kUTF16_SkTextEncoding'>kUTF16_SkTextEncoding</a>,
@ -155,7 +155,7 @@ Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href
### Return Value
<a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>constructed</a> <a href='#Text_Blob'>from</a> <a href='#Text_Blob'>one</a> <a href='#Text_Blob'>run</a>
<a href='#Text_Blob'>Text_Blob</a> constructed from one run
### Example
@ -170,29 +170,29 @@ Creates <a href='#Text_Blob'>Text_Blob</a> <a href='#Text_Blob'>with</a> <a href
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
size_t <a href='#SkTextBlob_serialize'>serialize</a>(<a href='#SkTextBlob_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& <a href='undocumented#SkSerialProcs'>procs</a>, <a href='undocumented#SkSerialProcs'>void</a>* <a href='undocumented#SkSerialProcs'>memory</a>, <a href='undocumented#SkSerialProcs'>size_t</a> <a href='undocumented#SkSerialProcs'>memory_size</a>) <a href='undocumented#SkSerialProcs'>const</a>
size_t <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs, void* memory, size_t memory_size) const
</pre>
Writes <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>to</a> <a href='undocumented#Data'>allow</a> <a href='undocumented#Data'>later</a> <a href='undocumented#Data'>reconstruction</a> <a href='undocumented#Data'>of</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. <a href='#SkTextBlob_serialize_memory'>memory</a> <a href='SkPoint_Reference#Point'>points</a> <a href='SkPoint_Reference#Point'>to</a> <a href='SkPoint_Reference#Point'>storage</a>
to receive the encoded <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>and</a> <a href='#SkTextBlob_serialize_memory_size'>memory_size</a> <a href='#SkTextBlob_serialize_memory_size'>describes</a> <a href='#SkTextBlob_serialize_memory_size'>the</a> <a href='undocumented#Size'>size</a> <a href='undocumented#Size'>of</a> <a href='undocumented#Size'>storage</a>.
Writes <a href='undocumented#Data'>data</a> to allow later reconstruction of <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>. <a href='#SkTextBlob_serialize_memory'>memory</a> <a href='SkPoint_Reference#Point'>points</a> to storage
to receive the encoded <a href='undocumented#Data'>data</a>, and <a href='#SkTextBlob_serialize_memory_size'>memory_size</a> describes the <a href='undocumented#Size'>size</a> of storage.
Returns bytes used if provided storage is large enough to hold all <a href='undocumented#Data'>data</a>;
otherwise, returns zero.
<a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkSerialProcs_fTypefaceProc'>permits</a> <a href='#SkSerialProcs_fTypefaceProc'>supplying</a> <a href='#SkSerialProcs_fTypefaceProc'>a</a> <a href='#SkSerialProcs_fTypefaceProc'>custom</a> <a href='#SkSerialProcs_fTypefaceProc'>function</a> <a href='#SkSerialProcs_fTypefaceProc'>to</a> <a href='#SkSerialProcs_fTypefaceProc'>encode</a> <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkSerialProcs_fTypefaceProc'>is</a> <a href='#SkSerialProcs_fTypefaceProc'>nullptr</a>, <a href='#SkSerialProcs_fTypefaceProc'>default</a> <a href='#SkSerialProcs_fTypefaceProc'>encoding</a> <a href='#SkSerialProcs_fTypefaceProc'>is</a> <a href='#SkSerialProcs_fTypefaceProc'>used</a>. <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
<a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_serialize_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a href='undocumented#SkTypeface'>and</a> <a href='undocumented#SkTypeface'>user</a> <a href='undocumented#SkTypeface'>context</a>.
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> and user context.
### Parameters
<table> <tr> <td><a name='SkTextBlob_serialize_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>encoders</a>; <a href='undocumented#Data'>may</a> <a href='undocumented#Data'>be</a> <a href='undocumented#Data'>nullptr</a></td>
<td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td>
</tr>
<tr> <td><a name='SkTextBlob_serialize_memory'><code><strong>memory</strong></code></a></td>
<td>storage for <a href='undocumented#Data'>data</a></td>
</tr>
<tr> <td><a name='SkTextBlob_serialize_memory_size'><code><strong>memory_size</strong></code></a></td>
<td><a href='undocumented#Size'>size</a> <a href='undocumented#Size'>of</a> <a href='undocumented#Size'>storage</a></td>
<td><a href='undocumented#Size'>size</a> of storage</td>
</tr>
</table>
@ -213,21 +213,21 @@ bytes written, or zero if required storage is larger than <a href='#SkTextBlob_s
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='undocumented#SkData'>SkData</a>&<a href='undocumented#SkData'>gt</a>; <a href='#SkTextBlob_serialize'>serialize</a>(<a href='#SkTextBlob_serialize'>const</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& <a href='undocumented#SkSerialProcs'>procs</a>) <a href='undocumented#SkSerialProcs'>const</a>
<a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='undocumented#SkData'>SkData</a>&gt; <a href='#SkTextBlob_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>& procs) const
</pre>
Returns storage containing <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkData'>describing</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>, <a href='SkTextBlob_Reference#SkTextBlob'>using</a> <a href='SkTextBlob_Reference#SkTextBlob'>optional</a> <a href='SkTextBlob_Reference#SkTextBlob'>custom</a>
Returns storage containing <a href='undocumented#SkData'>SkData</a> describing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>, using optional custom
encoders.
<a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkSerialProcs_fTypefaceProc'>permits</a> <a href='#SkSerialProcs_fTypefaceProc'>supplying</a> <a href='#SkSerialProcs_fTypefaceProc'>a</a> <a href='#SkSerialProcs_fTypefaceProc'>custom</a> <a href='#SkSerialProcs_fTypefaceProc'>function</a> <a href='#SkSerialProcs_fTypefaceProc'>to</a> <a href='#SkSerialProcs_fTypefaceProc'>encode</a> <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkSerialProcs_fTypefaceProc'>is</a> <a href='#SkSerialProcs_fTypefaceProc'>nullptr</a>, <a href='#SkSerialProcs_fTypefaceProc'>default</a> <a href='#SkSerialProcs_fTypefaceProc'>encoding</a> <a href='#SkSerialProcs_fTypefaceProc'>is</a> <a href='#SkSerialProcs_fTypefaceProc'>used</a>. <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
<a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to encode <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default encoding is used. <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_serialize_2_procs'>procs</a>.<a href='#SkSerialProcs_fTypefaceProc'>fTypefaceProc</a>
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a href='undocumented#SkTypeface'>and</a> <a href='undocumented#SkTypeface'>user</a> <a href='undocumented#SkTypeface'>context</a>.
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> and user context.
### Parameters
<table> <tr> <td><a name='SkTextBlob_serialize_2_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>encoders</a>; <a href='undocumented#Data'>may</a> <a href='undocumented#Data'>be</a> <a href='undocumented#Data'>nullptr</a></td>
<td>custom serial <a href='undocumented#Data'>data</a> encoders; may be nullptr</td>
</tr>
</table>
@ -248,17 +248,17 @@ storage containing serialized <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBl
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#sk_sp'>sk_sp</a>&<a href='undocumented#sk_sp'>lt</a>;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&<a href='SkTextBlob_Reference#SkTextBlob'>gt</a>; <a href='#SkTextBlob_Deserialize'>Deserialize</a>(<a href='#SkTextBlob_Deserialize'>const</a> <a href='#SkTextBlob_Deserialize'>void</a>* <a href='undocumented#Data'>data</a>, <a href='undocumented#Data'>size_t</a> <a href='undocumented#Size'>size</a>, <a href='undocumented#Size'>const</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& <a href='undocumented#SkDeserialProcs'>procs</a>)
static <a href='undocumented#sk_sp'>sk_sp</a>&lt;<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>&gt; <a href='#SkTextBlob_Deserialize'>Deserialize</a>(const void* <a href='undocumented#Data'>data</a>, size_t <a href='undocumented#Size'>size</a>, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>& procs)
</pre>
Recreates <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>that</a> <a href='SkTextBlob_Reference#SkTextBlob'>was</a> <a href='SkTextBlob_Reference#SkTextBlob'>serialized</a> <a href='SkTextBlob_Reference#SkTextBlob'>into</a> <a href='#SkTextBlob_Deserialize_data'>data</a>. <a href='#SkTextBlob_Deserialize_data'>Returns</a> <a href='#SkTextBlob_Deserialize_data'>constructed</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
if successful; otherwise, returns nullptr. Fails if <a href='#SkTextBlob_Deserialize_size'>size</a> <a href='#SkTextBlob_Deserialize_size'>is</a> <a href='#SkTextBlob_Deserialize_size'>smaller</a> <a href='#SkTextBlob_Deserialize_size'>than</a>
required <a href='#SkTextBlob_Deserialize_data'>data</a> <a href='#SkTextBlob_Deserialize_data'>length</a>, <a href='#SkTextBlob_Deserialize_data'>or</a> <a href='#SkTextBlob_Deserialize_data'>if</a> <a href='#SkTextBlob_Deserialize_data'>data</a> <a href='#SkTextBlob_Deserialize_data'>does</a> <a href='#SkTextBlob_Deserialize_data'>not</a> <a href='#SkTextBlob_Deserialize_data'>permit</a> <a href='#SkTextBlob_Deserialize_data'>constructing</a> <a href='#SkTextBlob_Deserialize_data'>valid</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>.
Recreates <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> that was serialized into <a href='#SkTextBlob_Deserialize_data'>data</a>. Returns constructed <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
if successful; otherwise, returns nullptr. Fails if <a href='#SkTextBlob_Deserialize_size'>size</a> is smaller than
required <a href='#SkTextBlob_Deserialize_data'>data</a> length, or if <a href='#SkTextBlob_Deserialize_data'>data</a> does not permit constructing valid <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>.
<a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkDeserialProcs_fTypefaceProc'>permits</a> <a href='#SkDeserialProcs_fTypefaceProc'>supplying</a> <a href='#SkDeserialProcs_fTypefaceProc'>a</a> <a href='#SkDeserialProcs_fTypefaceProc'>custom</a> <a href='#SkDeserialProcs_fTypefaceProc'>function</a> <a href='#SkDeserialProcs_fTypefaceProc'>to</a> <a href='#SkDeserialProcs_fTypefaceProc'>decode</a> <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> <a href='#SkDeserialProcs_fTypefaceProc'>is</a> <a href='#SkDeserialProcs_fTypefaceProc'>nullptr</a>, <a href='#SkDeserialProcs_fTypefaceProc'>default</a> <a href='#SkDeserialProcs_fTypefaceProc'>decoding</a> <a href='#SkDeserialProcs_fTypefaceProc'>is</a> <a href='#SkDeserialProcs_fTypefaceProc'>used</a>. <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceCtx'>fTypefaceCtx</a>
<a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> permits supplying a custom function to decode <a href='undocumented#SkTypeface'>SkTypeface</a>.
If <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a> is nullptr, default decoding is used. <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceCtx'>fTypefaceCtx</a>
may be used to provide user context to <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a>; <a href='#SkTextBlob_Deserialize_procs'>procs</a>.<a href='#SkDeserialProcs_fTypefaceProc'>fTypefaceProc</a>
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a href='#SkTextBlob_Deserialize_data'>data</a>, <a href='#SkTextBlob_Deserialize_data'>data</a> <a href='#SkTextBlob_Deserialize_data'>byte</a> <a href='#SkTextBlob_Deserialize_data'>length</a>, <a href='#SkTextBlob_Deserialize_data'>and</a> <a href='#SkTextBlob_Deserialize_data'>user</a> <a href='#SkTextBlob_Deserialize_data'>context</a>.
is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a href='#SkTextBlob_Deserialize_data'>data</a>, <a href='#SkTextBlob_Deserialize_data'>data</a> byte length, and user context.
### Parameters
@ -266,21 +266,21 @@ is called with a pointer to <a href='undocumented#SkTypeface'>SkTypeface</a> <a
<td>pointer for serial <a href='#SkTextBlob_Deserialize_data'>data</a></td>
</tr>
<tr> <td><a name='SkTextBlob_Deserialize_size'><code><strong>size</strong></code></a></td>
<td><a href='#SkTextBlob_Deserialize_size'>size</a> <a href='#SkTextBlob_Deserialize_size'>of</a> <a href='#SkTextBlob_Deserialize_data'>data</a></td>
<td><a href='#SkTextBlob_Deserialize_size'>size</a> of <a href='#SkTextBlob_Deserialize_data'>data</a></td>
</tr>
<tr> <td><a name='SkTextBlob_Deserialize_procs'><code><strong>procs</strong></code></a></td>
<td>custom serial <a href='#SkTextBlob_Deserialize_data'>data</a> <a href='#SkTextBlob_Deserialize_data'>decoders</a>; <a href='#SkTextBlob_Deserialize_data'>may</a> <a href='#SkTextBlob_Deserialize_data'>be</a> <a href='#SkTextBlob_Deserialize_data'>nullptr</a></td>
<td>custom serial <a href='#SkTextBlob_Deserialize_data'>data</a> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> <a href='SkTextBlob_Reference#SkTextBlob'>constructed</a> <a href='SkTextBlob_Reference#SkTextBlob'>from</a> <a href='#SkTextBlob_Deserialize_data'>data</a> <a href='#SkTextBlob_Deserialize_data'>in</a> <a href='#SkTextBlob_Deserialize_data'>memory</a>
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> constructed from <a href='#SkTextBlob_Deserialize_data'>data</a> in memory
### Example
<div><fiddle-embed name="68b6d0208eb0b4de67fc152381af7a58"><div><a href='undocumented#Text'>Text</a> "<a href='undocumented#Text'>Hacker</a>" <a href='undocumented#Text'>replaces</a> "<a href='undocumented#Text'>World</a>!", <a href='undocumented#Text'>but</a> <a href='undocumented#Text'>does</a> <a href='undocumented#Text'>not</a> <a href='undocumented#Text'>update</a> <a href='undocumented#Text'>its</a> <a href='undocumented#Text'>metrics</a>.
<a href='undocumented#Text'>When</a> <a href='undocumented#Text'>drawn</a>, "<a href='undocumented#Text'>Hacker</a>" <a href='undocumented#Text'>uses</a> <a href='undocumented#Text'>the</a> <a href='undocumented#Text'>spacing</a> <a href='undocumented#Text'>computed</a> <a href='undocumented#Text'>for</a> "<a href='undocumented#Text'>World</a>!".
<div><fiddle-embed name="68b6d0208eb0b4de67fc152381af7a58"><div><a href='undocumented#Text'>Text</a> "Hacker" replaces "World!", but does not update its metrics.
When drawn, "Hacker" uses the spacing computed for "World!".
</div></fiddle-embed></div>
### See Also

View File

@ -1847,13 +1847,6 @@
"file": "SkPaint_Reference",
"name": "SkPaint::setHinting",
"stdout": "paint1 == paint2\\n"
},
"SkPaint_setHinting_2": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint2.setHinting(SkFontHinting::kNormal);\n SkDebugf(\"paint1 %c= paint2\\n\", paint1 == paint2 ? '=' : ':');\n}",
"hash": "bb179ec5698ec1398ff18f3657ab73f7",
"file": "SkPaint_Reference",
"name": "SkPaint::setHinting_2",
"stdout": "paint1 == paint2\\n"
},
"SkPaint_setLCDRenderText": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint1, paint2;\n paint1.setLCDRenderText(true);\n paint2.setFlags(paint2.getFlags() | SkPaint::kLCDRenderText_Flag);\n SkDebugf(\"paint1 %c= paint2\\n\", paint1 == paint2 ? '=' : '!');\n}",

View File

@ -1,10 +1,10 @@
usingBookmaker
===
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>generates</a> <a href='usingBookmaker#Bookmaker'>markdown</a> <a href='usingBookmaker#Bookmaker'>files</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>view</a> <a href='usingBookmaker#Bookmaker'>documentation</a> <a href='usingBookmaker#Bookmaker'>on</a> <a href='usingBookmaker#Bookmaker'>skia</a>.<a href='usingBookmaker#Bookmaker'>org</a>, <a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>generates</a> <a href='usingBookmaker#Bookmaker'>includes</a> <a href='usingBookmaker#Bookmaker'>for</a> <a href='usingBookmaker#Bookmaker'>use</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>C</a>++.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>reads</a> <a href='usingBookmaker#Bookmaker'>canonical</a> <a href='usingBookmaker#Bookmaker'>documentation</a> <a href='usingBookmaker#Bookmaker'>from</a> <a href='usingBookmaker#Bookmaker'>files</a> <a href='usingBookmaker#Bookmaker'>suffixed</a> <a href='usingBookmaker#Bookmaker'>with</a> <a href='usingBookmaker#Bookmaker'>bmh</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>the</a> <a href='usingBookmaker#Bookmaker'>docs</a> <a href='usingBookmaker#Bookmaker'>directory</a>. <a href='usingBookmaker#Bookmaker'>These</a> <a href='usingBookmaker#Bookmaker'>bmh</a>
<a href='usingBookmaker#Bookmaker'>files</a> <a href='usingBookmaker#Bookmaker'>describe</a> <a href='usingBookmaker#Bookmaker'>how</a> <a href='usingBookmaker#Bookmaker'>public</a> <a href='usingBookmaker#Bookmaker'>interfaces</a> <a href='usingBookmaker#Bookmaker'>work</a>, <a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>generate</a> <a href='usingBookmaker#Bookmaker'>Skia</a> <a href='usingBookmaker#Bookmaker'>fiddle</a> <a href='usingBookmaker#Bookmaker'>examples</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>illustrate</a> <a href='usingBookmaker#Bookmaker'>them</a>.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> generates markdown files to view documentation on skia.org, and generates includes for use in C++.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> reads canonical documentation from files suffixed with bmh in the docs directory. These bmh
files describe how public interfaces work, and generate Skia fiddle examples to illustrate them.
<a href='usingBookmaker#Bookmaker'>The</a> <a href='usingBookmaker#Bookmaker'>docs</a> <a href='usingBookmaker#Bookmaker'>files</a> <a href='usingBookmaker#Bookmaker'>must</a> <a href='usingBookmaker#Bookmaker'>be</a> <a href='usingBookmaker#Bookmaker'>manually</a> <a href='usingBookmaker#Bookmaker'>edited</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>stay</a> <a href='usingBookmaker#Bookmaker'>current</a> <a href='usingBookmaker#Bookmaker'>with</a> <a href='usingBookmaker#Bookmaker'>Skia</a> <a href='usingBookmaker#Bookmaker'>as</a> <a href='usingBookmaker#Bookmaker'>it</a> <a href='usingBookmaker#Bookmaker'>evolves</a>.
The docs files must be manually edited to stay current with Skia as it evolves.
<a name='Installing'></a>
@ -16,8 +16,8 @@ Check the version. The results should be 1.10 or greater.
$ go version
</pre>
Get the fiddle command <a href='undocumented#Line'>line</a> <a href='undocumented#Line'>interface</a> <a href='undocumented#Line'>tool</a>.
<a href='undocumented#Line'>By</a> <a href='undocumented#Line'>default</a> <a href='undocumented#Line'>this</a> <a href='undocumented#Line'>will</a> <a href='undocumented#Line'>appear</a> <a href='undocumented#Line'>in</a> <a href='undocumented#Line'>your</a> <a href='undocumented#Line'>home</a> <a href='undocumented#Line'>directory</a>.
Get the fiddle command <a href='undocumented#Line'>line</a> interface tool.
By default this will appear in your home directory.
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ go get go.skia.org/infra/fiddlek/go/fiddlecli
@ -43,8 +43,8 @@ $ ninja -C out/skia <a href='usingBookmaker#Bookmaker'>bookmaker </a>
<a name='Running'></a>
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>extracts</a> <a href='usingBookmaker#Bookmaker'>examples</a>, <a href='usingBookmaker#Bookmaker'>generates</a> <a href='usingBookmaker#Bookmaker'>example</a> <a href='usingBookmaker#Bookmaker'>hashes</a> <a href='usingBookmaker#Bookmaker'>with</a> <a href='usingBookmaker#Bookmaker'>fiddle</a>, <a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>generates</a> <a href='usingBookmaker#Bookmaker'>web</a> <a href='usingBookmaker#Bookmaker'>markdown</a>
<a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>c</a>++ <a href='usingBookmaker#Bookmaker'>includes</a>.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> extracts examples, generates example hashes with fiddle, and generates web markdown
and c++ includes.
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ ./out/skia/bookmaker -E && ~/go/bin/fiddlecli --quiet && ./out/skia/bookmaker
@ -60,33 +60,33 @@ cross-check...................
The bots
<a href='https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-PerCommit-Bookmaker'>Housekeeper-PerCommit-Bookmaker</a></a> and
<a href='https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker'>Housekeeper-Nightly-Bookmaker</a></a> verify that <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='undocumented#Data'>data</a> <a href='undocumented#Data'>in</a> <a href='undocumented#Data'>docs</a> <a href='undocumented#Data'>builds</a> <a href='undocumented#Data'>without</a> <a href='undocumented#Data'>error</a> <a href='undocumented#Data'>and</a> <a href='undocumented#Data'>is</a> <a href='undocumented#Data'>consistent</a> <a href='undocumented#Data'>with</a> <a href='undocumented#Data'>include</a> <a href='undocumented#Data'>files</a> <a href='undocumented#Data'>it</a> <a href='undocumented#Data'>documents</a>.
<a href='https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker'>Housekeeper-Nightly-Bookmaker</a></a> verify that <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='undocumented#Data'>data</a> in docs builds without error and is consistent with include files it documents.
<a href='undocumented#Data'>Possible</a> <a href='undocumented#Data'>failures</a> <a href='undocumented#Data'>include</a>:
Possible failures include:
<table> <tr>
<td>Public interface in include directory does not match documented interface in docs directory.</td>
</tr> <tr>
<td>Example in <a href='usingBookmaker#Bookmaker'>bookmaker</a> <a href='usingBookmaker#Bookmaker'>bmh</a> <a href='usingBookmaker#Bookmaker'>file</a> <a href='usingBookmaker#Bookmaker'>does</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>compile</a>, <a href='usingBookmaker#Bookmaker'>or</a> <a href='usingBookmaker#Bookmaker'>does</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>produce</a> <a href='usingBookmaker#Bookmaker'>expected</a> <a href='usingBookmaker#Bookmaker'>output</a>.</td>
<td>Example in <a href='usingBookmaker#Bookmaker'>bookmaker</a> bmh file does not compile, or does not produce expected output.</td>
</tr> <tr>
<td>Undocumented but referenced interface is missing from undocumented <a href='usingBookmaker#Bookmaker'>bookmaker</a> <a href='usingBookmaker#Bookmaker'>file</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>docs</a> <a href='usingBookmaker#Bookmaker'>directory</a>.</td>
<td>Undocumented but referenced interface is missing from undocumented <a href='usingBookmaker#Bookmaker'>bookmaker</a> file in docs directory.</td>
</tr>
</table>
Editing comments in includes or editing private interfaces will not break the bots.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>detects</a> <a href='usingBookmaker#Bookmaker'>that</a> <a href='usingBookmaker#Bookmaker'>comments</a> <a href='usingBookmaker#Bookmaker'>edited</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>includes</a> <a href='usingBookmaker#Bookmaker'>do</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>match</a> <a href='usingBookmaker#Bookmaker'>comments</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>docs</a>; <a href='usingBookmaker#Bookmaker'>it</a> <a href='usingBookmaker#Bookmaker'>will</a> <a href='usingBookmaker#Bookmaker'>generate</a> <a href='usingBookmaker#Bookmaker'>an</a> <a href='usingBookmaker#Bookmaker'>updated</a> <a href='usingBookmaker#Bookmaker'>include</a> <a href='usingBookmaker#Bookmaker'>in</a> <a href='usingBookmaker#Bookmaker'>the</a>
<a href='usingBookmaker#Bookmaker'>directory</a> <a href='usingBookmaker#Bookmaker'>where</a> <a href='usingBookmaker#Bookmaker'>it</a> <a href='usingBookmaker#Bookmaker'>is</a> <a href='usingBookmaker#Bookmaker'>run</a>.
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> detects that comments edited in includes do not match comments in docs; it will generate an updated include in the
directory where it is run.
<a href='usingBookmaker#Bookmaker'>If</a>
If
<a href='https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-PerCommit-Bookmaker'>Housekeeper-PerCommit-Bookmaker</a></a> bot is red, the error is usually related to an edit to an include which has not been reflected in docs.
To fix this, edit the docs file corresponding to the changed include file.
For instance, if the change was made to <a href='SkIRect_Reference#SkIRect'>SkIRect</a>, <a href='SkIRect_Reference#SkIRect'>edit</a> <a href='SkIRect_Reference#SkIRect'>docs/SkIRect_Reference</a>.<a href='SkIRect_Reference#SkIRect'>bmh</a>.
<a href='SkIRect_Reference#SkIRect'>Checking</a> <a href='SkIRect_Reference#SkIRect'>in</a> <a href='SkIRect_Reference#SkIRect'>the</a> <a href='SkIRect_Reference#SkIRect'>edited</a> <a href='SkIRect_Reference#SkIRect'>docs/SkIRect_Reference</a>.<a href='SkIRect_Reference#SkIRect'>bmh</a> <a href='SkIRect_Reference#SkIRect'>will</a> <a href='SkIRect_Reference#SkIRect'>fix</a> <a href='SkIRect_Reference#SkIRect'>the</a> <a href='SkIRect_Reference#SkIRect'>bot</a>.
For instance, if the change was made to <a href='SkIRect_Reference#SkIRect'>SkIRect</a>, edit docs/SkIRect_Reference.bmh.
Checking in the edited docs/SkIRect_Reference.bmh will fix the bot.
<a href='SkIRect_Reference#SkIRect'>If</a> <a href='SkIRect_Reference#SkIRect'>the</a> <a href='SkIRect_Reference#SkIRect'>interface</a> <a href='SkIRect_Reference#SkIRect'>is</a> <a href='SkIRect_Reference#SkIRect'>deprecated</a>, <a href='SkIRect_Reference#SkIRect'>but</a> <a href='SkIRect_Reference#SkIRect'>still</a> <a href='SkIRect_Reference#SkIRect'>present</a> <a href='SkIRect_Reference#SkIRect'>in</a> <a href='SkIRect_Reference#SkIRect'>the</a> <a href='SkIRect_Reference#SkIRect'>interface</a>, <a href='SkIRect_Reference#SkIRect'>mark-up</a> <a href='SkIRect_Reference#SkIRect'>the</a>
<a href='SkIRect_Reference#SkIRect'>documentation</a> <a href='SkIRect_Reference#SkIRect'>to</a> <a href='SkIRect_Reference#SkIRect'>be</a> <a href='SkIRect_Reference#SkIRect'>deprecated</a> <a href='SkIRect_Reference#SkIRect'>as</a> <a href='SkIRect_Reference#SkIRect'>well</a>.
If the interface is deprecated, but still present in the interface, mark-up the
documentation to be deprecated as well.
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#Method void someMethodThatIsNowDeprecated()
@ -117,20 +117,20 @@ If
</table>
The bot output describes what changed, and includes the file and <a href='undocumented#Line'>line</a>
<a href='undocumented#Line'>where</a> <a href='undocumented#Line'>the</a> <a href='undocumented#Line'>error</a> <a href='undocumented#Line'>occurred</a>.
where the error occurred.
<a href='undocumented#Line'>To</a> <a href='undocumented#Line'>regenerate</a> <a href='undocumented#Line'>the</a> <a href='undocumented#Line'>documentation</a>, <a href='undocumented#Line'>follow</a> <a href='undocumented#Line'>the</a> <a href='undocumented#Line'>Installing</a> <a href='undocumented#Line'>and</a> <a href='undocumented#Line'>Regenerate</a> <a href='undocumented#Line'>steps</a> <a href='undocumented#Line'>below</a>.
To regenerate the documentation, follow the Installing and Regenerate steps below.
<a name='Editing_Comments'></a>
Edit docs instead of include/core files to update comments if possible.
The <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>bots</a> <a href='usingBookmaker#Bookmaker'>do</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>complain</a> <a href='usingBookmaker#Bookmaker'>if</a> <a href='usingBookmaker#Bookmaker'>the</a> <a href='usingBookmaker#Bookmaker'>docs</a> <a href='usingBookmaker#Bookmaker'>file</a> <a href='usingBookmaker#Bookmaker'>does</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>match</a> <a href='usingBookmaker#Bookmaker'>the</a>
<a href='usingBookmaker#Bookmaker'>corresponding</a> <a href='usingBookmaker#Bookmaker'>include</a> <a href='usingBookmaker#Bookmaker'>comments</a>. <a href='usingBookmaker#Bookmaker'>Running</a> <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>include</a> <a href='usingBookmaker#Bookmaker'>generation</a> <a href='usingBookmaker#Bookmaker'>will</a>
<a href='usingBookmaker#Bookmaker'>report</a> <a href='usingBookmaker#Bookmaker'>when</a> <a href='usingBookmaker#Bookmaker'>docs</a> <a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>includes</a> <a href='usingBookmaker#Bookmaker'>comments</a> <a href='usingBookmaker#Bookmaker'>do</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>match</a>.
The <a href='usingBookmaker#Bookmaker'>Bookmaker</a> bots do not complain if the docs file does not match the
corresponding include comments. Running <a href='usingBookmaker#Bookmaker'>Bookmaker</a> include generation will
report when docs and includes comments do not match.
<a href='usingBookmaker#Bookmaker'>For</a> <a href='usingBookmaker#Bookmaker'>instance</a>, <a href='usingBookmaker#Bookmaker'>if</a> <a href='usingBookmaker#Bookmaker'>include/core/SkSurface</a>.<a href='usingBookmaker#Bookmaker'>h</a> <a href='usingBookmaker#Bookmaker'>comments</a> <a href='usingBookmaker#Bookmaker'>do</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>match</a>
<a href='usingBookmaker#Bookmaker'>docs/SkSurface_Reference</a>.<a href='usingBookmaker#Bookmaker'>bmh</a>, <a href='usingBookmaker#Bookmaker'>running</a>:
For instance, if include/core/SkSurface.h comments do not match
docs/SkSurface_Reference.bmh, running:
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ ./out/dir/bookmaker -b docs -i include/core/SkSurface.h -p
@ -139,18 +139,18 @@ $ ./out/dir/bookmaker -b docs -i include/core/SkSurface.h -p
generates
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
wrote updated <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.<a href='SkSurface_Reference#SkSurface'>h</a>
wrote updated <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.h
</pre>
The updated <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.<a href='SkSurface_Reference#SkSurface'>h</a> <a href='SkSurface_Reference#SkSurface'>is</a> <a href='SkSurface_Reference#SkSurface'>written</a> <a href='SkSurface_Reference#SkSurface'>to</a> <a href='SkSurface_Reference#SkSurface'>the</a> <a href='SkSurface_Reference#SkSurface'>root</a> <a href='SkSurface_Reference#SkSurface'>to</a> <a href='SkSurface_Reference#SkSurface'>avoid</a> <a href='SkSurface_Reference#SkSurface'>subsequent</a> <a href='SkSurface_Reference#SkSurface'>runs</a> <a href='SkSurface_Reference#SkSurface'>of</a>
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>from</a> <a href='usingBookmaker#Bookmaker'>recompiling</a>. <a href='usingBookmaker#Bookmaker'>if</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.<a href='SkSurface_Reference#SkSurface'>h</a> <a href='SkSurface_Reference#SkSurface'>was</a> <a href='SkSurface_Reference#SkSurface'>not</a> <a href='SkSurface_Reference#SkSurface'>changed</a>, <a href='SkSurface_Reference#SkSurface'>it</a> <a href='SkSurface_Reference#SkSurface'>is</a> <a href='SkSurface_Reference#SkSurface'>not</a> <a href='SkSurface_Reference#SkSurface'>written</a>,
<a href='SkSurface_Reference#SkSurface'>and</a> <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>will</a> <a href='usingBookmaker#Bookmaker'>not</a> <a href='usingBookmaker#Bookmaker'>generate</a> <a href='usingBookmaker#Bookmaker'>any</a> <a href='usingBookmaker#Bookmaker'>output</a>.
The updated <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.h is written to the root to avoid subsequent runs of
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> from recompiling. if <a href='SkSurface_Reference#SkSurface'>SkSurface</a>.h was not changed, it is not written,
and <a href='usingBookmaker#Bookmaker'>Bookmaker</a> will not generate any output.
<a name='Broken_Example'></a>
An example may cause <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>or</a> <a href='usingBookmaker#Bookmaker'>a</a> <a href='usingBookmaker#Bookmaker'>bot</a> <a href='usingBookmaker#Bookmaker'>running</a> <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>fail</a> <a href='usingBookmaker#Bookmaker'>if</a> <a href='usingBookmaker#Bookmaker'>it</a> <a href='usingBookmaker#Bookmaker'>fails</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>compile</a>.
An example may cause <a href='usingBookmaker#Bookmaker'>Bookmaker</a> or a bot running <a href='usingBookmaker#Bookmaker'>Bookmaker</a> to fail if it fails to compile.
<a href='usingBookmaker#Bookmaker'>Fix</a> <a href='usingBookmaker#Bookmaker'>the</a> <a href='usingBookmaker#Bookmaker'>example</a> <a href='usingBookmaker#Bookmaker'>by</a> <a href='usingBookmaker#Bookmaker'>pasting</a> <a href='usingBookmaker#Bookmaker'>it</a> <a href='usingBookmaker#Bookmaker'>into</a> <a href='https://fiddle.skia.org'>Skia Fiddle</a></a> and editing it until it runs successfully.
Fix the example by pasting it into <a href='https://fiddle.skia.org'>Skia Fiddle</a></a> and editing it until it runs successfully.
If the example cannot be fixed, it can be commented out by changing
@ -168,7 +168,7 @@ to
<a name='Regenerate'></a>
Complete rebuilding of all <a href='usingBookmaker#Bookmaker'>bookmaker</a> <a href='usingBookmaker#Bookmaker'>output</a> <a href='usingBookmaker#Bookmaker'>looks</a> <a href='usingBookmaker#Bookmaker'>like</a>:
Complete rebuilding of all <a href='usingBookmaker#Bookmaker'>bookmaker</a> output looks like:
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ ./out/dir/bookmaker -a docs/status.json -e fiddle.json
@ -181,17 +181,17 @@ $ ./out/dir/bookmaker -a docs/status.json -p
<a name='New_Documentation'></a>
Generate an starter <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>file</a> <a href='usingBookmaker#Bookmaker'>from</a> <a href='usingBookmaker#Bookmaker'>an</a> <a href='usingBookmaker#Bookmaker'>existing</a> <a href='usingBookmaker#Bookmaker'>include</a>.
Generate an starter <a href='usingBookmaker#Bookmaker'>Bookmaker</a> file from an existing include.
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ ./out/dir/bookmaker -i include/core/SkXXX.h -t docs
</pre>
If a method or function has an unnamed parameter, <a href='usingBookmaker#Bookmaker'>bookmaker</a> <a href='usingBookmaker#Bookmaker'>generates</a> <a href='usingBookmaker#Bookmaker'>an</a> <a href='usingBookmaker#Bookmaker'>error</a>:
If a method or function has an unnamed parameter, <a href='usingBookmaker#Bookmaker'>bookmaker</a> generates an error:
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
C:/puregit/include/core/SkPixmap.h(208): error: #Method missing param name
bool erase(const <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>&, <a href='SkColor4f_Reference#SkColor4f'>const</a> <a href='SkIRect_Reference#SkIRect'>SkIRect</a>* <a href='SkIRect_Reference#SkIRect'>subset</a> = <a href='SkIRect_Reference#SkIRect'>nullptr</a>) <a href='SkIRect_Reference#SkIRect'>const</a>
bool erase(const <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>&, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>* subset = nullptr) const
^
</pre>
@ -247,27 +247,27 @@ Descriptions may contain code and formulas, each bracketed by markup.
Similar items may be grouped into topics. Topics may include subtopics.
Each <a href='undocumented#Document'>document</a> <a href='undocumented#Document'>begins</a> <a href='undocumented#Document'>with</a> <a href='undocumented#Document'>one</a> <a href='undocumented#Document'>or</a> <a href='undocumented#Document'>more</a> <a href='undocumented#Document'>indices</a> <a href='undocumented#Document'>that</a> <a href='undocumented#Document'>include</a> <a href='undocumented#Document'>the</a> <a href='undocumented#Document'>contents</a> <a href='undocumented#Document'>of</a>
<a href='undocumented#Document'>that</a> <a href='undocumented#Document'>file</a>. <a href='undocumented#Document'>A</a> <a href='undocumented#Document'>class</a> <a href='undocumented#Document'>reference</a> <a href='undocumented#Document'>includes</a> <a href='undocumented#Document'>an</a> <a href='undocumented#Document'>index</a> <a href='undocumented#Document'>listing</a> <a href='undocumented#Document'>contained</a> <a href='undocumented#Document'>topics</a>,
<a href='undocumented#Document'>a</a> <a href='undocumented#Document'>separate</a> <a href='undocumented#Document'>listing</a> <a href='undocumented#Document'>for</a> <a href='undocumented#Document'>constructors</a>, <a href='undocumented#Document'>one</a> <a href='undocumented#Document'>for</a> <a href='undocumented#Document'>methods</a>, <a href='undocumented#Document'>and</a> <a href='undocumented#Document'>so</a> <a href='undocumented#Document'>on</a>.
Each <a href='undocumented#Document'>document</a> begins with one or more indices that include the contents of
that file. A class reference includes an index listing contained topics,
a separate listing for constructors, one for methods, and so on.
<a href='undocumented#Document'>Class</a> <a href='undocumented#Document'>methods</a> <a href='undocumented#Document'>contain</a> <a href='undocumented#Document'>a</a> <a href='undocumented#Document'>description</a>, <a href='undocumented#Document'>any</a> <a href='undocumented#Document'>parameters</a>, <a href='undocumented#Document'>any</a> <a href='undocumented#Document'>return</a> <a href='undocumented#Document'>value</a>,
<a href='undocumented#Document'>an</a> <a href='undocumented#Document'>example</a>, <a href='undocumented#Document'>and</a> <a href='undocumented#Document'>any</a> <a href='undocumented#Document'>cross</a> <a href='undocumented#Document'>references</a>.
Class methods contain a description, any parameters, any return value,
an example, and any cross references.
<a href='undocumented#Document'>Each</a> <a href='undocumented#Document'>method</a> <a href='undocumented#Document'>must</a> <a href='undocumented#Document'>contain</a> <a href='undocumented#Document'>either</a> <a href='undocumented#Document'>one</a> <a href='undocumented#Document'>or</a> <a href='undocumented#Document'>more</a> <a href='undocumented#Document'>examples</a> <a href='undocumented#Document'>or</a> <a href='undocumented#Document'>markup</a> <a href='undocumented#Document'>indicating</a>
<a href='undocumented#Document'>that</a> <a href='undocumented#Document'>there</a> <a href='undocumented#Document'>is</a> <a href='undocumented#Document'>no</a> <a href='undocumented#Document'>example</a>.
Each method must contain either one or more examples or markup indicating
that there is no example.
<a href='undocumented#Document'>After</a> <a href='undocumented#Document'>editing</a> <a href='undocumented#Document'>is</a> <a href='undocumented#Document'>complete</a>, <a href='undocumented#Document'>searching</a> <a href='undocumented#Document'>for</a> "<a href='undocumented#Document'>incomplete</a>" <a href='undocumented#Document'>should</a> <a href='undocumented#Document'>fail</a>,
<a href='undocumented#Document'>assuming</a> "<a href='undocumented#Document'>incomplete</a>" <a href='undocumented#Document'>is</a> <a href='undocumented#Document'>not</a> <a href='undocumented#Document'>the</a> <a href='undocumented#Document'>perfect</a> <a href='undocumented#Document'>word</a> <a href='undocumented#Document'>to</a> <a href='undocumented#Document'>use</a> <a href='undocumented#Document'>in</a> <a href='undocumented#Document'>a</a> <a href='undocumented#Document'>description</a> <a href='undocumented#Document'>or</a>
<a href='undocumented#Document'>example</a>!
After editing is complete, searching for "incomplete" should fail,
assuming "incomplete" is not the perfect word to use in a description or
example!
<a name='Adding_Documentation'></a>
Generate fiddle.json from all examples, including the ones you just wrote.
Error checking is syntatic: starting keywords are closed, keywords have the
correct parents.
If you run <a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>inside</a> <a href='usingBookmaker#Bookmaker'>Visual_Studio</a>, <a href='usingBookmaker#Bookmaker'>you</a> <a href='usingBookmaker#Bookmaker'>can</a> <a href='usingBookmaker#Bookmaker'>click</a> <a href='usingBookmaker#Bookmaker'>on</a> <a href='usingBookmaker#Bookmaker'>errors</a> <a href='usingBookmaker#Bookmaker'>and</a> <a href='usingBookmaker#Bookmaker'>it</a>
<a href='usingBookmaker#Bookmaker'>will</a> <a href='usingBookmaker#Bookmaker'>take</a> <a href='usingBookmaker#Bookmaker'>you</a> <a href='usingBookmaker#Bookmaker'>to</a> <a href='usingBookmaker#Bookmaker'>the</a> <a href='usingBookmaker#Bookmaker'>source</a> <a href='undocumented#Line'>line</a> <a href='undocumented#Line'>in</a> <a href='undocumented#Line'>question</a>.
If you run <a href='usingBookmaker#Bookmaker'>Bookmaker</a> inside Visual_Studio, you can click on errors and it
will take you to the source <a href='undocumented#Line'>line</a> in question.
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
$ ./out/dir/bookmaker -e fiddle.json -b docs
@ -315,6 +315,6 @@ any of the above commands with -a docs/status.json in place of
<a name='Bugs'></a>
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> <a href='usingBookmaker#Bookmaker'>bugs</a> <a href='usingBookmaker#Bookmaker'>are</a> <a href='usingBookmaker#Bookmaker'>tracked</a>
<a href='usingBookmaker#Bookmaker'>Bookmaker</a> bugs are tracked
<a href='https://bug.skia.org/6898'>here</a></a> .

View File

@ -312,6 +312,7 @@ bool MdOut::DefinedState::phraseContinues(string phrase, string* priorWord,
}
void MdOut::DefinedState::setLink() {
fLink = "";
fPriorDef = nullptr;
// TODO: operators have complicated parsing possibilities; handle the easiest for now
if (fMethod && "operator" == fPriorWord && '(' == fSeparator.back()) {