aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/SkImage_Reference.bmh130
-rw-r--r--docs/SkPath_Reference.bmh13
-rw-r--r--docs/undocumented.bmh4
-rw-r--r--site/user/api/SkImage_Reference.md81
-rw-r--r--site/user/api/SkPath_Reference.md11
-rw-r--r--site/user/api/catalog.htm46
-rw-r--r--site/user/api/undocumented.md6
-rw-r--r--tools/bookmaker/bookmaker.cpp2
-rw-r--r--tools/bookmaker/bookmaker.h3
-rw-r--r--tools/bookmaker/definition.cpp12
-rw-r--r--tools/bookmaker/includeParser.cpp15
-rw-r--r--tools/bookmaker/includeWriter.cpp3
-rw-r--r--tools/bookmaker/mdOut.cpp2
13 files changed, 242 insertions, 86 deletions
diff --git a/docs/SkImage_Reference.bmh b/docs/SkImage_Reference.bmh
index 9a2b79e711..1f61db2917 100644
--- a/docs/SkImage_Reference.bmh
+++ b/docs/SkImage_Reference.bmh
@@ -1142,17 +1142,35 @@ Returns Color_Space, the range of colors, associated with Image. The
reference count of Color_Space is unchanged. The returned Color_Space is
immutable.
-Color_Space returned was a parameter to an Image constructor,
-or was parsed from encoded data. Color_Space may be ignored when
-drawing Image, and when drawing into Surface constructed with Color_Space.
+Color_Space returned was passed to an Image constructor,
+or was parsed from encoded data. Color_Space returned may be ignored when Image
+is drawn, depending on the capabilities of the Surface receiving the drawing.
#Return Color_Space in Image, or nullptr ##
#Example
-// incomplete
+#Image 3
+#Set sRGB
+ SkPixmap pixmap;
+ source.peekPixels(&pixmap);
+ canvas->scale(.25f, .25f);
+ int y = 0;
+ for (auto gamma : { SkColorSpace::kLinear_RenderTargetGamma,
+ SkColorSpace::kSRGB_RenderTargetGamma } ) {
+ int x = 0;
+ sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(gamma, SkColorSpace::kSRGB_Gamut);
+ for (int index = 0; index < 2; ++index) {
+ pixmap.setColorSpace(colorSpace);
+ sk_sp<SkImage> image = SkImage::MakeRasterCopy(pixmap);
+ canvas->drawImage(image, x, y);
+ colorSpace = image->colorSpace()->makeColorSpin();
+ x += 512;
+ }
+ y += 512;
+ }
##
-#SeeAlso incomplete
+#SeeAlso refColorSpace makeColorSpace
#Method ##
@@ -1160,13 +1178,41 @@ drawing Image, and when drawing into Surface constructed with Color_Space.
#Method sk_sp<SkColorSpace> refColorSpace() const
-#Return incomplete ##
+Returns a smart pointer to Color_Space, the range of colors, associated with
+Image. The smart pointer tracks the number of objects sharing this
+SkColorSpace reference so the memory is released when the owners destruct.
+
+The returned SkColorSpace is immutable.
+
+Color_Space returned was passed to an Image constructor,
+or was parsed from encoded data. Color_Space returned may be ignored when Image
+is drawn, depending on the capabilities of the Surface receiving the drawing.
+
+#Return Color_Space in Image, or nullptr, wrapped in a smart pointer ##
#Example
-// incomplete
+#Image 3
+#Set sRGB
+ SkPixmap pixmap;
+ source.peekPixels(&pixmap);
+ canvas->scale(.25f, .25f);
+ int y = 0;
+ for (auto gamma : { SkColorSpace::kLinear_RenderTargetGamma,
+ SkColorSpace::kSRGB_RenderTargetGamma } ) {
+ int x = 0;
+ sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(gamma, SkColorSpace::kSRGB_Gamut);
+ for (int index = 0; index < 2; ++index) {
+ pixmap.setColorSpace(colorSpace);
+ sk_sp<SkImage> image = SkImage::MakeRasterCopy(pixmap);
+ canvas->drawImage(image, x, y);
+ colorSpace = image->refColorSpace()->makeColorSpin();
+ x += 512;
+ }
+ y += 512;
+ }
##
-#SeeAlso incomplete
+#SeeAlso colorSpace makeColorSpace
#Method ##
@@ -1180,10 +1226,15 @@ is packed in 8 bits as defined by kAlpha_8_SkColorType.
#Return true if pixels represent a transparency mask ##
#Example
-// incomplete
+ uint8_t pmColors = 0;
+ sk_sp<SkImage> image = SkImage::MakeRasterCopy({SkImageInfo::MakeA8(1, 1), &pmColors, 1});
+ SkDebugf("alphaOnly = %s\n", image->isAlphaOnly() ? "true" : "false");
+#StdOut
+alphaOnly = true
+##
##
-#SeeAlso incomplete
+#SeeAlso alphaType isOpaque
#Method ##
@@ -1191,15 +1242,26 @@ is packed in 8 bits as defined by kAlpha_8_SkColorType.
#Method bool isOpaque() const
-Returns if all pixels ignore any Alpha value and are treated as fully opaque.
+Returns true if pixels ignore their Alpha value and are treated as fully opaque.
#Return true if Alpha_Type is kOpaque_SkAlphaType ##
#Example
-// incomplete
+ auto check_isopaque = [](const SkImageInfo& imageInfo) -> void {
+ auto surface(SkSurface::MakeRaster(imageInfo));
+ auto image(surface->makeImageSnapshot());
+ SkDebugf("isOpaque = %s\n", image->isOpaque() ? "true" : "false");
+ };
+
+ check_isopaque(SkImageInfo::MakeN32Premul(5, 5));
+ check_isopaque(SkImageInfo::MakeN32(5, 5, kOpaque_SkAlphaType));
+#StdOut
+isOpaque = false
+isOpaque = true
+##
##
-#SeeAlso incomplete
+#SeeAlso alphaType isAlphaOnly
#Method ##
@@ -1208,17 +1270,31 @@ Returns if all pixels ignore any Alpha value and are treated as fully opaque.
#Method sk_sp<SkShader> makeShader(SkShader::TileMode tileMode1, SkShader::TileMode tileMode2,
const SkMatrix* localMatrix = nullptr) const
-#Param tileMode1 incomplete ##
-#Param tileMode2 incomplete ##
-#Param localMatrix incomplete ##
+Creates Shader from Image. Shader dimensions are taken from Image. Shader uses
+SkShader::TileMode rules to fill drawn area outside Image. localMatrix permits
+transforming Image before Canvas_Matrix is applied.
-#Return incomplete ##
+#Param tileMode1 tiling in x, one of: SkShader::kClamp_TileMode, SkShader::kRepeat_TileMode,
+ SkShader::kMirror_TileMode
+##
+#Param tileMode2 tiling in y, one of: SkShader::kClamp_TileMode, SkShader::kRepeat_TileMode,
+ SkShader::kMirror_TileMode
+##
+#Param localMatrix Image transformation, or nullptr ##
+
+#Return Shader containing Image ##
#Example
-// incomplete
+#Image 4
+SkMatrix matrix;
+matrix.setRotate(45);
+SkPaint paint;
+paint.setShader(image->makeShader(SkShader::kRepeat_TileMode, SkShader::kMirror_TileMode,
+ &matrix));
+canvas->drawPaint(paint);
##
-#SeeAlso incomplete
+#SeeAlso scalePixels
#Method ##
@@ -1226,14 +1302,22 @@ Returns if all pixels ignore any Alpha value and are treated as fully opaque.
#Method sk_sp<SkShader> makeShader(const SkMatrix* localMatrix = nullptr) const
-Helper version of makeShader() that specifies SkShader::kClamp_TileMode.
+Creates Shader from Image. Shader dimensions are taken from Image. Shader uses
+SkShader::kClamp_TileMode to fill drawn area outside Image. localMatrix permits
+transforming Image before Canvas_Matrix is applied.
-#Param localMatrix incomplete ##
+#Param localMatrix Image transformation, or nullptr ##
-#Return incomplete ##
+#Return Shader containing Image ##
#Example
-// incomplete
+#Image 5
+SkMatrix matrix;
+matrix.setRotate(45);
+matrix.postTranslate(125, 30);
+SkPaint paint;
+paint.setShader(image->makeShader(&matrix));
+canvas->drawPaint(paint);
##
#SeeAlso incomplete
diff --git a/docs/SkPath_Reference.bmh b/docs/SkPath_Reference.bmh
index 83943b0b6c..2626726488 100644
--- a/docs/SkPath_Reference.bmh
+++ b/docs/SkPath_Reference.bmh
@@ -736,10 +736,9 @@ paths are interpolatable
#Method bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const
-Interpolate between Paths with equal sized Point_Arrays.
-Copy Verb_Array and Weights to out,
-and set out Point_Array to a weighted average of this Point_Array and ending
-Point_Array, using the formula:
+Interpolate between Paths with Point_Array of equal size.
+Copy Verb_Array and Weights to out, and set out Point_Array to a weighted
+average of this Point_Array and ending Point_Array, using the formula:
#Formula
(this->points * weight) + ending->points * (1 - weight)
##
@@ -754,8 +753,8 @@ the same size as ending Point_Array. Call isInterpolatable to check Path
compatibility prior to calling interpolate().
#Param ending Point_Array averaged with this Point_Array ##
-#Param weight contribution of ending Point_Array, and
- one minus contribution of this Point_Array
+#Param weight contribution of this Point_Array, and
+ one minus contribution of ending Point_Array
##
#Param out Path replaced by interpolated averages ##
@@ -1759,7 +1758,7 @@ second move is not line
# ------------------------------------------------------------------------------
#Subtopic Point_Array
-#Alias Point_Arrays
+#Substitute SkPoint array
Point_Array contains Points satisfying the allocated Points for
each Verb in Verb_Array. For instance, Path containing one Contour with Line
diff --git a/docs/undocumented.bmh b/docs/undocumented.bmh
index f99aa2211a..6aff887829 100644
--- a/docs/undocumented.bmh
+++ b/docs/undocumented.bmh
@@ -694,6 +694,10 @@ FT_Load_Glyph
#Enum TileMode
#Const kClamp_TileMode 0
##
+ #Const kRepeat_TileMode 1
+ ##
+ #Const kMirror_TileMode 2
+ ##
##
#Method static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy,
const SkMatrix* localMatrix = nullptr)
diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md
index b42e5917c0..033a9c5f51 100644
--- a/site/user/api/SkImage_Reference.md
+++ b/site/user/api/SkImage_Reference.md
@@ -1176,9 +1176,9 @@ Returns <a href="undocumented#Color_Space">Color Space</a>, the range of colors,
reference count of <a href="undocumented#Color_Space">Color Space</a> is unchanged. The returned <a href="undocumented#Color_Space">Color Space</a> is
immutable.
-<a href="undocumented#Color_Space">Color Space</a> returned was a parameter to an <a href="#Image">Image</a> constructor,
-or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> may be ignored when
-drawing <a href="#Image">Image</a>, and when drawing into <a href="SkSurface_Reference#Surface">Surface</a> constructed with <a href="undocumented#Color_Space">Color Space</a>.
+<a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor,
+or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a>
+is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing.
### Return Value
@@ -1186,11 +1186,11 @@ drawing <a href="#Image">Image</a>, and when drawing into <a href="SkSurface_Ref
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="4468d573f42af6f5e234be10a5453bb2"></fiddle-embed></div>
### See Also
-incomplete
+<a href="#SkImage_refColorSpace">refColorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a>
---
@@ -1201,17 +1201,27 @@ incomplete
sk_sp&lt;SkColorSpace&gt; refColorSpace() const
</pre>
+Returns a smart pointer to <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with
+<a href="#Image">Image</a>. The smart pointer tracks the number of objects sharing this
+<a href="undocumented#SkColorSpace">SkColorSpace</a> reference so the memory is released when the owners destruct.
+
+The returned <a href="undocumented#SkColorSpace">SkColorSpace</a> is immutable.
+
+<a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor,
+or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a>
+is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing.
+
### Return Value
-incomplete
+<a href="undocumented#Color_Space">Color Space</a> in <a href="#Image">Image</a>, or nullptr, wrapped in a smart pointer
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="59b2078ebfbda8736a57c0486ae33332"></fiddle-embed></div>
### See Also
-incomplete
+<a href="#SkImage_colorSpace">colorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a>
---
@@ -1231,11 +1241,19 @@ true if pixels represent a transparency mask
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="50762c73b8ea91959c5a7b68fbf1062d">
+
+#### Example Output
+
+~~~~
+alphaOnly = true
+~~~~
+
+</fiddle-embed></div>
### See Also
-incomplete
+<a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isOpaque">isOpaque</a>
---
@@ -1246,7 +1264,7 @@ incomplete
bool isOpaque() const
</pre>
-Returns if all pixels ignore any <a href="#Alpha">Alpha</a> value and are treated as fully opaque.
+Returns true if pixels ignore their <a href="#Alpha">Alpha</a> value and are treated as fully opaque.
### Return Value
@@ -1254,11 +1272,20 @@ true if <a href="#Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaTyp
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="e3340460003b74ee286d625e68589d65">
+
+#### Example Output
+
+~~~~
+isOpaque = false
+isOpaque = true
+~~~~
+
+</fiddle-embed></div>
### See Also
-incomplete
+<a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isAlphaOnly">isAlphaOnly</a>
---
@@ -1270,28 +1297,34 @@ sk_sp&lt;SkShader&gt; makeShader(SkShader::TileMode tileMode1, SkShader::TileMod
const SkMatrix* localMatrix = nullptr) const
</pre>
+Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> <a href="#SkImage_dimensions">dimensions</a> are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses
+<a href="#SkShader_TileMode">SkShader::TileMode</a> rules to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_localMatrix">localMatrix</a> permits
+transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied.
+
### Parameters
<table> <tr> <td><a name="SkImage_makeShader_tileMode1"> <code><strong>tileMode1 </strong></code> </a></td> <td>
-incomplete</td>
+tiling in x, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>,
+<a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td>
</tr> <tr> <td><a name="SkImage_makeShader_tileMode2"> <code><strong>tileMode2 </strong></code> </a></td> <td>
-incomplete</td>
+tiling in y, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>,
+<a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td>
</tr> <tr> <td><a name="SkImage_makeShader_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td>
-incomplete</td>
+<a href="#Image">Image</a> transformation, or nullptr</td>
</tr>
</table>
### Return Value
-incomplete
+<a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="1c6de6fe72b00b5be970f5f718363449"></fiddle-embed></div>
### See Also
-incomplete
+<a href="#SkImage_scalePixels">scalePixels</a>
---
@@ -1299,22 +1332,24 @@ incomplete
sk_sp&lt;SkShader&gt; makeShader(const SkMatrix* localMatrix = nullptr) const
</pre>
-Helper version of
+Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> <a href="#SkImage_dimensions">dimensions</a> are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses
+<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_2_localMatrix">localMatrix</a> permits
+transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied.
### Parameters
<table> <tr> <td><a name="SkImage_makeShader_2_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td>
-incomplete</td>
+<a href="#Image">Image</a> transformation, or nullptr</td>
</tr>
</table>
### Return Value
-incomplete
+<a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="10172fca71b9dbdcade772513ffeb27e"></fiddle-embed></div>
### See Also
diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md
index 0ac5ae02c9..4b3dc94680 100644
--- a/site/user/api/SkPath_Reference.md
+++ b/site/user/api/SkPath_Reference.md
@@ -614,10 +614,9 @@ paths are interpolatable
bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const
</pre>
-Interpolate between <a href="#Path">Paths</a> with equal sized <a href="SkPath_Reference#Point_Array">Point Arrays</a>.
-Copy <a href="#Verb_Array">Verb Array</a> and <a href="#Weight">Weights</a> to <a href="#SkPath_interpolate_out">out</a>,
-and set <a href="#SkPath_interpolate_out">out</a> <a href="#Point_Array">Point Array</a> to a weighted average of this <a href="#Point_Array">Point Array</a> and <a href="#SkPath_interpolate_ending">ending</a>
-<a href="#Point_Array">Point Array</a>, using the formula:
+Interpolate between <a href="#Path">Paths</a> with <a href="#Point_Array">Point Array</a> of equal size.
+Copy <a href="#Verb_Array">Verb Array</a> and <a href="#Weight">Weights</a> to <a href="#SkPath_interpolate_out">out</a>, and set <a href="#SkPath_interpolate_out">out</a> <a href="#Point_Array">Point Array</a> to a weighted
+average of this <a href="#Point_Array">Point Array</a> and <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>, using the formula:
(this->points * <a href="#SkPath_interpolate_weight">weight</a>) + <a href="#SkPath_interpolate_ending">ending</a>->points * (1 - <a href="#SkPath_interpolate_weight">weight</a>).
<a href="#SkPath_interpolate_weight">weight</a> is most useful when between zero (<a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>) and
@@ -633,8 +632,8 @@ compatibility prior to calling <a href="#SkPath_interpolate">interpolate</a>.
<table> <tr> <td><a name="SkPath_interpolate_ending"> <code><strong>ending </strong></code> </a></td> <td>
<a href="#Point_Array">Point Array</a> averaged with this <a href="#Point_Array">Point Array</a></td>
</tr> <tr> <td><a name="SkPath_interpolate_weight"> <code><strong>weight </strong></code> </a></td> <td>
-contribution of <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>, and
-one minus contribution of this <a href="#Point_Array">Point Array</a></td>
+contribution of this <a href="#Point_Array">Point Array</a>, and
+one minus contribution of <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a></td>
</tr> <tr> <td><a name="SkPath_interpolate_out"> <code><strong>out </strong></code> </a></td> <td>
<a href="#Path">Path</a> replaced by interpolated averages</td>
</tr>
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index 67afa4b989..4265f09294 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -1050,6 +1050,20 @@
"name": "SkImage::dimensions()",
"stdout": "dimensionsAsBounds == bounds\\n"
},
+ "SkImage_isAlphaOnly": {
+ "code": "void draw(SkCanvas* canvas) {\n uint8_t pmColors = 0;\n sk_sp<SkImage> image = SkImage::MakeRasterCopy({SkImageInfo::MakeA8(1, 1), &pmColors, 1});\n SkDebugf(\"alphaOnly = %s\\n\", image->isAlphaOnly() ? \"true\" : \"false\");\n}",
+ "hash": "50762c73b8ea91959c5a7b68fbf1062d",
+ "file": "SkImage_Reference",
+ "name": "SkImage::isAlphaOnly",
+ "stdout": "alphaOnly = true\\n"
+ },
+ "SkImage_isOpaque": {
+ "code": "void draw(SkCanvas* canvas) {\n auto check_isopaque = [](const SkImageInfo& imageInfo) -> void {\n auto surface(SkSurface::MakeRaster(imageInfo));\n auto image(surface->makeImageSnapshot());\n SkDebugf(\"isOpaque = %s\\n\", image->isOpaque() ? \"true\" : \"false\");\n };\n check_isopaque(SkImageInfo::MakeN32Premul(5, 5));\n check_isopaque(SkImageInfo::MakeN32(5, 5, kOpaque_SkAlphaType));\n}",
+ "hash": "e3340460003b74ee286d625e68589d65",
+ "file": "SkImage_Reference",
+ "name": "SkImage::isOpaque",
+ "stdout": "isOpaque = false\\nisOpaque = true\\n"
+ },
"SkMatrix_I": {
"code": "void draw(SkCanvas* canvas) {\n SkMatrix m1, m2, m3;\n m1.reset();\n m2.setIdentity();\n m3 = SkMatrix::I();\n SkDebugf(\"m1 %c= m2\\n\", m1 == m2 ? '=' : '!');\n SkDebugf(\"m2 %c= m3\\n\", m1 == m2 ? '=' : '!');\n}",
"hash": "d961d91020f19037204a8c3fd8cb1060",
@@ -4868,10 +4882,10 @@
"name": "SkImage::bounds()"
},
"SkImage_colorSpace": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPixmap pixmap;\n source.peekPixels(&pixmap);\n canvas->scale(.25f, .25f);\n int y = 0;\n for (auto gamma : { SkColorSpace::kLinear_RenderTargetGamma,\n SkColorSpace::kSRGB_RenderTargetGamma } ) {\n int x = 0;\n sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(gamma, SkColorSpace::kSRGB_Gamut);\n for (int index = 0; index < 2; ++index) {\n pixmap.setColorSpace(colorSpace);\n sk_sp<SkImage> image = SkImage::MakeRasterCopy(pixmap);\n canvas->drawImage(image, x, y);\n colorSpace = image->colorSpace()->makeColorSpin();\n x += 512;\n }\n y += 512;\n }\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "4468d573f42af6f5e234be10a5453bb2",
"file": "SkImage_Reference",
"name": "SkImage::colorSpace"
},
@@ -4915,14 +4929,6 @@
"file": "SkImage_Reference",
"name": "SkImage::height()"
},
- "SkImage_isAlphaOnly": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkImage_Reference",
- "name": "SkImage::isAlphaOnly"
-},
"SkImage_isLazyGenerated": {
"code": "class TestImageGenerator : public SkImageGenerator {\npublic:\n TestImageGenerator() : SkImageGenerator(SkImageInfo::MakeN32Premul(10, 10)) {}\n ~TestImageGenerator() override {}\nprotected:\n bool onGetPixels(const SkImageInfo& info, void* pixelPtr, size_t rowBytes,\n const Options& options) override {\n SkPMColor* pixels = static_cast<SkPMColor*>(pixelPtr);\n for (int y = 0; y < info.height(); ++y) {\n for (int x = 0; x < info.width(); ++x) {\n pixels[y * info.width() + x] = 0xff223344 + y * 0x000C0811;\n }\n }\n return true;\n }\n};\n\nvoid draw(SkCanvas* canvas) {\n auto gen = std::unique_ptr<TestImageGenerator>(new TestImageGenerator());\n sk_sp<SkImage> image(SkImage::MakeFromGenerator(std::move(gen)));\n SkString lazy(image->isLazyGenerated() ? \"is lazy\" : \"not lazy\");\n canvas->scale(8, 8);\n canvas->drawImage(image, 0, 0, nullptr);\n SkPaint paint;\n paint.setTextSize(4);\n canvas->drawString(lazy, 2, 5, paint);\n}\n",
"width": 256,
@@ -4931,14 +4937,6 @@
"file": "SkImage_Reference",
"name": "SkImage::isLazyGenerated"
},
- "SkImage_isOpaque": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkImage_Reference",
- "name": "SkImage::isOpaque"
-},
"SkImage_isTextureBacked": {
"code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
"width": 256,
@@ -4980,18 +4978,18 @@
"name": "SkImage::makeRasterImage"
},
"SkImage_makeShader": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setRotate(45);\n SkPaint paint;\n paint.setShader(image->makeShader(SkShader::kRepeat_TileMode, SkShader::kMirror_TileMode,\n &matrix));\n canvas->drawPaint(paint);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "1c6de6fe72b00b5be970f5f718363449",
"file": "SkImage_Reference",
"name": "SkImage::makeShader"
},
"SkImage_makeShader_2": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkMatrix matrix;\n matrix.setRotate(45);\n matrix.postTranslate(125, 30);\n SkPaint paint;\n paint.setShader(image->makeShader(&matrix));\n canvas->drawPaint(paint);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "10172fca71b9dbdcade772513ffeb27e",
"file": "SkImage_Reference",
"name": "SkImage::makeShader_2"
},
@@ -5044,10 +5042,10 @@
"name": "SkImage::readPixels_2"
},
"SkImage_refColorSpace": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPixmap pixmap;\n source.peekPixels(&pixmap);\n canvas->scale(.25f, .25f);\n int y = 0;\n for (auto gamma : { SkColorSpace::kLinear_RenderTargetGamma,\n SkColorSpace::kSRGB_RenderTargetGamma } ) {\n int x = 0;\n sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(gamma, SkColorSpace::kSRGB_Gamut);\n for (int index = 0; index < 2; ++index) {\n pixmap.setColorSpace(colorSpace);\n sk_sp<SkImage> image = SkImage::MakeRasterCopy(pixmap);\n canvas->drawImage(image, x, y);\n colorSpace = image->refColorSpace()->makeColorSpin();\n x += 512;\n }\n y += 512;\n }\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "59b2078ebfbda8736a57c0486ae33332",
"file": "SkImage_Reference",
"name": "SkImage::refColorSpace"
},
diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md
index 9b4473e453..b0bbeba90f 100644
--- a/site/user/api/undocumented.md
+++ b/site/user/api/undocumented.md
@@ -1000,6 +1000,12 @@ void dumpHex() const
<tr>
<td><a name="SkShader_kClamp_TileMode"> <code><strong>SkShader::kClamp_TileMode </strong></code> </a></td><td>0</td><td></td>
</tr>
+ <tr>
+ <td><a name="SkShader_kRepeat_TileMode"> <code><strong>SkShader::kRepeat_TileMode </strong></code> </a></td><td>1</td><td></td>
+ </tr>
+ <tr>
+ <td><a name="SkShader_kMirror_TileMode"> <code><strong>SkShader::kMirror_TileMode </strong></code> </a></td><td>2</td><td></td>
+ </tr>
</table>
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index 2677621ee1..b7aa044885 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -342,6 +342,7 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
case MarkType::kOutdent:
case MarkType::kPlatform:
case MarkType::kSeeAlso:
+ case MarkType::kSet:
case MarkType::kSubstitute:
case MarkType::kTime:
case MarkType::kVolatile:
@@ -1262,6 +1263,7 @@ vector<string> BmhParser::typeName(MarkType markType, bool* checkEnd) {
case MarkType::kPlatform:
case MarkType::kReturn:
case MarkType::kSeeAlso:
+ case MarkType::kSet:
case MarkType::kSubstitute:
case MarkType::kTime:
case MarkType::kToDo:
diff --git a/tools/bookmaker/bookmaker.h b/tools/bookmaker/bookmaker.h
index cb0e8dab16..f309d795c9 100644
--- a/tools/bookmaker/bookmaker.h
+++ b/tools/bookmaker/bookmaker.h
@@ -122,6 +122,7 @@ enum class MarkType {
kRoot,
kRow,
kSeeAlso,
+ kSet,
kStdOut,
kStruct,
kSubstitute,
@@ -1236,6 +1237,7 @@ public:
, { "", nullptr, MarkType::kRow, R_Y, E_N, M(Table) | M(List) }
, { "SeeAlso", nullptr, MarkType::kSeeAlso, R_Y, E_N,
M_CSST | M_E | M(Method) | M(Typedef) }
+, { "Set", nullptr, MarkType::kSet, R_N, E_N, M(Example) }
, { "StdOut", nullptr, MarkType::kStdOut, R_N, E_N, M(Example) }
, { "Struct", &fClassMap, MarkType::kStruct, R_Y, E_O, M(Class) | M(Root) | M_ST }
, { "Substitute", nullptr, MarkType::kSubstitute, R_N, E_N, M_ST }
@@ -1425,6 +1427,7 @@ public:
, { nullptr, MarkType::kRoot }
, { nullptr, MarkType::kRow }
, { nullptr, MarkType::kSeeAlso }
+ , { nullptr, MarkType::kSet }
, { nullptr, MarkType::kStdOut }
, { &fIStructMap, MarkType::kStruct }
, { nullptr, MarkType::kSubstitute }
diff --git a/tools/bookmaker/definition.cpp b/tools/bookmaker/definition.cpp
index 933ecc6868..77f4446445 100644
--- a/tools/bookmaker/definition.cpp
+++ b/tools/bookmaker/definition.cpp
@@ -526,6 +526,7 @@ bool Definition::exampleToScript(string* result, ExampleOptions exampleOptions)
string normalizedName(fFiddle);
string code;
string imageStr = "0";
+ string srgbStr = "false";
for (auto const& iter : fChildren) {
switch (iter->fMarkType) {
case MarkType::kError:
@@ -562,6 +563,15 @@ bool Definition::exampleToScript(string* result, ExampleOptions exampleOptions)
case MarkType::kPlatform:
// ignore for now
break;
+ case MarkType::kSet:
+ if ("sRGB" == string(iter->fContentStart,
+ iter->fContentEnd - iter->fContentStart)) {
+ srgbStr = "true";
+ } else {
+ SkASSERT(0); // more work to do
+ return false;
+ }
+ break;
case MarkType::kStdOut:
textOut = true;
break;
@@ -609,7 +619,7 @@ bool Definition::exampleToScript(string* result, ExampleOptions exampleOptions)
example += " \"width\": " + widthStr + ",\n";
example += " \"height\": " + heightStr + ",\n";
example += " \"source\": " + imageStr + ",\n";
- example += " \"srgb\": false,\n";
+ example += " \"srgb\": " + srgbStr + ",\n";
example += " \"f16\": false,\n";
example += " \"textOnly\": " + textOutStr + ",\n";
example += " \"animated\": false,\n";
diff --git a/tools/bookmaker/includeParser.cpp b/tools/bookmaker/includeParser.cpp
index da2ee54c2e..363aacc650 100644
--- a/tools/bookmaker/includeParser.cpp
+++ b/tools/bookmaker/includeParser.cpp
@@ -1493,6 +1493,9 @@ bool IncludeParser::parseMethod(Definition* child, Definition* markupDef) {
}
tokenIter->fName = nameStr;
tokenIter->fMarkType = MarkType::kMethod;
+ if (string::npos != nameStr.find("defined")) {
+ SkDebugf("");
+ }
tokenIter->fPrivate = string::npos != nameStr.find("::");
auto testIter = child->fParent->fTokens.begin();
SkASSERT(child->fParentIndex > 0);
@@ -1642,10 +1645,18 @@ bool IncludeParser::parseObject(Definition* child, Definition* markupDef) {
auto tokenIter = child->fParent->fTokens.begin();
std::advance(tokenIter, child->fParentIndex);
tokenIter = std::prev(tokenIter);
- TextParser checkDeprecated(&*tokenIter);
- if (checkDeprecated.startsWith("SK_ATTR_DEPRECATED")) {
+ TextParser previousToken(&*tokenIter);
+ if (previousToken.startsWith("SK_ATTR_DEPRECATED")) {
break;
}
+ if (Bracket::kPound == child->fParent->fBracket &&
+ KeyWord::kIf == child->fParent->fKeyWord) {
+ // TODO: this will skip methods named defined() -- for the
+ // moment there aren't any
+ if (previousToken.startsWith("defined")) {
+ break;
+ }
+ }
}
if (!this->parseMethod(child, markupDef)) {
return child->reportError<bool>("failed to parse method");
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index e8d86f0916..c34fc9391f 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -65,6 +65,9 @@ void IncludeWriter::descriptionOut(const Definition* def) {
commentLen = (int) (prop->fContentEnd - commentStart);
if (commentLen > 0) {
this->writeBlockIndent(commentLen, commentStart);
+ if ('\n' != commentStart[commentLen - 1] && '\n' == commentStart[commentLen]) {
+ this->lfcr();
+ }
}
commentStart = prop->fTerminator;
commentLen = (int) (def->fContentEnd - commentStart);
diff --git a/tools/bookmaker/mdOut.cpp b/tools/bookmaker/mdOut.cpp
index 0153e49e95..d6069e4b3a 100644
--- a/tools/bookmaker/mdOut.cpp
+++ b/tools/bookmaker/mdOut.cpp
@@ -883,6 +883,8 @@ void MdOut::markTypeOut(Definition* def) {
fprintf(fOut, "See Also");
this->lf(2);
break;
+ case MarkType::kSet:
+ break;
case MarkType::kStdOut: {
TextParser code(def);
this->mdHeaderOut(4);