1SkRRect Reference 2=== 3 4 5<a name='SkRRect'></a> 6 7--- 8 9<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 10class <a href='SkRRect_Reference#SkRRect'>SkRRect</a> { 11public: 12 <a href='#SkRRect_empty_constructor'>SkRRect()</a> = default; 13 <a href='#SkRRect_copy_const_SkRRect'>SkRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect) = default; 14 <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_copy_operator'>operator=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect) = default; 15 16 enum <a href='#SkRRect_Type'>Type</a> { 17 <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>, 18 <a href='#SkRRect_kRect_Type'>kRect_Type</a>, 19 <a href='#SkRRect_kOval_Type'>kOval_Type</a>, 20 <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>, 21 <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>, 22 <a href='#SkRRect_kComplex_Type'>kComplex_Type</a>, 23 <a href='#SkRRect_kLastType'>kLastType</a> = <a href='#SkRRect_kComplex_Type'>kComplex_Type</a>, 24 }; 25 26 <a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a>() const; 27 <a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_type'>type()</a> const; 28 bool <a href='#SkRRect_isEmpty'>isEmpty</a>() const; 29 bool <a href='#SkRRect_isRect'>isRect</a>() const; 30 bool <a href='#SkRRect_isOval'>isOval</a>() const; 31 bool <a href='#SkRRect_isSimple'>isSimple</a>() const; 32 bool <a href='#SkRRect_isNinePatch'>isNinePatch</a>() const; 33 bool <a href='#SkRRect_isComplex'>isComplex</a>() const; 34 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_width'>width()</a> const; 35 <a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_height'>height()</a> const; 36 <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkRRect_getSimpleRadii'>getSimpleRadii</a>() const; 37 void <a href='#SkRRect_setEmpty'>setEmpty</a>(); 38 void <a href='#SkRRect_setRect'>setRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>); 39 static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeEmpty'>MakeEmpty</a>(); 40 static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRect'>MakeRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& r); 41 static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeOval'>MakeOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='undocumented#Oval'>oval</a>); 42 static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRectXY'>MakeRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad); 43 void <a href='#SkRRect_setOval'>setOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='undocumented#Oval'>oval</a>); 44 void <a href='#SkRRect_setRectXY'>setRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad); 45 void <a href='#SkRRect_setNinePatch'>setNinePatch</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> leftRad, <a href='undocumented#SkScalar'>SkScalar</a> topRad, 46 <a href='undocumented#SkScalar'>SkScalar</a> rightRad, <a href='undocumented#SkScalar'>SkScalar</a> bottomRad); 47 void <a href='#SkRRect_setRectRadii'>setRectRadii</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, const <a href='SkPoint_Reference#SkVector'>SkVector</a> radii[4]); 48 49 enum <a href='#SkRRect_Corner'>Corner</a> { 50 <a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft_Corner</a>, 51 <a href='#SkRRect_kUpperRight_Corner'>kUpperRight_Corner</a>, 52 <a href='#SkRRect_kLowerRight_Corner'>kLowerRight_Corner</a>, 53 <a href='#SkRRect_kLowerLeft_Corner'>kLowerLeft_Corner</a>, 54 }; 55 56 const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_rect'>rect()</a> const; 57 <a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkRRect_radii'>radii</a>(<a href='#SkRRect_Corner'>Corner</a> corner) const; 58 const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_getBounds'>getBounds</a>() const; 59 friend bool <a href='#SkRRect_equal_operator'>operator==</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& a, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& b); 60 friend bool <a href='#SkRRect_notequal_operator'>operator!=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& a, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& b); 61 void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst) const; 62 void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy); 63 void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst) const; 64 void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy); 65 void <a href='#SkRRect_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy); 66 <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_makeOffset'>makeOffset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) const; 67 bool <a href='#SkRRect_contains'>contains</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>) const; 68 bool <a href='#SkRRect_isValid'>isValid</a>() const; 69 70 static constexpr size_t <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> = 12 * <a href='undocumented#sizeof()'>sizeof</a>(<a href='undocumented#SkScalar'>SkScalar</a>); 71 72 size_t <a href='#SkRRect_writeToMemory'>writeToMemory</a>(void* buffer) const; 73 size_t <a href='#SkRRect_readFromMemory'>readFromMemory</a>(const void* buffer, size_t length); 74 bool <a href='#SkRRect_transform'>transform</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& <a href='SkMatrix_Reference#Matrix'>matrix</a>, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst) const; 75 void <a href='#SkRRect_dump'>dump</a>(bool asHex) const; 76 void <a href='#SkRRect_dump'>dump()</a> const; 77 void <a href='#SkRRect_dumpHex'>dumpHex</a>() const; 78}; 79</pre> 80 81<a href='SkRRect_Reference#SkRRect'>SkRRect</a> describes a rounded rectangle with a bounds and a pair of radii for each corner. 82The bounds and radii can be set so that <a href='SkRRect_Reference#SkRRect'>SkRRect</a> describes: a rectangle with sharp corners; 83a <a href='undocumented#Circle'>Circle</a>; an <a href='undocumented#Oval'>Oval</a>; or a rectangle with one or more rounded corners. 84 85<a href='SkRRect_Reference#SkRRect'>SkRRect</a> allows implementing CSS properties that describe rounded corners. 86<a href='SkRRect_Reference#SkRRect'>SkRRect</a> may have up to eight different radii, one for each axis on each of its four 87corners. 88 89<a href='SkRRect_Reference#SkRRect'>SkRRect</a> may modify the provided parameters when initializing bounds and radii. 90If either axis radii is zero or less: radii are stored as zero; corner is square. 91If corner <a href='undocumented#Curve'>curves</a> overlap, radii are proportionally reduced to fit within bounds. 92 93<a name='SkRRect_empty_constructor'></a> 94 95--- 96 97<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 98<a href='#SkRRect_empty_constructor'>SkRRect()</a> 99</pre> 100 101Initializes bounds at (0, 0), the origin, with zero width and height. 102Initializes corner radii to (0, 0), and sets type of <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 103 104### Return Value 105 106empty <a href='SkRRect_Reference#SkRRect'>SkRRect</a> 107 108### Example 109 110<div><fiddle-embed name="471e7aad0feaf9ec3a21757a317a64f5"></fiddle-embed></div> 111 112### See Also 113 114<a href='#SkRRect_setEmpty'>setEmpty</a> <a href='#SkRRect_isEmpty'>isEmpty</a> 115 116<a name='SkRRect_copy_const_SkRRect'></a> 117 118--- 119 120<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 121<a href='#SkRRect_copy_const_SkRRect'>SkRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect) 122</pre> 123 124Initializes to copy of <a href='#SkRRect_copy_const_SkRRect_rrect'>rrect</a> bounds and corner radii. 125 126### Parameters 127 128<table> <tr> <td><a name='SkRRect_copy_const_SkRRect_rrect'><code><strong>rrect</strong></code></a></td> 129 <td>bounds and corner to copy</td> 130 </tr> 131</table> 132 133### Return Value 134 135copy of <a href='#SkRRect_copy_const_SkRRect_rrect'>rrect</a> 136 137### Example 138 139<div><fiddle-embed name="ad8f5d49edfcee60eddfe2a955b6c5f5"></fiddle-embed></div> 140 141### See Also 142 143<a href='#SkRRect_copy_operator'>operator=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_copy_const_SkRRect_rrect'>rrect</a>) <a href='#SkRRect_MakeRect'>MakeRect</a> 144 145<a name='SkRRect_copy_operator'></a> 146 147--- 148 149<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 150<a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_copy_operator'>operator=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect) 151</pre> 152 153Copies <a href='#SkRRect_copy_operator_rrect'>rrect</a> bounds and corner radii. 154 155### Parameters 156 157<table> <tr> <td><a name='SkRRect_copy_operator_rrect'><code><strong>rrect</strong></code></a></td> 158 <td>bounds and corner to copy</td> 159 </tr> 160</table> 161 162### Return Value 163 164copy of <a href='#SkRRect_copy_operator_rrect'>rrect</a> 165 166### Example 167 168<div><fiddle-embed name="52926c98c1cca00606d3ea99f23fea3d"></fiddle-embed></div> 169 170### See Also 171 172<a href='#SkRRect_copy_const_SkRRect'>SkRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_copy_operator_rrect'>rrect</a>) <a href='#SkRRect_MakeRect'>MakeRect</a> 173 174<a name='Type'></a> 175 176<a name='SkRRect_Type'></a> 177 178--- 179 180<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 181 enum <a href='#SkRRect_Type'>Type</a> { 182 <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>, 183 <a href='#SkRRect_kRect_Type'>kRect_Type</a>, 184 <a href='#SkRRect_kOval_Type'>kOval_Type</a>, 185 <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>, 186 <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>, 187 <a href='#SkRRect_kComplex_Type'>kComplex_Type</a>, 188 <a href='#SkRRect_kLastType'>kLastType</a> = <a href='#SkRRect_kComplex_Type'>kComplex_Type</a>, 189 }; 190</pre> 191 192<a href='#SkRRect_Type'>Type</a> describes possible specializations of <a href='#RRect'>Round_Rect</a>. Each <a href='#SkRRect_Type'>Type</a> is 193exclusive; a <a href='#RRect'>Round_Rect</a> may only have one type. 194 195<a href='#SkRRect_Type'>Type</a> members become progressively less restrictive; larger values of 196<a href='#SkRRect_Type'>Type</a> have more degrees of freedom than smaller values. 197 198### Constants 199 200<table style='border-collapse: collapse; width: 62.5em'> 201 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 202<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 203<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 204 <tr style='background-color: #f0f0f0; '> 205 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kEmpty_Type'><code>SkRRect::kEmpty_Type</code></a></td> 206 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> 207 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 208<a href='#RRect'>Round_Rect</a> has zero width or height. All radii are zero. 209</td> 210 </tr> 211 <tr> 212 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kRect_Type'><code>SkRRect::kRect_Type</code></a></td> 213 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 214 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 215<a href='#RRect'>Round_Rect</a> has width and height. All radii are zero. 216</td> 217 </tr> 218 <tr style='background-color: #f0f0f0; '> 219 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kOval_Type'><code>SkRRect::kOval_Type</code></a></td> 220 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 221 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 222<a href='#RRect'>Round_Rect</a> has width and height. All four x-radii are equal, 223and at least half the width. All four y-radii are equal, 224and at least half the height. 225</td> 226 </tr> 227 <tr> 228 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSimple_Type'><code>SkRRect::kSimple_Type</code></a></td> 229 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> 230 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 231<a href='#RRect'>Round_Rect</a> has width and height. All four x-radii are equal and 232greater than zero, and all four y-radii are equal and greater than 233zero. Either x-radii are less than half the width, or y-radii is 234less than half the height, or both. 235</td> 236 </tr> 237 <tr style='background-color: #f0f0f0; '> 238 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kNinePatch_Type'><code>SkRRect::kNinePatch_Type</code></a></td> 239 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td> 240 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 241<a href='#RRect'>Round_Rect</a> has width and height. Left x-radii are equal, top 242y-radii are equal, right x-radii are equal, and bottom y-radii 243are equal. The radii do not describe <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, or simple type. 244 245The centers of the corner ellipses form an axis-aligned rectangle 246that divides the <a href='#RRect'>Round_Rect</a> into nine rectangular <a href='undocumented#Patch'>patches</a>; an 247interior rectangle, four edges, and four corners. 248</td> 249 </tr> 250 <tr> 251 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kComplex_Type'><code>SkRRect::kComplex_Type</code></a></td> 252 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td> 253 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 254both radii are non-zero. 255</td> 256 </tr> 257 <tr style='background-color: #f0f0f0; '> 258 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLastType'><code>SkRRect::kLastType</code></a></td> 259 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td> 260 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 261largest Type value</td> 262 </tr> 263</table> 264 265### Example 266 267<div><fiddle-embed name="a4233634c75b72fc7a2815ddb69bd669"></fiddle-embed></div> 268 269### See Also 270 271<a href='SkRect_Reference#Rect'>Rect</a> <a href='SkPath_Reference#Path'>Path</a> 272 273<a name='SkRRect_getType'></a> 274 275--- 276 277<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 278<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a>()const 279</pre> 280 281Returns <a href='#SkRRect_Type'>Type</a>, one of: <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>, <a href='#SkRRect_kRect_Type'>kRect_Type</a>, <a href='#SkRRect_kOval_Type'>kOval_Type</a>, <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>, <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>, 282<a href='#SkRRect_kComplex_Type'>kComplex_Type</a> 283. 284 285### Return Value 286 287<a href='#SkRRect_Type'>Type</a> 288 289### Example 290 291<div><fiddle-embed name="ace8f4aebf90527d43e4b7291375c9ad"><div>rrect2 is not a <a href='SkRect_Reference#Rect'>Rect</a>; <a href='#SkRRect_inset'>inset()</a> has made it empty. 292</div></fiddle-embed></div> 293 294### See Also 295 296<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_type'>type</a> 297 298<a name='SkRRect_type'></a> 299 300--- 301 302<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 303<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_type'>type()</a>const 304</pre> 305 306Returns <a href='#SkRRect_Type'>Type</a>, one of: <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>, <a href='#SkRRect_kRect_Type'>kRect_Type</a>, <a href='#SkRRect_kOval_Type'>kOval_Type</a>, <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>, <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>, 307<a href='#SkRRect_kComplex_Type'>kComplex_Type</a> 308. 309 310### Return Value 311 312<a href='#SkRRect_Type'>Type</a> 313 314### Example 315 316<div><fiddle-embed name="1080805c8449406a4e26d694bc56d2dc"><div><a href='#SkRRect_inset'>inset()</a> has made rrect2 empty. 317</div></fiddle-embed></div> 318 319### See Also 320 321<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a> 322 323<a name='SkRRect_isEmpty'></a> 324 325--- 326 327<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 328bool <a href='#SkRRect_isEmpty'>isEmpty</a>()const 329</pre> 330 331### Example 332 333<div><fiddle-embed name="099d79ecfbdfb0a19c10deb7201859c3"></fiddle-embed></div> 334 335### See Also 336 337<a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_isEmpty'>isEmpty</a> <a href='#SkRRect_height'>height</a> <a href='#SkRRect_width'>width</a> 338 339<a name='SkRRect_isRect'></a> 340 341--- 342 343<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 344bool <a href='#SkRRect_isRect'>isRect</a>()const 345</pre> 346 347### Example 348 349<div><fiddle-embed name="bc931c9a6eb8ffe7ea8d3fb47e07a475"></fiddle-embed></div> 350 351### See Also 352 353<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_radii'>radii</a> 354 355<a name='SkRRect_isOval'></a> 356 357--- 358 359<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 360bool <a href='#SkRRect_isOval'>isOval</a>()const 361</pre> 362 363### Example 364 365<div><fiddle-embed name="4dfdb28d8343958425f2c1323fe8170d"><div>The first radii are scaled down proportionately until both x-axis and y-axis fit 366within the bounds. After scaling, x-axis radius is smaller than half the width; 367left <a href='#RRect'>Round_Rect</a> is not an <a href='undocumented#Oval'>oval</a>. The second radii are equal to half the 368dimensions; right <a href='#RRect'>Round_Rect</a> is an <a href='undocumented#Oval'>oval</a>. 369</div></fiddle-embed></div> 370 371### See Also 372 373<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawOval'>drawOval</a> 374 375<a name='SkRRect_isSimple'></a> 376 377--- 378 379<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 380bool <a href='#SkRRect_isSimple'>isSimple</a>()const 381</pre> 382 383### Example 384 385<div><fiddle-embed name="f6959ea422a7c6e98ddfad216a52c707"></fiddle-embed></div> 386 387### See Also 388 389<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isNinePatch'>isNinePatch</a> 390 391<a name='SkRRect_isNinePatch'></a> 392 393--- 394 395<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 396bool <a href='#SkRRect_isNinePatch'>isNinePatch</a>()const 397</pre> 398 399### Example 400 401<div><fiddle-embed name="429f6dfd4cf6287df3c3c77fa7681c99"></fiddle-embed></div> 402 403### See Also 404 405<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='#SkRRect_isComplex'>isComplex</a> 406 407<a name='SkRRect_isComplex'></a> 408 409--- 410 411<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 412bool <a href='#SkRRect_isComplex'>isComplex</a>()const 413</pre> 414 415### Example 416 417<div><fiddle-embed name="b62c183dc435d1fc091111fb2f3c3f8e"></fiddle-embed></div> 418 419### See Also 420 421<a href='#SkRRect_isEmpty'>isEmpty</a> <a href='#SkRRect_isRect'>isRect</a> <a href='#SkRRect_isOval'>isOval</a> <a href='#SkRRect_isSimple'>isSimple</a> <a href='#SkRRect_isNinePatch'>isNinePatch</a> 422 423<a name='SkRRect_width'></a> 424 425--- 426 427<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 428<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_width'>width()</a>const 429</pre> 430 431Returns span on the x-axis. This does not check if result fits in 32-bit float; 432result may be infinity. 433 434### Return Value 435 436<a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a> minus <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a> 437 438### Example 439 440<div><fiddle-embed name="c675a480b41dee157f84fa2550a2a53c"><div><a href='SkRRect_Reference#SkRRect'>SkRRect</a>::<a href='#SkRRect_MakeRect'>MakeRect</a> sorts its input, so <a href='#SkRRect_width'>width()</a> is always zero or larger. 441</div> 442 443#### Example Output 444 445~~~~ 446unsorted width: 5 447large width: inf 448~~~~ 449 450</fiddle-embed></div> 451 452### See Also 453 454<a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_width'>width</a> <a href='#SkRRect_height'>height</a> <a href='#SkRRect_getBounds'>getBounds</a> 455 456<a name='SkRRect_height'></a> 457 458--- 459 460<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 461<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkRRect_height'>height()</a>const 462</pre> 463 464Returns span on the y-axis. This does not check if result fits in 32-bit float; 465result may be infinity. 466 467### Return Value 468 469<a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a> minus <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a> 470 471### Example 472 473<div><fiddle-embed name="5a3eb1755164a7becec33cec6e6eca31"><div><a href='SkRRect_Reference#SkRRect'>SkRRect</a>::<a href='#SkRRect_MakeRect'>MakeRect</a> sorts its input, so <a href='#SkRRect_height'>height()</a> is always zero or larger. 474</div> 475 476#### Example Output 477 478~~~~ 479unsorted height: 5 480large height: inf 481~~~~ 482 483</fiddle-embed></div> 484 485### See Also 486 487<a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_height'>height</a> <a href='#SkRRect_width'>width</a> <a href='#SkRRect_getBounds'>getBounds</a> 488 489<a name='SkRRect_getSimpleRadii'></a> 490 491--- 492 493<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 494<a href='SkPoint_Reference#SkVector'>SkVector</a> <a href='#SkRRect_getSimpleRadii'>getSimpleRadii</a>()const 495</pre> 496 497Returns top-left corner radii. If <a href='#SkRRect_type'>type()</a> returns <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>, <a href='#SkRRect_kRect_Type'>kRect_Type</a>, 498<a href='#SkRRect_kOval_Type'>kOval_Type</a>, or <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>, returns a value representative of all corner radii. 499If <a href='#SkRRect_type'>type()</a> returns <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a> or <a href='#SkRRect_kComplex_Type'>kComplex_Type</a>, at least one of the 500remaining three corners has a different value. 501 502### Return Value 503 504corner radii for simple types 505 506### Example 507 508<div><fiddle-embed name="81345f7619a072bb2b0cf59810fe86d0"></fiddle-embed></div> 509 510### See Also 511 512<a href='#SkRRect_radii'>radii</a> <a href='#SkRRect_getBounds'>getBounds</a> <a href='#SkRRect_getType'>getType</a> <a href='#SkRRect_isSimple'>isSimple</a> 513 514<a name='SkRRect_setEmpty'></a> 515 516--- 517 518<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 519void <a href='#SkRRect_setEmpty'>setEmpty</a>() 520</pre> 521 522Sets bounds to zero width and height at (0, 0), the origin. Sets 523corner radii to zero and sets type to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 524 525### Example 526 527<div><fiddle-embed name="44e9a9c2c5ef1af2a616086ff46a9037"><div>Nothing blue is drawn because <a href='#RRect'>Round_Rect</a> is set to empty. 528</div></fiddle-embed></div> 529 530### See Also 531 532<a href='#SkRRect_MakeEmpty'>MakeEmpty</a> <a href='#SkRRect_setRect'>setRect</a> 533 534<a name='SkRRect_setRect'></a> 535 536--- 537 538<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 539void <a href='#SkRRect_setRect'>setRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>) 540</pre> 541 542Sets bounds to sorted <a href='#SkRRect_setRect_rect'>rect</a>, and sets corner radii to zero. 543If set bounds has width and height, and sets type to <a href='#SkRRect_kRect_Type'>kRect_Type</a>; 544otherwise, sets type to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 545 546### Parameters 547 548<table> <tr> <td><a name='SkRRect_setRect_rect'><code><strong>rect</strong></code></a></td> 549 <td>bounds to set</td> 550 </tr> 551</table> 552 553### Example 554 555<div><fiddle-embed name="3afc3ac9bebd1d7387822cc608571e82"></fiddle-embed></div> 556 557### See Also 558 559<a href='#SkRRect_MakeRect'>MakeRect</a> <a href='#SkRRect_setRectXY'>setRectXY</a> 560 561<a name='SkRRect_MakeEmpty'></a> 562 563--- 564 565<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 566static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeEmpty'>MakeEmpty</a>() 567</pre> 568 569Initializes bounds at (0, 0), the origin, with zero width and height. 570Initializes corner radii to (0, 0), and sets type of <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 571 572### Return Value 573 574empty <a href='SkRRect_Reference#SkRRect'>SkRRect</a> 575 576### Example 577 578<div><fiddle-embed name="c6c6be3b3c137226adbb5b5af9203d27"></fiddle-embed></div> 579 580### See Also 581 582<a href='#SkRRect_empty_constructor'>SkRRect()</a> <a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_MakeEmpty'>MakeEmpty</a> 583 584<a name='SkRRect_MakeRect'></a> 585 586--- 587 588<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 589static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRect'>MakeRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& r) 590</pre> 591 592Initializes to copy of <a href='#SkRRect_MakeRect_r'>r</a> bounds and zeroes corner radii. 593 594### Parameters 595 596<table> <tr> <td><a name='SkRRect_MakeRect_r'><code><strong>r</strong></code></a></td> 597 <td>bounds to copy</td> 598 </tr> 599</table> 600 601### Return Value 602 603copy of <a href='#SkRRect_MakeRect_r'>r</a> 604 605### Example 606 607<div><fiddle-embed name="5295b07fe4d2cdcd077979a9e19854d9"></fiddle-embed></div> 608 609### See Also 610 611<a href='#SkRRect_setRect'>setRect</a> <a href='#SkRRect_MakeOval'>MakeOval</a> <a href='#SkRRect_MakeRectXY'>MakeRectXY</a> 612 613<a name='SkRRect_MakeOval'></a> 614 615--- 616 617<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 618static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeOval'>MakeOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='undocumented#Oval'>oval</a>) 619</pre> 620 621Sets bounds to <a href='#SkRRect_MakeOval_oval'>oval</a>, x-axis radii to half <a href='#SkRRect_MakeOval_oval'>oval</a>.<a href='#SkRect_width'>width()</a>, and all y-axis radii 622to half <a href='#SkRRect_MakeOval_oval'>oval</a>.<a href='#SkRect_height'>height()</a>. If <a href='#SkRRect_MakeOval_oval'>oval</a> bounds is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 623Otherwise, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 624 625### Parameters 626 627<table> <tr> <td><a name='SkRRect_MakeOval_oval'><code><strong>oval</strong></code></a></td> 628 <td>bounds of <a href='#SkRRect_MakeOval_oval'>oval</a></td> 629 </tr> 630</table> 631 632### Return Value 633 634<a href='#SkRRect_MakeOval_oval'>oval</a> 635 636### Example 637 638<div><fiddle-embed name="0b99ee38fd154f769f6031242e02fa7a"></fiddle-embed></div> 639 640### See Also 641 642<a href='#SkRRect_setOval'>setOval</a> <a href='#SkRRect_MakeRect'>MakeRect</a> <a href='#SkRRect_MakeRectXY'>MakeRectXY</a> 643 644<a name='SkRRect_MakeRectXY'></a> 645 646--- 647 648<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 649static <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeRectXY'>MakeRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad) 650</pre> 651 652Sets to rounded rectangle with the same radii for all four corners. 653If <a href='#SkRRect_MakeRectXY_rect'>rect</a> is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 654Otherwise, if <a href='#SkRRect_MakeRectXY_xRad'>xRad</a> and <a href='#SkRRect_MakeRectXY_yRad'>yRad</a> are zero, sets to <a href='#SkRRect_kRect_Type'>kRect_Type</a>. 655Otherwise, if <a href='#SkRRect_MakeRectXY_xRad'>xRad</a> is at least half <a href='#SkRRect_MakeRectXY_rect'>rect</a>.<a href='#SkRect_width'>width()</a> and <a href='#SkRRect_MakeRectXY_yRad'>yRad</a> is at least half 656<a href='#SkRRect_MakeRectXY_rect'>rect</a>.<a href='#SkRect_height'>height()</a>, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 657Otherwise, sets to <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>. 658 659### Parameters 660 661<table> <tr> <td><a name='SkRRect_MakeRectXY_rect'><code><strong>rect</strong></code></a></td> 662 <td>bounds of rounded rectangle</td> 663 </tr> 664 <tr> <td><a name='SkRRect_MakeRectXY_xRad'><code><strong>xRad</strong></code></a></td> 665 <td>x-axis radius of corners</td> 666 </tr> 667 <tr> <td><a name='SkRRect_MakeRectXY_yRad'><code><strong>yRad</strong></code></a></td> 668 <td>y-axis radius of corners</td> 669 </tr> 670</table> 671 672### Return Value 673 674rounded rectangle 675 676### Example 677 678<div><fiddle-embed name="2b24a1247637cbc94f8b3c77d37ed3e2"></fiddle-embed></div> 679 680### See Also 681 682<a href='#SkRRect_setRectXY'>setRectXY</a> 683 684<a name='SkRRect_setOval'></a> 685 686--- 687 688<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 689void <a href='#SkRRect_setOval'>setOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='undocumented#Oval'>oval</a>) 690</pre> 691 692Sets bounds to <a href='#SkRRect_setOval_oval'>oval</a>, x-axis radii to half <a href='#SkRRect_setOval_oval'>oval</a>.<a href='#SkRect_width'>width()</a>, and all y-axis radii 693to half <a href='#SkRRect_setOval_oval'>oval</a>.<a href='#SkRect_height'>height()</a>. If <a href='#SkRRect_setOval_oval'>oval</a> bounds is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 694Otherwise, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 695 696### Parameters 697 698<table> <tr> <td><a name='SkRRect_setOval_oval'><code><strong>oval</strong></code></a></td> 699 <td>bounds of <a href='#SkRRect_setOval_oval'>oval</a></td> 700 </tr> 701</table> 702 703### Example 704 705<div><fiddle-embed name="cf418af29cbab6243ac16aacd1217ffe"></fiddle-embed></div> 706 707### See Also 708 709<a href='#SkRRect_MakeOval'>MakeOval</a> 710 711<a name='SkRRect_setRectXY'></a> 712 713--- 714 715<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 716void <a href='#SkRRect_setRectXY'>setRectXY</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> xRad, <a href='undocumented#SkScalar'>SkScalar</a> yRad) 717</pre> 718 719Sets to rounded rectangle with the same radii for all four corners. 720If <a href='#SkRRect_setRectXY_rect'>rect</a> is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 721Otherwise, if <a href='#SkRRect_setRectXY_xRad'>xRad</a> or <a href='#SkRRect_setRectXY_yRad'>yRad</a> is zero, sets to <a href='#SkRRect_kRect_Type'>kRect_Type</a>. 722Otherwise, if <a href='#SkRRect_setRectXY_xRad'>xRad</a> is at least half <a href='#SkRRect_setRectXY_rect'>rect</a>.<a href='#SkRect_width'>width()</a> and <a href='#SkRRect_setRectXY_yRad'>yRad</a> is at least half 723<a href='#SkRRect_setRectXY_rect'>rect</a>.<a href='#SkRect_height'>height()</a>, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 724Otherwise, sets to <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>. 725 726### Parameters 727 728<table> <tr> <td><a name='SkRRect_setRectXY_rect'><code><strong>rect</strong></code></a></td> 729 <td>bounds of rounded rectangle</td> 730 </tr> 731 <tr> <td><a name='SkRRect_setRectXY_xRad'><code><strong>xRad</strong></code></a></td> 732 <td>x-axis radius of corners</td> 733 </tr> 734 <tr> <td><a name='SkRRect_setRectXY_yRad'><code><strong>yRad</strong></code></a></td> 735 <td>y-axis radius of corners</td> 736 </tr> 737</table> 738 739### Example 740 741<div><fiddle-embed name="6ac569e40fb68c758319e85428b9ae95"></fiddle-embed></div> 742 743### See Also 744 745<a href='#SkRRect_MakeRectXY'>MakeRectXY</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_addRoundRect'>addRoundRect</a> 746 747<a name='SkRRect_setNinePatch'></a> 748 749--- 750 751<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 752void <a href='#SkRRect_setNinePatch'>setNinePatch</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkScalar'>SkScalar</a> leftRad, <a href='undocumented#SkScalar'>SkScalar</a> topRad, <a href='undocumented#SkScalar'>SkScalar</a> rightRad, 753 <a href='undocumented#SkScalar'>SkScalar</a> bottomRad) 754</pre> 755 756Sets bounds to <a href='#SkRRect_setNinePatch_rect'>rect</a>. Sets radii to (<a href='#SkRRect_setNinePatch_leftRad'>leftRad</a>, <a href='#SkRRect_setNinePatch_topRad'>topRad</a>), (<a href='#SkRRect_setNinePatch_rightRad'>rightRad</a>, <a href='#SkRRect_setNinePatch_topRad'>topRad</a>), 757(<a href='#SkRRect_setNinePatch_rightRad'>rightRad</a>, <a href='#SkRRect_setNinePatch_bottomRad'>bottomRad</a>), (<a href='#SkRRect_setNinePatch_leftRad'>leftRad</a>, <a href='#SkRRect_setNinePatch_bottomRad'>bottomRad</a>). 758 759If <a href='#SkRRect_setNinePatch_rect'>rect</a> is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 760Otherwise, if <a href='#SkRRect_setNinePatch_leftRad'>leftRad</a> and <a href='#SkRRect_setNinePatch_rightRad'>rightRad</a> are zero, sets to <a href='#SkRRect_kRect_Type'>kRect_Type</a>. 761Otherwise, if <a href='#SkRRect_setNinePatch_topRad'>topRad</a> and <a href='#SkRRect_setNinePatch_bottomRad'>bottomRad</a> are zero, sets to <a href='#SkRRect_kRect_Type'>kRect_Type</a>. 762Otherwise, if <a href='#SkRRect_setNinePatch_leftRad'>leftRad</a> and <a href='#SkRRect_setNinePatch_rightRad'>rightRad</a> are equal and at least half <a href='#SkRRect_setNinePatch_rect'>rect</a>.<a href='#SkRect_width'>width()</a>, and 763<a href='#SkRRect_setNinePatch_topRad'>topRad</a> and <a href='#SkRRect_setNinePatch_bottomRad'>bottomRad</a> are equal at least half <a href='#SkRRect_setNinePatch_rect'>rect</a>.<a href='#SkRect_height'>height()</a>, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 764Otherwise, if <a href='#SkRRect_setNinePatch_leftRad'>leftRad</a> and <a href='#SkRRect_setNinePatch_rightRad'>rightRad</a> are equal, and <a href='#SkRRect_setNinePatch_topRad'>topRad</a> and <a href='#SkRRect_setNinePatch_bottomRad'>bottomRad</a> are equal, 765sets to <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>. Otherwise, sets to <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>. 766 767Nine <a href='undocumented#Patch'>patch</a> refers to the nine parts defined by the radii: one center rectangle, 768four edge <a href='undocumented#Patch'>patches</a>, and four corner <a href='undocumented#Patch'>patches</a>. 769 770### Parameters 771 772<table> <tr> <td><a name='SkRRect_setNinePatch_rect'><code><strong>rect</strong></code></a></td> 773 <td>bounds of rounded rectangle</td> 774 </tr> 775 <tr> <td><a name='SkRRect_setNinePatch_leftRad'><code><strong>leftRad</strong></code></a></td> 776 <td>left-top and left-bottom x-axis radius</td> 777 </tr> 778 <tr> <td><a name='SkRRect_setNinePatch_topRad'><code><strong>topRad</strong></code></a></td> 779 <td>left-top and right-top y-axis radius</td> 780 </tr> 781 <tr> <td><a name='SkRRect_setNinePatch_rightRad'><code><strong>rightRad</strong></code></a></td> 782 <td>right-top and right-bottom x-axis radius</td> 783 </tr> 784 <tr> <td><a name='SkRRect_setNinePatch_bottomRad'><code><strong>bottomRad</strong></code></a></td> 785 <td>left-bottom and right-bottom y-axis radius</td> 786 </tr> 787</table> 788 789### Example 790 791<div><fiddle-embed name="c4620df2eaba447b581688d3100053b1"></fiddle-embed></div> 792 793### See Also 794 795<a href='#SkRRect_setRectRadii'>setRectRadii</a> 796 797<a name='SkRRect_setRectRadii'></a> 798 799--- 800 801<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 802void <a href='#SkRRect_setRectRadii'>setRectRadii</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, const <a href='SkPoint_Reference#SkVector'>SkVector</a> radii[4]) 803</pre> 804 805Sets bounds to <a href='#SkRRect_setRectRadii_rect'>rect</a>. Sets <a href='#SkRRect_setRectRadii_radii'>radii</a> array for individual control of all for corners. 806 807If <a href='#SkRRect_setRectRadii_rect'>rect</a> is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty_Type</a>. 808Otherwise, if one of each corner <a href='#SkRRect_setRectRadii_radii'>radii</a> are zero, sets to <a href='#SkRRect_kRect_Type'>kRect_Type</a>. 809Otherwise, if all x-axis <a href='#SkRRect_setRectRadii_radii'>radii</a> are equal and at least half <a href='#SkRRect_setRectRadii_rect'>rect</a>.<a href='#SkRect_width'>width()</a>, and 810all y-axis <a href='#SkRRect_setRectRadii_radii'>radii</a> are equal at least half <a href='#SkRRect_setRectRadii_rect'>rect</a>.<a href='#SkRect_height'>height()</a>, sets to <a href='#SkRRect_kOval_Type'>kOval_Type</a>. 811Otherwise, if all x-axis <a href='#SkRRect_setRectRadii_radii'>radii</a> are equal, and all y-axis <a href='#SkRRect_setRectRadii_radii'>radii</a> are equal, 812sets to <a href='#SkRRect_kSimple_Type'>kSimple_Type</a>. Otherwise, sets to <a href='#SkRRect_kNinePatch_Type'>kNinePatch_Type</a>. 813 814### Parameters 815 816<table> <tr> <td><a name='SkRRect_setRectRadii_rect'><code><strong>rect</strong></code></a></td> 817 <td>bounds of rounded rectangle</td> 818 </tr> 819 <tr> <td><a name='SkRRect_setRectRadii_radii'><code><strong>radii</strong></code></a></td> 820 <td>corner x-axis and y-axis <a href='#SkRRect_setRectRadii_radii'>radii</a></td> 821 </tr> 822</table> 823 824### Example 825 826<div><fiddle-embed name="340d6c51efaa1f7f3d0dcaf8b0e90696"></fiddle-embed></div> 827 828### See Also 829 830<a href='#SkRRect_setNinePatch'>setNinePatch</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_addRoundRect'>addRoundRect</a> 831 832<a name='SkRRect_Corner'></a> 833 834--- 835 836<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 837 enum <a href='#SkRRect_Corner'>Corner</a> { 838 <a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft_Corner</a>, 839 <a href='#SkRRect_kUpperRight_Corner'>kUpperRight_Corner</a>, 840 <a href='#SkRRect_kLowerRight_Corner'>kLowerRight_Corner</a>, 841 <a href='#SkRRect_kLowerLeft_Corner'>kLowerLeft_Corner</a>, 842 }; 843</pre> 844 845The radii are stored: top-left, top-right, bottom-right, bottom-left. 846 847### Constants 848 849<table style='border-collapse: collapse; width: 62.5em'> 850 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 851<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 852<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 853 <tr style='background-color: #f0f0f0; '> 854 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kUpperLeft_Corner'><code>SkRRect::kUpperLeft_Corner</code></a></td> 855 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td> 856 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 857index of top-left corner radii</td> 858 </tr> 859 <tr> 860 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kUpperRight_Corner'><code>SkRRect::kUpperRight_Corner</code></a></td> 861 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td> 862 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 863index of top-right corner radii</td> 864 </tr> 865 <tr style='background-color: #f0f0f0; '> 866 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLowerRight_Corner'><code>SkRRect::kLowerRight_Corner</code></a></td> 867 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td> 868 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 869index of bottom-right corner radii</td> 870 </tr> 871 <tr> 872 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLowerLeft_Corner'><code>SkRRect::kLowerLeft_Corner</code></a></td> 873 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td> 874 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 875index of bottom-left corner radii</td> 876 </tr> 877</table> 878 879### Example 880 881<div><fiddle-embed name="9205393f30b156e1507e88aa27f1dd91"></fiddle-embed></div> 882 883### See Also 884 885<a href='#SkRRect_radii'>radii</a> 886 887<a name='SkRRect_rect'></a> 888 889--- 890 891<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 892const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_rect'>rect()</a>const 893</pre> 894 895Returns bounds. Bounds may have zero width or zero height. Bounds right is 896greater than or equal to left; bounds bottom is greater than or equal to top. 897Result is identical to <a href='#SkRRect_getBounds'>getBounds</a>(). 898 899### Return Value 900 901bounding box 902 903### Example 904 905<div><fiddle-embed name="6831adf4c536047f4709c686feb10c48"> 906 907#### Example Output 908 909~~~~ 910left bounds: (nan) 0 911left bounds: (inf) 0 912left bounds: (100) 60 913left bounds: (50) 50 914left bounds: (25) 25 915~~~~ 916 917</fiddle-embed></div> 918 919### See Also 920 921<a href='#SkRRect_getBounds'>getBounds</a> 922 923<a name='SkRRect_radii'></a> 924 925--- 926 927<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 928<a href='SkPoint_Reference#SkVector'>SkVector</a> radii(<a href='#SkRRect_Corner'>Corner</a> corner)const 929</pre> 930 931Returns <a href='undocumented#Scalar'>scalar</a> pair for radius of <a href='undocumented#Curve'>curve</a> on x-axis and y-axis for one <a href='#SkRRect_radii_corner'>corner</a>. 932Both radii may be zero. If not zero, both are positive and finite. 933 934### Parameters 935 936<table> <tr> <td><a name='SkRRect_radii_corner'><code><strong>corner</strong></code></a></td> 937 <td>one of: <a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft_Corner</a>, <a href='#SkRRect_kUpperRight_Corner'>kUpperRight_Corner</a>,</td> 938 </tr> 939</table> 940 941<a href='#SkRRect_kLowerRight_Corner'>kLowerRight_Corner</a>, <a href='#SkRRect_kLowerLeft_Corner'>kLowerLeft_Corner</a> 942 943### Return Value 944 945x-axis and y-axis radii for one <a href='#SkRRect_radii_corner'>corner</a> 946 947### Example 948 949<div><fiddle-embed name="8d5c88478528584913867ada423e0d59"><div>Finite values are scaled proportionately to fit; other values are set to zero. 950Scaled values cannot be larger than 25, half the bounding <a href='#RRect'>Round_Rect</a> width. 951Small scaled values are halved to scale in proportion to the y-axis <a href='#SkRRect_radii_corner'>corner</a> 952radius, which is twice the bounds height. 953</div> 954 955#### Example Output 956 957~~~~ 958left corner: (nan) 0 959left corner: (inf) 0 960left corner: (100) 25 961left corner: (50) 25 962left corner: (25) 12.5 963~~~~ 964 965</fiddle-embed></div> 966 967### See Also 968 969<a href='#SkRRect_Corner'>Corner</a> 970 971<a name='SkRRect_getBounds'></a> 972 973--- 974 975<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 976const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkRRect_getBounds'>getBounds</a>()const 977</pre> 978 979Returns bounds. Bounds may have zero width or zero height. Bounds right is 980greater than or equal to left; bounds bottom is greater than or equal to top. 981Result is identical to <a href='#SkRRect_rect'>rect()</a>. 982 983### Return Value 984 985bounding box 986 987### Example 988 989<div><fiddle-embed name="4577e2dcb086b241bb43d8b89ee0b0dd"></fiddle-embed></div> 990 991### See Also 992 993<a href='#SkRRect_rect'>rect</a> 994 995<a name='SkRRect_equal_operator'></a> 996 997--- 998 999<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1000bool <a href='#SkRRect_equal_operator'>operator==</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& a, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& b) 1001</pre> 1002 1003Returns true if bounds and radii in <a href='#SkRRect_equal_operator_a'>a</a> are equal to bounds and radii in <a href='#SkRRect_equal_operator_b'>b</a>. 1004 1005<a href='#SkRRect_equal_operator_a'>a</a> and <a href='#SkRRect_equal_operator_b'>b</a> are not equal if either contain NaN. <a href='#SkRRect_equal_operator_a'>a</a> and <a href='#SkRRect_equal_operator_b'>b</a> are equal if members 1006contain zeroes with different signs. 1007 1008### Parameters 1009 1010<table> <tr> <td><a name='SkRRect_equal_operator_a'><code><strong>a</strong></code></a></td> 1011 <td><a href='SkRect_Reference#SkRect'>SkRect</a> bounds and radii to compare</td> 1012 </tr> 1013 <tr> <td><a name='SkRRect_equal_operator_b'><code><strong>b</strong></code></a></td> 1014 <td><a href='SkRect_Reference#SkRect'>SkRect</a> bounds and radii to compare</td> 1015 </tr> 1016</table> 1017 1018### Return Value 1019 1020true if members are equal 1021 1022### Example 1023 1024<div><fiddle-embed name="df181af37f1d2b06f0f45af73df7b47d"></fiddle-embed></div> 1025 1026### See Also 1027 1028<a href='#SkRRect_notequal_operator'>operator!=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_equal_operator_a'>a</a>, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_equal_operator_b'>b</a>) 1029 1030<a name='SkRRect_notequal_operator'></a> 1031 1032--- 1033 1034<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1035bool <a href='#SkRRect_notequal_operator'>operator!=</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& a, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& b) 1036</pre> 1037 1038Returns true if bounds and radii in <a href='#SkRRect_notequal_operator_a'>a</a> are not equal to bounds and radii in <a href='#SkRRect_notequal_operator_b'>b</a>. 1039 1040<a href='#SkRRect_notequal_operator_a'>a</a> and <a href='#SkRRect_notequal_operator_b'>b</a> are not equal if either contain NaN. <a href='#SkRRect_notequal_operator_a'>a</a> and <a href='#SkRRect_notequal_operator_b'>b</a> are equal if members 1041contain zeroes with different signs. 1042 1043### Parameters 1044 1045<table> <tr> <td><a name='SkRRect_notequal_operator_a'><code><strong>a</strong></code></a></td> 1046 <td><a href='SkRect_Reference#SkRect'>SkRect</a> bounds and radii to compare</td> 1047 </tr> 1048 <tr> <td><a name='SkRRect_notequal_operator_b'><code><strong>b</strong></code></a></td> 1049 <td><a href='SkRect_Reference#SkRect'>SkRect</a> bounds and radii to compare</td> 1050 </tr> 1051</table> 1052 1053### Return Value 1054 1055true if members are not equal 1056 1057### Example 1058 1059<div><fiddle-embed name="505e47b3e6474ebdecdc04c3c2af2c34"></fiddle-embed></div> 1060 1061### See Also 1062 1063<a href='#SkRRect_equal_operator'>operator==</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_notequal_operator_a'>a</a>, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& <a href='#SkRRect_notequal_operator_b'>b</a>) 1064 1065<a name='SkRRect_inset'></a> 1066 1067--- 1068 1069<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1070void inset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst)const 1071</pre> 1072 1073Copies <a href='SkRRect_Reference#SkRRect'>SkRRect</a> to <a href='#SkRRect_inset_dst'>dst</a>, then insets <a href='#SkRRect_inset_dst'>dst</a> bounds by <a href='#SkRRect_inset_dx'>dx</a> and <a href='#SkRRect_inset_dy'>dy</a>, and adjusts <a href='#SkRRect_inset_dst'>dst</a> 1074radii by <a href='#SkRRect_inset_dx'>dx</a> and <a href='#SkRRect_inset_dy'>dy</a>. <a href='#SkRRect_inset_dx'>dx</a> and <a href='#SkRRect_inset_dy'>dy</a> may be positive, negative, or zero. <a href='#SkRRect_inset_dst'>dst</a> may be 1075<a href='SkRRect_Reference#SkRRect'>SkRRect</a>. 1076 1077If either corner radius is zero, the corner has no curvature and is unchanged. 1078Otherwise, if adjusted radius becomes negative, pins radius to zero. 1079If <a href='#SkRRect_inset_dx'>dx</a> exceeds half <a href='#SkRRect_inset_dst'>dst</a> bounds width, <a href='#SkRRect_inset_dst'>dst</a> bounds left and right are set to 1080bounds x-axis center. If <a href='#SkRRect_inset_dy'>dy</a> exceeds half <a href='#SkRRect_inset_dst'>dst</a> bounds height, <a href='#SkRRect_inset_dst'>dst</a> bounds top and 1081bottom are set to bounds y-axis center. 1082 1083If <a href='#SkRRect_inset_dx'>dx</a> or <a href='#SkRRect_inset_dy'>dy</a> cause the bounds to become infinite, <a href='#SkRRect_inset_dst'>dst</a> bounds is zeroed. 1084 1085### Parameters 1086 1087<table> <tr> <td><a name='SkRRect_inset_dx'><code><strong>dx</strong></code></a></td> 1088 <td>added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a>, and subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1089 </tr> 1090 <tr> <td><a name='SkRRect_inset_dy'><code><strong>dy</strong></code></a></td> 1091 <td>added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a>, and subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1092 </tr> 1093 <tr> <td><a name='SkRRect_inset_dst'><code><strong>dst</strong></code></a></td> 1094 <td>insets bounds and radii</td> 1095 </tr> 1096</table> 1097 1098### Example 1099 1100<div><fiddle-embed name="f02f0110d5605dac6d14dcb8d1d8cb6e"></fiddle-embed></div> 1101 1102### See Also 1103 1104<a href='#SkRRect_outset'>outset</a> <a href='#SkRRect_offset'>offset</a> <a href='#SkRRect_makeOffset'>makeOffset</a> 1105 1106<a name='SkRRect_inset_2'></a> 1107 1108--- 1109 1110<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1111void inset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) 1112</pre> 1113 1114Insets bounds by <a href='#SkRRect_inset_2_dx'>dx</a> and <a href='#SkRRect_inset_2_dy'>dy</a>, and adjusts radii by <a href='#SkRRect_inset_2_dx'>dx</a> and <a href='#SkRRect_inset_2_dy'>dy</a>. <a href='#SkRRect_inset_2_dx'>dx</a> and <a href='#SkRRect_inset_2_dy'>dy</a> may be 1115positive, negative, or zero. 1116 1117If either corner radius is zero, the corner has no curvature and is unchanged. 1118Otherwise, if adjusted radius becomes negative, pins radius to zero. 1119If <a href='#SkRRect_inset_2_dx'>dx</a> exceeds half bounds width, bounds left and right are set to 1120bounds x-axis center. If <a href='#SkRRect_inset_2_dy'>dy</a> exceeds half bounds height, bounds top and 1121bottom are set to bounds y-axis center. 1122 1123If <a href='#SkRRect_inset_2_dx'>dx</a> or <a href='#SkRRect_inset_2_dy'>dy</a> cause the bounds to become infinite, bounds is zeroed. 1124 1125### Parameters 1126 1127<table> <tr> <td><a name='SkRRect_inset_2_dx'><code><strong>dx</strong></code></a></td> 1128 <td>added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a>, and subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1129 </tr> 1130 <tr> <td><a name='SkRRect_inset_2_dy'><code><strong>dy</strong></code></a></td> 1131 <td>added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a>, and subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1132 </tr> 1133</table> 1134 1135### Example 1136 1137<div><fiddle-embed name="da61054322550a2d5ac15114da23bd23"></fiddle-embed></div> 1138 1139### See Also 1140 1141<a href='#SkRRect_outset'>outset</a> <a href='#SkRRect_offset'>offset</a> <a href='#SkRRect_makeOffset'>makeOffset</a> 1142 1143<a name='SkRRect_outset'></a> 1144 1145--- 1146 1147<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1148void outset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst)const 1149</pre> 1150 1151Outsets <a href='#SkRRect_outset_dst'>dst</a> bounds by <a href='#SkRRect_outset_dx'>dx</a> and <a href='#SkRRect_outset_dy'>dy</a>, and adjusts radii by <a href='#SkRRect_outset_dx'>dx</a> and <a href='#SkRRect_outset_dy'>dy</a>. <a href='#SkRRect_outset_dx'>dx</a> and <a href='#SkRRect_outset_dy'>dy</a> may be 1152positive, negative, or zero. 1153 1154If either corner radius is zero, the corner has no curvature and is unchanged. 1155Otherwise, if adjusted radius becomes negative, pins radius to zero. 1156If <a href='#SkRRect_outset_dx'>dx</a> exceeds half <a href='#SkRRect_outset_dst'>dst</a> bounds width, <a href='#SkRRect_outset_dst'>dst</a> bounds left and right are set to 1157bounds x-axis center. If <a href='#SkRRect_outset_dy'>dy</a> exceeds half <a href='#SkRRect_outset_dst'>dst</a> bounds height, <a href='#SkRRect_outset_dst'>dst</a> bounds top and 1158bottom are set to bounds y-axis center. 1159 1160If <a href='#SkRRect_outset_dx'>dx</a> or <a href='#SkRRect_outset_dy'>dy</a> cause the bounds to become infinite, <a href='#SkRRect_outset_dst'>dst</a> bounds is zeroed. 1161 1162### Parameters 1163 1164<table> <tr> <td><a name='SkRRect_outset_dx'><code><strong>dx</strong></code></a></td> 1165 <td>subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a>, and added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1166 </tr> 1167 <tr> <td><a name='SkRRect_outset_dy'><code><strong>dy</strong></code></a></td> 1168 <td>subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a>, and added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1169 </tr> 1170 <tr> <td><a name='SkRRect_outset_dst'><code><strong>dst</strong></code></a></td> 1171 <td>outset bounds and radii</td> 1172 </tr> 1173</table> 1174 1175### Example 1176 1177<div><fiddle-embed name="4d69b6d9c7726c47c42827d79fc7899c"></fiddle-embed></div> 1178 1179### See Also 1180 1181<a href='#SkRRect_inset'>inset</a> <a href='#SkRRect_offset'>offset</a> <a href='#SkRRect_makeOffset'>makeOffset</a> 1182 1183<a name='SkRRect_outset_2'></a> 1184 1185--- 1186 1187<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1188void outset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) 1189</pre> 1190 1191Outsets bounds by <a href='#SkRRect_outset_2_dx'>dx</a> and <a href='#SkRRect_outset_2_dy'>dy</a>, and adjusts radii by <a href='#SkRRect_outset_2_dx'>dx</a> and <a href='#SkRRect_outset_2_dy'>dy</a>. <a href='#SkRRect_outset_2_dx'>dx</a> and <a href='#SkRRect_outset_2_dy'>dy</a> may be 1192positive, negative, or zero. 1193 1194If either corner radius is zero, the corner has no curvature and is unchanged. 1195Otherwise, if adjusted radius becomes negative, pins radius to zero. 1196If <a href='#SkRRect_outset_2_dx'>dx</a> exceeds half bounds width, bounds left and right are set to 1197bounds x-axis center. If <a href='#SkRRect_outset_2_dy'>dy</a> exceeds half bounds height, bounds top and 1198bottom are set to bounds y-axis center. 1199 1200If <a href='#SkRRect_outset_2_dx'>dx</a> or <a href='#SkRRect_outset_2_dy'>dy</a> cause the bounds to become infinite, bounds is zeroed. 1201 1202### Parameters 1203 1204<table> <tr> <td><a name='SkRRect_outset_2_dx'><code><strong>dx</strong></code></a></td> 1205 <td>subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a>, and added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1206 </tr> 1207 <tr> <td><a name='SkRRect_outset_2_dy'><code><strong>dy</strong></code></a></td> 1208 <td>subtracted from <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a>, and added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1209 </tr> 1210</table> 1211 1212### Example 1213 1214<div><fiddle-embed name="4391cced86653dcd0f84439a5c0bb3f2"></fiddle-embed></div> 1215 1216### See Also 1217 1218<a href='#SkRRect_inset'>inset</a> <a href='#SkRRect_offset'>offset</a> <a href='#SkRRect_makeOffset'>makeOffset</a> 1219 1220<a name='SkRRect_offset'></a> 1221 1222--- 1223 1224<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1225void offset(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) 1226</pre> 1227 1228Translates <a href='SkRRect_Reference#SkRRect'>SkRRect</a> by (<a href='#SkRRect_offset_dx'>dx</a>, <a href='#SkRRect_offset_dy'>dy</a>). 1229 1230### Parameters 1231 1232<table> <tr> <td><a name='SkRRect_offset_dx'><code><strong>dx</strong></code></a></td> 1233 <td>offset added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a> and <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1234 </tr> 1235 <tr> <td><a name='SkRRect_offset_dy'><code><strong>dy</strong></code></a></td> 1236 <td>offset added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a> and <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1237 </tr> 1238</table> 1239 1240### Example 1241 1242<div><fiddle-embed name="a45cdd46ef2fe0df62d84d41713e82e2"></fiddle-embed></div> 1243 1244### See Also 1245 1246<a href='#SkRRect_makeOffset'>makeOffset</a> <a href='#SkRRect_inset'>inset outset</a> 1247 1248<a name='SkRRect_makeOffset'></a> 1249 1250--- 1251 1252<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1253<a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='#SkRRect_makeOffset'>makeOffset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)const 1254</pre> 1255 1256Returns <a href='SkRRect_Reference#SkRRect'>SkRRect</a> translated by (<a href='#SkRRect_makeOffset_dx'>dx</a>, <a href='#SkRRect_makeOffset_dy'>dy</a>). 1257 1258### Parameters 1259 1260<table> <tr> <td><a name='SkRRect_makeOffset_dx'><code><strong>dx</strong></code></a></td> 1261 <td>offset added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fLeft'>fLeft</a> and <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fRight'>fRight</a></td> 1262 </tr> 1263 <tr> <td><a name='SkRRect_makeOffset_dy'><code><strong>dy</strong></code></a></td> 1264 <td>offset added to <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fTop'>fTop</a> and <a href='#SkRRect_rect'>rect()</a>.<a href='#SkRect_fBottom'>fBottom</a></td> 1265 </tr> 1266</table> 1267 1268### Return Value 1269 1270<a href='SkRRect_Reference#SkRRect'>SkRRect</a> bounds offset by (<a href='#SkRRect_makeOffset_dx'>dx</a>, <a href='#SkRRect_makeOffset_dy'>dy</a>), with unchanged corner radii 1271 1272### Example 1273 1274<div><fiddle-embed name="c433aa41eaf5e419e3349fb970a08151"></fiddle-embed></div> 1275 1276### See Also 1277 1278<a href='#SkRRect_offset'>offset</a> <a href='#SkRRect_inset'>inset outset</a> 1279 1280<a name='SkRRect_contains'></a> 1281 1282--- 1283 1284<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1285bool contains(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>)const 1286</pre> 1287 1288Returns true if <a href='#SkRRect_contains_rect'>rect</a> is inside the bounds and corner radii, and if 1289<a href='SkRRect_Reference#SkRRect'>SkRRect</a> and <a href='#SkRRect_contains_rect'>rect</a> are not empty. 1290 1291### Parameters 1292 1293<table> <tr> <td><a name='SkRRect_contains_rect'><code><strong>rect</strong></code></a></td> 1294 <td>area tested for containment</td> 1295 </tr> 1296</table> 1297 1298### Return Value 1299 1300true if <a href='SkRRect_Reference#SkRRect'>SkRRect</a> contains <a href='#SkRRect_contains_rect'>rect</a> 1301 1302### Example 1303 1304<div><fiddle-embed name="0bb057140e4119234bdd2e8dd2f0fa19"></fiddle-embed></div> 1305 1306### See Also 1307 1308<a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_contains'>contains</a> 1309 1310<a name='SkRRect_isValid'></a> 1311 1312--- 1313 1314<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1315bool <a href='#SkRRect_isValid'>isValid</a>()const 1316</pre> 1317 1318Returns true if bounds and radii values are finite and describe a <a href='SkRRect_Reference#SkRRect'>SkRRect</a> 1319<a href='SkRRect_Reference#SkRRect'>SkRRect</a>::<a href='#SkRRect_Type'>Type</a> that matches <a href='#SkRRect_getType'>getType</a>(). All <a href='SkRRect_Reference#SkRRect'>SkRRect</a> methods construct valid types, 1320even if the input values are not valid. Invalid <a href='SkRRect_Reference#SkRRect'>SkRRect</a> <a href='undocumented#Data'>data</a> can only 1321be generated by corrupting memory. 1322 1323### Return Value 1324 1325true if bounds and radii match <a href='#SkRRect_type'>type()</a> 1326 1327### Example 1328 1329<div><fiddle-embed name="8cc1f21c98c0416f7724ad218f557a00"></fiddle-embed></div> 1330 1331### See Also 1332 1333<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a> 1334 1335### Constants 1336 1337<table style='border-collapse: collapse; width: 62.5em'> 1338 <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th> 1339<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th> 1340<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr> 1341 <tr style='background-color: #f0f0f0; '> 1342 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSizeInMemory'><code>SkRRect::kSizeInMemory</code></a></td> 1343 <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>48</td> 1344 <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '> 1345Space required to write the contents of <a href='SkRRect_Reference#SkRRect'>SkRRect</a> into a buffer; always a multiple of four. 1346</td> 1347 </tr> 1348</table> 1349 1350<a name='SkRRect_writeToMemory'></a> 1351 1352--- 1353 1354<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1355size_t <a href='#SkRRect_writeToMemory'>writeToMemory</a>(void* buffer)const 1356</pre> 1357 1358Writes <a href='SkRRect_Reference#SkRRect'>SkRRect</a> to <a href='#SkRRect_writeToMemory_buffer'>buffer</a>. Writes <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes, and returns 1359<a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>, the number of bytes written. 1360 1361### Parameters 1362 1363<table> <tr> <td><a name='SkRRect_writeToMemory_buffer'><code><strong>buffer</strong></code></a></td> 1364 <td>storage for <a href='SkRRect_Reference#SkRRect'>SkRRect</a></td> 1365 </tr> 1366</table> 1367 1368### Return Value 1369 1370bytes written, <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> 1371 1372### Example 1373 1374<div><fiddle-embed name="d6f5a3d21727ddc15e10ef4d5103ff91"></fiddle-embed></div> 1375 1376### See Also 1377 1378<a href='#SkRRect_readFromMemory'>readFromMemory</a> 1379 1380<a name='SkRRect_readFromMemory'></a> 1381 1382--- 1383 1384<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1385size_t <a href='#SkRRect_readFromMemory'>readFromMemory</a>(const void* buffer, size_t length) 1386</pre> 1387 1388Reads <a href='SkRRect_Reference#SkRRect'>SkRRect</a> from <a href='#SkRRect_readFromMemory_buffer'>buffer</a>, reading <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes. 1389Returns <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>, bytes read if <a href='#SkRRect_readFromMemory_length'>length</a> is at least <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>. 1390Otherwise, returns zero. 1391 1392### Parameters 1393 1394<table> <tr> <td><a name='SkRRect_readFromMemory_buffer'><code><strong>buffer</strong></code></a></td> 1395 <td>memory to read from</td> 1396 </tr> 1397 <tr> <td><a name='SkRRect_readFromMemory_length'><code><strong>length</strong></code></a></td> 1398 <td><a href='undocumented#Size'>size</a> of <a href='#SkRRect_readFromMemory_buffer'>buffer</a></td> 1399 </tr> 1400</table> 1401 1402### Return Value 1403 1404bytes read, or 0 if <a href='#SkRRect_readFromMemory_length'>length</a> is less than <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> 1405 1406### Example 1407 1408<div><fiddle-embed name="50969745cf2b23544362f4cff5592b75"></fiddle-embed></div> 1409 1410### See Also 1411 1412<a href='#SkRRect_writeToMemory'>writeToMemory</a> 1413 1414<a name='SkRRect_transform'></a> 1415 1416--- 1417 1418<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1419bool transform(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& <a href='SkMatrix_Reference#Matrix'>matrix</a>, <a href='SkRRect_Reference#SkRRect'>SkRRect</a>* dst)const 1420</pre> 1421 1422Transforms by <a href='SkRRect_Reference#SkRRect'>SkRRect</a> by <a href='#SkRRect_transform_matrix'>matrix</a>, storing result in <a href='#SkRRect_transform_dst'>dst</a>. 1423Returns true if <a href='SkRRect_Reference#SkRRect'>SkRRect</a> transformed can be represented by another <a href='SkRRect_Reference#SkRRect'>SkRRect</a>. 1424Returns false if <a href='#SkRRect_transform_matrix'>matrix</a> contains transformations other than scale and translate. 1425 1426Asserts in debug builds if <a href='SkRRect_Reference#SkRRect'>SkRRect</a> equals <a href='#SkRRect_transform_dst'>dst</a>. 1427 1428### Parameters 1429 1430<table> <tr> <td><a name='SkRRect_transform_matrix'><code><strong>matrix</strong></code></a></td> 1431 <td><a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a> specifying the transform</td> 1432 </tr> 1433 <tr> <td><a name='SkRRect_transform_dst'><code><strong>dst</strong></code></a></td> 1434 <td><a href='SkRRect_Reference#SkRRect'>SkRRect</a> to store the result</td> 1435 </tr> 1436</table> 1437 1438### Return Value 1439 1440true if transformation succeeded. 1441 1442### Example 1443 1444<div><fiddle-embed name="68a5d24f22e2d798608fce8a20e47fd0"></fiddle-embed></div> 1445 1446### See Also 1447 1448<a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_transform'>transform</a> 1449 1450<a name='SkRRect_dump'></a> 1451 1452--- 1453 1454<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1455void <a href='#SkRRect_dump'>dump</a>(bool asHex)const 1456</pre> 1457 1458Writes <a href='undocumented#Text'>text</a> representation of <a href='SkRRect_Reference#SkRRect'>SkRRect</a> to standard output. 1459Set <a href='#SkRRect_dump_asHex'>asHex</a> true to generate exact binary representations 1460of floating <a href='SkPoint_Reference#Point'>point</a> numbers. 1461 1462### Parameters 1463 1464<table> <tr> <td><a name='SkRRect_dump_asHex'><code><strong>asHex</strong></code></a></td> 1465 <td>true if <a href='undocumented#SkScalar'>SkScalar</a> values are written as hexadecimal</td> 1466 </tr> 1467</table> 1468 1469### Example 1470 1471<div><fiddle-embed name="265b8d23288dc8026ff788e809360af7"> 1472 1473#### Example Output 1474 1475~~~~ 1476SkRect::MakeLTRB(0.857143f, 0.666667f, 0.857143f, 0.666667f); 1477const SkPoint corners[] = { 1478{ 0, 0 }, 1479{ 0, 0 }, 1480{ 0, 0 }, 1481{ 0, 0 }, 1482}; 1483SkRect::MakeLTRB(SkBits2Float(0x3f5b6db7), /* 0.857143 */ 1484SkBits2Float(0x3f2aaaab), /* 0.666667 */ 1485SkBits2Float(0x3f5b6db7), /* 0.857143 */ 1486SkBits2Float(0x3f2aaaab) /* 0.666667 */); 1487const SkPoint corners[] = { 1488{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1489{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1490{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1491{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1492}; 1493~~~~ 1494 1495</fiddle-embed></div> 1496 1497### See Also 1498 1499<a href='#SkRRect_dumpHex'>dumpHex</a> <a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_dump'>dump</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_dump'>dump</a> <a href='undocumented#SkPathMeasure'>SkPathMeasure</a>::<a href='#SkPathMeasure_dump'>dump</a> 1500 1501<a name='SkRRect_dump_2'></a> 1502 1503--- 1504 1505<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1506void <a href='#SkRRect_dump'>dump()</a>const 1507</pre> 1508 1509Writes <a href='undocumented#Text'>text</a> representation of <a href='SkRRect_Reference#SkRRect'>SkRRect</a> to standard output. The representation 1510may be directly compiled as C++ code. Floating <a href='SkPoint_Reference#Point'>point</a> values are written 1511with limited precision; it may not be possible to reconstruct original 1512<a href='SkRRect_Reference#SkRRect'>SkRRect</a> from output. 1513 1514### Example 1515 1516<div><fiddle-embed name="f850423c7c0c4f803d479ecd92221059"> 1517 1518#### Example Output 1519 1520~~~~ 1521SkRect::MakeLTRB(0.857143f, 0.666667f, 0.857143f, 0.666667f); 1522const SkPoint corners[] = { 1523{ 0, 0 }, 1524{ 0, 0 }, 1525{ 0, 0 }, 1526{ 0, 0 }, 1527}; 1528rrect is not equal to copy 1529~~~~ 1530 1531</fiddle-embed></div> 1532 1533### See Also 1534 1535<a href='#SkRRect_dumpHex'>dumpHex</a> <a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_dump'>dump</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_dump'>dump</a> <a href='undocumented#SkPathMeasure'>SkPathMeasure</a>::<a href='#SkPathMeasure_dump'>dump</a> 1536 1537<a name='SkRRect_dumpHex'></a> 1538 1539--- 1540 1541<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0"> 1542void <a href='#SkRRect_dumpHex'>dumpHex</a>()const 1543</pre> 1544 1545Writes <a href='undocumented#Text'>text</a> representation of <a href='SkRRect_Reference#SkRRect'>SkRRect</a> to standard output. The representation 1546may be directly compiled as C++ code. Floating <a href='SkPoint_Reference#Point'>point</a> values are written 1547in hexadecimal to preserve their exact bit pattern. The output reconstructs the 1548original <a href='SkRRect_Reference#SkRRect'>SkRRect</a>. 1549 1550### Example 1551 1552<div><fiddle-embed name="c73f5e2644d949b859f05bd367883454"> 1553 1554#### Example Output 1555 1556~~~~ 1557SkRect::MakeLTRB(SkBits2Float(0x3f5b6db7), /* 0.857143 */ 1558SkBits2Float(0x3f2aaaab), /* 0.666667 */ 1559SkBits2Float(0x3f5b6db7), /* 0.857143 */ 1560SkBits2Float(0x3f2aaaab) /* 0.666667 */); 1561const SkPoint corners[] = { 1562{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1563{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1564{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1565{ SkBits2Float(0x00000000), SkBits2Float(0x00000000) }, /* 0.000000 0.000000 */ 1566}; 1567rrect is equal to copy 1568~~~~ 1569 1570</fiddle-embed></div> 1571 1572### See Also 1573 1574<a href='#SkRRect_dump'>dump</a> <a href='SkRect_Reference#SkRect'>SkRect</a>::<a href='#SkRect_dumpHex'>dumpHex</a> <a href='SkPath_Reference#SkPath'>SkPath</a>::<a href='#SkPath_dumpHex'>dumpHex</a> 1575 1576