Home | History | Annotate | Download | only in api
      1 SkPoint Reference
      2 ===
      3 
      4 
      5 <a name='SkPoint'></a>
      6 
      7 ---
      8 
      9 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
     10 struct <a href='SkPoint_Reference#SkPoint'>SkPoint</a> {
     11 
     12     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_fX'>fX</a>;
     13     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_fY'>fY</a>;
     14 
     15     static constexpr <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
     16     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a> const;
     17     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a> const;
     18     bool <a href='#SkPoint_isZero'>isZero</a>() const;
     19     void <a href='#SkPoint_set'>set</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
     20     void <a href='#SkPoint_iset'>iset</a>(int32_t x, int32_t y);
     21     void <a href='#SkPoint_iset'>iset</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& p);
     22     void <a href='#SkPoint_setAbs'>setAbs</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& pt);
     23     static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& offset);
     24     static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, <a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy);
     25     void <a href='#SkPoint_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy);
     26     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a> const;
     27     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() const;
     28     bool <a href='#SkPoint_normalize'>normalize()</a>;
     29     bool <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
     30     bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> length);
     31     bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, <a href='undocumented#SkScalar'>SkScalar</a> length);
     32     void <a href='#SkPoint_scale'>scale</a>(<a href='undocumented#SkScalar'>SkScalar</a> scale, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* dst) const;
     33     void <a href='#SkPoint_scale'>scale</a>(<a href='undocumented#SkScalar'>SkScalar</a> value);
     34     void <a href='#SkPoint_negate'>negate()</a>;
     35     <a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator-() const;
     36     void <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v);
     37     void <a href='#SkPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v);
     38     <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_multiply_operator'>operator*</a>(<a href='undocumented#SkScalar'>SkScalar</a> scale) const;
     39     <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_multiplyby_operator'>operator*=</a>(<a href='undocumented#SkScalar'>SkScalar</a> scale);
     40     bool <a href='#SkPoint_isFinite'>isFinite</a>() const;
     41     bool <a href='#SkPoint_equals'>equals</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y) const;
     42     friend bool <a href='#SkPoint_equal_operator'>operator==</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
     43     friend bool <a href='#SkPoint_notequal_operator'>operator!=</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
     44     friend <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkPoint_subtract_operator'>operator-</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
     45     friend <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_add_operator'>operator+</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
     46     static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y);
     47     static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* vec);
     48     static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b);
     49     static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
     50     static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b);
     51     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_cross'>cross</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const;
     52     <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_dot'>dot</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec) const;
     53 };
     54 
     55 </pre>
     56 
     57 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> holds two 32-bit floating <a href='SkPoint_Reference#Point'>point</a> coordinates.<table style='border-collapse: collapse; width: 62.5em'>
     58 
     59   <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
     60 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
     61 <th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
     62   <tr style='background-color: #f0f0f0; '>
     63     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
     64     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPoint_fX'><code>fX</code></a></td>
     65     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     66 x-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> and <a href='SkPoint_Reference#Vector'>Vector</a>. May contain any value, including
     67 infinities and NaN.
     68 </td>
     69   </tr>
     70   <tr>
     71     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkScalar</td>
     72     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPoint_fY'><code>fY</code></a></td>
     73     <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
     74 y-axis value used by both <a href='SkPoint_Reference#Point'>Point</a> and <a href='SkPoint_Reference#Vector'>Vector</a>. May contain any value, including
     75 infinities and NaN.
     76 </td>
     77   </tr>
     78 </table>
     79 
     80 <a name='SkPoint_Make'></a>
     81 
     82 ---
     83 
     84 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
     85 static constexpr <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_Make'>Make</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
     86 </pre>
     87 
     88 Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_Make_x'>x</a>, <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_Make_y'>y</a>. Used both to set <a href='SkPoint_Reference#SkPoint'>SkPoint</a> and <a href='SkPoint_Reference#Vector'>vector</a>.
     89 
     90 ### Parameters
     91 
     92 <table>  <tr>    <td><a name='SkPoint_Make_x'><code><strong>x</strong></code></a></td>
     93     <td><a href='undocumented#SkScalar'>SkScalar</a> x-axis value of constructed <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a></td>
     94   </tr>
     95   <tr>    <td><a name='SkPoint_Make_y'><code><strong>y</strong></code></a></td>
     96     <td><a href='undocumented#SkScalar'>SkScalar</a> y-axis value of constructed <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a></td>
     97   </tr>
     98 </table>
     99 
    100 ### Return Value
    101 
    102 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> (<a href='#SkPoint_Make_x'>x</a>, <a href='#SkPoint_Make_y'>y</a>)
    103 
    104 ### Example
    105 
    106 <div><fiddle-embed name="d266e70977847001f7c42f8a2513bee7">
    107 
    108 #### Example Output
    109 
    110 ~~~~
    111 all equal
    112 ~~~~
    113 
    114 </fiddle-embed></div>
    115 
    116 ### See Also
    117 
    118 <a href='#SkPoint_set'>set()</a> <a href='#SkPoint_iset'>iset()</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_Make'>Make</a>
    119 
    120 <a name='Property'></a>
    121 
    122 <a name='SkPoint_x'></a>
    123 
    124 ---
    125 
    126 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    127 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_x'>x()</a>const
    128 </pre>
    129 
    130 Returns x-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a>.
    131 
    132 ### Return Value
    133 
    134 <a href='#SkPoint_fX'>fX</a>
    135 
    136 ### Example
    137 
    138 <div><fiddle-embed name="9f3fe446b800ae1d940785d438634941">
    139 
    140 #### Example Output
    141 
    142 ~~~~
    143 pt1.fX == pt1.x()
    144 ~~~~
    145 
    146 </fiddle-embed></div>
    147 
    148 ### See Also
    149 
    150 <a href='#SkPoint_y'>y()</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_x'>x()</a>
    151 
    152 <a name='SkPoint_y'></a>
    153 
    154 ---
    155 
    156 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    157 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_y'>y()</a>const
    158 </pre>
    159 
    160 Returns y-axis value of <a href='SkPoint_Reference#SkPoint'>SkPoint</a> or <a href='SkPoint_Reference#Vector'>vector</a>.
    161 
    162 ### Return Value
    163 
    164 <a href='#SkPoint_fY'>fY</a>
    165 
    166 ### Example
    167 
    168 <div><fiddle-embed name="4c962850c2dbea4d2325df469400680e">
    169 
    170 #### Example Output
    171 
    172 ~~~~
    173 pt1.fY == pt1.y()
    174 ~~~~
    175 
    176 </fiddle-embed></div>
    177 
    178 ### See Also
    179 
    180 <a href='#SkPoint_x'>x()</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_y'>y()</a>
    181 
    182 <a name='SkPoint_isZero'></a>
    183 
    184 ---
    185 
    186 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    187 bool <a href='#SkPoint_isZero'>isZero</a>()const
    188 </pre>
    189 
    190 Returns true if <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> are both zero.
    191 
    192 ### Return Value
    193 
    194 true if <a href='#SkPoint_fX'>fX</a> is zero and <a href='#SkPoint_fY'>fY</a> is zero
    195 
    196 ### Example
    197 
    198 <div><fiddle-embed name="81b9665110b88ef6bcbc20464aed7da1">
    199 
    200 #### Example Output
    201 
    202 ~~~~
    203 pt.fX=+0 pt.fY=-0
    204 pt.isZero() == true
    205 ~~~~
    206 
    207 </fiddle-embed></div>
    208 
    209 ### See Also
    210 
    211 <a href='#SkPoint_isFinite'>isFinite</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_isZero'>isZero</a>
    212 
    213 <a name='Set'></a>
    214 
    215 <a name='SkPoint_set'></a>
    216 
    217 ---
    218 
    219 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    220 void set(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
    221 </pre>
    222 
    223 Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_set_x'>x</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_set_y'>y</a>.
    224 
    225 ### Parameters
    226 
    227 <table>  <tr>    <td><a name='SkPoint_set_x'><code><strong>x</strong></code></a></td>
    228     <td>new value for <a href='#SkPoint_fX'>fX</a></td>
    229   </tr>
    230   <tr>    <td><a name='SkPoint_set_y'><code><strong>y</strong></code></a></td>
    231     <td>new value for <a href='#SkPoint_fY'>fY</a></td>
    232   </tr>
    233 </table>
    234 
    235 ### Example
    236 
    237 <div><fiddle-embed name="d08d1e7dafcad4342d1619fdbb2f5781">
    238 
    239 #### Example Output
    240 
    241 ~~~~
    242 pt1 == pt2
    243 ~~~~
    244 
    245 </fiddle-embed></div>
    246 
    247 ### See Also
    248 
    249 <a href='#SkPoint_iset'>iset()</a> <a href='#SkPoint_Make'>Make</a>
    250 
    251 <a name='SkPoint_iset'></a>
    252 
    253 ---
    254 
    255 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    256 void <a href='#SkPoint_iset'>iset</a>(int32_t x, int32_t y)
    257 </pre>
    258 
    259 Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_iset_x'>x</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_iset_y'>y</a>, promoting integers to <a href='undocumented#SkScalar'>SkScalar</a> values.
    260 
    261 Assigning a large integer value directly to <a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_fY'>fY</a> may cause a compiler
    262 error, triggered by narrowing conversion of int to <a href='undocumented#SkScalar'>SkScalar</a>. This safely
    263 casts <a href='#SkPoint_iset_x'>x</a> and <a href='#SkPoint_iset_y'>y</a> to avoid the error.
    264 
    265 ### Parameters
    266 
    267 <table>  <tr>    <td><a name='SkPoint_iset_x'><code><strong>x</strong></code></a></td>
    268     <td>new value for <a href='#SkPoint_fX'>fX</a></td>
    269   </tr>
    270   <tr>    <td><a name='SkPoint_iset_y'><code><strong>y</strong></code></a></td>
    271     <td>new value for <a href='#SkPoint_fY'>fY</a></td>
    272   </tr>
    273 </table>
    274 
    275 ### Example
    276 
    277 <div><fiddle-embed name="0d9e8ed734981b5b113f22c7bfde5357"></fiddle-embed></div>
    278 
    279 ### See Also
    280 
    281 <a href='#SkPoint_set'>set</a> <a href='#SkPoint_Make'>Make</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_set'>set</a>
    282 
    283 <a name='SkPoint_iset_2'></a>
    284 
    285 ---
    286 
    287 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    288 void <a href='#SkPoint_iset'>iset</a>(const <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>& p)
    289 </pre>
    290 
    291 Sets <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> to <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a>, promoting integers to <a href='undocumented#SkScalar'>SkScalar</a> values.
    292 
    293 Assigning an <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> containing a large integer value directly to <a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_fY'>fY</a> may
    294 cause a compiler error, triggered by narrowing conversion of int to <a href='undocumented#SkScalar'>SkScalar</a>.
    295 This safely casts <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fX'>fX</a> and <a href='#SkPoint_iset_2_p'>p</a>.<a href='#SkIPoint_fY'>fY</a> to avoid the error.
    296 
    297 ### Parameters
    298 
    299 <table>  <tr>    <td><a name='SkPoint_iset_2_p'><code><strong>p</strong></code></a></td>
    300     <td><a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a> members promoted to <a href='undocumented#SkScalar'>SkScalar</a></td>
    301   </tr>
    302 </table>
    303 
    304 ### Example
    305 
    306 <div><fiddle-embed name="12b7164a769e232bb772f19c59600ee7">
    307 
    308 #### Example Output
    309 
    310 ~~~~
    311 iPt: -2147483647, 2147483647
    312 fPt: -2.14748e+09, 2.14748e+09
    313 ~~~~
    314 
    315 </fiddle-embed></div>
    316 
    317 ### See Also
    318 
    319 <a href='#SkPoint_set'>set</a> <a href='#SkPoint_Make'>Make</a> <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::<a href='#SkIPoint_set'>set</a>
    320 
    321 <a name='SkPoint_setAbs'></a>
    322 
    323 ---
    324 
    325 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    326 void <a href='#SkPoint_setAbs'>setAbs</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& pt)
    327 </pre>
    328 
    329 Sets <a href='#SkPoint_fX'>fX</a> to absolute value of <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fX'>fX</a>; and <a href='#SkPoint_fY'>fY</a> to absolute value of <a href='#SkPoint_setAbs_pt'>pt</a>.<a href='#SkPoint_fY'>fY</a>.
    330 
    331 ### Parameters
    332 
    333 <table>  <tr>    <td><a name='SkPoint_setAbs_pt'><code><strong>pt</strong></code></a></td>
    334     <td>members providing magnitude for <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a></td>
    335   </tr>
    336 </table>
    337 
    338 ### Example
    339 
    340 <div><fiddle-embed name="7f70860e820b67a347cff03c00488426">
    341 
    342 #### Example Output
    343 
    344 ~~~~
    345 pt: 0, -0  abs: 0, 0
    346 pt: -1, -2  abs: 1, 2
    347 pt: inf, -inf  abs: inf, inf
    348 pt: nan, -nan  abs: nan, nan
    349 ~~~~
    350 
    351 </fiddle-embed></div>
    352 
    353 ### See Also
    354 
    355 <a href='#SkPoint_set'>set</a> <a href='#SkPoint_Make'>Make</a> <a href='#SkPoint_negate'>negate</a>
    356 
    357 <a name='Offset'></a>
    358 
    359 <a name='SkPoint_Offset'></a>
    360 
    361 ---
    362 
    363 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    364 static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& offset)
    365 </pre>
    366 
    367 Adds <a href='#SkPoint_Offset_offset'>offset</a> to each <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in <a href='#SkPoint_Offset_points'>points</a> array with <a href='#SkPoint_Offset_count'>count</a> entries.
    368 
    369 ### Parameters
    370 
    371 <table>  <tr>    <td><a name='SkPoint_Offset_points'><code><strong>points</strong></code></a></td>
    372     <td><a href='SkPath_Reference#Point_Array'>SkPoint array</a></td>
    373   </tr>
    374   <tr>    <td><a name='SkPoint_Offset_count'><code><strong>count</strong></code></a></td>
    375     <td>entries in array</td>
    376   </tr>
    377   <tr>    <td><a name='SkPoint_Offset_offset'><code><strong>offset</strong></code></a></td>
    378     <td><a href='SkPoint_Reference#Vector'>vector</a> added to <a href='#SkPoint_Offset_points'>points</a></td>
    379   </tr>
    380 </table>
    381 
    382 ### Example
    383 
    384 <div><fiddle-embed name="f0f24726df78a5d797bcf311e694a0a3"></fiddle-embed></div>
    385 
    386 ### See Also
    387 
    388 <a href='#SkPoint_Offset_offset'>offset</a> <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
    389 
    390 <a name='SkPoint_Offset_2'></a>
    391 
    392 ---
    393 
    394 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    395 static void <a href='#SkPoint_Offset'>Offset</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#Point'>points</a>[], int count, <a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
    396 </pre>
    397 
    398 Adds offset (<a href='#SkPoint_Offset_2_dx'>dx</a>, <a href='#SkPoint_Offset_2_dy'>dy</a>) to each <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in <a href='#SkPoint_Offset_2_points'>points</a> array of length <a href='#SkPoint_Offset_2_count'>count</a>.
    399 
    400 ### Parameters
    401 
    402 <table>  <tr>    <td><a name='SkPoint_Offset_2_points'><code><strong>points</strong></code></a></td>
    403     <td><a href='SkPath_Reference#Point_Array'>SkPoint array</a></td>
    404   </tr>
    405   <tr>    <td><a name='SkPoint_Offset_2_count'><code><strong>count</strong></code></a></td>
    406     <td>entries in array</td>
    407   </tr>
    408   <tr>    <td><a name='SkPoint_Offset_2_dx'><code><strong>dx</strong></code></a></td>
    409     <td>added to <a href='#SkPoint_fX'>fX</a> in <a href='#SkPoint_Offset_2_points'>points</a></td>
    410   </tr>
    411   <tr>    <td><a name='SkPoint_Offset_2_dy'><code><strong>dy</strong></code></a></td>
    412     <td>added to <a href='#SkPoint_fY'>fY</a> in <a href='#SkPoint_Offset_2_points'>points</a></td>
    413   </tr>
    414 </table>
    415 
    416 ### Example
    417 
    418 <div><fiddle-embed name="532849faa838de885b86d3ebffae3712"></fiddle-embed></div>
    419 
    420 ### See Also
    421 
    422 <a href='#SkPoint_offset'>offset</a> <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
    423 
    424 <a name='SkPoint_offset'></a>
    425 
    426 ---
    427 
    428 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    429 void offset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
    430 </pre>
    431 
    432 Adds offset (<a href='#SkPoint_offset_dx'>dx</a>, <a href='#SkPoint_offset_dy'>dy</a>) to <a href='SkPoint_Reference#SkPoint'>SkPoint</a>.
    433 
    434 ### Parameters
    435 
    436 <table>  <tr>    <td><a name='SkPoint_offset_dx'><code><strong>dx</strong></code></a></td>
    437     <td>added to <a href='#SkPoint_fX'>fX</a></td>
    438   </tr>
    439   <tr>    <td><a name='SkPoint_offset_dy'><code><strong>dy</strong></code></a></td>
    440     <td>added to <a href='#SkPoint_fY'>fY</a></td>
    441   </tr>
    442 </table>
    443 
    444 ### Example
    445 
    446 <div><fiddle-embed name="02750ceaa874f956e6e6544ef6b858ee"></fiddle-embed></div>
    447 
    448 ### See Also
    449 
    450 <a href='#SkPoint_Offset'>Offset</a> <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
    451 
    452 <a name='SkPoint_length'></a>
    453 
    454 ---
    455 
    456 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    457 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_length'>length()</a>const
    458 </pre>
    459 
    460 Returns the Euclidean distance from origin, computed as:
    461 
    462 <a href='undocumented#sqrt()'>sqrt</a>(<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_fY'>fY</a>)
    463 
    464 .
    465 
    466 ### Return Value
    467 
    468 straight-line distance to origin
    469 
    470 ### Example
    471 
    472 <div><fiddle-embed name="8363ab179447ee4b827679e20d3d81eb"></fiddle-embed></div>
    473 
    474 ### See Also
    475 
    476 <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a> <a href='#SkPoint_Length'>Length</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_Distance'>Distance</a>
    477 
    478 <a name='SkPoint_distanceToOrigin'></a>
    479 
    480 ---
    481 
    482 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    483 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>()const
    484 </pre>
    485 
    486 Returns the Euclidean distance from origin, computed as:
    487 
    488 <a href='undocumented#sqrt()'>sqrt</a>(<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_fY'>fY</a>)
    489 
    490 .
    491 
    492 ### Return Value
    493 
    494 straight-line distance to origin
    495 
    496 ### Example
    497 
    498 <div><fiddle-embed name="812cf26d91b1cdcd2c6b9438a8172518"></fiddle-embed></div>
    499 
    500 ### See Also
    501 
    502 <a href='#SkPoint_length'>length</a> <a href='#SkPoint_Length'>Length</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_Distance'>Distance</a>
    503 
    504 <a name='SkPoint_normalize'></a>
    505 
    506 ---
    507 
    508 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    509 bool <a href='#SkPoint_normalize'>normalize()</a>
    510 </pre>
    511 
    512 Scales (<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) so that <a href='#SkPoint_length'>length()</a> returns one, while preserving ratio of <a href='#SkPoint_fX'>fX</a> to <a href='#SkPoint_fY'>fY</a>,
    513 if possible. If prior length is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and returns
    514 false; otherwise returns true.
    515 
    516 ### Return Value
    517 
    518 true if former length is not zero or nearly zero
    519 
    520 ### Example
    521 
    522 <div><fiddle-embed name="d84fce292d86c7d9ef37ae2d179c03c7"></fiddle-embed></div>
    523 
    524 ### See Also
    525 
    526 <a href='#SkPoint_Normalize'>Normalize</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_length'>length</a> <a href='#SkPoint_Length'>Length</a>
    527 
    528 <a name='SkPoint_setNormalize'></a>
    529 
    530 ---
    531 
    532 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    533 bool <a href='#SkPoint_setNormalize'>setNormalize</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
    534 </pre>
    535 
    536 Sets <a href='SkPoint_Reference#Vector'>vector</a> to (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) scaled so <a href='#SkPoint_length'>length()</a> returns one, and so that
    537 (<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a>) is proportional to (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>).  If (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) length is nearly zero,
    538 sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and returns false; otherwise returns true.
    539 
    540 ### Parameters
    541 
    542 <table>  <tr>    <td><a name='SkPoint_setNormalize_x'><code><strong>x</strong></code></a></td>
    543     <td>proportional value for <a href='#SkPoint_fX'>fX</a></td>
    544   </tr>
    545   <tr>    <td><a name='SkPoint_setNormalize_y'><code><strong>y</strong></code></a></td>
    546     <td>proportional value for <a href='#SkPoint_fY'>fY</a></td>
    547   </tr>
    548 </table>
    549 
    550 ### Return Value
    551 
    552 true if (<a href='#SkPoint_setNormalize_x'>x</a>, <a href='#SkPoint_setNormalize_y'>y</a>) length is not zero or nearly zero
    553 
    554 ### Example
    555 
    556 <div><fiddle-embed name="3e4f147d143a388802484bf0d26534c2"></fiddle-embed></div>
    557 
    558 ### See Also
    559 
    560 <a href='#SkPoint_normalize'>normalize</a> <a href='#SkPoint_setLength'>setLength</a>
    561 
    562 <a name='SkPoint_setLength'></a>
    563 
    564 ---
    565 
    566 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    567 bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> length)
    568 </pre>
    569 
    570 Scales <a href='SkPoint_Reference#Vector'>vector</a> so that <a href='#SkPoint_distanceToOrigin'>distanceToOrigin</a>() returns <a href='#SkPoint_setLength_length'>length</a>, if possible. If former
    571 <a href='#SkPoint_setLength_length'>length</a> is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and return false; otherwise returns
    572 true.
    573 
    574 ### Parameters
    575 
    576 <table>  <tr>    <td><a name='SkPoint_setLength_length'><code><strong>length</strong></code></a></td>
    577     <td>straight-line distance to origin</td>
    578   </tr>
    579 </table>
    580 
    581 ### Return Value
    582 
    583 true if former <a href='#SkPoint_setLength_length'>length</a> is not zero or nearly zero
    584 
    585 ### Example
    586 
    587 <div><fiddle-embed name="cbe7db206ece825aa3b9b7c3256aeaf0"></fiddle-embed></div>
    588 
    589 ### See Also
    590 
    591 <a href='#SkPoint_setLength_length'>length</a> <a href='#SkPoint_Length'>Length</a> <a href='#SkPoint_setNormalize'>setNormalize</a> <a href='#SkPoint_setAbs'>setAbs</a>
    592 
    593 <a name='SkPoint_setLength_2'></a>
    594 
    595 ---
    596 
    597 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    598 bool <a href='#SkPoint_setLength'>setLength</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, <a href='undocumented#SkScalar'>SkScalar</a> length)
    599 </pre>
    600 
    601 Sets <a href='SkPoint_Reference#Vector'>vector</a> to (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) scaled to <a href='#SkPoint_setLength_2_length'>length</a>, if possible. If former
    602 <a href='#SkPoint_setLength_2_length'>length</a> is nearly zero, sets <a href='SkPoint_Reference#Vector'>vector</a> to (0, 0) and return false; otherwise returns
    603 true.
    604 
    605 ### Parameters
    606 
    607 <table>  <tr>    <td><a name='SkPoint_setLength_2_x'><code><strong>x</strong></code></a></td>
    608     <td>proportional value for <a href='#SkPoint_fX'>fX</a></td>
    609   </tr>
    610   <tr>    <td><a name='SkPoint_setLength_2_y'><code><strong>y</strong></code></a></td>
    611     <td>proportional value for <a href='#SkPoint_fY'>fY</a></td>
    612   </tr>
    613   <tr>    <td><a name='SkPoint_setLength_2_length'><code><strong>length</strong></code></a></td>
    614     <td>straight-line distance to origin</td>
    615   </tr>
    616 </table>
    617 
    618 ### Return Value
    619 
    620 true if (<a href='#SkPoint_setLength_2_x'>x</a>, <a href='#SkPoint_setLength_2_y'>y</a>) <a href='#SkPoint_setLength_2_length'>length</a> is not zero or nearly zero
    621 
    622 ### Example
    623 
    624 <div><fiddle-embed name="3cc0662b6fbbee1fe3442a0acfece22c"></fiddle-embed></div>
    625 
    626 ### See Also
    627 
    628 <a href='#SkPoint_setLength_2_length'>length</a> <a href='#SkPoint_Length'>Length</a> <a href='#SkPoint_setNormalize'>setNormalize</a> <a href='#SkPoint_setAbs'>setAbs</a>
    629 
    630 <a name='SkPoint_scale'></a>
    631 
    632 ---
    633 
    634 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    635 void scale(<a href='undocumented#SkScalar'>SkScalar</a> scale, <a href='SkPoint_Reference#SkPoint'>SkPoint</a>* dst)const
    636 </pre>
    637 
    638 Sets <a href='#SkPoint_scale_dst'>dst</a> to <a href='SkPoint_Reference#SkPoint'>SkPoint</a> times <a href='#SkPoint_scale_scale'>scale</a>. <a href='#SkPoint_scale_dst'>dst</a> may be <a href='SkPoint_Reference#SkPoint'>SkPoint</a> to modify <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in place.
    639 
    640 ### Parameters
    641 
    642 <table>  <tr>    <td><a name='SkPoint_scale_scale'><code><strong>scale</strong></code></a></td>
    643     <td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> by</td>
    644   </tr>
    645   <tr>    <td><a name='SkPoint_scale_dst'><code><strong>dst</strong></code></a></td>
    646     <td>storage for scaled <a href='SkPoint_Reference#SkPoint'>SkPoint</a></td>
    647   </tr>
    648 </table>
    649 
    650 ### Example
    651 
    652 <div><fiddle-embed name="972e4e230806281adb928e068bcd8551"></fiddle-embed></div>
    653 
    654 ### See Also
    655 
    656 <a href='#SkPoint_multiply_operator'>operator*</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_scale_scale'>scale</a>) const <a href='#SkPoint_multiplyby_operator'>operator*=</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_scale_scale'>scale</a>) <a href='#SkPoint_setLength'>setLength</a>
    657 
    658 <a name='SkPoint_scale_2'></a>
    659 
    660 ---
    661 
    662 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    663 void scale(<a href='undocumented#SkScalar'>SkScalar</a> value)
    664 </pre>
    665 
    666 Scales <a href='SkPoint_Reference#SkPoint'>SkPoint</a> in place by scale.
    667 
    668 ### Parameters
    669 
    670 <table>  <tr>    <td><a name='SkPoint_scale_2_value'><code><strong>value</strong></code></a></td>
    671     <td>factor to multiply <a href='SkPoint_Reference#SkPoint'>SkPoint</a> by</td>
    672   </tr>
    673 </table>
    674 
    675 ### Example
    676 
    677 <div><fiddle-embed name="1060a4f27d8ef29519e6ac006ce90f2b"></fiddle-embed></div>
    678 
    679 ### See Also
    680 
    681 <a href='#SkPoint_multiply_operator'>operator*</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_scale'>scale</a>) const <a href='#SkPoint_multiplyby_operator'>operator*=</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_scale'>scale</a>) <a href='#SkPoint_setLength'>setLength</a>
    682 
    683 <a name='SkPoint_negate'></a>
    684 
    685 ---
    686 
    687 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    688 void <a href='#SkPoint_negate'>negate()</a>
    689 </pre>
    690 
    691 Changes the sign of <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a>.
    692 
    693 ### Example
    694 
    695 <div><fiddle-embed name="312c0c8065ab5d0adfda80cccf2d11e6">
    696 
    697 #### Example Output
    698 
    699 ~~~~
    700 pt: 0, -0  negate: -0, 0
    701 pt: -1, -2  negate: 1, 2
    702 pt: inf, -inf  negate: -inf, inf
    703 pt: nan, -nan  negate: -nan, nan
    704 ~~~~
    705 
    706 </fiddle-embed></div>
    707 
    708 ### See Also
    709 
    710 operator-() const <a href='#SkPoint_setAbs'>setAbs</a>
    711 
    712 <a name='SkPoint_minus_operator'></a>
    713 
    714 ---
    715 
    716 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    717 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator-()const
    718 </pre>
    719 
    720 Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> changing the signs of <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a>.
    721 
    722 ### Return Value
    723 
    724 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> as (-<a href='#SkPoint_fX'>fX</a>, -<a href='#SkPoint_fY'>fY</a>)
    725 
    726 ### Example
    727 
    728 <div><fiddle-embed name="9baf247cfcd8272c0ddf6ce93f676b37">
    729 
    730 #### Example Output
    731 
    732 ~~~~
    733 pt: 0, -0  negate: -0, 0
    734 pt: -1, -2  negate: 1, 2
    735 pt: inf, -inf  negate: -inf, inf
    736 pt: nan, -nan  negate: -nan, nan
    737 ~~~~
    738 
    739 </fiddle-embed></div>
    740 
    741 ### See Also
    742 
    743 <a href='#SkPoint_negate'>negate</a> <a href='#SkPoint_subtract_operator'>operator-</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b) <a href='#SkPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v) <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::operator-() const
    744 
    745 <a name='SkPoint_addto_operator'></a>
    746 
    747 ---
    748 
    749 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    750 void <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
    751 </pre>
    752 
    753 Adds <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_addto_operator_v'>v</a> to <a href='SkPoint_Reference#Point'>Point</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> + <a href='#SkPoint_addto_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
    754 
    755 ### Parameters
    756 
    757 <table>  <tr>    <td><a name='SkPoint_addto_operator_v'><code><strong>v</strong></code></a></td>
    758     <td><a href='SkPoint_Reference#Vector'>Vector</a> to add</td>
    759   </tr>
    760 </table>
    761 
    762 ### Example
    763 
    764 <div><fiddle-embed name="8b4e79109e2381345258cb744881b20c"></fiddle-embed></div>
    765 
    766 ### See Also
    767 
    768 <a href='#SkPoint_offset'>offset()</a> <a href='#SkPoint_add_operator'>operator+</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b) <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::operator+=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='#SkPoint_addto_operator_v'>v</a>)
    769 
    770 <a name='SkPoint_subtractfrom_operator'></a>
    771 
    772 ---
    773 
    774 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    775 void <a href='#SkPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v)
    776 </pre>
    777 
    778 Subtracts <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_subtractfrom_operator_v'>v</a> from <a href='SkPoint_Reference#Point'>Point</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtractfrom_operator_v'>v</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
    779 
    780 ### Parameters
    781 
    782 <table>  <tr>    <td><a name='SkPoint_subtractfrom_operator_v'><code><strong>v</strong></code></a></td>
    783     <td><a href='SkPoint_Reference#Vector'>Vector</a> to subtract</td>
    784   </tr>
    785 </table>
    786 
    787 ### Example
    788 
    789 <div><fiddle-embed name="86c0399704d8dff4091bf87b8d87d40b"></fiddle-embed></div>
    790 
    791 ### See Also
    792 
    793 <a href='#SkPoint_offset'>offset()</a> <a href='#SkPoint_subtract_operator'>operator-</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b) <a href='SkIPoint_Reference#SkIPoint'>SkIPoint</a>::operator-=(const <a href='SkIPoint_Reference#SkIVector'>SkIVector</a>& <a href='#SkPoint_subtractfrom_operator_v'>v</a>)
    794 
    795 <a name='SkPoint_multiply_operator'></a>
    796 
    797 ---
    798 
    799 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    800 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> operator*(<a href='undocumented#SkScalar'>SkScalar</a> scale)const
    801 </pre>
    802 
    803 Returns <a href='SkPoint_Reference#SkPoint'>SkPoint</a> multiplied by <a href='#SkPoint_multiply_operator_scale'>scale</a>.
    804 
    805 ### Parameters
    806 
    807 <table>  <tr>    <td><a name='SkPoint_multiply_operator_scale'><code><strong>scale</strong></code></a></td>
    808     <td><a href='undocumented#Scalar'>scalar</a> to multiply by</td>
    809   </tr>
    810 </table>
    811 
    812 ### Return Value
    813 
    814 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> as (<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiply_operator_scale'>scale</a>)
    815 
    816 ### Example
    817 
    818 <div><fiddle-embed name="35b3bc675779de043706ae4817ee950c"></fiddle-embed></div>
    819 
    820 ### See Also
    821 
    822 <a href='#SkPoint_multiplyby_operator'>operator*=</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_multiply_operator_scale'>scale</a>) <a href='#SkPoint_scale'>scale()</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_setNormalize'>setNormalize</a>
    823 
    824 <a name='SkPoint_multiplyby_operator'></a>
    825 
    826 ---
    827 
    828 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    829 <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_multiplyby_operator'>operator*=</a>(<a href='undocumented#SkScalar'>SkScalar</a> scale)
    830 </pre>
    831 
    832 Multiplies <a href='SkPoint_Reference#Point'>Point</a> by <a href='#SkPoint_multiplyby_operator_scale'>scale</a>. Sets <a href='SkPoint_Reference#Point'>Point</a> to: <code>(<a href='#SkPoint_fX'>fX</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>, <a href='#SkPoint_fY'>fY</a> * <a href='#SkPoint_multiplyby_operator_scale'>scale</a>)</code>.
    833 
    834 ### Parameters
    835 
    836 <table>  <tr>    <td><a name='SkPoint_multiplyby_operator_scale'><code><strong>scale</strong></code></a></td>
    837     <td><a href='undocumented#Scalar'>Scalar</a> to multiply by</td>
    838   </tr>
    839 </table>
    840 
    841 ### Return Value
    842 
    843 reference to <a href='SkPoint_Reference#Point'>Point</a>
    844 
    845 ### Example
    846 
    847 <div><fiddle-embed name="3ce3db36235d80dbac4d39504cf756da"></fiddle-embed></div>
    848 
    849 ### See Also
    850 
    851 <a href='#SkPoint_multiply_operator'>operator*</a>(<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_multiplyby_operator_scale'>scale</a>) const <a href='#SkPoint_scale'>scale()</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_setNormalize'>setNormalize</a>
    852 
    853 <a name='SkPoint_isFinite'></a>
    854 
    855 ---
    856 
    857 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    858 bool <a href='#SkPoint_isFinite'>isFinite</a>()const
    859 </pre>
    860 
    861 Returns true if both <a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_fY'>fY</a> are measurable values.
    862 
    863 ### Return Value
    864 
    865 true for values other than infinities and NaN
    866 
    867 ### Example
    868 
    869 <div><fiddle-embed name="937cc166cc0e220f33fb82501141d0b3">
    870 
    871 #### Example Output
    872 
    873 ~~~~
    874 pt: 0, -0  finite: true
    875 pt: -1, -2  finite: true
    876 pt: inf, 1  finite: false
    877 pt: nan, -1  finite: false
    878 ~~~~
    879 
    880 </fiddle-embed></div>
    881 
    882 ### See Also
    883 
    884 <a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_isFinite'>isFinite</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_isFinite'>isFinite</a>
    885 
    886 <a name='SkPoint_equals'></a>
    887 
    888 ---
    889 
    890 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    891 bool equals(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)const
    892 </pre>
    893 
    894 Returns true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> is equivalent to <a href='SkPoint_Reference#SkPoint'>SkPoint</a> constructed from (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>).
    895 
    896 ### Parameters
    897 
    898 <table>  <tr>    <td><a name='SkPoint_equals_x'><code><strong>x</strong></code></a></td>
    899     <td>value compared with <a href='#SkPoint_fX'>fX</a></td>
    900   </tr>
    901   <tr>    <td><a name='SkPoint_equals_y'><code><strong>y</strong></code></a></td>
    902     <td>value compared with <a href='#SkPoint_fY'>fY</a></td>
    903   </tr>
    904 </table>
    905 
    906 ### Return Value
    907 
    908 true if <a href='SkPoint_Reference#SkPoint'>SkPoint</a> equals (<a href='#SkPoint_equals_x'>x</a>, <a href='#SkPoint_equals_y'>y</a>)
    909 
    910 ### Example
    911 
    912 <div><fiddle-embed name="4cecb878c8b66beffda051f26c00f817">
    913 
    914 #### Example Output
    915 
    916 ~~~~
    917 pt: 0, -0  == pt
    918 pt: -1, -2  == pt
    919 pt: inf, 1  == pt
    920 pt: nan, -1  != pt
    921 ~~~~
    922 
    923 </fiddle-embed></div>
    924 
    925 ### See Also
    926 
    927 <a href='#SkPoint_equal_operator'>operator==</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
    928 
    929 <a name='SkPoint_equal_operator'></a>
    930 
    931 ---
    932 
    933 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    934 bool <a href='#SkPoint_equal_operator'>operator==</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
    935 </pre>
    936 
    937 Returns true if <a href='#SkPoint_equal_operator_a'>a</a> is equivalent to <a href='#SkPoint_equal_operator_b'>b</a>.
    938 
    939 ### Parameters
    940 
    941 <table>  <tr>    <td><a name='SkPoint_equal_operator_a'><code><strong>a</strong></code></a></td>
    942     <td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
    943   </tr>
    944   <tr>    <td><a name='SkPoint_equal_operator_b'><code><strong>b</strong></code></a></td>
    945     <td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
    946   </tr>
    947 </table>
    948 
    949 ### Return Value
    950 
    951 true if <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> and <a href='#SkPoint_equal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> == <a href='#SkPoint_equal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
    952 
    953 ### Example
    954 
    955 <div><fiddle-embed name="741f793334a48a35dadf4310d7ea52cb">
    956 
    957 #### Example Output
    958 
    959 ~~~~
    960 pt: 0, -0  == pt
    961 pt: -1, -2  == pt
    962 pt: inf, 1  == pt
    963 pt: nan, -1  != pt
    964 ~~~~
    965 
    966 </fiddle-embed></div>
    967 
    968 ### See Also
    969 
    970 <a href='#SkPoint_equals'>equals()</a> <a href='#SkPoint_notequal_operator'>operator!=</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_equal_operator_a'>a</a>, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_equal_operator_b'>b</a>)
    971 
    972 <a name='SkPoint_notequal_operator'></a>
    973 
    974 ---
    975 
    976 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
    977 bool <a href='#SkPoint_notequal_operator'>operator!=</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
    978 </pre>
    979 
    980 Returns true if <a href='#SkPoint_notequal_operator_a'>a</a> is not equivalent to <a href='#SkPoint_notequal_operator_b'>b</a>.
    981 
    982 ### Parameters
    983 
    984 <table>  <tr>    <td><a name='SkPoint_notequal_operator_a'><code><strong>a</strong></code></a></td>
    985     <td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
    986   </tr>
    987   <tr>    <td><a name='SkPoint_notequal_operator_b'><code><strong>b</strong></code></a></td>
    988     <td><a href='SkPoint_Reference#SkPoint'>SkPoint</a> to compare</td>
    989   </tr>
    990 </table>
    991 
    992 ### Return Value
    993 
    994 true if <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a> or <a href='#SkPoint_notequal_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> != <a href='#SkPoint_notequal_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>
    995 
    996 ### Example
    997 
    998 <div><fiddle-embed name="8fe8572685eaa617f25a5a6767a874dc">
    999 
   1000 #### Example Output
   1001 
   1002 ~~~~
   1003 pt: 0, -0  == pt
   1004 pt: -1, -2  == pt
   1005 pt: inf, 1  == pt
   1006 pt: nan, -1  != pt
   1007 ~~~~
   1008 
   1009 </fiddle-embed></div>
   1010 
   1011 ### See Also
   1012 
   1013 <a href='#SkPoint_equal_operator'>operator==</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_notequal_operator_a'>a</a>, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& <a href='#SkPoint_notequal_operator_b'>b</a>) <a href='#SkPoint_equals'>equals()</a>
   1014 
   1015 <a name='SkPoint_subtract_operator'></a>
   1016 
   1017 ---
   1018 
   1019 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1020 <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkPoint_subtract_operator'>operator-</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
   1021 </pre>
   1022 
   1023 Returns <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='#SkPoint_subtract_operator_b'>b</a> to <a href='#SkPoint_subtract_operator_a'>a</a>, computed as <code>(<a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_subtract_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> - <a href='#SkPoint_subtract_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
   1024 
   1025 Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='SkPoint_Reference#Point'>Point</a>, returning <a href='SkPoint_Reference#Point'>Point</a>.
   1026 Can also be used to subtract <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='SkPoint_Reference#Vector'>Vector</a>, returning <a href='SkPoint_Reference#Vector'>Vector</a>.
   1027 
   1028 ### Parameters
   1029 
   1030 <table>  <tr>    <td><a name='SkPoint_subtract_operator_a'><code><strong>a</strong></code></a></td>
   1031     <td><a href='SkPoint_Reference#Point'>Point</a> to subtract from</td>
   1032   </tr>
   1033   <tr>    <td><a name='SkPoint_subtract_operator_b'><code><strong>b</strong></code></a></td>
   1034     <td><a href='SkPoint_Reference#Point'>Point</a> to subtract</td>
   1035   </tr>
   1036 </table>
   1037 
   1038 ### Return Value
   1039 
   1040 <a href='SkPoint_Reference#Vector'>Vector</a> from <a href='#SkPoint_subtract_operator_b'>b</a> to <a href='#SkPoint_subtract_operator_a'>a</a>
   1041 
   1042 ### Example
   1043 
   1044 <div><fiddle-embed name="b6c4943ecd0b2dccf9d220b8944009e0"></fiddle-embed></div>
   1045 
   1046 ### See Also
   1047 
   1048 <a href='#SkPoint_subtractfrom_operator'>operator-=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v) <a href='#SkPoint_offset'>offset()</a>
   1049 
   1050 <a name='SkPoint_add_operator'></a>
   1051 
   1052 ---
   1053 
   1054 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1055 <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='#SkPoint_add_operator'>operator+</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
   1056 </pre>
   1057 
   1058 Returns <a href='SkPoint_Reference#Point'>Point</a> resulting from <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_a'>a</a> offset by <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_b'>b</a>, computed as:
   1059 <code>(<a href='#SkPoint_add_operator_a'>a</a>.<a href='#SkPoint_fX'>fX</a> + <a href='#SkPoint_add_operator_b'>b</a>.<a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_add_operator_a'>a</a>.<a href='#SkPoint_fY'>fY</a> + <a href='#SkPoint_add_operator_b'>b</a>.<a href='#SkPoint_fY'>fY</a>)</code>.
   1060 
   1061 Can also be used to offset <a href='SkPoint_Reference#Point'>Point</a> <a href='#SkPoint_add_operator_b'>b</a> by <a href='SkPoint_Reference#Vector'>Vector</a> <a href='#SkPoint_add_operator_a'>a</a>, returning <a href='SkPoint_Reference#Point'>Point</a>.
   1062 Can also be used to add <a href='SkPoint_Reference#Vector'>Vector</a> to <a href='SkPoint_Reference#Vector'>Vector</a>, returning <a href='SkPoint_Reference#Vector'>Vector</a>.
   1063 
   1064 ### Parameters
   1065 
   1066 <table>  <tr>    <td><a name='SkPoint_add_operator_a'><code><strong>a</strong></code></a></td>
   1067     <td><a href='SkPoint_Reference#Point'>Point</a> or <a href='SkPoint_Reference#Vector'>Vector</a> to add to</td>
   1068   </tr>
   1069   <tr>    <td><a name='SkPoint_add_operator_b'><code><strong>b</strong></code></a></td>
   1070     <td><a href='SkPoint_Reference#Point'>Point</a> or <a href='SkPoint_Reference#Vector'>Vector</a> to add</td>
   1071   </tr>
   1072 </table>
   1073 
   1074 ### Return Value
   1075 
   1076 <a href='SkPoint_Reference#Point'>Point</a> equal to <a href='#SkPoint_add_operator_a'>a</a> offset by <a href='#SkPoint_add_operator_b'>b</a>
   1077 
   1078 ### Example
   1079 
   1080 <div><fiddle-embed name="911a84253dfec4dabf94dbe3c71766f0"></fiddle-embed></div>
   1081 
   1082 ### See Also
   1083 
   1084 <a href='#SkPoint_addto_operator'>operator+=</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& v) <a href='#SkPoint_offset'>offset()</a>
   1085 
   1086 <a name='SkPoint_Length'></a>
   1087 
   1088 ---
   1089 
   1090 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1091 static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Length'>Length</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
   1092 </pre>
   1093 
   1094 Returns the  <a href='undocumented#Euclidean_Distance'>Euclidean distance</a> from origin, computed as:
   1095 
   1096 <a href='undocumented#sqrt()'>sqrt</a>(<a href='#SkPoint_Length_x'>x</a> * <a href='#SkPoint_Length_x'>x</a> + <a href='#SkPoint_Length_y'>y</a> * <a href='#SkPoint_Length_y'>y</a>)
   1097 
   1098 .
   1099 
   1100 ### Parameters
   1101 
   1102 <table>  <tr>    <td><a name='SkPoint_Length_x'><code><strong>x</strong></code></a></td>
   1103     <td>component of length</td>
   1104   </tr>
   1105   <tr>    <td><a name='SkPoint_Length_y'><code><strong>y</strong></code></a></td>
   1106     <td>component of length</td>
   1107   </tr>
   1108 </table>
   1109 
   1110 ### Return Value
   1111 
   1112 straight-line distance to origin
   1113 
   1114 ### Example
   1115 
   1116 <div><fiddle-embed name="c98773d8b4509969d78cb8121e4b77f6"></fiddle-embed></div>
   1117 
   1118 ### See Also
   1119 
   1120 <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_Distance'>Distance</a> <a href='#SkPoint_setLength'>setLength</a>
   1121 
   1122 <a name='SkPoint_Normalize'></a>
   1123 
   1124 ---
   1125 
   1126 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1127 static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Normalize'>Normalize</a>(<a href='SkPoint_Reference#SkVector'>SkVector</a>* vec)
   1128 </pre>
   1129 
   1130 Scales (<a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>, <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>) so that <a href='#SkPoint_length'>length()</a> returns one, while preserving ratio of <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fX'>fX</a>
   1131 to <a href='#SkPoint_Normalize_vec'>vec</a>-><a href='#SkPoint_fY'>fY</a>, if possible. If original length is nearly zero, sets <a href='#SkPoint_Normalize_vec'>vec</a> to (0, 0) and returns
   1132 zero; otherwise, returns length of <a href='#SkPoint_Normalize_vec'>vec</a> before <a href='#SkPoint_Normalize_vec'>vec</a> is scaled.
   1133 
   1134 Returned prior length may be <a href='undocumented#SK_ScalarInfinity'>SK_ScalarInfinity</a> if it can not be represented by <a href='undocumented#SkScalar'>SkScalar</a>.
   1135 
   1136 Note that <a href='#SkPoint_normalize'>normalize()</a> is faster if prior length is not required.
   1137 
   1138 ### Parameters
   1139 
   1140 <table>  <tr>    <td><a name='SkPoint_Normalize_vec'><code><strong>vec</strong></code></a></td>
   1141     <td>normalized to unit length</td>
   1142   </tr>
   1143 </table>
   1144 
   1145 ### Return Value
   1146 
   1147 original <a href='#SkPoint_Normalize_vec'>vec</a> length
   1148 
   1149 ### Example
   1150 
   1151 <div><fiddle-embed name="60a08f3ce75374fc815384616d114df7"></fiddle-embed></div>
   1152 
   1153 ### See Also
   1154 
   1155 <a href='#SkPoint_normalize'>normalize()</a> <a href='#SkPoint_setLength'>setLength</a> <a href='#SkPoint_Length'>Length</a>
   1156 
   1157 <a name='SkPoint_Distance'></a>
   1158 
   1159 ---
   1160 
   1161 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1162 static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_Distance'>Distance</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& a, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& b)
   1163 </pre>
   1164 
   1165 Returns the  <a href='undocumented#Euclidean_Distance'>Euclidean distance</a> between <a href='#SkPoint_Distance_a'>a</a> and <a href='#SkPoint_Distance_b'>b</a>.
   1166 
   1167 ### Parameters
   1168 
   1169 <table>  <tr>    <td><a name='SkPoint_Distance_a'><code><strong>a</strong></code></a></td>
   1170     <td><a href='undocumented#Line'>line</a> end <a href='SkPoint_Reference#Point'>point</a></td>
   1171   </tr>
   1172   <tr>    <td><a name='SkPoint_Distance_b'><code><strong>b</strong></code></a></td>
   1173     <td><a href='undocumented#Line'>line</a> end <a href='SkPoint_Reference#Point'>point</a></td>
   1174   </tr>
   1175 </table>
   1176 
   1177 ### Return Value
   1178 
   1179 straight-line distance from <a href='#SkPoint_Distance_a'>a</a> to <a href='#SkPoint_Distance_b'>b</a>
   1180 
   1181 ### Example
   1182 
   1183 <div><fiddle-embed name="9e0a2de2eb94dba4521d733e73f2bda5"></fiddle-embed></div>
   1184 
   1185 ### See Also
   1186 
   1187 <a href='#SkPoint_length'>length()</a> <a href='#SkPoint_setLength'>setLength</a>
   1188 
   1189 <a name='SkPoint_DotProduct'></a>
   1190 
   1191 ---
   1192 
   1193 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1194 static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_DotProduct'>DotProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
   1195 </pre>
   1196 
   1197 Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_a'>a</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_DotProduct_b'>b</a>.
   1198 
   1199 ### Parameters
   1200 
   1201 <table>  <tr>    <td><a name='SkPoint_DotProduct_a'><code><strong>a</strong></code></a></td>
   1202     <td>left side of dot product</td>
   1203   </tr>
   1204   <tr>    <td><a name='SkPoint_DotProduct_b'><code><strong>b</strong></code></a></td>
   1205     <td>right side of dot product</td>
   1206   </tr>
   1207 </table>
   1208 
   1209 ### Return Value
   1210 
   1211 product of input magnitudes and cosine of the angle between them
   1212 
   1213 ### Example
   1214 
   1215 <div><fiddle-embed name="496db0131a003162faba7d7f98b30340"></fiddle-embed></div>
   1216 
   1217 ### See Also
   1218 
   1219 <a href='#SkPoint_dot'>dot</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>
   1220 
   1221 <a name='SkPoint_CrossProduct'></a>
   1222 
   1223 ---
   1224 
   1225 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1226 static <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPoint_CrossProduct'>CrossProduct</a>(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& a, const <a href='SkPoint_Reference#SkVector'>SkVector</a>& b)
   1227 </pre>
   1228 
   1229 Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_a'>a</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_CrossProduct_b'>b</a>.
   1230 
   1231 <a href='#SkPoint_CrossProduct_a'>a</a> and <a href='#SkPoint_CrossProduct_b'>b</a> form three-dimensional <a href='SkPoint_Reference#Vector'>vectors</a> with z-axis value equal to zero. The
   1232 cross product is <a href='#SkPoint_CrossProduct_a'>a</a> three-dimensional <a href='SkPoint_Reference#Vector'>vector</a> with x-axis and y-axis values equal
   1233 to zero. The cross product z-axis component is returned.
   1234 
   1235 ### Parameters
   1236 
   1237 <table>  <tr>    <td><a name='SkPoint_CrossProduct_a'><code><strong>a</strong></code></a></td>
   1238     <td>left side of cross product</td>
   1239   </tr>
   1240   <tr>    <td><a name='SkPoint_CrossProduct_b'><code><strong>b</strong></code></a></td>
   1241     <td>right side of cross product</td>
   1242   </tr>
   1243 </table>
   1244 
   1245 ### Return Value
   1246 
   1247 area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> signed by angle direction
   1248 
   1249 ### Example
   1250 
   1251 <div><fiddle-embed name="8b8a4cd8a29d22bb9c5e63b70357bd65"></fiddle-embed></div>
   1252 
   1253 ### See Also
   1254 
   1255 <a href='#SkPoint_cross'>cross</a> <a href='#SkPoint_DotProduct'>DotProduct</a>
   1256 
   1257 <a name='SkPoint_cross'></a>
   1258 
   1259 ---
   1260 
   1261 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1262 <a href='undocumented#SkScalar'>SkScalar</a> cross(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec)const
   1263 </pre>
   1264 
   1265 Returns the cross product of <a href='SkPoint_Reference#Vector'>vector</a> and <a href='#SkPoint_cross_vec'>vec</a>.
   1266 
   1267 <a href='SkPoint_Reference#Vector'>Vector</a> and <a href='#SkPoint_cross_vec'>vec</a> form three-dimensional <a href='SkPoint_Reference#Vector'>vectors</a> with z-axis value equal to zero.
   1268 The cross product is a three-dimensional <a href='SkPoint_Reference#Vector'>vector</a> with x-axis and y-axis values
   1269 equal to zero. The cross product z-axis component is returned.
   1270 
   1271 ### Parameters
   1272 
   1273 <table>  <tr>    <td><a name='SkPoint_cross_vec'><code><strong>vec</strong></code></a></td>
   1274     <td>right side of cross product</td>
   1275   </tr>
   1276 </table>
   1277 
   1278 ### Return Value
   1279 
   1280 area spanned by <a href='SkPoint_Reference#Vector'>vectors</a> signed by angle direction
   1281 
   1282 ### Example
   1283 
   1284 <div><fiddle-embed name="0bc7b3997357e499817278b78bdfbf1d"></fiddle-embed></div>
   1285 
   1286 ### See Also
   1287 
   1288 <a href='#SkPoint_CrossProduct'>CrossProduct</a> <a href='#SkPoint_dot'>dot</a>
   1289 
   1290 <a name='SkPoint_dot'></a>
   1291 
   1292 ---
   1293 
   1294 <pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
   1295 <a href='undocumented#SkScalar'>SkScalar</a> dot(const <a href='SkPoint_Reference#SkVector'>SkVector</a>& vec)const
   1296 </pre>
   1297 
   1298 Returns the dot product of <a href='SkPoint_Reference#Vector'>vector</a> and <a href='SkPoint_Reference#Vector'>vector</a> <a href='#SkPoint_dot_vec'>vec</a>.
   1299 
   1300 ### Parameters
   1301 
   1302 <table>  <tr>    <td><a name='SkPoint_dot_vec'><code><strong>vec</strong></code></a></td>
   1303     <td>right side of dot product</td>
   1304   </tr>
   1305 </table>
   1306 
   1307 ### Return Value
   1308 
   1309 product of input magnitudes and cosine of the angle between them
   1310 
   1311 ### Example
   1312 
   1313 <div><fiddle-embed name="56d01ccfedd71d3c504b09afa2875d38"></fiddle-embed></div>
   1314 
   1315 ### See Also
   1316 
   1317 <a href='#SkPoint_DotProduct'>DotProduct</a> <a href='#SkPoint_cross'>cross</a>
   1318 
   1319 <a name='Vector'></a>
   1320 
   1321 <a name='SkVector'></a>
   1322 
   1323 ---
   1324 
   1325 <pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
   1326     typedef <a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPoint_Reference#SkVector'>SkVector</a>;
   1327 </pre>
   1328 
   1329 <a href='SkPoint_Reference#SkVector'>SkVector</a> provides an alternative name for <a href='SkPoint_Reference#SkPoint'>SkPoint</a>. <a href='SkPoint_Reference#SkVector'>SkVector</a> and <a href='SkPoint_Reference#SkPoint'>SkPoint</a> can
   1330 be used interchangeably for all purposes.