aboutsummaryrefslogtreecommitdiffhomepage
path: root/site
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-05-16 21:28:55 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-17 14:02:43 +0000
commitc06754b0466e14e1611fa3144bf337289e6ca82f (patch)
tree287a31a09b4556003569103655a855f8eefd43a6 /site
parentbd74e6a02ae0e7b031aa1d1cd73062dba2c93daf (diff)
mapRect should not fiddle with nonfinite values.
Docs-Preview: https://skia.org/?cl=128682 Bug: skia:7967 Change-Id: Ic43387b7705ee8385b8df2430886484ff856077c Reviewed-on: https://skia-review.googlesource.com/128682 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'site')
-rw-r--r--site/user/api/SkMatrix_Reference.md57
-rw-r--r--site/user/api/SkRect_Reference.md62
-rw-r--r--site/user/api/catalog.htm16
3 files changed, 111 insertions, 24 deletions
diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md
index f627ebe9ee..f7596b414f 100644
--- a/site/user/api/SkMatrix_Reference.md
+++ b/site/user/api/SkMatrix_Reference.md
@@ -4398,46 +4398,50 @@ ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapRect_2'>mapRect(SkRect* rect)</a> const</td>
</tr>
<tr style='background-color: #f0f0f0; '>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapRect_3'>mapRect(const SkRect& src)</a> const</td>
+ </tr>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapRectScaleTranslate'>mapRectScaleTranslate</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns bounds of mapped <a href='SkRect_Reference#Rect'>Rect</a></td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapRectToQuad'>mapRectToQuad</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>maps <a href='SkRect_Reference#Rect'>Rect</a> to <a href='SkPoint_Reference#Point'>Point</a> array</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVector'>mapVector</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>maps <a href='SkPoint_Reference#Vector'>Vector</a></td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVector'>mapVector(SkScalar dx, SkScalar dy, SkVector* result)</a> const</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVector_2'>mapVector(SkScalar dx, SkScalar dy)</a> const</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVectors'>mapVectors</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>maps <a href='SkPoint_Reference#Vector'>Vector</a> array</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVectors'>mapVectors(SkVector dst[], const SkVector src[], int count)</a> const</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapVectors_2'>mapVectors(SkVector vecs[], int count)</a> const</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapXY'>mapXY</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>maps <a href='SkPoint_Reference#Point'>Point</a></td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapXY'>mapXY(SkScalar x, SkScalar y, SkPoint* result)</a> const</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkMatrix_mapXY_2'>mapXY(SkScalar x, SkScalar y)</a> const</td>
</tr>
@@ -4966,6 +4970,35 @@ true if result is equivalent to mapped src
---
+<a name='SkMatrix_mapRect_3'></a>
+
+<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
+<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkMatrix_mapRect'>mapRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& src) const
+</pre>
+
+Returns bounds of <a href='#SkMatrix_mapRect_3_src'>src</a> corners mapped by <a href='#Matrix'>Matrix</a>.
+
+### Parameters
+
+<table> <tr> <td><a name='SkMatrix_mapRect_3_src'><code><strong>src</strong></code></a></td>
+ <td>rectangle to map</td>
+ </tr>
+</table>
+
+### Return Value
+
+mapped bounds
+
+### Example
+
+<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+
+### See Also
+
+incomplete
+
+---
+
<a name='SkMatrix_mapRectToQuad'></a>
## mapRectToQuad
@@ -5015,7 +5048,7 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
### See Also
-<a href='#SkMatrix_mapRect'>mapRect</a><sup><a href='#SkMatrix_mapRect_2'>[2]</a></sup> <a href='#SkMatrix_mapRectScaleTranslate'>mapRectScaleTranslate</a>
+<a href='#SkMatrix_mapRect'>mapRect</a><sup><a href='#SkMatrix_mapRect_2'>[2]</a></sup><sup><a href='#SkMatrix_mapRect_3'>[3]</a></sup> <a href='#SkMatrix_mapRectScaleTranslate'>mapRectScaleTranslate</a>
---
@@ -5046,7 +5079,7 @@ otherwise, results are undefined.
### See Also
-<a href='#SkMatrix_mapRect'>mapRect</a><sup><a href='#SkMatrix_mapRect_2'>[2]</a></sup> <a href='#SkMatrix_mapRectToQuad'>mapRectToQuad</a> <a href='#SkMatrix_isScaleTranslate'>isScaleTranslate</a> <a href='#SkMatrix_rectStaysRect'>rectStaysRect</a>
+<a href='#SkMatrix_mapRect'>mapRect</a><sup><a href='#SkMatrix_mapRect_2'>[2]</a></sup><sup><a href='#SkMatrix_mapRect_3'>[3]</a></sup> <a href='#SkMatrix_mapRectToQuad'>mapRectToQuad</a> <a href='#SkMatrix_isScaleTranslate'>isScaleTranslate</a> <a href='#SkMatrix_rectStaysRect'>rectStaysRect</a>
---
diff --git a/site/user/api/SkRect_Reference.md b/site/user/api/SkRect_Reference.md
index d2b36304f3..1c84c4cd22 100644
--- a/site/user/api/SkRect_Reference.md
+++ b/site/user/api/SkRect_Reference.md
@@ -263,42 +263,46 @@ SkRect member functions read and modify the structure properties.
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to upper and lower limits of <a href='SkPoint_Reference#Point'>Point</a> array</td>
</tr>
<tr style='background-color: #f0f0f0; '>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setBoundsNoCheck'>setBoundsNoCheck</a></td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to upper and lower limits of <a href='SkPoint_Reference#Point'>Point</a> array</td>
+ </tr>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setEmpty'>setEmpty</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to (0, 0, 0, 0)</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setLTRB'>setLTRB</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (left, top, right, bottom)</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setWH'>setWH</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (0, 0, width, height)</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setXYWH'>setXYWH</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (x, y, width, height)</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_sort'>sort</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>orders sides from smaller to larger</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_toQuad'>toQuad</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns four corners as <a href='SkPoint_Reference#Point'>Point</a></td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_top'>top</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns smaller bounds in y, if sorted</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_width'>width</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in x</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_x'>x</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns bounds left</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_y'>y</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns bounds top</td>
</tr>
@@ -1604,24 +1608,58 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 success: false
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_set'>set(const SkIRect& src)</a></td>
</tr>
<tr style='background-color: #f0f0f0; '>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setBoundsNoCheck'>setBoundsNoCheck</a></td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to upper and lower limits of <a href='SkPoint_Reference#Point'>Point</a> array</td>
+ </tr>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setEmpty'>setEmpty</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to (0, 0, 0, 0)</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setLTRB'>setLTRB</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (left, top, right, bottom)</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
+ <tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setWH'>setWH</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (0, 0, width, height)</td>
</tr>
- <tr>
+ <tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRect_setXYWH'>setXYWH</a></td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets to <a href='undocumented#SkScalar'>SkScalar</a> input (x, y, width, height)</td>
</tr>
</table>
+<a name='SkRect_setBoundsNoCheck'></a>
+## setBoundsNoCheck
+
+<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
+void <a href='#SkRect_setBoundsNoCheck'>setBoundsNoCheck</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> pts[], int count)
+</pre>
+
+Sets to bounds of <a href='SkPoint_Reference#Point'>Point</a> array with <a href='#SkRect_setBoundsNoCheck_count'>count</a> entries. If any point contains a non-finite value
+then the rect will also be non-finite.
+
+### Parameters
+
+<table> <tr> <td><a name='SkRect_setBoundsNoCheck_pts'><code><strong>pts</strong></code></a></td>
+ <td><a href='SkPoint_Reference#Point'>Point</a> array</td>
+ </tr>
+ <tr> <td><a name='SkRect_setBoundsNoCheck_count'><code><strong>count</strong></code></a></td>
+ <td>entries in array</td>
+ </tr>
+</table>
+
+### Example
+
+<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+
+### See Also
+
+<a href='#SkRect_setBoundsCheck'>setBoundsCheck</a>
+
+---
+
<a name='SkRect_setEmpty'></a>
## setEmpty
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index 0b50b1acb1..7e6f3599df 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -5725,6 +5725,14 @@
"file": "SkMatrix_Reference",
"name": "SkMatrix::mapRect_2"
},
+ "SkMatrix_mapRect_3": {
+ "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "width": 256,
+ "height": 256,
+ "hash": "882e8e0103048009a25cfc20400492f7",
+ "file": "SkMatrix_Reference",
+ "name": "SkMatrix::mapRect_3"
+},
"SkMatrix_mapVector": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setColor(SK_ColorGREEN);\n paint.setAntiAlias(true);\n paint.setTextSize(48);\n SkMatrix matrix;\n matrix.setRotate(90);\n SkVector offset = { 7, 7 };\n for (int i = 0; i < 4; ++i) {\n paint.setImageFilter(SkDropShadowImageFilter::Make(offset.fX, offset.fY, 3, 3,\n SK_ColorBLUE, SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr));\n matrix.mapVector(offset.fX, offset.fY, &offset);\n canvas->translate(0, 60);\n canvas->drawString(\"Text\", 50, 0, paint);\n }\n}",
"width": 256,
@@ -7165,6 +7173,14 @@
"file": "SkColor_Reference",
"name": "SkRGBToHSV"
},
+ "SkRect_setBoundsNoCheck": {
+ "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "width": 256,
+ "height": 256,
+ "hash": "882e8e0103048009a25cfc20400492f7",
+ "file": "SkRect_Reference",
+ "name": "SkRect::setBoundsNoCheck"
+},
"SkSurface_MakeFromBackendTexture": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setTextSize(32);\n GrContext* context = canvas->getGrContext();\n if (!context) {\n canvas->drawString(\"GPU only!\", 20, 40, paint);\n return;\n }\n sk_sp<SkSurface> gpuSurface = SkSurface::MakeFromBackendTexture(context,\n backEndTexture, kTopLeft_GrSurfaceOrigin, 0,\n kRGBA_8888_SkColorType, nullptr, nullptr);\n auto surfaceCanvas = gpuSurface->getCanvas();\n surfaceCanvas->drawString(\"GPU rocks!\", 20, 40, paint);\n sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n canvas->drawImage(image, 0, 0);\n}",
"width": 256,