Remove all the bookmaker generated docs.

Bug: skia:9787
Change-Id: I71ba5e0f31be28fdf8c56794918e4689ceae3cbf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/269485
Auto-Submit: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Heather Miller <hcm@google.com>
Commit-Queue: Heather Miller <hcm@google.com>
This commit is contained in:
Joe Gregorio 2020-02-07 15:31:52 -05:00 committed by Skia Commit-Bot
parent dfec731dbf
commit ae797958a5
24 changed files with 0 additions and 48482 deletions

View File

@ -1,104 +0,0 @@
SkAutoCanvasRestore Reference
===
<a name='SkAutoCanvasRestore'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkAutoCanvasRestore_Reference#SkAutoCanvasRestore'>SkAutoCanvasRestore</a> {
<a href='#SkAutoCanvasRestore_SkCanvas_star'>SkAutoCanvasRestore</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='SkCanvas_Reference#Canvas'>canvas</a>, bool doSave);
<a href='#SkAutoCanvasRestore_destructor'>~SkAutoCanvasRestore()</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> 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_SkCanvas_star'>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> 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> 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>
</tr>
</table>
### Return Value
utility to restore <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> state on destructor
### Example
<div><fiddle-embed name="@AutoCanvasRestore_SkCanvas_star"></fiddle-embed></div>
### See Also
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_restore'>restore</a>
<a name='SkAutoCanvasRestore_destructor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='#SkAutoCanvasRestore_destructor'>~SkAutoCanvasRestore()</a>
</pre>
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> to saved state. Destructor is called when container goes out of
scope.
### See Also
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_restore'>restore</a>
<a name='SkAutoCanvasRestore_restore'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkAutoCanvasRestore_restore'>restore()</a>
</pre>
Restores <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> to saved state immediately. Subsequent calls and
<a href='#SkAutoCanvasRestore_destructor'>~SkAutoCanvasRestore()</a> have no effect.
### Example
<div><fiddle-embed name="@AutoCanvasRestore_restore">
#### Example Output
~~~~
saveCanvas: false before restore: 2
saveCanvas: false after restore: 2
saveCanvas: true before restore: 2
saveCanvas: true after restore: 2
saveCanvas: false before restore: 2
saveCanvas: false after restore: 1
saveCanvas: true before restore: 2
saveCanvas: true after restore: 1
final count: 1
~~~~
</fiddle-embed></div>
### See Also
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_save'>save</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_restore'>restore</a>

File diff suppressed because it is too large Load Diff

View File

@ -1,804 +0,0 @@
SkBlendMode Reference
===
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
enum class <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</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,
};
const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> blendMode);
</pre>
<a name='SkBlendMode'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Details</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kClear'><code>SkBlendMode::kClear</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#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> and <a href='SkColor_Reference#Color'>Color</a> components set to zero;
a fully transparent <a href='undocumented#Pixel'>pixel</a>.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrc'><code>SkBlendMode::kSrc</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#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> and <a href='SkColor_Reference#Color'>color</a> component values
are ignored.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDst'><code>SkBlendMode::kDst</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#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> set to <a href='#SkBlendMode_kDst'>kDst</a> has
no effect.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOver'><code>SkBlendMode::kSrcOver</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#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> for <a href='SkPaint_Reference#SkPaint'>SkPaint</a>.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOver'><code>SkBlendMode::kDstOver</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Over'>Dst&nbsp;Over</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with destination blended with source. If destination is opaque,
has no effect.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcIn'><code>SkBlendMode::kSrcIn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_In'>Src&nbsp;In</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source using destination opacity.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstIn'><code>SkBlendMode::kDstIn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_In'>Dst&nbsp;In</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Scales destination opacity by source opacity.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOut'><code>SkBlendMode::kSrcOut</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Out'>Src&nbsp;Out</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source using the inverse of destination opacity,
drawing source fully where destination opacity is zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOut'><code>SkBlendMode::kDstOut</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Out'>Dst&nbsp;Out</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination opacity with inverse of source opacity. If source is
transparent, has no effect.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcATop'><code>SkBlendMode::kSrcATop</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Atop'>Src&nbsp;Atop</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination with source using read destination opacity.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstATop'><code>SkBlendMode::kDstATop</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Atop'>Dst&nbsp;Atop</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination with source using source opacity.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kXor'><code>SkBlendMode::kXor</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Xor'>Xor</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination by exchanging transparency of the source and destination.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kPlus'><code>SkBlendMode::kPlus</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Plus'>Plus</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source and destination added together.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kModulate'><code>SkBlendMode::kModulate</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>13</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Modulate'>Modulate</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source and destination multiplied together.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kScreen'><code>SkBlendMode::kScreen</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Screen'>Screen</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with inverted source and destination multiplied together.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastCoeffMode'><code>SkBlendMode::kLastCoeffMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
last Porter_Duff blend mode</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kOverlay'><code>SkBlendMode::kOverlay</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>15</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Overlay'>Overlay</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with multiply or screen, depending on destination.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDarken'><code>SkBlendMode::kDarken</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>16</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Darken'>Darken</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with darker of source and destination.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLighten'><code>SkBlendMode::kLighten</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>17</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Lighten'>Lighten</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with lighter of source and destination.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorDodge'><code>SkBlendMode::kColorDodge</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>18</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Dodge'>Color&nbsp;Dodge</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination brighter to reflect source.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorBurn'><code>SkBlendMode::kColorBurn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>19</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Burn'>Color&nbsp;Burn</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination darker to reflect source.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHardLight'><code>SkBlendMode::kHardLight</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>20</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hard_Light'>Hard&nbsp;Light</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination lighter or darker, depending on source.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSoftLight'><code>SkBlendMode::kSoftLight</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>21</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Soft_Light'>Soft&nbsp;Light</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination lighter or darker, depending on source.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDifference'><code>SkBlendMode::kDifference</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>22</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Difference'>Difference</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Subtracts darker from lighter with higher contrast.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kExclusion'><code>SkBlendMode::kExclusion</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>23</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Exclusion'>Exclusion</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Subtracts darker from lighter with lower contrast.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kMultiply'><code>SkBlendMode::kMultiply</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Multiply'>Multiply</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Multiplies source with destination, darkening <a href='SkImage_Reference#Image'>image</a>.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastSeparableMode'><code>SkBlendMode::kLastSeparableMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Last blend mode operating separately on components.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHue'><code>SkBlendMode::kHue</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>25</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hue'>Hue</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces hue of destination with hue of source, leaving saturation and luminosity
unchanged.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSaturation'><code>SkBlendMode::kSaturation</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>26</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Saturation'>Saturation</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces saturation of destination saturation hue of source, leaving hue and
luminosity unchanged.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColor'><code>SkBlendMode::kColor</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>27</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color'>Color</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces hue and saturation of destination with hue and saturation of source,
leaving luminosity unchanged.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLuminosity'><code>SkBlendMode::kLuminosity</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Luminosity'>Luminosity</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces luminosity of destination with luminosity of source, leaving hue and
saturation unchanged.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastMode'><code>SkBlendMode::kLastMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Used by tests to iterate through all valid values.
</td>
</tr>
</table>
### See Also
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawColor'>drawColor</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawVertices'>drawVertices</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a> <a href='undocumented#SkShader'>SkShader</a>::<a href='#SkShader_MakeCompose'>MakeCompose</a> <a href='undocumented#SkXfermodeImageFilter'>SkXfermodeImageFilter</a>
<a name='Clear'></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="@Clear"><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
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_clear'>clear</a>
<a name='Src'></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="@Src"><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
<a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_draw'>draw</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_readPixels'>readPixels</a>
<a name='Dst'></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
<div><fiddle-embed name="@Dst"></fiddle-embed></div>
<a name='Src_Over'></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> cannot make destination more transparent; the result will
be at least as opaque as the less transparent of source and original destination.
### Example
<div><fiddle-embed name="@Src_Over"></fiddle-embed></div>
<a name='Dst_Over'></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_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
<div><fiddle-embed name="@Dst_Over"></fiddle-embed></div>
<a name='Src_In'></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> replaces destination with: <code>[Sa * Da, Sc * Da]</code>,
drawing source with destination opacity.
### Example
<div><fiddle-embed name="@Src_In"></fiddle-embed></div>
<a name='Dst_In'></a>
---
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> 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
<div><fiddle-embed name="@Dst_In"></fiddle-embed></div>
<a name='Src_Out'></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> 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
<div><fiddle-embed name="@Src_Out"></fiddle-embed></div>
<a name='Dst_Out'></a>
---
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> 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
<div><fiddle-embed name="@Dst_Out"></fiddle-embed></div>
<a name='Src_Atop'></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_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.
### Example
<div><fiddle-embed name="@Src_Atop"></fiddle-embed></div>
<a name='Dst_Atop'></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_kDstATop'>kDstATop</a> replaces destination with: <code>[Sa, Dc * Sa + Sc * (1 - Da)]</code>,
making destination transparent where source is transparent.
### Example
<div><fiddle-embed name="@Dst_Atop"></fiddle-embed></div>
<a name='Xor'></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.
### Example
<div><fiddle-embed name="@Xor"></fiddle-embed></div>
<a name='Plus'></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
<div><fiddle-embed name="@Plus"></fiddle-embed></div>
<a name='Modulate'></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="@Modulate"><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> 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
<div><fiddle-embed name="@Screen"></fiddle-embed></div>
<a name='Overlay'></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>.
### Example
<div><fiddle-embed name="@Overlay"></fiddle-embed></div>
<a name='Darken'></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
<div><fiddle-embed name="@Darken"></fiddle-embed></div>
<a name='Lighten'></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
<div><fiddle-embed name="@Lighten"></fiddle-embed></div>
<a name='Color_Dodge'></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>(Da, Dc * Sa / (Sa - Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
making destination brighter to reflect source.
### Example
<div><fiddle-embed name="@Color_Dodge"></fiddle-embed></div>
<a name='Color_Burn'></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>(Da, (Da - Dc) * Sa / Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
making destination darker to reflect source.
### Example
<div><fiddle-embed name="@Color_Burn"></fiddle-embed></div>
<a name='Hard_Light'></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.
### Example
<div><fiddle-embed name="@Hard_Light"></fiddle-embed></div>
<a name='Soft_Light'></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;
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>(m) - m))]</code>,
making destination lighter or darker, depending on source.
### Example
<div><fiddle-embed name="@Soft_Light"></fiddle-embed></div>
<a name='Difference'></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_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
<div><fiddle-embed name="@Difference"></fiddle-embed></div>
<a name='Exclusion'></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>.
### Example
<div><fiddle-embed name="@Exclusion"></fiddle-embed></div>
<a name='Multiply'></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> 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
<div><fiddle-embed name="@Multiply"></fiddle-embed></div>
<a name='Hue'></a>
---
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> 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
<div><fiddle-embed name="@Hue"></fiddle-embed></div>
<a name='Saturation'></a>
---
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> 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
<div><fiddle-embed name="@Saturation"></fiddle-embed></div>
<a name='Color'></a>
---
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> 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
<div><fiddle-embed name="@Color"></fiddle-embed></div>
<a name='Luminosity'></a>
---
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> 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
<div><fiddle-embed name="@Luminosity"></fiddle-embed></div>
<a name='SkBlendMode_Name'></a>
---
<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> blendMode)
</pre>
Returns name of <a href='#SkBlendMode_Name_blendMode'>blendMode</a> as null-terminated C <a href='undocumented#String'>string</a>.
### Parameters
<table> <tr> <td><a name='SkBlendMode_Name_blendMode'><code><strong>blendMode</strong></code></a></td>
<td>one of:</td>
</tr>
</table>
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOver'>kDstOver</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcIn'>kSrcIn</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstIn'>kDstIn</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOut'>kSrcOut</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOut'>kDstOut</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstATop'>kDstATop</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLighten'>kLighten</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorDodge'>kColorDodge</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorBurn'>kColorBurn</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHardLight'>kHardLight</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSoftLight'>kSoftLight</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDifference'>kDifference</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kExclusion'>kExclusion</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSaturation'>kSaturation</a>,
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a>
### Return Value
C <a href='undocumented#String'>string</a>
### Example
<div><fiddle-embed name="@BlendMode_Name">
#### Example Output
~~~~
default blend: SkBlendMode::kSrcOver
~~~~
</fiddle-embed></div>
### See Also
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>

File diff suppressed because it is too large Load Diff

View File

@ -1,540 +0,0 @@
SkColor4f Reference
===
<a name='SkPM4f'></a>
---
<a name='SkRGBA4f'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
struct <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</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>;
bool <a href='#SkRGBA4f_equal1_operator'>operator==</a>(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const;
bool <a href='#SkRGBA4f_notequal1_operator'>operator!=</a>(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other) const;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_multiply_operator'>operator*</a>(float scale) const;
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> <a href='#SkRGBA4f_multiply1_operator'>operator*</a>(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 <a href='#SkRGBA4f_array_operator'>operator[]</a>(int index) const;
float& <a href='#SkRGBA4f_array1_operator'>operator[]</a>(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#Color'>color</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> float value.
All values are allowed, but only the range from zero to one is meaningful.
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>.
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.
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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>float</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRGBA4f_fR'><code>fR</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Single precision float for red ranges from no red (0.0) to full red (1.0).
</td>
</tr>
<tr>
<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_fG'><code>fG</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Single precision float for green ranges from no green (0.0) to full green (1.0).
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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_fB'><code>fB</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Single precision float for blue ranges from no blue (0.0) to full blue (1.0).
</td>
</tr>
<tr>
<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> 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>
<a name='SkRGBA4f_equal1_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator==(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other)const
</pre>
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> to compare</td>
</tr>
</table>
### Return Value
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> equals <a href='#SkRGBA4f_equal1_operator_other'>other</a>
### Example
<div><fiddle-embed name="@RGBA4f_equal1_operator">
#### Example Output
~~~~
colorRed == colorNamedRed
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkRGBA4f_notequal1_operator'>operator!=</a>(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='#SkRGBA4f_equal1_operator_other'>other</a>) const
<a name='SkRGBA4f_notequal1_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool operator!=(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& other)const
</pre>
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> to compare</td>
</tr>
</table>
### Return Value
true if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> is not equal to <a href='#SkRGBA4f_notequal1_operator_other'>other</a>
### Example
<div><fiddle-embed name="@RGBA4f_notequal1_operator">
#### Example Output
~~~~
colorGray != colorNamedGray
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkRGBA4f_equal1_operator'>operator==</a>(const <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>& <a href='#SkRGBA4f_notequal1_operator_other'>other</a>) const
<a name='SkRGBA4f_multiply_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> operator*(float scale)const
</pre>
Multiplies each component by <a href='#SkRGBA4f_multiply_operator_scale'>scale</a>. Does not pin the result.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_multiply_operator_scale'><code><strong>scale</strong></code></a></td>
<td>component multiplier</td>
</tr>
</table>
### Return Value
scaled <a href='SkColor_Reference#Color'>color</a>
### See Also
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>
<a name='SkRGBA4f_multiply1_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> 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> component multipliers</td>
</tr>
</table>
### Return Value
scaled <a href='SkColor_Reference#Color'>color</a>
### See Also
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>
<a name='Property_Functions'></a>
<a name='SkRGBA4f_vec'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
const float* <a href='#SkRGBA4f_vec'>vec()</a>const
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> components as a read-only array.
### Return Value
components as read-only array
### Example
<div><fiddle-embed name="@RGBA4f_vec">
#### Example Output
~~~~
red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=0.533333
~~~~
</fiddle-embed></div>
### See Also
<a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>
<a name='SkRGBA4f_vec_2'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
float* <a href='#SkRGBA4f_vec'>vec()</a>
</pre>
Returns <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> components as a writable array.
### Return Value
components as writable array
### Example
<div><fiddle-embed name="@RGBA4f_vec_2">
#### Example Output
~~~~
red=0.266667 green=0.533333 blue=0.8 alpha=0.533333
[0]=0.266667 [1]=0.533333 [2]=0.8 [3]=1
~~~~
</fiddle-embed></div>
### See Also
<a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>
<a name='SkRGBA4f_array_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
float <a href='#SkRGBA4f_array1_operator'>operator[]</a>(int index)const
</pre>
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
<table> <tr> <td><a name='SkRGBA4f_array_operator_index'><code><strong>index</strong></code></a></td>
<td>component, zero through three</td>
</tr>
</table>
### Return Value
component by index
### See Also
<a href='#SkRGBA4f_vec'>vec</a>
<a name='SkRGBA4f_array1_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
float& <a href='#SkRGBA4f_array1_operator'>operator[]</a>(int index)
</pre>
Returns writable component reference by index, zero through three. index out of range
triggers an assert in debug builds.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_array1_operator_index'><code><strong>index</strong></code></a></td>
<td>component, zero through three</td>
</tr>
</table>
### Return Value
writable component reference by index
### See Also
<a href='#SkRGBA4f_vec'>vec</a>
<a name='Utility_Functions'></a>
<a name='SkRGBA4f_isOpaque'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkRGBA4f_isOpaque'>isOpaque</a>()const
</pre>
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> is one
### See Also
<a href='#SkRGBA4f_vec'>vec</a> <a href='SkColor_Reference#SkColorGetA'>SkColorGetA</a>
<a name='SkRGBA4f_FromColor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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#Color'>color</a>)
</pre>
Returns closest <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> to <a href='SkColor_Reference#SkColor'>SkColor</a>. Only allowed if <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a> is <a href='undocumented#Unpremultiply'>unpremultiplied</a>.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_FromColor_color'><code><strong>color</strong></code></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='SkColor_Reference#SkColor'>SkColor</a> as <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a>
### Example
<div><fiddle-embed name="@RGBA4f_FromColor">
#### Example Output
~~~~
red=0.301961 green=0.396078 blue=0.6 alpha=0.168627
red=77 green=101 blue=153 alpha=43
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkRGBA4f_toSkColor'>toSkColor</a>
<a name='SkRGBA4f_toSkColor'></a>
---
<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>()const
</pre>
Converts to closest <a href='SkColor_Reference#SkColor'>SkColor</a>.
### Return Value
closest <a href='SkColor_Reference#Color'>Color</a>
### Example
<div><fiddle-embed name="@RGBA4f_toSkColor">
#### Example Output
~~~~
red=18 green=33 blue=82 alpha=43
red=0.0705882 green=0.129412 blue=0.321569 alpha=0.168627
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkRGBA4f_FromColor'>FromColor</a>
<a name='SkRGBA4f_FromPMColor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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> integer components to <a href='undocumented#Unpremultiply'>Unpremultiplied</a> float
components.
### Parameters
<table> <tr> <td><a name='SkRGBA4f_FromPMColor_SkPMColor'><code><strong>SkPMColor</strong></code></a></td>
<td><a href='undocumented#Premultiply'>Premultiplied</a> <a href='SkColor_Reference#Color'>color</a></td>
</tr>
</table>
### Return Value
<a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a>
### See Also
<a href='#SkRGBA4f_FromColor'>FromColor</a>
<a name='SkRGBA4f_premul'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> with all components <a href='undocumented#Premultiply'>premultiplied</a> by <a href='SkColor_Reference#Alpha'>Alpha</a>.
### Return Value
<a href='undocumented#Premultiply'>Premultiplied</a> <a href='SkColor_Reference#Color'>color</a>
### See Also
<a href='#SkRGBA4f_unpremul'>unpremul</a>
<a name='SkRGBA4f_unpremul'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> with all components independent of <a href='SkColor_Reference#Alpha'>Alpha</a>.
### Return Value
<a href='undocumented#Unpremultiply'>Unpremultiplied</a> <a href='SkColor_Reference#Color'>color</a>
### See Also
<a href='#SkRGBA4f_premul'>premul</a>
<a name='SkRGBA4f_toBytes_RGBA'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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>.
### Return Value
<a href='SkColor_Reference#Color'>color</a>
<a name='SkRGBA4f_FromBytes_RGBA'></a>
---
<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>(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> 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> or <a href='undocumented#Unpremultiply'>Unpremultiplied</a></td>
</tr>
</table>
### Return Value
<a href='SkColor_Reference#Color'>color</a>
<a name='SkRGBA4f_makeOpaque'></a>
---
<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>()const
</pre>
Returns <a href='SkColor_Reference#Color'>color</a> with <a href='SkColor_Reference#Alpha'>Alpha</a> set to one.
### Return Value
<a href='SkColor_Reference#Color'>color</a>
<a name='SkColor4f'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
using <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> = <a href='SkColor4f_Reference#SkRGBA4f'>SkRGBA4f</a><<a href='SkImageInfo_Reference#kUnpremul_SkAlphaType'>kUnpremul_SkAlphaType</a>>;
</pre>

View File

@ -1,761 +0,0 @@
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>;
typedef uint32_t <a href='SkColor_Reference#SkColor'>SkColor</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)
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);
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]);
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>, const <a href='undocumented#SkScalar'>SkScalar</a> hsv[3]);
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, <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> 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>
};
template <> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::<a href='SkColor4f_Reference#SkRGBA4f_FromColor'>FromColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a>);
template <> <a href='SkColor_Reference#SkColor'>SkColor</a> <a href='SkColor4f_Reference#SkColor4f'>SkColor4f</a>::<a href='SkColor4f_Reference#SkRGBA4f_toSkColor'>toSkColor</a>() const;
</pre>
<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> 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>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
typedef uint8_t <a href='SkColor_Reference#SkAlpha'>SkAlpha</a>;
</pre>
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>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
typedef uint32_t <a href='SkColor_Reference#SkColor'>SkColor</a>;
</pre>
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> 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
<a href='SkColor_Reference#SkPMColor'>SkPMColor</a>
<a name='SkColorSetARGB'></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, <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> 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>, 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>
</tr>
<tr> <td><a name='SkColorSetARGB_g'><code><strong>g</strong></code></a></td>
<td>amount of green, from no green (0) to full green (255)</td>
</tr>
<tr> <td><a name='SkColorSetARGB_b'><code><strong>b</strong></code></a></td>
<td>amount of blue, from no blue (0) to full blue (255)</td>
</tr>
</table>
### Return Value
<a href='SkColor_Reference#Color'>color</a> and <a href='SkColor_Reference#Alpha'>alpha</a>, <a href='undocumented#Unpremultiply'>Unpremultiplied</a>
### Example
<div><fiddle-embed name="@ColorSetARGB"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_setARGB'>setARGB</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_setColor'>setColor</a> <a href='SkColor_Reference#SkColorSetA'>SkColorSetA</a>
<a name='SkColorSetRGB'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
#define <a href='SkColor_Reference#SkColorSetRGB'>SkColorSetRGB</a>(r, g, b) <a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>(0xFF, r, g, b)
r g b
</pre>
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
<table> <tr> <td><a name='SkColorSetRGB_r'><code><strong>r</strong></code></a></td>
<td>amount of red, from no red (0) to full red (255)</td>
</tr>
<tr> <td><a name='SkColorSetRGB_g'><code><strong>g</strong></code></a></td>
<td>amount of green, from no green (0) to full green (255)</td>
</tr>
<tr> <td><a name='SkColorSetRGB_b'><code><strong>b</strong></code></a></td>
<td>amount of blue, from no blue (0) to full blue (255)</td>
</tr>
</table>
### Return Value
<a href='SkColor_Reference#Color'>color</a> with opaque <a href='SkColor_Reference#Alpha'>alpha</a>
### Example
<div><fiddle-embed name="@ColorSetRGB"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>
<a name='SkColorGetA'></a>
---
<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) & 0xFF)
<a href='SkColor_Reference#Color'>color</a>
</pre>
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 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@ColorGetA"></fiddle-embed></div>
### See Also
<a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_getAlpha'>getAlpha</a>
<a name='SkColorGetR'></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) & 0xFF)
<a href='SkColor_Reference#Color'>color</a>
</pre>
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 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
### Return Value
red byte
### Example
<div><fiddle-embed name="d6da38577f189eaa6d9df75f6c3ed252"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a> <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>
<a name='SkColorGetG'></a>
---
<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) & 0xFF)
<a href='SkColor_Reference#Color'>color</a>
</pre>
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 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
### Return Value
green byte
### Example
<div><fiddle-embed name="535d38b2c019299d915170f7b03d5fea"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a> <a href='SkColor_Reference#SkColorGetB'>SkColorGetB</a>
<a name='SkColorGetB'></a>
---
<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) & 0xFF)
<a href='SkColor_Reference#Color'>color</a>
</pre>
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 32-bit unsigned int, in 0xAARRGGBB format</td>
</tr>
</table>
### Return Value
blue byte
### Example
<div><fiddle-embed name="9ee27675284faea375611dc88123a2c5"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorGetR'>SkColorGetR</a> <a href='SkColor_Reference#SkColorGetG'>SkColorGetG</a>
<a name='SkColorSetA'></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#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> 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
<table> <tr> <td><a name='SkColorSetA_c'><code><strong>c</strong></code></a></td>
<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>: transparent at zero, fully opaque at 255</td>
</tr>
</table>
### Return Value
<a href='SkColor_Reference#Color'>Color</a> with transparency
### Example
<div><fiddle-embed name="@ColorSetA"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorSetARGB'>SkColorSetARGB</a>
<a name='Alpha_Constants'></a>
---
<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> = 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> constants are conveniences to represent fully transparent and fully
opaque colors and masks. Their use is not required.
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='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> 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> 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="@Alpha_Constants_a"><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="@Alpha_Constants_b"><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
<a href='SkColor_Reference#SkAlpha'>SkAlpha</a> <a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> <a href='SkColor_Reference#SK_ColorBLACK'>SK_ColorBLACK</a>
<a name='Color_Constants'></a>
---
<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>;
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> 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
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='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>. May be used to initialize a destination
containing a mask or a non-rectangular <a href='SkImage_Reference#Image'>image</a>.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorBLACK'><code>SK_ColorBLACK</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF000000</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque black.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorDKGRAY'><code>SK_ColorDKGRAY</code></a></td>
<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> is equivalent to 0xFFA9A9A9.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorGRAY'><code>SK_ColorGRAY</code></a></td>
<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> 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> is equivalent to 0xFFC0C0C0.
Note that <a href='#SVG_lightgray'>SVG_lightgray</a> is equivalent to 0xFFD3D3D3.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorWHITE'><code>SK_ColorWHITE</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFFFFFFFF</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque white.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorRED'><code>SK_ColorRED</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFFFF0000</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque red.
</td>
</tr>
<tr>
<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> is equivalent.
Note that <a href='#HTML_Green'>HTML_Green</a> is equivalent to 0xFF008000.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorBLUE'><code>SK_ColorBLUE</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF0000FF</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque blue.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorYELLOW'><code>SK_ColorYELLOW</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFFFFFF00</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque yellow.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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> 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> is equivalent.
</td>
</tr>
</table>
### Example
<div><fiddle-embed name="1c2e38321464818847f953ddd45cb5a1"></fiddle-embed></div>
### Example
<div><fiddle-embed name="@Color_Constants_b"><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="@Color_Constants_c"><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="@Color_Constants_d"><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
<a href='SkColor_Reference#SK_ColorTRANSPARENT'>SK_ColorTRANSPARENT</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_clear'>clear</a> <a href='SkColor_Reference#SK_AlphaOPAQUE'>SK_AlphaOPAQUE</a>
<a name='HSV'></a>
<a name='HSV_Hue'></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> 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>. 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> 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] 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> 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> 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> 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
</td>
</tr>
</table>
### Example
<div><fiddle-embed name="4fb2da4a3d9b14ca4ac24eefb0f5126a"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>
<a name='SkColorToHSV'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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])
</pre>
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> to convert
</td>
</tr>
<tr> <td><a name='SkColorToHSV_hsv'><code><strong>hsv</strong></code></a></td>
<td>three element array which holds the resulting HSV components
</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@ColorToHSV"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a> <a href='SkColor_Reference#SkHSVToColor'>SkHSVToColor</a>
<a name='SkHSVToColor'></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>, 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> 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.
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> 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>
<td>three element array which holds the input HSV components
</td>
</tr>
</table>
### Return Value
ARGB equivalent to HSV
### Example
<div><fiddle-embed name="@HSVToColor"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a> <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>
<a name='SkHSVToColor_2'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <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> 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.
Out of range <a href='#SkHSVToColor_2_hsv'>hsv</a> values are pinned.
### Parameters
<table> <tr> <td><a name='SkHSVToColor_2_hsv'><code><strong>hsv</strong></code></a></td>
<td>three element array which holds the input HSV components
</td>
</tr>
</table>
### Return Value
RGB equivalent to HSV
### Example
<div><fiddle-embed name="@HSVToColor_2"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkColorToHSV'>SkColorToHSV</a> <a href='SkColor_Reference#SkRGBToHSV'>SkRGBToHSV</a>
<a name='PM_Color'></a>
<a name='SkPMColor'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
typedef uint32_t <a href='SkColor_Reference#SkPMColor'>SkPMColor</a>;
</pre>
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, <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> 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>, 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>
</tr>
<tr> <td><a name='SkPreMultiplyARGB_g'><code><strong>g</strong></code></a></td>
<td>amount of green, from no green (0) to full green (255)</td>
</tr>
<tr> <td><a name='SkPreMultiplyARGB_b'><code><strong>b</strong></code></a></td>
<td>amount of blue, from no blue (0) to full blue (255)</td>
</tr>
</table>
### Return Value
<a href='undocumented#Premultiply'>Premultiplied</a> <a href='SkColor_Reference#Color'>Color</a>
### Example
<div><fiddle-embed name="756345484fd48ca0ea7b6cec350f73b8"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkPreMultiplyColor'>SkPreMultiplyColor</a>
<a name='SkPreMultiplyColor'></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#SkPreMultiplyColor'>SkPreMultiplyColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c)
</pre>
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> ARGB <a href='SkColor_Reference#Color'>Color</a></td>
</tr>
</table>
### Return Value
<a href='undocumented#Premultiply'>Premultiplied</a> <a href='SkColor_Reference#Color'>Color</a>
### Example
<div><fiddle-embed name="0bcc0f86a2aefc899f3500503dce6968"></fiddle-embed></div>
### See Also
<a href='SkColor_Reference#SkPreMultiplyARGB'>SkPreMultiplyARGB</a>

File diff suppressed because it is too large Load Diff

View File

@ -1,516 +0,0 @@
SkIPoint Reference
===
<a name='SkIPoint'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
struct <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> {
int32_t <a href='#SkIPoint_fX'>fX</a>;
int32_t <a href='#SkIPoint_fY'>fY</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 <a href='#SkIPoint_set'>set</a>(int32_t x, int32_t y);
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator-() const;
void <a href='#SkIPoint_addto_operator'>operator+=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v);
void <a href='#SkIPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v);
bool <a href='#SkIPoint_equals'>equals</a>(int32_t x, int32_t y) const;
friend bool <a href='#SkIPoint_equal_operator'>operator==</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b);
friend bool <a href='#SkIPoint_notequal_operator'>operator!=</a>(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> <a href='#SkIPoint_subtract_operator'>operator-</a>(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> <a href='#SkIPoint_add_operator'>operator+</a>(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> 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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>int32_t</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkIPoint_fX'><code>fX</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
x-axis value used by <a href='SkIPoint_Reference#IPoint'>IPoint</a>.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>int32_t</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkIPoint_fY'><code>fY</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
y-axis value used by <a href='SkIPoint_Reference#IPoint'>IPoint</a>.
</td>
</tr>
</table>
<a name='SkIPoint_Make'></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>(int32_t x, int32_t y)
</pre>
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
<table> <tr> <td><a name='SkIPoint_Make_x'><code><strong>x</strong></code></a></td>
<td>integer x-axis value of constructed <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a></td>
</tr>
<tr> <td><a name='SkIPoint_Make_y'><code><strong>y</strong></code></a></td>
<td>integer y-axis value of constructed <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a></td>
</tr>
</table>
### Return Value
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> (<a href='#SkIPoint_Make_x'>x</a>, <a href='#SkIPoint_Make_y'>y</a>)
### Example
<div><fiddle-embed name="@IPoint_Make">
#### Example Output
~~~~
pt1 == pt2
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_set'>set()</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='#SkPoint_iset'>iset()</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='#SkPoint_Make'>Make</a>
<a name='Property'></a>
<a name='SkIPoint_x'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkIPoint_x'>x()</a>const
</pre>
Returns x-axis value of <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>.
### Return Value
<a href='#SkIPoint_fX'>fX</a>
### Example
<div><fiddle-embed name="@IPoint_x">
#### Example Output
~~~~
pt1.fX == pt1.x()
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_y'>y()</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='#SkPoint_x'>x()</a>
<a name='SkIPoint_y'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkIPoint_y'>y()</a>const
</pre>
Returns y-axis value of <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>.
### Return Value
<a href='#SkIPoint_fY'>fY</a>
### Example
<div><fiddle-embed name="@IPoint_y">
#### Example Output
~~~~
pt1.fY == pt1.y()
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_x'>x()</a> <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='#SkPoint_y'>y()</a>
<a name='SkIPoint_isZero'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkIPoint_isZero'>isZero</a>()const
</pre>
Returns true if <a href='#SkIPoint_fX'>fX</a> and <a href='#SkIPoint_fY'>fY</a> are both zero.
### Return Value
true if <a href='#SkIPoint_fX'>fX</a> is zero and <a href='#SkIPoint_fY'>fY</a> is zero
### Example
<div><fiddle-embed name="@IPoint_isZero">
#### Example Output
~~~~
pt.isZero() == true
~~~~
</fiddle-embed></div>
### See Also
<a href='SkPoint_Reference#SkPoint'>SkPoint</a>::<a href='#SkPoint_isZero'>isZero</a>
<a name='Set'></a>
<a name='SkIPoint_set'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void set(int32_t x, int32_t y)
</pre>
Sets <a href='#SkIPoint_fX'>fX</a> to <a href='#SkIPoint_set_x'>x</a> and <a href='#SkIPoint_fY'>fY</a> to <a href='#SkIPoint_set_y'>y</a>.
### Parameters
<table> <tr> <td><a name='SkIPoint_set_x'><code><strong>x</strong></code></a></td>
<td>new value for <a href='#SkIPoint_fX'>fX</a></td>
</tr>
<tr> <td><a name='SkIPoint_set_y'><code><strong>y</strong></code></a></td>
<td>new value for <a href='#SkIPoint_fY'>fY</a></td>
</tr>
</table>
### Example
<div><fiddle-embed name="@IPoint_set">
#### Example Output
~~~~
pt1 == pt2
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_Make'>Make</a>
<a name='SkIPoint_minus_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> operator-()const
</pre>
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> as (-<a href='#SkIPoint_fX'>fX</a>, -<a href='#SkIPoint_fY'>fY</a>)
### Example
<div><fiddle-embed name="@IPoint_minus_operator">
#### Example Output
~~~~
pt: 0, 0 negate: 0, 0
pt: -1, -2 negate: 1, 2
pt: 2147483647, -2147483647 negate: -2147483647, 2147483647
pt: -2147483648, -2147483648 negate: -2147483648, -2147483648
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_subtract_operator'>operator-</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b) <a href='#SkIPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v) <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 <a href='#SkIPoint_addto_operator'>operator+=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v)
</pre>
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> to add</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@IPoint_addto_operator"></fiddle-embed></div>
### See Also
<a href='#SkIPoint_add_operator'>operator+</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& b) <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::operator+=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='#SkIPoint_addto_operator_v'>v</a>)
<a name='SkIPoint_subtractfrom_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkIPoint_subtractfrom_operator'>operator-=</a>(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> 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> to subtract</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@IPoint_subtractfrom_operator"></fiddle-embed></div>
### See Also
<a href='#SkIPoint_subtract_operator'>operator-</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b) <a href='SkPoint_Reference#SkPoint'>SkPoint</a>::operator-=(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& <a href='#SkIPoint_subtractfrom_operator_v'>v</a>)
<a name='SkIPoint_equals'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool equals(int32_t x, int32_t y)const
</pre>
Returns true if <a href='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
<table> <tr> <td><a name='SkIPoint_equals_x'><code><strong>x</strong></code></a></td>
<td>value compared with <a href='#SkIPoint_fX'>fX</a></td>
</tr>
<tr> <td><a name='SkIPoint_equals_y'><code><strong>y</strong></code></a></td>
<td>value compared with <a href='#SkIPoint_fY'>fY</a></td>
</tr>
</table>
### Return Value
true if <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> equals (<a href='#SkIPoint_equals_x'>x</a>, <a href='#SkIPoint_equals_y'>y</a>)
### Example
<div><fiddle-embed name="@IPoint_equals">
#### Example Output
~~~~
pt: 0, 0 == pt
pt: -1, -2 == pt
pt: 2147483647, -1 == pt
pt: -2147483648, -1 == pt
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_equal_operator'>operator==</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& a, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& b)
<a name='SkIPoint_equal_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkIPoint_equal_operator'>operator==</a>(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> 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> 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> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkIPoint_equal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> == <a href='#SkIPoint_equal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
### Example
<div><fiddle-embed name="@IPoint_equal_operator">
#### Example Output
~~~~
pt: 0, 0 == pt
pt: -1, -2 == pt
pt: 2147483647, -1 == pt
pt: -2147483648, -1 == pt
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_equals'>equals()</a> <a href='#SkIPoint_notequal_operator'>operator!=</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='#SkIPoint_equal_operator_a'>a</a>, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='#SkIPoint_equal_operator_b'>b</a>)
<a name='SkIPoint_notequal_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkIPoint_notequal_operator'>operator!=</a>(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> 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> 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> to compare</td>
</tr>
</table>
### Return Value
true if <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fX'>fX</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fX'>fX</a> or <a href='#SkIPoint_notequal_operator_a'>a</a>.<a href='#SkIPoint_fY'>fY</a> != <a href='#SkIPoint_notequal_operator_b'>b</a>.<a href='#SkIPoint_fY'>fY</a>
### Example
<div><fiddle-embed name="@IPoint_notequal_operator">
#### Example Output
~~~~
pt: 0, 0 == pt
pt: -1, -2 == pt
pt: 2147483647, -1 == pt
pt: -2147483648, -1 == pt
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkIPoint_equal_operator'>operator==</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='#SkIPoint_notequal_operator_a'>a</a>, const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& <a href='#SkIPoint_notequal_operator_b'>b</a>) <a href='#SkIPoint_equals'>equals()</a>
<a name='SkIPoint_subtract_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIVector'>SkIVector</a> <a href='#SkIPoint_subtract_operator'>operator-</a>(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> 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> 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> 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> to subtract</td>
</tr>
</table>
### Return Value
<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
<div><fiddle-embed name="@IPoint_subtract_operator"></fiddle-embed></div>
### See Also
<a href='#SkIPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v)
<a name='SkIPoint_add_operator'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='#SkIPoint_add_operator'>operator+</a>(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> 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> 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> 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> or <a href='#IPoint_IVector'>IVector</a> to add</td>
</tr>
</table>
### Return Value
<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
<div><fiddle-embed name="@IPoint_add_operator"></fiddle-embed></div>
### See Also
<a href='#SkIPoint_addto_operator'>operator+=</a>(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& v)
<a name='IVector'></a>
<a name='SkIVector'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
typedef <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>;
</pre>
<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

@ -1,477 +0,0 @@
SkPicture Reference
===
<a name='SkPicture'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkPicture_Reference#SkPicture'>SkPicture</a> : public <a href='undocumented#SkRefCnt'>SkRefCnt</a> {
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);
virtual void <a href='#SkPicture_playback'>playback</a>(<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> 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> 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> 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>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='#SkPicture_AbortCallback'>AbortCallback</a> {
public:
<a href='#SkPicture_AbortCallback_AbortCallback'>AbortCallback()</a> {}
virtual <a href='#SkPicture_AbortCallback_destructor'>~AbortCallback()</a> {}
virtual bool <a href='#SkPicture_AbortCallback_abort'>abort()</a> = 0;
};
</pre>
<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.
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>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='#SkPicture_AbortCallback_AbortCallback'>AbortCallback()</a>
</pre>
Has no effect.
### Return Value
abstract class cannot be instantiated
### See Also
<a href='#SkPicture_playback'>playback</a>
<a name='SkPicture_AbortCallback_destructor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual <a href='#SkPicture_AbortCallback_destructor'>~AbortCallback()</a>
</pre>
Has no effect.
### See Also
<a href='#SkPicture_playback'>playback</a>
<a name='SkPicture_AbortCallback_abort'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual bool <a href='#SkPicture_AbortCallback_abort'>abort()</a> = 0
</pre>
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> 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>, 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
true to stop playback
### See Also
<a href='#SkPicture_playback'>playback</a>
### Example
<div><fiddle-embed name="@Picture_AbortCallback_abort"><div>JustOneDraw allows the black rectangle to draw but stops playback before the
white rectangle appears.
</div></fiddle-embed></div>
<a name='SkPicture_MakeFromStream'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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> 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> 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> byte length, and user context.
### Parameters
<table> <tr> <td><a name='SkPicture_MakeFromStream_stream'><code><strong>stream</strong></code></a></td>
<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> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromStream_stream'>stream</a> <a href='undocumented#Data'>data</a>
### Example
<div><fiddle-embed name="@Picture_MakeFromStream"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromData'>MakeFromData</a> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
<a name='SkPicture_MakeFromData'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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> 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> 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> byte length, and user context.
### Parameters
<table> <tr> <td><a name='SkPicture_MakeFromData_data'><code><strong>data</strong></code></a></td>
<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> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromData_data'>data</a>
### Example
<div><fiddle-embed name="@Picture_MakeFromData"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
<a name='SkPicture_MakeFromData_2'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='undocumented#sk_sp'>sk_sp</a>&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
<table> <tr> <td><a name='SkPicture_MakeFromData_2_data'><code><strong>data</strong></code></a></td>
<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> 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> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<a href='SkPicture_Reference#SkPicture'>SkPicture</a> constructed from <a href='#SkPicture_MakeFromData_2_data'>data</a>
### Example
<div><fiddle-embed name="@Picture_008"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
<a name='SkPicture_playback'></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>* callback = nullptr) const = 0
</pre>
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> 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
<table> <tr> <td><a name='SkPicture_playback_canvas'><code><strong>canvas</strong></code></a></td>
<td>receiver of drawing commands</td>
</tr>
<tr> <td><a name='SkPicture_playback_callback'><code><strong>callback</strong></code></a></td>
<td>allows interruption of playback</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@Picture_playback"></fiddle-embed></div>
### See Also
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawPicture'>drawPicture</a>
<a name='SkPicture_cullRect'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() const = 0
</pre>
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> is free to discard recorded drawing commands that fall outside
cull.
### Return Value
bounds passed when <a href='SkPicture_Reference#SkPicture'>SkPicture</a> was created
### Example
<div><fiddle-embed name="@Picture_cullRect"><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
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_clipRect'>clipRect</a>
<a name='SkPicture_uniqueID'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
uint32_t <a href='#SkPicture_uniqueID'>uniqueID</a>()const
</pre>
Returns a non-zero value unique among <a href='SkPicture_Reference#SkPicture'>SkPicture</a> in Skia process.
### Return Value
identifier for <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
### Example
<div><fiddle-embed name="@Picture_uniqueID">
#### Example Output
~~~~
empty picture id = 1
placeholder id = 2
~~~~
</fiddle-embed></div>
### See Also
<a href='undocumented#SkRefCnt'>SkRefCnt</a>
<a name='SkPicture_serialize'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> 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> 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> 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> encoders; may be nullptr</td>
</tr>
</table>
### Return Value
storage containing serialized <a href='SkPicture_Reference#SkPicture'>SkPicture</a>
### Example
<div><fiddle-embed name="@Picture_serialize"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromData'>MakeFromData</a> <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
<a name='SkPicture_serialize_2'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPicture_serialize'>serialize</a>(<a href='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> 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> 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> and user context.
### Parameters
<table> <tr> <td><a name='SkPicture_serialize_2_stream'><code><strong>stream</strong></code></a></td>
<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> encoders; may be nullptr</td>
</tr>
</table>
### Example
<div><fiddle-embed name="@Picture_008"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='SkWStream_Reference#SkWStream'>SkWStream</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
<a name='SkPicture_MakePlaceholder'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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>. 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> draw <a href='SkStream_Reference#Stream'>stream</a>.
### Parameters
<table> <tr> <td><a name='SkPicture_MakePlaceholder_cull'><code><strong>cull</strong></code></a></td>
<td>placeholder dimensions</td>
</tr>
</table>
### Return Value
placeholder with unique identifier
### Example
<div><fiddle-embed name="@Picture_MakePlaceholder"></fiddle-embed></div>
### See Also
<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='#SkPicture_MakeFromData'>MakeFromData</a> <a href='#SkPicture_uniqueID'>uniqueID</a>
<a name='SkPicture_approximateOpCount'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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>. 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.
### Return Value
approximate operation count
### Example
<div><fiddle-embed name="4b3d879118ef770d1f11a23c6493b2c4"></fiddle-embed></div>
### See Also
<a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>
<a name='SkPicture_approximateBytesUsed'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() const = 0
</pre>
Returns the approximate byte <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
approximate <a href='undocumented#Size'>size</a>
### Example
<div><fiddle-embed name="ececbda21218bd732394a305dba393a2"></fiddle-embed></div>
### See Also
<a href='#SkPicture_approximateOpCount'>approximateOpCount</a>

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

@ -1,323 +0,0 @@
SkTextBlobBuilder Reference
===
<a name='SkTextBlobBuilder'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> {
<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>;
<a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a>;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> <a href='#SkTextBlobBuilder_make'>make()</a>;
const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>, int count,
const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr);
};
</pre>
Helper class for constructing <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>.
<a name='SkTextBlobBuilder_RunBuffer'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
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>;
char* <a href='#SkTextBlobBuilder_RunBuffer_utf8text'>utf8text</a>;
uint32_t* <a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a>;
};
</pre>
<a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a> supplies storage for <a href='undocumented#Glyph'>Glyphs</a> and positions within a run.
A run is a sequence of <a href='undocumented#Glyph'>Glyphs</a> sharing <a href='#Font_Metrics'>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='#Font_Metrics'>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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>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> 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> 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> 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> should not be read or written.
</td>
</tr>
</table>
### See Also
<a href='#SkTextBlobBuilder_allocRun'>allocRun</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>
<a name='SkTextBlobBuilder_empty_constructor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
</pre>
Constructs empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>. By default, <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a> has no runs.
### Return Value
empty <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>
### Example
<div><fiddle-embed name="@TextBlobBuilder_empty_constructor">
#### Example Output
~~~~
blob equals nullptr
~~~~
</fiddle-embed></div>
### See Also
<a href='#SkTextBlobBuilder_make'>make</a> <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a>
<a name='SkTextBlobBuilder_destructor'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='#SkTextBlobBuilder_destructor'>~SkTextBlobBuilder()</a>
</pre>
Deletes <a href='undocumented#Data'>data</a> allocated internally by <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>.
### See Also
<a href='#SkTextBlobBuilder_empty_constructor'>SkTextBlobBuilder()</a>
<a name='SkTextBlobBuilder_make'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> 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> 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> or nullptr
### Example
<div><fiddle-embed name="34c37c0212cc0aef670d96945d08fe24">
#### Example Output
~~~~
blob equals nullptr
blob does not equal nullptr
blob equals nullptr
~~~~
</fiddle-embed></div>
### See Also
<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>::<a href='#SkTextBlob_MakeFromText'>MakeFromText</a>
<a name='SkTextBlobBuilder_allocRun'></a>
---
<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>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#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>. 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>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRun_font'>font</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='undocumented#Font_Metrics'>font metrics</a> to
determine their relative placement.
<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='SkFont_Reference#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>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRun_x'><code><strong>x</strong></code></a></td>
<td>horizontal offset within the blob</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRun_y'><code><strong>y</strong></code></a></td>
<td>vertical offset within the blob</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRun_bounds'><code><strong>bounds</strong></code></a></td>
<td>optional run bounding box</td>
</tr>
</table>
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> buffer
### Example
<div><fiddle-embed name="f0e584aec20eaee7a5bfed62aa885eee"></fiddle-embed></div>
### See Also
<a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>
<a name='SkTextBlobBuilder_allocRunPosH'></a>
---
<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>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#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> 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>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPosH_font'>font</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> 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='SkFont_Reference#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>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRunPosH_y'><code><strong>y</strong></code></a></td>
<td>vertical offset within the blob</td>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRunPosH_bounds'><code><strong>bounds</strong></code></a></td>
<td>optional run bounding box</td>
</tr>
</table>
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> buffer and x-axis position buffer
### Example
<div><fiddle-embed name="c77ac50f506106fdfef94d20bc1a6934"></fiddle-embed></div>
### See Also
<a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>
<a name='SkTextBlobBuilder_allocRunPos'></a>
---
<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>(const <a href='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#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> 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>, and <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>::<a href='#SkTextBlobBuilder_RunBuffer_clusters'>clusters</a> should be ignored.
<a href='undocumented#Glyph'>Glyphs</a> share metrics in <a href='#SkTextBlobBuilder_allocRunPos_font'>font</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> 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='SkFont_Reference#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>
</tr>
<tr> <td><a name='SkTextBlobBuilder_allocRunPos_bounds'><code><strong>bounds</strong></code></a></td>
<td>optional run bounding box</td>
</tr>
</table>
### Return Value
writable <a href='undocumented#Glyph'>glyph</a> buffer and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> buffer
### Example
<div><fiddle-embed name="da4fcb4a972b500996be9aff6c6c40e1"></fiddle-embed></div>
### See Also
<a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>

View File

@ -1,336 +0,0 @@
SkTextBlob Reference
===
<a name='SkTextBlob'></a>
---
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
class <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a> final : public <a href='undocumented#SkNVRefCnt'>SkNVRefCnt</a><<a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>> {
const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkTextBlob_bounds'>bounds()</a> const;
uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>() const;
int <a href='#SkTextBlob_getIntercepts'>getIntercepts</a>(const <a href='undocumented#SkScalar'>SkScalar</a> bounds[2], <a href='undocumented#SkScalar'>SkScalar</a> intervals[],
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a> = nullptr) 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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>,
<a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>,
<a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</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> 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>const
</pre>
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
conservative bounding box
### Example
<div><fiddle-embed name="fb8b2502bbe52d2029aecdf569dd9fdb"></fiddle-embed></div>
### See Also
<a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_getBounds'>getBounds</a>
<a name='SkTextBlob_uniqueID'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
uint32_t <a href='#SkTextBlob_uniqueID'>uniqueID</a>()const
</pre>
Returns a non-zero value unique among all <a href='undocumented#Text'>text</a> blobs.
### Return Value
identifier for <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
### Example
<div><fiddle-embed name="6e12cceca981ddabc0fc18c380543f34"></fiddle-embed></div>
### See Also
<a href='undocumented#SkRefCnt'>SkRefCnt</a>
<a name='Text_Intercepts'></a>
<a href='#Text_Blob_Text_Intercepts'>Text_Intercepts</a> describe the intersection of drawn <a href='undocumented#Text'>text</a> <a href='undocumented#Glyph'>Glyphs</a> with a pair
of <a href='undocumented#Line'>lines</a> parallel to the <a href='undocumented#Text'>text</a> advance. <a href='#Text_Blob_Text_Intercepts'>Text_Intercepts</a> permits creating a
underline that skips Descenders.
<a name='SkTextBlob_getIntercepts'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int <a href='#SkTextBlob_getIntercepts'>getIntercepts</a>(const <a href='undocumented#SkScalar'>SkScalar</a> bounds[2], <a href='undocumented#SkScalar'>SkScalar</a> intervals[], const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a> = nullptr) const;
</pre>
Returns the number of <a href='#SkTextBlob_getIntercepts_intervals'>intervals</a> that intersect <a href='#SkTextBlob_getIntercepts_bounds'>bounds</a>.
<a href='#SkTextBlob_getIntercepts_bounds'>bounds</a> describes a pair of <a href='undocumented#Line'>lines</a> parallel to the <a href='undocumented#Text'>text</a> advance.
The return count is zero or a multiple of two, and is at most twice the number of <a href='undocumented#Glyph'>glyphs</a> in
the the blob.
Pass nullptr for <a href='#SkTextBlob_getIntercepts_intervals'>intervals</a> to determine the <a href='undocumented#Size'>size</a> of the interval array.
Runs within the blob that contain <a href='undocumented#SkRSXform'>SkRSXform</a> are ignored when computing intercepts.
### Parameters
<table> <tr> <td><a name='SkTextBlob_getIntercepts_bounds'><code><strong>bounds</strong></code></a></td>
<td>lower and upper <a href='undocumented#Line'>line</a> parallel to the advance</td>
</tr>
<tr> <td><a name='SkTextBlob_getIntercepts_intervals'><code><strong>intervals</strong></code></a></td>
<td>returned intersections; may be nullptr</td>
</tr>
<tr> <td><a name='SkTextBlob_getIntercepts_paint'><code><strong>paint</strong></code></a></td>
<td>specifies stroking, <a href='undocumented#SkPathEffect'>SkPathEffect</a> that affects the result; may be nullptr</td>
</tr>
</table>
### Return Value
number of intersections; may be zero
### Example
<div><fiddle-embed name="e9d4eb8ece521b1329e7433d4b243fdf"></fiddle-embed></div>
<a name='SkTextBlob_MakeFromText'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>,
<a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</a>)
</pre>
Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromText_text'>text</a> meaning depends on <a href='#Text_Encoding'>Text_Encoding</a>;
by default, <a href='#SkTextBlob_MakeFromText_text'>text</a> is encoded as UTF-8.
<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='#Font_Size'>Font_Size</a>, <a href='#Font_Scale_X'>Font_Scale_X</a>,
<a href='#Font_Skew_X'>Font_Skew_X</a>, <a href='#Font_Hinting'>Font_Hinting</a>, <a href='#Paint_Anti_Alias'>Paint_Anti_Alias</a>, <a href='#Font_Embolden'>Font_Embolden</a>, <a href='#Font_Force_Hinting'>Font_Force_Hinting</a>,
<a href='#Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Font_Hinting_Spacing'>Font_Hinting_Spacing</a>, <a href='#Font_Anti_Alias'>Font_Anti_Alias</a>, <a href='#Font_Linear'>Font_Linear</a>,
and <a href='#Font_Subpixel'>Font_Subpixel</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> 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> 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>, 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#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</a>, <a href='undocumented#SkTextEncoding::kUTF16'>SkTextEncoding::kUTF16</a>,
<a href='undocumented#SkTextEncoding::kUTF32'>SkTextEncoding::kUTF32</a>, <a href='undocumented#SkTextEncoding::kGlyphID'>SkTextEncoding::kGlyphID</a>
</td>
</tr>
</table>
### Return Value
<a href='#Text_Blob'>Text_Blob</a> constructed from one run
### Example
<div><fiddle-embed name="bec2252bc36dc8fd023015629d60c405"></fiddle-embed></div>
### See Also
<a href='#SkTextBlob_MakeFromString'>MakeFromString</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>
<a name='SkTextBlob_MakeFromString'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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='SkFont_Reference#SkFont'>SkFont</a>& <a href='SkFont_Reference#Font'>font</a>,
<a href='undocumented#SkTextEncoding'>SkTextEncoding</a> encoding = <a href='undocumented#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</a>)
</pre>
Creates <a href='#Text_Blob'>Text_Blob</a> with a single run. <a href='#SkTextBlob_MakeFromString_string'>string</a> meaning depends on <a href='#Text_Encoding'>Text_Encoding</a>;
by default, <a href='#SkTextBlob_MakeFromString_string'>string</a> is encoded as UTF-8.
<a href='#SkTextBlob_MakeFromString_font'>font</a> contains <a href='#Font_Metrics'>Font_Metrics</a> used to define the run <a href='undocumented#Text'>text</a>: <a href='undocumented#Typeface'>Typeface</a>, <a href='#Font_Size'>Font_Size</a>, <a href='#Font_Scale_X'>Font_Scale_X</a>,
<a href='#Font_Skew_X'>Font_Skew_X</a>, <a href='#Font_Hinting'>Font_Hinting</a>, <a href='#Paint_Anti_Alias'>Paint_Anti_Alias</a>, <a href='#Font_Embolden'>Font_Embolden</a>, <a href='#Font_Force_Hinting'>Font_Force_Hinting</a>,
<a href='#Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a>, <a href='#Font_Hinting_Spacing'>Font_Hinting_Spacing</a>, <a href='#Font_Anti_Alias'>Font_Anti_Alias</a>, <a href='#Font_Linear'>Font_Linear</a>,
and <a href='#Font_Subpixel'>Font_Subpixel</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> 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>, 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#SkTextEncoding::kUTF8'>SkTextEncoding::kUTF8</a>, <a href='undocumented#SkTextEncoding::kUTF16'>SkTextEncoding::kUTF16</a>,
<a href='undocumented#SkTextEncoding::kUTF32'>SkTextEncoding::kUTF32</a>, <a href='undocumented#SkTextEncoding::kGlyphID'>SkTextEncoding::kGlyphID</a>
</td>
</tr>
</table>
### Return Value
<a href='#Text_Blob'>Text_Blob</a> constructed from one run
### Example
<div><fiddle-embed name="a5af182e793eed3f2bb3b0efc2cf4852"></fiddle-embed></div>
### See Also
<a href='#SkTextBlob_MakeFromText'>MakeFromText</a> <a href='SkTextBlobBuilder_Reference#SkTextBlobBuilder'>SkTextBlobBuilder</a>
<a name='SkTextBlob_serialize'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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> 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> 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> 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> 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> of storage</td>
</tr>
</table>
### Return Value
bytes written, or zero if required storage is larger than <a href='#SkTextBlob_serialize_memory_size'>memory_size</a>
### Example
<div><fiddle-embed name="90ce8c327d407b1faac73baa2ebd0378"></fiddle-embed></div>
### See Also
<a href='#SkTextBlob_Deserialize'>Deserialize</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
<a name='SkTextBlob_serialize_2'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<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> 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> 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> 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> encoders; may be nullptr</td>
</tr>
</table>
### Return Value
storage containing serialized <a href='SkTextBlob_Reference#SkTextBlob'>SkTextBlob</a>
### Example
<div><fiddle-embed name="@TextBlob_serialize_2"></fiddle-embed></div>
### See Also
<a href='#SkTextBlob_Deserialize'>Deserialize</a> <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
<a name='SkTextBlob_Deserialize'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
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> 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> 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> byte length, and user context.
### Parameters
<table> <tr> <td><a name='SkTextBlob_Deserialize_data'><code><strong>data</strong></code></a></td>
<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> 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> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
<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> "Hacker" replaces "World!", but does not update its metrics.
When drawn, "Hacker" uses the spacing computed for "World!".
</div></fiddle-embed></div>
### See Also
<a href='#SkTextBlob_serialize'>serialize</a> <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>

View File

@ -1,949 +0,0 @@
undocumented
===
<a name='SkBBHFactory'></a>
---
<a name='GrBackendSemaphore'></a>
---
<a name='SkClipOp'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkClipOp_kDifference'><code>SkClipOp::kDifference</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkClipOp_kIntersect'><code>SkClipOp::kIntersect</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkColorFilter'></a>
---
<a name='SkColorSpace'></a>
---
<a name='SkColorSpace_MakeSRGBLinear'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='#sk_sp'>sk sp</a>&lt;<a href='#SkColorSpace'>SkColorSpace</a>&gt; <a href='#SkColorSpace_MakeSRGBLinear'>MakeSRGBLinear</a>()
</pre>
<a name='SkColorSpace_gammaCloseToSRGB'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkColorSpace_gammaCloseToSRGB'>gammaCloseToSRGB</a>() const
</pre>
<a name='SkColorSpace_Equals'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static bool <a href='#SkColorSpace_Equals'>Equals</a>(const <a href='#SkColorSpace'>SkColorSpace</a>* src, const <a href='#SkColorSpace'>SkColorSpace</a>* dst)
</pre>
<a name='SkCreateColorSpaceXformCanvas'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
std::unique_ptr&lt;<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>&gt; SK_API <a href='#SkCreateColorSpaceXformCanvas'>SkCreateColorSpaceXformCanvas</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* target,
<a href='#sk_sp'>sk sp</a>&lt;<a href='#SkColorSpace'>SkColorSpace</a>&gt; targetCS)
</pre>
<a name='SkData'></a>
---
<a name='DebugCanvas'></a>
---
<a name='SkDebugf'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
SK_API void <a href='#SkDebugf'>SkDebugf</a>(const char format[], ...)
</pre>
<a name='SkDeferredDisplayList'></a>
---
<a name='Recorder'></a>
<a name='SkDeferredDisplayListRecorder'></a>
---
<a name='SkDeserialProcs'></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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkDeserialPictureProc</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkDeserialProcs_fPictureProc'><code>fPictureProc</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>void*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkDeserialProcs_fPictureCtx'><code>fPictureCtx</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkDeserialTypefaceProc</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkDeserialProcs_fTypefaceProc'><code>fTypefaceProc</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>void*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkDeserialProcs_fTypefaceCtx'><code>fTypefaceCtx</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkBaseDevice'></a>
---
<a name='SkDocument'></a>
---
<a name='SkDocument_beginPage'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='#SkDocument_beginPage'>beginPage</a>(<a href='#SkScalar'>SkScalar</a> width, <a href='#SkScalar'>SkScalar</a> height, const <a href='SkRect_Reference#SkRect'>SkRect</a>* content = NULL)
</pre>
<a name='PDF'></a>
<a name='SkDrawLooper'></a>
---
<a name='SkDrawable'></a>
---
<a name='SkDrawable_draw'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkDrawable_draw'>draw</a>(<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>*, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* = NULL)
</pre>
<a name='SkFilterQuality'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kNone_SkFilterQuality'><code>kNone_SkFilterQuality</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kLow_SkFilterQuality'><code>kLow_SkFilterQuality</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kMedium_SkFilterQuality'><code>kMedium_SkFilterQuality</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kHigh_SkFilterQuality'><code>kHigh_SkFilterQuality</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='Nearest_Neighbor'></a>
<a name='Bilerp'></a>
<a name='MipMap'></a>
<a name='BiCubic'></a>
<a name='Advance'></a>
<a name='Engine'></a>
<a name='SkTextEncoding'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextEncoding::kUTF8'><code>SkTextEncoding::kUTF8</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextEncoding::kUTF16'><code>SkTextEncoding::kUTF16</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextEncoding::kUTF32'><code>SkTextEncoding::kUTF32</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkTextEncoding::kGlyphID'><code>SkTextEncoding::kGlyphID</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkFont'></a>
---
<a name='SkFontHinting'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontHinting::kNone'><code>SkFontHinting::kNone</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontHinting::kSlight'><code>SkFontHinting::kSlight</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontHinting::kNormal'><code>SkFontHinting::kNormal</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontHinting::kFull'><code>SkFontHinting::kFull</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkFontMetrics'></a>
---
<a href='#SkFontMetrics'>SkFontMetrics</a> is filled out by <a href='SkPaint_Reference#SkPaint_getFontMetrics'>SkPaint::getFontMetrics</a>. <a href='#SkFontMetrics'>SkFontMetrics</a> contents
reflect the values
computed by <a href='#Font_Manager'>Font Manager</a> using <a href='#Typeface'>Typeface</a>. Values are set to zero if they are
not available.
All vertical values are relative to the baseline, on a y-axis pointing down.
Zero is on the baseline, negative values are above the baseline, and positive
values are below the baseline.
<a href='#SkFontMetrics_fUnderlineThickness'>fUnderlineThickness</a> and <a href='#SkFontMetrics_fUnderlinePosition'>fUnderlinePosition</a> have a bit set in <a href='#SkFontMetrics_fFlags'>fFlags</a> if their values
are valid, since their value may be zero.
<a href='#SkFontMetrics_fStrikeoutThickness'>fStrikeoutThickness</a> and <a href='#SkFontMetrics_fStrikeoutPosition'>fStrikeoutPosition</a> have a bit set in <a href='#SkFontMetrics_fFlags'>fFlags</a> if their values
are valid, since their value may be zero.
<a name='SkFontMetrics_FontMetricsFlags'></a>
---
<a href='#SkFontMetrics_FontMetricsFlags'>FontMetricsFlags</a> are set in <a href='#SkFontMetrics_fFlags'>fFlags</a> when underline and strikeout metrics are valid;
the underline or strikeout metric may be valid and zero.
Fonts with embedded bitmaps may not have valid underline or strikeout metrics.
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontMetrics_kUnderlineThicknessIsValid_Flag'><code>SkFontMetrics::kUnderlineThicknessIsValid_Flag</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0001</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
set if fUnderlineThickness is valid</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontMetrics_kUnderlinePositionIsValid_Flag'><code>SkFontMetrics::kUnderlinePositionIsValid_Flag</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0002</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
set if fUnderlinePosition is valid</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontMetrics_kStrikeoutThicknessIsValid_Flag'><code>SkFontMetrics::kStrikeoutThicknessIsValid_Flag</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0004</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
set if fStrikeoutThickness is valid</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontMetrics_kStrikeoutPositionIsValid_Flag'><code>SkFontMetrics::kStrikeoutPositionIsValid_Flag</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0008</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
set if fStrikeoutPosition is valid</td>
</tr>
</table><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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>uint32_t</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkFontMetrics_fFlags'><code>fFlags</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
is set to FontMetricsFlags when metrics are valid</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='SkFontMetrics_fTop'><code>fTop</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Greatest extent above the baseline for any glyph.
Typically less than zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fAscent'><code>fAscent</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Recommended distance above the baseline to reserve for a line of text.
Typically less than zero.
</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='SkFontMetrics_fDescent'><code>fDescent</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Recommended distance below the baseline to reserve for a line of text.
Typically greater than zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fBottom'><code>fBottom</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Greatest extent below the baseline for any glyph.
Typically greater than zero.
</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='SkFontMetrics_fLeading'><code>fLeading</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Recommended distance to add between lines of text.
Typically greater than or equal to zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fAvgCharWidth'><code>fAvgCharWidth</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Average character width, if it is available.
Zero if no average width is stored in the font.
</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='SkFontMetrics_fMaxCharWidth'><code>fMaxCharWidth</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
maximum character width</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fXMin'><code>fXMin</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Minimum bounding box x-axis value for all <a href='#Glyph'>Glyphs</a>.
Typically less than zero.
</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='SkFontMetrics_fXMax'><code>fXMax</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Maximum bounding box x-axis value for all <a href='#Glyph'>Glyphs</a>.
Typically greater than zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fXHeight'><code>fXHeight</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
May be zero if no lower-case height is stored in the font.
</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='SkFontMetrics_fCapHeight'><code>fCapHeight</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
May be zero if no upper-case height is stored in the font.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fUnderlineThickness'><code>fUnderlineThickness</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
If the metric is valid, the <a href='#SkFontMetrics_kUnderlineThicknessIsValid_Flag'>kUnderlineThicknessIsValid Flag</a> is set in <a href='#SkFontMetrics_fFlags'>fFlags</a>.
If <a href='#SkFontMetrics_kUnderlineThicknessIsValid_Flag'>kUnderlineThicknessIsValid Flag</a> is clear, <a href='#SkFontMetrics_fUnderlineThickness'>fUnderlineThickness</a> is zero.
</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='SkFontMetrics_fUnderlinePosition'><code>fUnderlinePosition</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Position of the top of the underline stroke relative to the baseline.
Typically positive when valid.
If the metric is valid, the <a href='#SkFontMetrics_kUnderlinePositionIsValid_Flag'>kUnderlinePositionIsValid Flag</a> is set in <a href='#SkFontMetrics_fFlags'>fFlags</a>.
If <a href='#SkFontMetrics_kUnderlinePositionIsValid_Flag'>kUnderlinePositionIsValid Flag</a> is clear, <a href='#SkFontMetrics_fUnderlinePosition'>fUnderlinePosition</a> is zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<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='SkFontMetrics_fStrikeoutThickness'><code>fStrikeoutThickness</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
If the metric is valid, the <a href='#SkFontMetrics_kStrikeoutThicknessIsValid_Flag'>kStrikeoutThicknessIsValid Flag</a> is set in <a href='#SkFontMetrics_fFlags'>fFlags</a>.
If <a href='#SkFontMetrics_kStrikeoutThicknessIsValid_Flag'>kStrikeoutThicknessIsValid Flag</a> is clear, <a href='#SkFontMetrics_fStrikeoutThickness'>fStrikeoutThickness</a> is zero.
</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='SkFontMetrics_fStrikeoutPosition'><code>fStrikeoutPosition</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Position of the bottom of the strikeout stroke relative to the baseline.
Typically negative when valid.
If the metric is valid, the <a href='#SkFontMetrics_kStrikeoutPositionIsValid_Flag'>kStrikeoutPositionIsValid Flag</a> is set in <a href='#SkFontMetrics_fFlags'>fFlags</a>.
If <a href='#SkFontMetrics_kStrikeoutPositionIsValid_Flag'>kStrikeoutPositionIsValid Flag</a> is clear, <a href='#SkFontMetrics_fStrikeoutPosition'>fStrikeoutPosition</a> is zero.
</td>
</tr>
</table>
<a name='SkFontMetrics_hasUnderlineThickness'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkFontMetrics_hasUnderlineThickness'>hasUnderlineThickness</a>(<a href='#SkScalar'>SkScalar</a>* thickness) const
</pre>
<a name='SkFontMetrics_hasUnderlinePosition'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkFontMetrics_hasUnderlinePosition'>hasUnderlinePosition</a>(<a href='#SkScalar'>SkScalar</a>* position) const
</pre>
<a name='SkFontMetrics_hasStrikeoutThickness'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkFontMetrics_hasStrikeoutThickness'>hasStrikeoutThickness</a>(<a href='#SkScalar'>SkScalar</a>* thickness) const
</pre>
<a name='SkFontMetrics_hasStrikeoutPosition'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkFontMetrics_hasStrikeoutPosition'>hasStrikeoutPosition</a>(<a href='#SkScalar'>SkScalar</a>* position) const
</pre>
<a name='GrContext'></a>
---
<a name='GrContext_flush'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#GrContext_flush'>flush</a>()
</pre>
<a name='ID'></a>
<a name='ArcTo'></a>
<a name='SkISize'></a>
---
<a name='SkISize_width'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkISize_width'>width</a>() const
</pre>
<a name='SkISize_height'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkISize_height'>height</a>() const
</pre>
<a name='SkImageFilter'></a>
---
<a name='SkMaskFilter'></a>
---
<a name='SkMetaData'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaintDefaults_Hinting'><code>SkPaintDefaults_Hinting</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaintDefaults_TextSize'><code>SkPaintDefaults_TextSize</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaintDefaults_MiterLimit'><code>SkPaintDefaults_MiterLimit</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<a name='SkPathOp'></a>
---
</table>
<a name='Op'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool SK_API <a href='#Op'>Op</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& one, const <a href='SkPath_Reference#SkPath'>SkPath</a>& two, <a href='#SkPathOp'>SkPathOp</a> op, <a href='SkPath_Reference#SkPath'>SkPath</a>* result)
</pre>
<a name='SkPathEffect'></a>
---
<a name='SkPictureRecorder'></a>
---
<a name='SkPictureRecorder_beginRecording'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>* <a href='#SkPictureRecorder_beginRecording'>beginRecording</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& bounds, <a href='#SkBBHFactory'>SkBBHFactory</a>* bbhFactory = NULL,
uint32_t recordFlags = 0)
</pre>
<a name='Storage'></a>
<a name='SkPixelRef'></a>
---
<a name='SkPixelRef_width'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int <a href='#SkPixelRef_width'>width</a>() const
</pre>
<a name='SkPixelRef_height'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int <a href='#SkPixelRef_height'>height</a>() const
</pre>
<a name='SkPixelRef_isImmutable'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#SkPixelRef_isImmutable'>isImmutable</a>() const
</pre>
<a name='SkPixelRef_setImmutable'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
void <a href='#SkPixelRef_setImmutable'>setImmutable</a>()
</pre>
<a name='SkPoint3'></a>
---
<a name='Arct'></a>
<a name='SkRSXform'></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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRSXform_fSCos'><code>fSCos</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRSXform_fSSin'><code>fSSin</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRSXform_fTx'><code>fTx</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRSXform_fTy'><code>fTy</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkRasterHandleAllocator'></a>
---
<a name='SkRasterHandleAllocator_Handle'></a>
---
<a name='SkRasterHandleAllocator_Rec'></a>
---
<a name='SkRasterHandleAllocator_MakeCanvas'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static std::unique_ptr&lt;<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>&gt; <a href='#SkRasterHandleAllocator_MakeCanvas'>MakeCanvas</a>(std::unique_ptr&lt;<a href='#SkRasterHandleAllocator'>SkRasterHandleAllocator</a>&gt;,
const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>&, const <a href='#SkRasterHandleAllocator_Rec'>Rec</a>* rec = nullptr)
</pre>
<a name='SkRefCnt'></a>
---
<a name='GrBackendRenderTarget'></a>
---
<a name='GrBackendRenderTarget_isValid'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#GrBackendRenderTarget_isValid'>isValid</a>() const
</pre>
<a name='GrRenderTarget'></a>
---
<a name='Canvas'></a>
<a name='Arc'></a>
<a name='Sweep_Flag'></a>
<a name='SkScalar'></a>
---
<a name='SkSerialProcs'></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>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkSerialPictureProc</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSerialProcs_fPictureProc'><code>fPictureProc</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>void*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSerialProcs_fPictureCtx'><code>fPictureCtx</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkSerialTypefaceProc</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSerialProcs_fTypefaceProc'><code>fTypefaceProc</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>void*</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSerialProcs_fTypefaceCtx'><code>fTypefaceCtx</code></a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkShader'></a>
---
<a name='SkShader_TileMode'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkShader_kClamp_TileMode'><code>SkShader::kClamp_TileMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkShader_kRepeat_TileMode'><code>SkShader::kRepeat_TileMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkShader_kMirror_TileMode'><code>SkShader::kMirror_TileMode</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
<a name='SkShader_MakeBitmapShader'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='#sk_sp'>sk sp</a>&lt;<a href='#SkShader'>SkShader</a>&gt; <a href='#SkShader_MakeBitmapShader'>MakeBitmapShader</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src, <a href='#SkShader_TileMode'>TileMode</a> tmx, <a href='#SkShader_TileMode'>TileMode</a> tmy,
const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* localMatrix = nullptr)
</pre>
<a name='SkShader_MakeCompose'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
static <a href='#sk_sp'>sk sp</a>&lt;<a href='#SkShader'>SkShader</a>&gt; <a href='#SkShader_MakeCompose'>MakeCompose</a>(<a href='#sk_sp'>sk sp</a>&lt;<a href='#SkShader'>SkShader</a>&gt; dst, <a href='#sk_sp'>sk sp</a>&lt;<a href='#SkShader'>SkShader</a>&gt; src, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode,
float lerp = 1)
</pre>
<a name='SkSize'></a>
---
<a name='SkSize_width'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkSize_width'>width</a>() const
</pre>
<a name='SkSize_height'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
int32_t <a href='#SkSize_height'>height</a>() const
</pre>
<a name='sk_sp'></a>
---
<a name='SkStreamAsset'></a>
---
<a name='SkString'></a>
---
<a name='SkSurfaceCharacterization'></a>
---
<a name='SkSurfaceProps'></a>
---
<a name='Legacy_Font_Host'></a>
<a name='SkSurfaceProps_InitType'></a>
---
### Constants
<table style='border-collapse: collapse; width: 62.5em'>
<tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSurfaceProps_kLegacyFontHost_InitType'><code>SkSurfaceProps::kLegacyFontHost_InitType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
</td>
</tr>
</table>
#
Topic
<a name='GrBackendTexture'></a>
---
<a name='GrBackendTexture_isValid'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
bool <a href='#GrBackendTexture_isValid'>isValid</a>() const
</pre>
<a name='ID'></a>
<a name='SkFontID'></a>
---
<a name='SkTypeface'></a>
---
<a name='SkTypeface_uniqueID'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
<a href='#SkFontID'>SkFontID</a> <a href='#SkTypeface_uniqueID'>uniqueID</a>() const
</pre>
<a name='SkVertices'></a>
---
<a name='SkVertices_Bone'></a>
---
<a name='Colors'></a>
<a name='Texs'></a>
<a name='SkXfermodeImageFilter'></a>
---
<a name='SkYUVAIndex'></a>
---