aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/SkBitmap_Reference.bmh17
-rw-r--r--docs/SkBlendMode_Reference.bmh2
-rw-r--r--docs/SkCanvas_Reference.bmh194
-rw-r--r--docs/SkMatrix_Reference.bmh48
-rw-r--r--docs/SkPaint_Reference.bmh63
-rw-r--r--docs/SkPath_Reference.bmh84
-rw-r--r--docs/SkPicture_Reference.bmh332
-rw-r--r--docs/SkPoint_Reference.bmh1
-rw-r--r--docs/SkRRect_Reference.bmh266
-rw-r--r--docs/SkSurface_Reference.bmh5
-rw-r--r--docs/undocumented.bmh9
-rw-r--r--docs/usingBookmaker.bmh6
-rw-r--r--site/user/api/METADATA5
-rw-r--r--site/user/api/SkBitmap_Reference.md22
-rw-r--r--site/user/api/SkBlendMode_Reference.md60
-rw-r--r--site/user/api/SkCanvas_Reference.md199
-rw-r--r--site/user/api/SkColor_Reference.md8
-rw-r--r--site/user/api/SkImageInfo_Reference.md28
-rw-r--r--site/user/api/SkImage_Reference.md2
-rw-r--r--site/user/api/SkMatrix_Reference.md96
-rw-r--r--site/user/api/SkPaint_Reference.md65
-rw-r--r--site/user/api/SkPath_Reference.md86
-rw-r--r--site/user/api/SkPicture_Reference.md196
-rw-r--r--site/user/api/SkPoint_Reference.md1
-rw-r--r--site/user/api/SkRRect_Reference.md201
-rw-r--r--site/user/api/SkSurface_Reference.md6
-rw-r--r--site/user/api/catalog.htm160
-rw-r--r--site/user/api/index.md5
-rw-r--r--site/user/api/undocumented.md4
-rw-r--r--site/user/api/usingBookmaker.md6
-rw-r--r--tools/bookmaker/bookmaker.cpp10
-rw-r--r--tools/bookmaker/definition.cpp64
-rw-r--r--tools/bookmaker/includeParser.cpp8
-rw-r--r--tools/bookmaker/includeWriter.cpp1
-rw-r--r--tools/bookmaker/mdOut.cpp2
-rw-r--r--tools/bookmaker/spellCheck.cpp13
36 files changed, 1422 insertions, 853 deletions
diff --git a/docs/SkBitmap_Reference.bmh b/docs/SkBitmap_Reference.bmh
index ab9d7c8730..d57f0b85b8 100644
--- a/docs/SkBitmap_Reference.bmh
+++ b/docs/SkBitmap_Reference.bmh
@@ -471,7 +471,7 @@ rowBytes() / info().bytesPerPixel()
##
.
-Maybe be less than pixelRef().width(). Will not exceed pixelRef().width() less
+May be less than pixelRef().width(). Will not exceed pixelRef().width() less
pixelRefOrigin().fX.
#Return pixel width in Image_Info ##
@@ -777,7 +777,7 @@ width: 2 height: 2 empty: false
#Method bool isNull() const
#In Property
#Line # returns true if Pixel_Ref is nullptr ##
-Return true if Pixel_Ref is nullptr.
+Returns true if Pixel_Ref is nullptr.
Does not check if width() or height() are zero; call drawsNothing to check
width(), height(), and Pixel_Ref.
@@ -807,7 +807,7 @@ allocated bitmap does have pixels
#Method bool drawsNothing() const
#In Property
#Line # returns true if no width(), no height(), or no Pixel_Ref ##
-Return true if width() or height() are zero, or if Pixel_Ref is nullptr.
+Returns true if width() or height() are zero, or if Pixel_Ref is nullptr.
If true, Bitmap has no effect when drawn or drawn into.
#Return true if drawing has no effect ##
@@ -1108,8 +1108,8 @@ isOpaque: true
#Method bool isVolatile() const
#In Property
#Line # returns true if pixels should not be cached ##
-If true, provides a hint to caller that pixels should not
-be cached. Only true if setIsVolatile has been called to mark as volatile.
+Provides a hint to caller that pixels should not be cached. Only true if
+setIsVolatile has been called to mark as volatile.
Volatile state is not shared by other bitmaps sharing the same Pixel_Ref.
@@ -1404,6 +1404,7 @@ Calls reset() and returns false if:
# imageInfo.height() is negative ##
# rowBytes is positive and less than imageInfo.width() times imageInfo.bytesPerPixel ##
##
+.
#Param imageInfo contains width, height, Alpha_Type, Color_Type, Color_Space ##
#Param rowBytes imageInfo.minRowBytes or larger; or zero ##
@@ -2572,6 +2573,7 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
# x is negative, or not less than width() ##
# y is negative, or not less than height() ##
##
+.
#Param x column index, zero or greater, and less than width() ##
#Param y row index, zero or greater, and less than height() ##
@@ -2607,6 +2609,7 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
# x is negative, or not less than width() ##
# y is negative, or not less than height() ##
##
+.
#Param x column index, zero or greater, and less than width() ##
#Param y row index, zero or greater, and less than height() ##
@@ -2648,6 +2651,7 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
# x is negative, or not less than width() ##
# y is negative, or not less than height() ##
##
+.
#Param x column index, zero or greater, and less than width() ##
#Param y row index, zero or greater, and less than height() ##
@@ -2693,7 +2697,7 @@ Return false if:
# Pixel_Ref is nullptr ##
# subset does not intersect bounds() ##
##
-
+.
#Param dst Bitmap set to subset ##
#Param subset rectangle of pixels to reference ##
@@ -2759,6 +2763,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
# dstRowBytes is less than dstInfo.minRowBytes ##
# Pixel_Ref is nullptr ##
##
+.
Pixels are copied only if pixel conversion is possible. If Bitmap colorType is
kGray_8_SkColorType, or kAlpha_8_SkColorType; dstInfo.colorType must match.
diff --git a/docs/SkBlendMode_Reference.bmh b/docs/SkBlendMode_Reference.bmh
index 494ff4fb30..3e4aa4c168 100644
--- a/docs/SkBlendMode_Reference.bmh
+++ b/docs/SkBlendMode_Reference.bmh
@@ -751,7 +751,7 @@ Da as destination Alpha, Dc as destination Color component
, scaling Alpha and Color components by the lesser of the values.
SkBlendMode::kModulate differs from SkBlendMode::kMultiply in two ways.
SkBlendMode::kModulate like SkBlendMode::kSrcATop alters the destination inside
-the destination area, as if the destination Alpha defined the boudaries of a
+the destination area, as if the destination Alpha defined the boundaries of a
soft clip. SkBlendMode::kMultiply like SkBlendMode::kSrcOver can alter the
destination where the destination is transparent.
SkBlendMode::kModulate computes the product of the source and destination using
diff --git a/docs/SkCanvas_Reference.bmh b/docs/SkCanvas_Reference.bmh
index bfd3e9d7d1..db14d0190b 100644
--- a/docs/SkCanvas_Reference.bmh
+++ b/docs/SkCanvas_Reference.bmh
@@ -307,7 +307,7 @@ different characteristics, it is best not to rely on this legacy behavior.
#Method explicit SkCanvas(const SkBitmap& bitmap)
#Line # uses existing Bitmap ##
-Construct a canvas that draws into bitmap.
+Constructs a canvas that draws into bitmap.
Sets SkSurfaceProps::kLegacyFontHost_InitType in constructed Surface.
Bitmap is copied so that subsequently editing bitmap will not affect
@@ -387,7 +387,7 @@ Android framework only.
#Line # exists for Android framework only ##
-Android framework only.
+For use by Android framework only.
#Param bitmap specifies a bitmap for the canvas to draw into ##
#Param behavior specializes this constructor; value is unused ##
@@ -402,7 +402,7 @@ Android framework only.
#Method SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)
#Line # uses existing Bitmap and Surface_Properties ##
-Construct a canvas that draws into bitmap.
+Constructs a canvas that draws into bitmap.
Use props to match the device characteristics, like LCD striping.
bitmap is copied so that subsequently editing bitmap will not affect
@@ -562,9 +562,8 @@ GPU_Surface, returned Color_Type is set to kUnknown_SkColorType.
#Method bool getProps(SkSurfaceProps* props) const
#In Property
#Line # copies Surface_Properties if available ##
-If Canvas is associated with Raster_Surface or
-GPU_Surface, copies Surface_Properties and returns true. Otherwise,
-return false and leave props unchanged.
+Copies Surface_Properties, if Canvas is associated with Raster_Surface or
+GPU_Surface, and returns true. Otherwise, returns false and leave props unchanged.
#Param props storage for writable SkSurfaceProps ##
@@ -944,6 +943,7 @@ Does not copy, and returns false if:
# Canvas pixels are not readable; for instance, Canvas is document-based. ##
# dstRowBytes is too small to contain one row of pixels. ##
##
+.
#Param dstInfo width, height, Color_Type, and Alpha_Type of dstPixels ##
#Param dstPixels storage for pixels; dstInfo.height() times dstRowBytes, or larger ##
@@ -1037,6 +1037,7 @@ Does not copy, and returns false if:
# Pixmap pixels could not be allocated. ##
# pixmap.rowBytes() is too small to contain one row of pixels. ##
##
+.
#Param pixmap storage for pixels copied from Canvas ##
#Param srcX offset into readable pixels on x-axis; may be negative ##
@@ -1100,6 +1101,7 @@ Does not copy, and returns false if:
# bitmap pixels could not be allocated. ##
# bitmap.rowBytes() is too small to contain one row of pixels. ##
##
+.
#Param bitmap storage for pixels copied from Canvas ##
#Param srcX offset into readable pixels on x-axis; may be negative ##
@@ -1163,6 +1165,7 @@ Does not copy, and returns false if:
# Canvas pixels are not writable; for instance, Canvas is document-based. ##
# rowBytes is too small to contain one row of pixels. ##
##
+.
#Param info width, height, Color_Type, and Alpha_Type of pixels ##
#Param pixels pixels to copy, of size info.height() times rowBytes, or larger ##
@@ -1222,6 +1225,7 @@ Does not copy, and returns false if:
# Canvas pixels are not writable; for instance, Canvas is document based. ##
# bitmap pixels are inaccessible; for instance, bitmap wraps a texture. ##
##
+.
#Param bitmap contains pixels copied to Canvas ##
#Param x offset into Canvas writable pixels in x; may be negative ##
@@ -2027,9 +2031,9 @@ Outside of the circle the mandrill is brightened.
#In Matrix
#Line # translates Matrix ##
-Translate Matrix by dx along the x-axis and dy along the y-axis.
+Translates Matrix by dx along the x-axis and dy along the y-axis.
-Mathematically, replace Matrix with a translation matrix
+Mathematically, replaces Matrix with a translation matrix
Premultiplied with Matrix.
This has the effect of moving the drawing by (dx, dy) before transforming
@@ -2079,9 +2083,9 @@ void draw(SkCanvas* canvas) {
#In Matrix
#Line # scales Matrix ##
-Scale Matrix by sx on the x-axis and sy on the y-axis.
+Scales Matrix by sx on the x-axis and sy on the y-axis.
-Mathematically, replace Matrix with a scale matrix
+Mathematically, replaces Matrix with a scale matrix
Premultiplied with Matrix.
This has the effect of scaling the drawing by (sx, sy) before transforming
@@ -2113,9 +2117,9 @@ void draw(SkCanvas* canvas) {
#In Matrix
#Line # rotates Matrix ##
-Rotate Matrix by degrees. Positive degrees rotates clockwise.
+Rotates Matrix by degrees. Positive degrees rotates clockwise.
-Mathematically, replace Matrix with a rotation matrix
+Mathematically, replaces Matrix with a rotation matrix
Premultiplied with Matrix.
This has the effect of rotating the drawing by degrees before transforming
@@ -2151,11 +2155,11 @@ void draw(SkCanvas* canvas) {
#Method void rotate(SkScalar degrees, SkScalar px, SkScalar py)
#In Matrix
-Rotate Matrix by degrees about a point at (px, py). Positive degrees rotates
+Rotates Matrix by degrees about a point at (px, py). Positive degrees rotates
clockwise.
-Mathematically, construct a rotation matrix. Premultiply the rotation matrix by
-a translation matrix, then replace Matrix with the resulting matrix
+Mathematically, constructs a rotation matrix; Premultiplies the rotation matrix by
+a translation matrix; then replaces Matrix with the resulting matrix
Premultiplied with Matrix.
This has the effect of rotating the drawing about a given point before
@@ -2186,11 +2190,11 @@ void draw(SkCanvas* canvas) {
#In Matrix
#Line # skews Matrix ##
-Skew Matrix by sx on the x-axis and sy on the y-axis. A positive value of sx
+Skews Matrix by sx on the x-axis and sy on the y-axis. A positive value of sx
skews the drawing right as y-axis values increase; a positive value of sy skews
the drawing down as x-axis values increase.
-Mathematically, replace Matrix with a skew matrix Premultiplied with Matrix.
+Mathematically, replaces Matrix with a skew matrix Premultiplied with Matrix.
This has the effect of skewing the drawing by (sx, sy) before transforming
the result with Matrix.
@@ -2233,7 +2237,7 @@ the result with Matrix.
#In Matrix
#Line # multiplies Matrix by Matrix ##
-Replace Matrix with matrix Premultiplied with existing Matrix.
+Replaces Matrix with matrix Premultiplied with existing Matrix.
This has the effect of transforming the drawn geometry by matrix, before
transforming the result with existing Matrix.
@@ -2267,7 +2271,7 @@ void draw(SkCanvas* canvas) {
#In Matrix
#Line # sets Matrix ##
-Replace Matrix with matrix.
+Replaces Matrix with matrix.
Unlike concat(), any prior matrix state is overwritten.
#Param matrix matrix to copy, replacing existing Matrix ##
@@ -2403,7 +2407,7 @@ and is unaffected by Matrix.
#In Clip
#Line # combines Clip with Rect ##
-Replace Clip with the intersection or difference of Clip and rect,
+Replaces Clip with the intersection or difference of Clip and rect,
with an Aliased or Anti_Aliased clip edge. rect is transformed by Matrix
before it is combined with Clip.
@@ -2434,7 +2438,7 @@ void draw(SkCanvas* canvas) {
#Method void clipRect(const SkRect& rect, SkClipOp op)
#In Clip
-Replace Clip with the intersection or difference of Clip and rect.
+Replaces Clip with the intersection or difference of Clip and rect.
Resulting Clip is Aliased; pixels are fully contained by the clip.
rect is transformed by Matrix before it is combined with Clip.
@@ -2463,7 +2467,7 @@ void draw(SkCanvas* canvas) {
#Method void clipRect(const SkRect& rect, bool doAntiAlias = false)
#In Clip
-Replace Clip with the intersection of Clip and rect.
+Replaces Clip with the intersection of Clip and rect.
Resulting Clip is Aliased; pixels are fully contained by the clip.
rect is transformed by Matrix
before it is combined with Clip.
@@ -2526,7 +2530,7 @@ This private API is for use by Android framework only.
#In Clip
#Line # combines Clip with Round_Rect ##
-Replace Clip with the intersection or difference of Clip and rrect,
+Replaces Clip with the intersection or difference of Clip and rrect,
with an Aliased or Anti_Aliased clip edge.
rrect is transformed by Matrix
before it is combined with Clip.
@@ -2556,7 +2560,7 @@ void draw(SkCanvas* canvas) {
#Method void clipRRect(const SkRRect& rrect, SkClipOp op)
#In Clip
-Replace Clip with the intersection or difference of Clip and rrect.
+Replaces Clip with the intersection or difference of Clip and rrect.
Resulting Clip is Aliased; pixels are fully contained by the clip.
rrect is transformed by Matrix before it is combined with Clip.
@@ -2581,7 +2585,7 @@ void draw(SkCanvas* canvas) {
#Method void clipRRect(const SkRRect& rrect, bool doAntiAlias = false)
#In Clip
-Replace Clip with the intersection of Clip and rrect,
+Replaces Clip with the intersection of Clip and rrect,
with an Aliased or Anti_Aliased clip edge.
rrect is transformed by Matrix before it is combined with Clip.
@@ -2607,7 +2611,7 @@ void draw(SkCanvas* canvas) {
#In Clip
#Line # combines Clip with Path ##
-Replace Clip with the intersection or difference of Clip and path,
+Replaces Clip with the intersection or difference of Clip and path,
with an Aliased or Anti_Aliased clip edge. Path_Fill_Type determines if path
describes the area inside or outside its contours; and if Path_Contour overlaps
itself or another Path_Contour, whether the overlaps form part of the area.
@@ -2649,7 +2653,7 @@ void draw(SkCanvas* canvas) {
#Method void clipPath(const SkPath& path, SkClipOp op)
#In Clip
-Replace Clip with the intersection or difference of Clip and path.
+Replaces Clip with the intersection or difference of Clip and path.
Resulting Clip is Aliased; pixels are fully contained by the clip.
Path_Fill_Type determines if path
describes the area inside or outside its contours; and if Path_Contour overlaps
@@ -2691,7 +2695,7 @@ void draw(SkCanvas* canvas) {
#Method void clipPath(const SkPath& path, bool doAntiAlias = false)
#In Clip
-Replace Clip with the intersection of Clip and path.
+Replaces Clip with the intersection of Clip and path.
Resulting Clip is Aliased; pixels are fully contained by the clip.
Path_Fill_Type determines if path
describes the area inside or outside its contours; and if Path_Contour overlaps
@@ -2748,7 +2752,7 @@ Set to simplify clip stack using PathOps.
#In Clip
#Line # combines Clip with Region ##
-Replace Clip with the intersection or difference of Clip and Region deviceRgn.
+Replaces Clip with the intersection or difference of Clip and Region deviceRgn.
Resulting Clip is Aliased; pixels are fully contained by the clip.
deviceRgn is unaffected by Matrix.
@@ -2785,7 +2789,7 @@ void draw(SkCanvas* canvas) {
#In Clip
#Line # returns if Rect is outside Clip ##
-Return true if Rect rect, transformed by Matrix, can be quickly determined to be
+Returns true if Rect rect, transformed by Matrix, can be quickly determined to be
outside of Clip. May return false even though rect is outside of Clip.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@@ -2819,7 +2823,7 @@ void draw(SkCanvas* canvas) {
#Method bool quickReject(const SkPath& path) const
#In Clip
-Return true if path, transformed by Matrix, can be quickly determined to be
+Returns true if path, transformed by Matrix, can be quickly determined to be
outside of Clip. May return false even though path is outside of Clip.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@@ -2857,7 +2861,7 @@ void draw(SkCanvas* canvas) {
#In Clip
#Line # returns Clip bounds in source coordinates ##
-Return bounds of Clip, transformed by inverse of Matrix. If Clip is empty,
+Returns bounds of Clip, transformed by inverse of Matrix. If Clip is empty,
return SkRect::MakeEmpty, where all Rect sides equal zero.
Rect returned is outset by one to account for partial pixel coverage if Clip
@@ -2904,7 +2908,7 @@ is Anti_Aliased.
#Method bool getLocalClipBounds(SkRect* bounds) const
#In Clip
-Return bounds of Clip, transformed by inverse of Matrix. If Clip is empty,
+Returns bounds of Clip, transformed by inverse of Matrix. If Clip is empty,
return false, and set bounds to SkRect::MakeEmpty, where all Rect sides equal zero.
bounds is outset by one to account for partial pixel coverage if Clip
@@ -2942,7 +2946,7 @@ is Anti_Aliased.
#In Clip
#Line # returns IRect bounds of Clip ##
-Return IRect bounds of Clip, unaffected by Matrix. If Clip is empty,
+Returns IRect bounds of Clip, unaffected by Matrix. If Clip is empty,
return SkRect::MakeEmpty, where all Rect sides equal zero.
Unlike getLocalClipBounds, returned IRect is not outset.
@@ -2995,7 +2999,7 @@ void draw(SkCanvas* canvas) {
#Method bool getDeviceClipBounds(SkIRect* bounds) const
#In Clip
-Return IRect bounds of Clip, unaffected by Matrix. If Clip is empty,
+Returns IRect bounds of Clip, unaffected by Matrix. If Clip is empty,
return false, and set bounds to SkRect::MakeEmpty, where all Rect sides equal zero.
Unlike getLocalClipBounds, bounds is not outset.
@@ -3035,7 +3039,7 @@ Unlike getLocalClipBounds, bounds is not outset.
#Method void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver)
#In Draw
#Line # fills Clip with Color and Blend_Mode ##
-Fill Clip with Color color.
+Fills Clip with Color color.
mode determines how ARGB is combined with destination.
#Param color Unpremultiplied ARGB ##
@@ -3058,7 +3062,7 @@ mode determines how ARGB is combined with destination.
#Method void clear(SkColor color)
#In Draw
#Line # fills Clip with Color ##
-Fill Clip with Color color using SkBlendMode::kSrc.
+Fills Clip with Color color using SkBlendMode::kSrc.
This has the effect of replacing all pixels contained by Clip with color.
#Param color Unpremultiplied ARGB ##
@@ -3087,7 +3091,7 @@ void draw(SkCanvas* canvas) {
#Method void discard()
#In Utility
#Line # makes Canvas contents undefined ##
-Make Canvas contents undefined. Subsequent calls that read Canvas pixels,
+Makes Canvas contents undefined. Subsequent calls that read Canvas pixels,
such as drawing with SkBlendMode, return undefined results. discard() does
not change Clip or Matrix.
@@ -3112,7 +3116,7 @@ any cached data is deleted when owning Surface or Device is deleted.
#Method void drawPaint(const SkPaint& paint)
#In Draw
#Line # fills Clip with Paint ##
-Fill Clip with Paint paint. Paint components Mask_Filter, Shader,
+Fills Clip with Paint paint. Paint components Mask_Filter, Shader,
Color_Filter, Image_Filter, and Blend_Mode affect drawing;
Path_Effect in paint is ignored.
@@ -3195,7 +3199,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint)
#In Draw
#Line # draws array as points, lines, polygon ##
-Draw pts using Clip, Matrix and Paint paint.
+Draws pts using Clip, Matrix and Paint paint.
count is the number of points; if count is less than one, has no effect.
mode may be one of: kPoints_PointMode, kLines_PointMode, or kPolygon_PointMode.
@@ -3276,7 +3280,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint)
#In Draw
#Line # draws point at (x, y) position ##
-Draw point at (x, y) using Clip, Matrix and Paint paint.
+Draws point at (x, y) using Clip, Matrix and Paint paint.
The shape of point drawn depends on paint Paint_Stroke_Cap.
If paint is set to SkPaint::kRound_Cap, draw a circle of diameter
@@ -3310,7 +3314,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPoint(SkPoint p, const SkPaint& paint)
-Draw point p using Clip, Matrix and Paint paint.
+Draws point p using Clip, Matrix and Paint paint.
The shape of point drawn depends on paint Paint_Stroke_Cap.
If paint is set to SkPaint::kRound_Cap, draw a circle of diameter
@@ -3403,7 +3407,7 @@ Paint_Style is ignored, as if were set to SkPaint::kStroke_Style.
#Method void drawRect(const SkRect& rect, const SkPaint& paint)
#In Draw
#Line # draws Rect using Clip, Matrix, and Paint ##
-Draw Rect rect using Clip, Matrix, and Paint paint.
+Draws Rect rect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness, and
Paint_Stroke_Join draws the corners rounded or square.
@@ -3440,7 +3444,7 @@ void draw(SkCanvas* canvas) {
#Method void drawIRect(const SkIRect& rect, const SkPaint& paint)
#In Draw
#Line # draws IRect using Clip, Matrix, and Paint ##
-Draw IRect rect using Clip, Matrix, and Paint paint.
+Draws IRect rect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness, and
Paint_Stroke_Join draws the corners rounded or square.
@@ -3471,7 +3475,7 @@ Paint_Stroke_Join draws the corners rounded or square.
#Method void drawRegion(const SkRegion& region, const SkPaint& paint)
#In Draw
#Line # draws Region using Clip, Matrix, and Paint ##
-Draw Region region using Clip, Matrix, and Paint paint.
+Draws Region region using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness, and
Paint_Stroke_Join draws the corners rounded or square.
@@ -3502,7 +3506,7 @@ void draw(SkCanvas* canvas) {
#Method void drawOval(const SkRect& oval, const SkPaint& paint)
#In Draw
#Line # draws Oval using Clip, Matrix, and Paint ##
-Draw Oval oval using Clip, Matrix, and Paint.
+Draws Oval oval using Clip, Matrix, and Paint.
In paint: Paint_Style determines if Oval is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness.
@@ -3534,7 +3538,7 @@ void draw(SkCanvas* canvas) {
#Method void drawRRect(const SkRRect& rrect, const SkPaint& paint)
#In Draw
#Line # draws Round_Rect using Clip, Matrix, and Paint ##
-Draw Round_Rect rrect using Clip, Matrix, and Paint paint.
+Draws Round_Rect rrect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rrect is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness.
@@ -3574,7 +3578,7 @@ void draw(SkCanvas* canvas) {
#Method void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint)
#In Draw
#Line # draws double Round_Rect stroked or filled ##
-Draw Round_Rect outer and inner
+Draws Round_Rect outer and inner
using Clip, Matrix, and Paint paint.
outer must contain inner or the drawing is undefined.
In paint: Paint_Style determines if Round_Rect is stroked or filled;
@@ -3629,7 +3633,7 @@ void draw(SkCanvas* canvas) {
#Method void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint)
#In Draw
#Line # draws Circle using Clip, Matrix, and Paint ##
-Draw Circle at (cx, cy) with radius using Clip, Matrix, and Paint paint.
+Draws Circle at (cx, cy) with radius using Clip, Matrix, and Paint paint.
If radius is zero or less, nothing is drawn.
In paint: Paint_Style determines if Circle is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness.
@@ -3657,7 +3661,7 @@ if stroked, Paint_Stroke_Width describes the line thickness.
#Method void drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint)
-Draw Circle at center with radius using Clip, Matrix, and Paint paint.
+Draws Circle at center with radius using Clip, Matrix, and Paint paint.
If radius is zero or less, nothing is drawn.
In paint: Paint_Style determines if Circle is stroked or filled;
if stroked, Paint_Stroke_Width describes the line thickness.
@@ -3689,7 +3693,7 @@ if stroked, Paint_Stroke_Width describes the line thickness.
#In Draw
#Line # draws Arc using Clip, Matrix, and Paint ##
-Draw Arc using Clip, Matrix, and Paint paint.
+Draws Arc using Clip, Matrix, and Paint paint.
Arc is part of Oval bounded by oval, sweeping from startAngle to startAngle plus
sweepAngle. startAngle and sweepAngle are in degrees.
@@ -3753,7 +3757,7 @@ If Rect oval is empty or sweepAngle is zero, nothing is drawn.
#Method void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint)
#In Draw
#Line # draws Round_Rect using Clip, Matrix, and Paint ##
-Draw Round_Rect bounded by Rect rect, with corner radii (rx, ry) using Clip,
+Draws Round_Rect bounded by Rect rect, with corner radii (rx, ry) using Clip,
Matrix, and Paint paint.
In paint: Paint_Style determines if Round_Rect is stroked or filled;
@@ -3801,7 +3805,7 @@ Paint_Stroke_Join.
#Method void drawPath(const SkPath& path, const SkPaint& paint)
#In Draw
#Line # draws Path using Clip, Matrix, and Paint ##
-Draw Path path using Clip, Matrix, and Paint paint.
+Draws Path path using Clip, Matrix, and Paint paint.
Path contains an array of Path_Contour, each of which may be open or closed.
In paint: Paint_Style determines if Round_Rect is stroked or filled:
@@ -3871,7 +3875,7 @@ a smart pointer as a convenience. The pairs of calls are otherwise identical.
#In Draw_Image
#In Draw
#Line # draws Image at (x, y) position ##
-Draw Image image, with its top-left corner at (left, top),
+Draws Image image, with its top-left corner at (left, top),
using Clip, Matrix, and optional Paint paint.
If paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter, Blend_Mode,
@@ -3911,7 +3915,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr)
-Draw Image image, with its top-left corner at (left, top),
+Draws Image image, with its top-left corner at (left, top),
using Clip, Matrix, and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4025,7 +4029,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws Image, source Rect to destination Rect ##
-Draw Rect src of Image image, scaled and translated to fill Rect dst.
+Draws Rect src of Image image, scaled and translated to fill Rect dst.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4091,7 +4095,7 @@ void draw(SkCanvas* canvas) {
#In Draw_Image
#In Draw
-Draw IRect isrc of Image image, scaled and translated to fill Rect dst.
+Draws IRect isrc of Image image, scaled and translated to fill Rect dst.
Note that isrc is on integer pixel boundaries; dst may include fractional
boundaries. Additionally transform draw using Clip, Matrix, and optional Paint
paint.
@@ -4138,7 +4142,7 @@ void draw(SkCanvas* canvas) {
#In Draw_Image
#In Draw
-Draw Image image, scaled and translated to fill Rect dst, using Clip, Matrix,
+Draws Image image, scaled and translated to fill Rect dst, using Clip, Matrix,
and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4181,7 +4185,7 @@ void draw(SkCanvas* canvas) {
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
#In Draw
-Draw Rect src of Image image, scaled and translated to fill Rect dst.
+Draws Rect src of Image image, scaled and translated to fill Rect dst.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4237,7 +4241,7 @@ void draw(SkCanvas* canvas) {
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
#In Draw
-Draw IRect isrc of Image image, scaled and translated to fill Rect dst.
+Draws IRect isrc of Image image, scaled and translated to fill Rect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4290,7 +4294,7 @@ void draw(SkCanvas* canvas) {
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
#In Draw
-Draw Image image, scaled and translated to fill Rect dst,
+Draws Image image, scaled and translated to fill Rect dst,
using Clip, Matrix, and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4343,7 +4347,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws Nine_Patch Image ##
-Draw Image image stretched proportionally to fit into Rect dst.
+Draws Image image stretched proportionally to fit into Rect dst.
IRect center divides the image into nine sections: four sides, four corners, and
the center. Corners are unmodified or scaled down proportionately if their sides
are larger than dst; center and four sides are scaled to fit remaining space, if any.
@@ -4408,7 +4412,7 @@ void draw(SkCanvas* canvas) {
const SkPaint* paint = nullptr)
#In Draw_Image
#In Draw
-Draw Image image stretched proportionally to fit into Rect dst.
+Draws Image image stretched proportionally to fit into Rect dst.
IRect center divides the image into nine sections: four sides, four corners, and
the center. Corners are not scaled, or scaled down proportionately if their sides
are larger than dst; center and four sides are scaled to fit remaining space, if any.
@@ -4476,7 +4480,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws Bitmap at (x, y) position ##
-Draw Bitmap bitmap, with its top-left corner at (left, top),
+Draws Bitmap bitmap, with its top-left corner at (left, top),
using Clip, Matrix, and optional Paint paint.
If Paint paint is not nullptr, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4531,7 +4535,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws Bitmap, source Rect to destination Rect ##
-Draw Rect src of Bitmap bitmap, scaled and translated to fill Rect dst.
+Draws Rect src of Bitmap bitmap, scaled and translated to fill Rect dst.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
If Paint paint is supplied, apply Color_Filter, Color_Alpha, Image_Filter,
@@ -4589,7 +4593,7 @@ void draw(SkCanvas* canvas) {
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
#In Draw
-Draw IRect isrc of Bitmap bitmap, scaled and translated to fill Rect dst.
+Draws IRect isrc of Bitmap bitmap, scaled and translated to fill Rect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4648,7 +4652,7 @@ void draw(SkCanvas* canvas) {
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
#In Draw
-Draw Bitmap bitmap, scaled and translated to fill Rect dst.
+Draws Bitmap bitmap, scaled and translated to fill Rect dst.
bitmap bounds is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4711,7 +4715,7 @@ Any SkMaskFilter on paint is ignored as is paint Anti_Aliasing state.
#In Draw
#Line # draws Nine_Patch Bitmap ##
-Draw Bitmap bitmap stretched proportionally to fit into Rect dst.
+Draws Bitmap bitmap stretched proportionally to fit into Rect dst.
IRect center divides the bitmap into nine sections: four sides, four corners,
and the center. Corners are not scaled, or scaled down proportionately if their
sides are larger than dst; center and four sides are scaled to fit remaining
@@ -4911,7 +4915,7 @@ remaining space, if any.
#In Draw
#Line # draws proportionally stretched Bitmap ##
-Draw Bitmap bitmap stretched proportionally to fit into Rect dst.
+Draws Bitmap bitmap stretched proportionally to fit into Rect dst.
Lattice lattice divides bitmap into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -4990,7 +4994,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws proportionally stretched Image ##
-Draw Image image stretched proportionally to fit into Rect dst.
+Draws Image image stretched proportionally to fit into Rect dst.
Lattice lattice divides image into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -5069,7 +5073,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws text at (x, y), using font advance ##
-Draw text, with origin at (x, y), using Clip, Matrix, and Paint paint.
+Draws text, with origin at (x, y), using Clip, Matrix, and Paint paint.
text meaning depends on Paint_Text_Encoding; by default, text is encoded as
UTF-8.
@@ -5159,7 +5163,7 @@ filled 12 point black Glyphs.
#Method void drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint)
-Draw null terminated string, with origin at (x, y), using Clip, Matrix, and
+Draws null terminated string, with origin at (x, y), using Clip, Matrix, and
Paint paint.
string meaning depends on Paint_Text_Encoding; by default, strings are encoded
@@ -5199,7 +5203,7 @@ filled 12 point black Glyphs.
#In Draw
#Line # draws text at array of (x, y) positions ##
-Draw each glyph in text with the origin in pos array, using Clip, Matrix, and
+Draws each glyph in text with the origin in pos array, using Clip, Matrix, and
Paint paint. The number of entries in pos array must match the number of Glyphs
described by byteLength of text.
@@ -5244,7 +5248,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws text at x positions with common baseline ##
-Draw each glyph in text with its (x, y) origin composed from xpos array and
+Draws each glyph in text with its (x, y) origin composed from xpos array and
constY, using Clip, Matrix, and Paint paint. The number of entries in xpos array
must match the number of Glyphs described by byteLength of text.
@@ -5289,7 +5293,7 @@ baseline.
#In Draw
#Line # draws text following Path with offsets ##
-Draw text on Path path, using Clip, Matrix, and Paint paint.
+Draws text on Path path, using Clip, Matrix, and Paint paint.
Origin of text is at distance hOffset along the path, offset by a perpendicular
vector of length vOffset. If the path section corresponding the glyph advance is
@@ -5340,7 +5344,7 @@ filled 12 point black Glyphs.
#In Draw
#Line # draws text following Path contour ##
-Draw text on Path path, using Clip, Matrix, and Paint paint.
+Draws text on Path path, using Clip, Matrix, and Paint paint.
Origin of text is at beginning of path offset by matrix, if not nullptr.
matrix transforms text before text is mapped to path. If the path section
@@ -5400,7 +5404,7 @@ filled 12 point black Glyphs.
#In Draw
#Line # draws text with array of RSXform ##
-Draw text, transforming each glyph by the corresponding SkRSXform,
+Draws text, transforming each glyph by the corresponding SkRSXform,
using Clip, Matrix, and Paint paint.
RSXform xform array specifies a separate square scale, rotation, and translation
@@ -5451,7 +5455,7 @@ void draw(SkCanvas* canvas) {
#In Draw_Text
#In Draw
#Line # draws text with arrays of positions and Paint ##
-Draw Text_Blob blob at (x, y), using Clip, Matrix, and Paint paint.
+Draws Text_Blob blob at (x, y), using Clip, Matrix, and Paint paint.
blob contains Glyphs, their positions, and paint attributes specific to text:
Typeface, Paint_Text_Size, Paint_Text_Scale_X, Paint_Text_Skew_X,
@@ -5504,7 +5508,7 @@ Image_Filter, and Draw_Looper; apply to blob.
#Method void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaint& paint)
-Draw Text_Blob blob at (x, y), using Clip, Matrix, and Paint paint.
+Draws Text_Blob blob at (x, y), using Clip, Matrix, and Paint paint.
blob contains Glyphs, their positions, and paint attributes specific to text:
Typeface, Paint_Text_Size, Paint_Text_Scale_X, Paint_Text_Skew_X,
@@ -5553,7 +5557,7 @@ Paint attributes related to text, like text size, have no effect on paint passed
#Method void drawPicture(const SkPicture* picture)
#In Draw
#Line # draws Picture using Clip and Matrix ##
-Draw Picture picture, using Clip and Matrix.
+Draws Picture picture, using Clip and Matrix.
Clip and Matrix are unchanged by picture contents, as if
save() was called before and restore() was called after drawPicture.
@@ -5588,7 +5592,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPicture(const sk_sp<SkPicture>& picture)
-Draw Picture picture, using Clip and Matrix.
+Draws Picture picture, using Clip and Matrix.
Clip and Matrix are unchanged by picture contents, as if
save() was called before and restore() was called after drawPicture.
@@ -5623,7 +5627,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint)
-Draw Picture picture, using Clip and Matrix; transforming picture with
+Draws Picture picture, using Clip and Matrix; transforming picture with
Matrix matrix, if provided; and use Paint paint Color_Alpha, Color_Filter,
Image_Filter, and Blend_Mode, if provided.
@@ -5665,7 +5669,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPicture(const sk_sp<SkPicture>& picture, const SkMatrix* matrix, const SkPaint* paint)
-Draw Picture picture, using Clip and Matrix; transforming picture with
+Draws Picture picture, using Clip and Matrix; transforming picture with
Matrix matrix, if provided; and use Paint paint Color_Alpha, Color_Filter,
Image_Filter, and Blend_Mode, if provided.
@@ -5707,7 +5711,7 @@ void draw(SkCanvas* canvas) {
#Method void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint)
#In Draw
#Line # draws Vertices, a triangle mesh ##
-Draw Vertices vertices, a triangle mesh, using Clip and Matrix.
+Draws Vertices vertices, a triangle mesh, using Clip and Matrix.
If Vertices_Texs and Vertices_Colors are defined in vertices, and Paint paint
contains Shader, Blend_Mode mode combines Vertices_Colors with Shader.
@@ -5734,7 +5738,7 @@ void draw(SkCanvas* canvas) {
#Method void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint)
-Draw Vertices vertices, a triangle mesh, using Clip and Matrix.
+Draws Vertices vertices, a triangle mesh, using Clip and Matrix.
If Vertices_Texs and Vertices_Colors are defined in vertices, and Paint paint
contains Shader, Blend_Mode mode combines Vertices_Colors with Shader.
@@ -5765,7 +5769,7 @@ void draw(SkCanvas* canvas) {
#Method void drawVertices(const SkVertices* vertices, const SkMatrix* bones, int boneCount,
SkBlendMode mode, const SkPaint& paint)
-Draw Vertices vertices, a triangle mesh, using Clip and Matrix. Bone data is used to
+Draws Vertices vertices, a triangle mesh, using Clip and Matrix. Bone data is used to
deform vertices with bone weights.
If Vertices_Texs and Vertices_Colors are defined in vertices, and Paint paint
contains Shader, Blend_Mode mode combines Vertices_Colors with Shader.
@@ -5815,7 +5819,7 @@ void draw(SkCanvas* canvas) {
#Method void drawVertices(const sk_sp<SkVertices>& vertices, const SkMatrix* bones, int boneCount,
SkBlendMode mode, const SkPaint& paint)
-Draw Vertices vertices, a triangle mesh, using Clip and Matrix. Bone data is used to
+Draws Vertices vertices, a triangle mesh, using Clip and Matrix. Bone data is used to
deform vertices with bone weights.
If Vertices_Texs and Vertices_Colors are defined in vertices, and Paint paint
contains Shader, Blend_Mode mode combines Vertices_Colors with Shader.
@@ -6011,7 +6015,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#Line # draws sprites using Clip, Matrix, and Paint ##
-Draw a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
+Draws a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
paint uses Anti_Alias, Color_Alpha, Color_Filter, Image_Filter, and Blend_Mode
to draw, if present. For each entry in the array, Rect tex locates sprite in
atlas, and RSXform xform transforms it into destination space.
@@ -6055,7 +6059,7 @@ void draw(SkCanvas* canvas) {
const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect,
const SkPaint* paint)
-Draw a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
+Draws a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
paint uses Anti_Alias, Color_Alpha, Color_Filter, Image_Filter, and Blend_Mode
to draw, if present. For each entry in the array, Rect tex locates sprite in
atlas, and RSXform xform transforms it into destination space.
@@ -6098,7 +6102,7 @@ void draw(SkCanvas* canvas) {
#Method void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[], int count,
const SkRect* cullRect, const SkPaint* paint)
-Draw a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
+Draws a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
paint uses Anti_Alias, Color_Alpha, Color_Filter, Image_Filter, and Blend_Mode
to draw, if present. For each entry in the array, Rect tex locates sprite in
atlas, and RSXform xform transforms it into destination space.
@@ -6134,7 +6138,7 @@ void draw(SkCanvas* canvas) {
#Method void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], const SkRect tex[],
int count, const SkRect* cullRect, const SkPaint* paint)
-Draw a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
+Draws a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
paint uses Anti_Alias, Color_Alpha, Color_Filter, Image_Filter, and Blend_Mode
to draw, if present. For each entry in the array, Rect tex locates sprite in
atlas, and RSXform xform transforms it into destination space.
@@ -6169,7 +6173,7 @@ void draw(SkCanvas* canvas) {
#Method void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr)
#In Draw
#Line # draws Drawable, encapsulated drawing commands ##
-Draw Drawable drawable using Clip and Matrix, concatenated with
+Draws Drawable drawable using Clip and Matrix, concatenated with
optional matrix.
If Canvas has an asynchronous implementation, as is the case
@@ -6215,7 +6219,7 @@ void draw(SkCanvas* canvas) {
#Method void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y)
-Draw Drawable drawable using Clip and Matrix, offset by (x, y).
+Draws Drawable drawable using Clip and Matrix, offset by (x, y).
If Canvas has an asynchronous implementation, as is the case
when it is recording into Picture, then drawable will be referenced,
@@ -6261,7 +6265,7 @@ void draw(SkCanvas* canvas) {
#In Draw
#In Utility
#Line # associates a Rect with a key-value pair ##
-Associate Rect on Canvas with an annotation; a key-value pair, where the key is
+Associates Rect on Canvas with an annotation; a key-value pair, where the key is
a null-terminated utf8 string, and optional value is stored as Data.
Only some canvas implementations, such as recording to Picture, or drawing to
@@ -6291,7 +6295,7 @@ Document_PDF, use annotations.
#Method void drawAnnotation(const SkRect& rect, const char key[], const sk_sp<SkData>& value)
-Associate Rect on Canvas when an annotation; a key-value pair, where the key is
+Associates Rect on Canvas when an annotation; a key-value pair, where the key is
a null-terminated utf8 string, and optional value is stored as Data.
Only some canvas implementations, such as recording to Picture, or drawing to
diff --git a/docs/SkMatrix_Reference.bmh b/docs/SkMatrix_Reference.bmh
index 52c301a18e..6f37e7856a 100644
--- a/docs/SkMatrix_Reference.bmh
+++ b/docs/SkMatrix_Reference.bmh
@@ -44,6 +44,7 @@ Sets Matrix to scale by (sx, sy). Returned matrix is:
| 0 sy 0 |
| 0 0 1 |
##
+.
#Param sx horizontal scale factor ##
#Param sy vertical scale factor ##
@@ -72,6 +73,7 @@ Sets Matrix to scale by (scale, scale). Returned matrix is:
| 0 scale 0 |
| 0 0 1 |
##
+.
#Param scale horizontal and vertical scale factor ##
@@ -100,6 +102,7 @@ Sets Matrix to translate by (dx, dy). Returned matrix is:
| 0 1 dy |
| 0 0 1 |
##
+.
#Param dx horizontal translation ##
#Param dy vertical translation ##
@@ -136,6 +139,7 @@ Sets Matrix to:
| skewY scaleY transY |
| pers0 pers1 pers2 |
##
+.
#Param scaleX horizontal scale factor ##
#Param skewX horizontal skew factor ##
@@ -288,6 +292,7 @@ Returns true if Matrix is identity. Identity matrix is:
| 0 1 0 |
| 0 0 1 |
##
+.
#Return true if Matrix has no effect ##
@@ -321,6 +326,7 @@ contain only scale elements, only translate elements, or both. Matrix form is:
| 0 scale-y translate-y |
| 0 0 1 |
##
+.
#Return true if Matrix is identity; or scales, translates, or both ##
@@ -357,6 +363,7 @@ Returns true if Matrix is identity, or translates. Matrix form is:
| 0 1 translate-y |
| 0 0 1 |
##
+.
#Return true if Matrix is identity, or translates ##
@@ -1308,6 +1315,7 @@ Sets all values from parameters. Sets matrix to:
| skewY scaleY transY |
| persp0 persp1 persp2 |
##
+.
#Param scaleX horizontal scale factor to store ##
#Param skewX horizontal skew factor to store ##
@@ -1386,6 +1394,7 @@ Sets matrix to:
| buffer[3] buffer[4] buffer[5] |
| buffer[6] buffer[7] buffer[8] |
##
+.
In the future, set9 followed by get9 may not return the same values. Since Matrix
maps non-homogeneous coordinates, scaling all nine values produces an equivalent
@@ -1420,6 +1429,7 @@ Sets Matrix to identity; which has no effect on mapped Points. Sets Matrix to:
| 0 1 0 |
| 0 0 1 |
##
+.
Also called setIdentity(); use the one that provides better inline
documentation.
@@ -1451,6 +1461,7 @@ Sets Matrix to identity; which has no effect on mapped Points. Sets Matrix to:
| 0 1 0 |
| 0 0 1 |
##
+.
Also called reset(); use the one that provides better inline
documentation.
@@ -1842,6 +1853,7 @@ sets Matrix to:
a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
##
+.
#Param a Matrix on left side of multiply expression ##
#Param b Matrix on right side of multiply expression ##
@@ -1892,6 +1904,7 @@ sets Matrix to:
Matrix * T(dx, dy) = | D E F | | 0 1 dy | = | D E D*dx+E*dy+F |
| G H I | | 0 0 1 | | G H G*dx+H*dy+I |
##
+.
#Param dx x-axis translation before applying Matrix ##
#Param dy y-axis translation before applying Matrix ##
@@ -1959,6 +1972,7 @@ sets Matrix to:
Matrix * S(sx, sy, px, py) = | D E F | | 0 sy dy | = | D*sx E*sy D*dx+E*dy+F |
| G H I | | 0 0 1 | | G*sx H*sy G*dx+H*dy+I |
##
+.
#Param sx horizontal scale factor ##
#Param sy vertical scale factor ##
@@ -2006,6 +2020,7 @@ sets Matrix to:
Matrix * S(sx, sy) = | D E F | | 0 sy 0 | = | D*sx E*sy F |
| G H I | | 0 0 1 | | G*sx H*sy I |
##
+.
#Param sx horizontal scale factor ##
#Param sy vertical scale factor ##
@@ -2064,6 +2079,7 @@ sets Matrix to:
Matrix * R(degrees, px, py) = | D E F | | s c dy | = | Dc+Es -Ds+Ec D*dx+E*dy+F |
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc G*dx+H*dy+I |
##
+.
#Param degrees angle of axes relative to upright axes ##
#Param px pivot x ##
@@ -2119,6 +2135,7 @@ sets Matrix to:
Matrix * R(degrees, px, py) = | D E F | | s c 0 | = | Dc+Es -Ds+Ec F |
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc I |
##
+.
#Param degrees angle of axes relative to upright axes ##
@@ -2172,6 +2189,7 @@ sets Matrix to:
Matrix * K(kx, ky, px, py) = | D E F | | ky 1 dy | = | D+E*ky D*kx+E D*dx+E*dy+F |
| G H I | | 0 0 1 | | G+H*ky G*kx+H G*dx+H*dy+I |
##
+.
#Param kx horizontal skew factor ##
#Param ky vertical skew factor ##
@@ -2218,6 +2236,7 @@ sets Matrix to:
Matrix * K(kx, ky) = | D E F | | ky 1 0 | = | D+E*ky D*kx+E F |
| G H I | | 0 0 1 | | G+H*ky G*kx+H I |
##
+.
#Param kx horizontal skew factor ##
#Param ky vertical skew factor ##
@@ -2263,6 +2282,7 @@ sets Matrix to:
Matrix * other = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
##
+.
#Param other Matrix on right side of multiply expression ##
@@ -2312,6 +2332,7 @@ sets Matrix to:
T(dx, dy) * Matrix = | 0 1 dy | | M N O | = | M+dy*P N+dy*Q O+dy*R |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param dx x-axis translation after applying Matrix ##
#Param dy y-axis translation after applying Matrix ##
@@ -2382,6 +2403,7 @@ sets Matrix to:
S(sx, sy, px, py) * Matrix = | 0 sy dy | | M N O | = | sy*M+dy*P sy*N+dy*Q sy*O+dy*R |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param sx horizontal scale factor ##
#Param sy vertical scale factor ##
@@ -2428,6 +2450,7 @@ sets Matrix to:
S(sx, sy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param sx horizontal scale factor ##
#Param sy vertical scale factor ##
@@ -2486,6 +2509,7 @@ sets Matrix to:
I(divx, divy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param divx integer divisor for inverse scale in x ##
#Param divy integer divisor for inverse scale in y ##
@@ -2546,6 +2570,7 @@ sets Matrix to:
R(degrees, px, py) * Matrix = |s c dy| |M N O| = |sJ+cM+dy*P sK+cN+dy*Q sL+cO+dy*R|
|0 0 1| |P Q R| | P Q R|
##
+.
#Param degrees angle of axes relative to upright axes ##
#Param px pivot x ##
@@ -2601,6 +2626,7 @@ sets Matrix to:
R(degrees, px, py) * Matrix = | s c dy | | M N O | = | sJ+cM sK+cN sL+cO |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param degrees angle of axes relative to upright axes ##
@@ -2654,6 +2680,7 @@ sets Matrix to:
K(kx, ky, px, py) * Matrix = |ky 1 dy| |M N O| = |ky*J+M+dy*P ky*K+N+dy*Q ky*L+O+dy*R|
| 0 0 1| |P Q R| | P Q R|
##
+.
#Param kx horizontal skew factor ##
#Param ky vertical skew factor ##
@@ -2700,6 +2727,7 @@ sets Matrix to:
K(kx, ky) * Matrix = | ky 1 0 | | M N O | = | ky*J+M ky*K+N ky*L+O |
| 0 0 1 | | P Q R | | P Q R |
##
+.
#Param kx horizontal skew factor ##
#Param ky vertical skew factor ##
@@ -2745,6 +2773,7 @@ sets Matrix to:
other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
##
+.
#Param other Matrix on left side of multiply expression ##
@@ -2851,6 +2880,7 @@ Returns true if dst is empty, and sets Matrix to:
| 0 0 0 |
| 0 0 1 |
##
+.
#Param src Rect to map from ##
#Param dst Rect to map to ##
@@ -2906,6 +2936,7 @@ empty, returns Matrix set to:
| 0 0 0 |
| 0 0 1 |
##
+.
#Param src Rect to map from ##
#Param dst Rect to map to ##
@@ -3045,6 +3076,7 @@ Sets affine to:
| 1 0 0 |
| 0 1 0 |
##
+.
Affine 3x2 matrices in column major order are used by OpenGL and XPS.
@@ -3079,6 +3111,7 @@ Fills affine in column major order. Sets affine to:
| scale-x skew-x translate-x |
| skew-y scale-y translate-y |
##
+.
If Matrix contains perspective, returns false and leaves affine unchanged.
@@ -3129,6 +3162,7 @@ Matrix is set, row, then column, to:
| skew-y scale-y translate-y |
| 0 0 1 |
##
+.
#Param affine 3x2 affine matrix ##
@@ -3193,6 +3227,7 @@ each dst Point is computed as:
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
src and dst may point to the same storage.
@@ -3252,6 +3287,7 @@ each resulting pts Point is computed as:
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
#Param pts storage for mapped Points ##
#Param count number of Points to transform ##
@@ -3297,6 +3333,7 @@ each resulting dst Point is computed as:
Matrix * src = |D E F| |y| = |Ax+By+Cz Dx+Ey+Fz Gx+Hy+Iz|
|G H I| |z|
##
+.
#Param dst storage for mapped Point3 array ##
#Param src Point3 array to transform ##
@@ -3354,6 +3391,7 @@ result is computed as:
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
#Param x x-axis value of Point to map ##
#Param y y-axis value of Point to map ##
@@ -3399,6 +3437,7 @@ result is computed as:
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
#Param x x-axis value of Point to map ##
#Param y y-axis value of Point to map ##
@@ -3522,6 +3561,7 @@ each result Vector is computed as:
Matrix * vec = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
#Param vecs Vectors to transform, and storage for mapped Vectors ##
#Param count number of Vectors to transform ##
@@ -3570,6 +3610,7 @@ each result Vector is computed as:
Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , -----------
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
##
+.
#Param dx x-axis value of Vector to map ##
#Param dy y-axis value of Vector to map ##
@@ -3619,6 +3660,7 @@ each result Vector is computed as:
Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , -----------
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
##
+.
#Param dx x-axis value of Vector to map ##
#Param dy y-axis value of Vector to map ##
@@ -3768,6 +3810,7 @@ each dst Point is computed as:
Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
##
+.
#Param dst storage for mapped corner Points ##
#Param rect Rect to map ##
@@ -4212,6 +4255,7 @@ On success
#Formula
Matrix = scale * Remaining
##
+.
#Param scale axes scaling factors; may be nullptr ##
#Param remaining Matrix without scaling; may be nullptr ##
@@ -4258,6 +4302,7 @@ Returns reference to const identity Matrix. Returned Matrix is set to:
| 0 1 0 |
| 0 0 1 |
##
+.
#Return const identity Matrix ##
@@ -4292,6 +4337,7 @@ to:
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
##
+.
#Return const invalid Matrix ##
@@ -4330,6 +4376,7 @@ sets Matrix to:
a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
##
+.
#Param a Matrix on left side of multiply expression ##
#Param b Matrix on right side of multiply expression ##
@@ -4402,6 +4449,7 @@ Initializes Matrix with scale and translate elements.
| 0 sy ty |
| 0 0 1 |
##
+.
#Param sx horizontal scale factor to store ##
#Param sy vertical scale factor to store ##
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 2b844fc9eb..8a5e87a5b2 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -718,7 +718,7 @@ at compile time.
#In Anti_alias
#Line # returns true if Anti_Alias is set ##
- If true, pixels on the active edges of Path may be drawn with partial transparency.
+ Returns true if pixels on the active edges of Path may be drawn with partial transparency.
Equivalent to getFlags masked with kAntiAlias_Flag.
@@ -850,7 +850,7 @@ void draw(SkCanvas* canvas) {
#In Dither
#Line # returns true if Dither is set ##
- If true, color error may be distributed to smooth color transition.
+ Returns true if color error may be distributed to smooth color transition.
Equivalent to getFlags masked with kDither_Flag.
@@ -962,7 +962,7 @@ If kLinearText_Flag is clear, it is the same as setting Hinting to kNo_Hinting.
#Line # returns true if text is converted to Path ##
#In Linear_Text
- If true, text is converted to Path before drawing and measuring.
+ Returns true if text is converted to Path before drawing and measuring.
Equivalent to getFlags masked with kLinearText_Flag.
@@ -994,7 +994,7 @@ If kLinearText_Flag is clear, it is the same as setting Hinting to kNo_Hinting.
#Line # converts to Path before draw or measure ##
#In Linear_Text
- If true, text is converted to Path before drawing and measuring.
+ Returns true if text is converted to Path before drawing and measuring.
By default, kLinearText_Flag is clear.
Sets kLinearText_Flag if linearText is true.
@@ -1039,7 +1039,7 @@ of the color increases, the edge of the glyph appears to move towards the outsid
#In Subpixel_Text
#Line # returns true if Subpixel_Text is set ##
- If true, Glyphs at different sub-pixel positions may differ on pixel edge coverage.
+ Returns true if Glyphs at different sub-pixel positions may differ on pixel edge coverage.
Equivalent to getFlags masked with kSubpixelText_Flag.
@@ -1105,7 +1105,7 @@ the color components as RGB or BGR.
#In LCD_Text
#Line # returns true if LCD_Text is set ##
- If true, Glyphs may use LCD striping to improve glyph edges.
+ Returns true if Glyphs may use LCD striping to improve glyph edges.
Returns true if Flags kLCDRenderText_Flag is set.
@@ -1205,7 +1205,7 @@ kEmbeddedBitmapText_Flag at compile time.
#In Font_Embedded_Bitmaps
#Line # returns true if Font_Embedded_Bitmaps is set ##
- If true, Font_Engine may return Glyphs from font bitmaps instead of from outlines.
+ Returns true if Font_Engine may return Glyphs from font bitmaps instead of from outlines.
Equivalent to getFlags masked with kEmbeddedBitmapText_Flag.
@@ -1272,9 +1272,9 @@ Automatic_Hinting only affects platforms that use FreeType as the Font_Manager.
#In Automatic_Hinting
#Line # returns true if Glyphs are always hinted ##
- If true, and if Hinting is set to kNormal_Hinting or kFull_Hinting, and if
- platform uses FreeType as the Font_Manager, instruct the Font_Manager to always hint
- Glyphs.
+ Returns true if Hinting is set to kNormal_Hinting or kFull_Hinting, and if
+ platform uses FreeType as the Font_Manager. If true, instructs
+ the Font_Manager to always hint Glyphs.
Equivalent to getFlags masked with kAutoHinting_Flag.
@@ -1303,8 +1303,9 @@ Automatic_Hinting only affects platforms that use FreeType as the Font_Manager.
#In Automatic_Hinting
#Line # sets Glyphs to always be hinted ##
+ Sets whether to always hint Glyphs.
If Hinting is set to kNormal_Hinting or kFull_Hinting and useAutohinter is set,
- instruct the Font_Manager to always hint Glyphs.
+ instructs the Font_Manager to always hint Glyphs.
Automatic_Hinting has no effect if Hinting is set to kNo_Hinting or
kSlight_Hinting.
@@ -1382,7 +1383,7 @@ void draw(SkCanvas* canvas) {
#In Vertical_Text
#Line # returns true if Vertical_Text is set ##
- If true, Glyphs are drawn top to bottom instead of left to right.
+ Returns true if Glyphs are drawn top to bottom instead of left to right.
Equivalent to getFlags masked with kVerticalText_Flag.
@@ -1408,7 +1409,7 @@ void draw(SkCanvas* canvas) {
#In Vertical_Text
#Line # sets or clears Vertical_Text ##
- If true, text advance positions the next glyph below the previous glyph instead of to the
+ Returns true if text advance positions the next glyph below the previous glyph instead of to the
right of previous glyph.
Sets kVerticalText_Flag if vertical is true.
@@ -1469,7 +1470,7 @@ void draw(SkCanvas* canvas) {
#In Fake_Bold
#Line # returns true if Fake_Bold is set ##
- If true, approximate bold by increasing the stroke width when creating glyph bitmaps
+ Returns true if approximate bold by increasing the stroke width when creating glyph bitmaps
from outlines.
Equivalent to getFlags masked with kFakeBoldText_Flag.
@@ -1496,7 +1497,7 @@ void draw(SkCanvas* canvas) {
#In Fake_Bold
#Line # sets or clears Fake_Bold ##
- Use increased stroke width when creating glyph bitmaps to approximate a bold typeface.
+ Increases stroke width when creating glyph bitmaps to approximate a bold typeface.
Sets kFakeBoldText_Flag if fakeBoldText is true.
Clears kFakeBoldText_Flag if fakeBoldText is false.
@@ -1912,7 +1913,7 @@ May be used to verify that Style is a legal value.
#In Style
#Line # returns Style: stroke, fill, or both ##
- Whether the geometry is filled, stroked, or filled and stroked.
+ Returns whether the geometry is filled, stroked, or filled and stroked.
#Return one of:kFill_Style, kStroke_Style, kStrokeAndFill_Style ##
@@ -2142,7 +2143,7 @@ Here are some miter limits and the angles that triggers them.
#In Miter_Limit
#Line # returns Miter_Limit, angles with sharp corners ##
- The limit at which a sharp corner is drawn beveled.
+ Returns the limit at which a sharp corner is drawn beveled.
#Return zero and greater Miter_Limit ##
@@ -2163,7 +2164,7 @@ Here are some miter limits and the angles that triggers them.
#In Miter_Limit
#Line # sets Miter_Limit, angles with sharp corners ##
- The limit at which a sharp corner is drawn beveled.
+ Sets the limit at which a sharp corner is drawn beveled.
Valid values are zero and greater.
Has no effect if miter is less than zero.
@@ -2275,7 +2276,7 @@ Stroke_Cap is kButt_Cap by default.
#In Stroke_Cap
#Line # returns Cap, the area drawn at path ends ##
- The geometry drawn at the beginning and end of strokes.
+ Returns the geometry drawn at the beginning and end of strokes.
#Return one of: kButt_Cap, kRound_Cap, kSquare_Cap ##
@@ -2296,7 +2297,7 @@ Stroke_Cap is kButt_Cap by default.
#In Stroke_Cap
#Line # sets Cap, the area drawn at path ends ##
- The geometry drawn at the beginning and end of strokes.
+ Sets the geometry drawn at the beginning and end of strokes.
#Param cap one of: kButt_Cap, kRound_Cap, kSquare_Cap;
has no effect if cap is not valid
@@ -2433,7 +2434,7 @@ void draw(SkCanvas* canvas) {
#In Stroke_Join
#Line # returns Join, geometry on path corners ##
- The geometry drawn at the corners of strokes.
+ Returns the geometry drawn at the corners of strokes.
#Return one of: kMiter_Join, kRound_Join, kBevel_Join ##
@@ -2454,7 +2455,7 @@ void draw(SkCanvas* canvas) {
#In Stroke_Join
#Line # sets Join, geometry on path corners ##
- The geometry drawn at the corners of strokes.
+ Sets the geometry drawn at the corners of strokes.
#Param join one of: kMiter_Join, kRound_Join, kBevel_Join;
otherwise, has no effect
@@ -2505,7 +2506,7 @@ returns false since Hairline has no filled equivalent.
#In Fill_Path
#Line # returns fill path equivalent to stroke ##
- The filled equivalent of the stroked path.
+ Returns the filled equivalent of the stroked path.
#Param src Path read to create a filled version ##
#Param dst resulting Path; may be the same as src, but may not be nullptr ##
@@ -2552,7 +2553,7 @@ returns false since Hairline has no filled equivalent.
#Method bool getFillPath(const SkPath& src, SkPath* dst) const
#In Fill_Path
- The filled equivalent of the stroked path.
+ Returns the filled equivalent of the stroked path.
Replaces dst with the src path modified by Path_Effect and Style_Stroke.
Path_Effect, if any, is not culled. Stroke_Width is created with default precision.
@@ -2637,7 +2638,7 @@ void draw(SkCanvas* canvas) {
#In Shader_Methods
#Line # returns Shader, multiple drawing colors; gradients ##
- Optional colors used when filling a path, such as a gradient.
+ Returns optional colors used when filling a path, such as a gradient.
Does not alter Shader Reference_Count.
@@ -2663,7 +2664,7 @@ void draw(SkCanvas* canvas) {
#In Shader_Methods
#Line # references Shader, multiple drawing colors; gradients ##
- Optional colors used when filling a path, such as a gradient.
+ Returns optional colors used when filling a path, such as a gradient.
Increases Shader Reference_Count by one.
@@ -2690,7 +2691,7 @@ void draw(SkCanvas* canvas) {
#In Shader_Methods
#Line # sets Shader, multiple drawing colors; gradients ##
- Optional colors used when filling a path, such as a gradient.
+ Sets optional colors used when filling a path, such as a gradient.
Sets Shader to shader, decreasing Reference_Count of the previous Shader.
Increments shader Reference_Count by one.
@@ -4147,7 +4148,7 @@ void draw(SkCanvas* canvas) {
#Method bool hasUnderlineThickness(SkScalar* thickness) const
#Line # returns underline thickness if set ##
- If Font_Metrics has a valid underline thickness, return true, and set
+ Returns true if Font_Metrics has a valid underline thickness, and sets
thickness to that value. If the underline thickness is not valid,
return false, and ignore thickness.
@@ -4162,7 +4163,7 @@ void draw(SkCanvas* canvas) {
#Method bool hasUnderlinePosition(SkScalar* position) const
#Line # returns underline position if set ##
- If Font_Metrics has a valid underline position, return true, and set
+ Returns true if Font_Metrics has a valid underline position, and sets
position to that value. If the underline position is not valid,
return false, and ignore position.
@@ -4177,7 +4178,7 @@ void draw(SkCanvas* canvas) {
#Method bool hasStrikeoutThickness(SkScalar* thickness) const
#Line # returns strikeout thickness if set ##
- If Font_Metrics has a valid strikeout thickness, return true, and set
+ Returns true if Font_Metrics has a valid strikeout thickness, and sets
thickness to that value. If the underline thickness is not valid,
return false, and ignore thickness.
@@ -4192,7 +4193,7 @@ void draw(SkCanvas* canvas) {
#Method bool hasStrikeoutPosition(SkScalar* position) const
#Line # returns strikeout position if set ##
- If Font_Metrics has a valid strikeout position, return true, and set
+ Returns true if Font_Metrics has a valid strikeout position, and sets
position to that value. If the underline position is not valid,
return false, and ignore position.
diff --git a/docs/SkPath_Reference.bmh b/docs/SkPath_Reference.bmh
index f82654a511..28847b8951 100644
--- a/docs/SkPath_Reference.bmh
+++ b/docs/SkPath_Reference.bmh
@@ -397,7 +397,7 @@ void draw(SkCanvas* canvas) {
#Method SkPath()
#Line # constructs with default values ##
-By default, Path has no Verbs, no Points, and no Weights.
+Constucts an empty path. By default, Path has no Verbs, no Points, and no Weights.
Fill_Type is set to kWinding_FillType.
#Return empty Path ##
@@ -419,6 +419,7 @@ path is empty
#Method SkPath(const SkPath& path)
#Line # makes a shallow copy ##
+Constructs a copy of an existing path.
Copy constructor makes two paths identical by value. Internally, path and
the returned result share pointer values. The underlying Verb_Array, Point_Array
and Weights are copied when modified.
@@ -487,6 +488,7 @@ void draw(SkCanvas* canvas) {
#Method SkPath& operator=(const SkPath& path)
#Line # makes a shallow copy ##
+Constructs a copy of an existing path.
Path assignment makes two paths identical by value. Internally, assignment
shares pointer values. The underlying Verb_Array, Point_Array and Weights
are copied when modified.
@@ -612,7 +614,7 @@ convexity !=
#In Property
#In Interpolate
#Line # returns if pair contains equal counts of Verb_Array and Weights ##
-Return true if Paths contain equal Verbs and equal Weights.
+Returns true if Paths contain equal Verbs and equal Weights.
If Paths contain one or more Conics, the Weights must match.
conicTo may add different Verbs depending on Conic_Weight, so it is not
@@ -651,7 +653,7 @@ paths are interpolatable
#Method bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const
#In Interpolate
#Line # interpolates between Path pair ##
-Interpolate between Paths with Point_Array of equal size.
+Interpolates 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
@@ -902,7 +904,7 @@ default path fill type is inverse: false
#In Fill_Type
#Line # toggles Fill_Type between inside and outside geometry ##
-Replace FillType with its inverse. The inverse of FillType describes the area
+Replaces FillType with its inverse. The inverse of FillType describes the area
unmodified by the original FillType.
#Table
@@ -1271,6 +1273,7 @@ a newly initialized path.
#Method bool isEmpty() const
#In Property
#Line # returns if verb count is zero ##
+Returns if Path is empty.
Empty Path may have FillType but has no SkPoint, Verb, or Conic_Weight.
SkPath() constructs empty Path; reset() and (rewind) make Path empty.
@@ -1310,6 +1313,7 @@ after reset path is empty
#Method bool isLastContourClosed() const
#In Property
#Line # returns if final Contour forms a loop ##
+Returns if Contour is closed.
Contour is closed if Path Verb array was last modified by close(). When stroked,
closed Contour draws Paint_Stroke_Join instead of Paint_Stroke_Cap at first and last Point.
@@ -1415,7 +1419,7 @@ volatile by default is false
#Method void setIsVolatile(bool isVolatile)
#In Volatile
#Line # sets if Device should not cache ##
-Specify whether Path is volatile; whether it will be altered or discarded
+Specifies whether Path is volatile; whether it will be altered or discarded
by the caller after it is drawn. Paths by default have volatile set false, allowing
Device to attach a cache of data which speeds repeated drawing.
@@ -1456,7 +1460,7 @@ GPU_Surface Path draws are affected by volatile for some shadows and concave geo
#Method static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact)
#In Property
#Line # returns if Line is very small ##
-Test if Line between Point pair is degenerate.
+Tests if Line between Point pair is degenerate.
Line with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -1504,7 +1508,7 @@ line from (100,100) to (100.0001,100.0001) is not degenerate, exactly
#In Property
#Line # returns if Quad is very small ##
-Test if Quad is degenerate.
+Tests if Quad is degenerate.
Quad with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -1558,7 +1562,7 @@ quad (1100,1100), (1100,1100), (1100,1100) is degenerate, exactly
#In Property
#Line # returns if Cubic is very small ##
-Test if Cubic is degenerate.
+Tests if Cubic is degenerate.
Cubic with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -1939,7 +1943,7 @@ rotated circle bounds = 14.6447, 9.64466, 85.3553, 80.3553
#Method void updateBoundsCache() const
#In Utility
#Line # refreshes result of getBounds ##
-Update internal bounds so that subsequent calls to getBounds are instantaneous.
+Updates internal bounds so that subsequent calls to getBounds are instantaneous.
Unaltered copies of Path may also access cached bounds through getBounds.
For now, identical to calling getBounds and ignoring the returned value.
@@ -2072,7 +2076,7 @@ void draw(SkCanvas* canvas) {
#Method void incReserve(unsigned extraPtCount)
#In Utility
#Line # reserves space for additional data ##
-grows Path Verb_Array and Point_Array to contain extraPtCount additional Points.
+Grows Path Verb_Array and Point_Array to contain extraPtCount additional Points.
May improve performance and use less memory by
reducing the number and size of allocations when creating Path.
@@ -3145,7 +3149,7 @@ void draw(SkCanvas* canvas) {
#In Build
#In Arc
#Line # appends Arc ##
-Append Arc to Path. Arc added is part of ellipse
+Appends Arc to Path. Arc added is part of ellipse
bounded by oval, from startAngle through sweepAngle. Both startAngle and
sweepAngle are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends Arc clockwise.
@@ -3192,7 +3196,7 @@ void draw(SkCanvas* canvas) {
#Method void arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius)
#In Build
#In Arc
-Append Arc to Path, after appending Line if needed. Arc is implemented by Conic
+Appends Arc to Path, after appending Line if needed. Arc is implemented by Conic
weighted to describe part of Circle. Arc is contained by tangent from
last Path point (x0, y0) to (x1, y1), and tangent from (x1, y1) to (x2, y2). Arc
is part of Circle sized to radius, positioned so it touches both tangent lines.
@@ -3341,7 +3345,7 @@ conic (79.2893,20),(200,20),(114.645,105.355) weight 0.382683
#Method void arcTo(const SkPoint p1, const SkPoint p2, SkScalar radius)
#In Build
#In Arc
-Append Arc to Path, after appending Line if needed. Arc is implemented by Conic
+Appends Arc to Path, after appending Line if needed. Arc is implemented by Conic
weighted to describe part of Circle. Arc is contained by tangent from
last Path point to p1, and tangent from p1 to p2. Arc
is part of Circle sized to radius, positioned so it touches both tangent lines.
@@ -3457,7 +3461,7 @@ void draw(SkCanvas* canvas) {
#In Build
#In Arc
-Append Arc to Path. Arc is implemented by one or more Conics weighted to
+Appends Arc to Path. Arc is implemented by one or more Conics weighted to
describe part of Oval with radii (rx, ry) rotated by xAxisRotate degrees. Arc
curves from last Path Point to (x, y), choosing one of four possible routes:
clockwise or counterclockwise, and smaller or larger.
@@ -3512,7 +3516,7 @@ void draw(SkCanvas* canvas) {
#In Build
#In Arc
-Append Arc to Path. Arc is implemented by one or more Conic weighted to describe part of Oval
+Appends Arc to Path. Arc is implemented by one or more Conic weighted to describe part of Oval
with radii (r.fX, r.fY) rotated by xAxisRotate degrees. Arc curves from last Path Point to
(xy.fX, xy.fY), choosing one of four possible routes: clockwise or counterclockwise,
and smaller or larger.
@@ -3558,7 +3562,7 @@ void draw(SkCanvas* canvas) {
#In Arc
#Line # appends Arc relative to Last_Point ##
-Append Arc to Path, relative to last Path Point. Arc is implemented by one or
+Appends Arc to Path, relative to last Path Point. Arc is implemented by one or
more Conic, weighted to describe part of Oval with radii (rx, ry) rotated by
xAxisRotate degrees. Arc curves from last Path Point (x0, y0) to end Point:
@@ -3612,7 +3616,7 @@ void draw(SkCanvas* canvas) {
#Method void close()
#In Build
#Line # makes last Contour a loop ##
-Append kClose_Verb to Path. A closed Contour connects the first and last Point
+Appends kClose_Verb to Path. A closed Contour connects the first and last Point
with Line, forming a continuous loop. Open and closed Contour draw the same
with SkPaint::kFill_Style. With SkPaint::kStroke_Style, open Contour draws
Paint_Stroke_Cap at Contour start and end; closed Contour draws
@@ -3949,7 +3953,7 @@ inner (12.5, 22.5, 27.5, 37.5); direction CCW
#Method void addRect(const SkRect& rect, Direction dir = kCW_Direction)
#In Build
#Line # adds one Contour containing Rect ##
-Add Rect to Path, appending kMove_Verb, three kLine_Verb, and kClose_Verb,
+Adds Rect to Path, appending kMove_Verb, three kLine_Verb, and kClose_Verb,
starting with top-left corner of Rect; followed by top-right, bottom-right,
and bottom-left if dir is kCW_Direction; or followed by bottom-left,
bottom-right, and top-right if dir is kCCW_Direction.
@@ -3987,7 +3991,7 @@ void draw(SkCanvas* canvas) {
#Method void addRect(const SkRect& rect, Direction dir, unsigned start)
-Add Rect to Path, appending kMove_Verb, three kLine_Verb, and kClose_Verb.
+Adds Rect to Path, appending kMove_Verb, three kLine_Verb, and kClose_Verb.
If dir is kCW_Direction, Rect corners are added clockwise; if dir is
kCCW_Direction, Rect corners are added counterclockwise.
start determines the first corner added.
@@ -4045,7 +4049,7 @@ void draw(SkCanvas* canvas) {
#Method void addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom,
Direction dir = kCW_Direction)
-Add Rect (left, top, right, bottom) to Path,
+Adds Rect (left, top, right, bottom) to Path,
appending kMove_Verb, three kLine_Verb, and kClose_Verb,
starting with top-left corner of Rect; followed by top-right, bottom-right,
and bottom-left if dir is kCW_Direction; or followed by bottom-left,
@@ -4088,7 +4092,7 @@ void draw(SkCanvas* canvas) {
#Method void addOval(const SkRect& oval, Direction dir = kCW_Direction)
#In Build
#Line # adds one Contour containing Oval ##
-Add Oval to path, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
+Adds Oval to path, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
Oval is upright ellipse bounded by Rect oval with radii equal to half oval width
and half oval height. Oval begins at (oval.fRight, oval.centerY()) and continues
clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction.
@@ -4112,7 +4116,7 @@ clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction.
#Method void addOval(const SkRect& oval, Direction dir, unsigned start)
-Add Oval to Path, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
+Adds Oval to Path, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
Oval is upright ellipse bounded by Rect oval with radii equal to half oval width
and half oval height. Oval begins at start and continues
clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction.
@@ -4173,7 +4177,7 @@ void draw(SkCanvas* canvas) {
#In Build
#Line # adds one Contour containing Circle ##
-Add Circle centered at (x, y) of size radius to Path, appending kMove_Verb,
+Adds Circle centered at (x, y) of size radius to Path, appending kMove_Verb,
four kConic_Verb, and kClose_Verb. Circle begins at:
#Formula
(x + radius, y)
@@ -4211,7 +4215,7 @@ void draw(SkCanvas* canvas) {
#Method void addArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle)
#In Build
#Line # adds one Contour containing Arc ##
-Append Arc to Path, as the start of new Contour. Arc added is part of ellipse
+Appends Arc to Path, as the start of new Contour. Arc added is part of ellipse
bounded by oval, from startAngle through sweepAngle. Both startAngle and
sweepAngle are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends Arc clockwise.
@@ -4255,7 +4259,7 @@ void draw(SkCanvas* canvas) {
#In Build
#Line # adds one Contour containing Round_Rect with common corner radii ##
-Append Round_Rect to Path, creating a new closed Contour. Round_Rect has bounds
+Appends Round_Rect to Path, creating a new closed Contour. Round_Rect has bounds
equal to rect; each corner is 90 degrees of an ellipse with radii (rx, ry). If
dir is kCW_Direction, Round_Rect starts at top-left of the lower-left corner and
winds clockwise. If dir is kCCW_Direction, Round_Rect starts at the bottom-left
@@ -4306,7 +4310,7 @@ void draw(SkCanvas* canvas) {
#Method void addRoundRect(const SkRect& rect, const SkScalar radii[],
Direction dir = kCW_Direction)
-Append Round_Rect to Path, creating a new closed Contour. Round_Rect has bounds
+Appends Round_Rect to Path, creating a new closed Contour. Round_Rect has bounds
equal to rect; each corner is 90 degrees of an ellipse with radii from the
array.
@@ -4363,7 +4367,7 @@ void draw(SkCanvas* canvas) {
#Method void addRRect(const SkRRect& rrect, Direction dir = kCW_Direction)
#In Build
#Line # adds one Contour containing Round_Rect ##
-Add rrect to Path, creating a new closed Contour. If
+Adds rrect to Path, creating a new closed Contour. If
dir is kCW_Direction, rrect starts at top-left of the lower-left corner and
winds clockwise. If dir is kCCW_Direction, rrect starts at the bottom-left
of the upper-left corner and winds counterclockwise.
@@ -4399,7 +4403,7 @@ void draw(SkCanvas* canvas) {
#Method void addRRect(const SkRRect& rrect, Direction dir, unsigned start)
-Add rrect to Path, creating a new closed Contour. If dir is kCW_Direction, rrect
+Adds rrect to Path, creating a new closed Contour. If dir is kCW_Direction, rrect
winds clockwise; if dir is kCCW_Direction, rrect winds counterclockwise.
start determines the first point of rrect to add.
@@ -4449,7 +4453,7 @@ void draw(SkCanvas* canvas) {
#Method void addPoly(const SkPoint pts[], int count, bool close)
#In Build
#Line # adds one Contour containing connected lines ##
-Add Contour created from Line array, adding (count - 1) Line segments.
+Adds Contour created from Line array, adding (count - 1) Line segments.
Contour added starts at pts[0], then adds a line for every additional Point
in pts array. If close is true,appends kClose_Verb to Path, connecting
pts[count - 1] and pts[0].
@@ -4552,7 +4556,7 @@ The top right composition is made up of one contour; the other three have two.
#In Build
#Line # adds contents of Path ##
-Append src to Path, offset by (dx, dy).
+Appends src to Path, offset by (dx, dy).
If mode is kAppend_AddPathMode, src Verb_Array, Point_Array, and Conic_Weights are
added unaltered. If mode is kExtend_AddPathMode, add Line before appending
@@ -4587,7 +4591,7 @@ Verbs, Points, and Conic_Weights.
#Method void addPath(const SkPath& src, AddPathMode mode = kAppend_AddPathMode)
-Append src to Path.
+Appends src to Path.
If mode is kAppend_AddPathMode, src Verb_Array, Point_Array, and Conic_Weights are
added unaltered. If mode is kExtend_AddPathMode, add Line before appending
@@ -4617,7 +4621,7 @@ Verbs, Points, and Conic_Weights.
#Method void addPath(const SkPath& src, const SkMatrix& matrix, AddPathMode mode = kAppend_AddPathMode)
-Append src to Path, transformed by matrix. Transformed curves may have different
+Appends src to Path, transformed by matrix. Transformed curves may have different
Verbs, Points, and Conic_Weights.
If mode is kAppend_AddPathMode, src Verb_Array, Point_Array, and Conic_Weights are
@@ -4652,7 +4656,7 @@ Verbs, Points, and Conic_Weights.
#Method void reverseAddPath(const SkPath& src)
#In Build
#Line # adds contents of Path back to front ##
-Append src to Path, from back to front.
+Appends src to Path, from back to front.
Reversed src always appends a new Contour to Path.
#Param src Path Verbs, Points, and Conic_Weights to add ##
@@ -4691,7 +4695,7 @@ Reversed src always appends a new Contour to Path.
#Method void offset(SkScalar dx, SkScalar dy, SkPath* dst) const
#In Transform
#Line # translates Point_Array ##
-Offset Point_Array by (dx, dy). Offset Path replaces dst.
+Offsets Point_Array by (dx, dy). Offset Path replaces dst.
If dst is nullptr, Path is replaced by offset data.
#Param dx offset added to Point_Array x-axis coordinates ##
@@ -4725,7 +4729,7 @@ If dst is nullptr, Path is replaced by offset data.
#Method void offset(SkScalar dx, SkScalar dy)
#In Transform
-Offset Point_Array by (dx, dy). Path is replaced by offset data.
+Offsets Point_Array by (dx, dy). Path is replaced by offset data.
#Param dx offset added to Point_Array x-axis coordinates ##
#Param dy offset added to Point_Array y-axis coordinates ##
@@ -4753,7 +4757,7 @@ Offset Point_Array by (dx, dy). Path is replaced by offset data.
#Method void transform(const SkMatrix& matrix, SkPath* dst) const
#In Transform
#Line # applies Matrix to Point_Array and Weights ##
-Transform Verb_Array, Point_Array, and weight by matrix.
+Transforms Verb_Array, Point_Array, and weight by matrix.
transform may change Verbs and increase their number.
Transformed Path replaces dst; if dst is nullptr, original data
is replaced.
@@ -4786,7 +4790,7 @@ is replaced.
#Method void transform(const SkMatrix& matrix)
-Transform Verb_Array, Point_Array, and weight by matrix.
+Transforms Verb_Array, Point_Array, and weight by matrix.
transform may change Verbs and increase their number.
Path is replaced by transformed data.
@@ -4854,7 +4858,7 @@ Last_Point can be read and written directly with getLastPt and setLastPt.
#In Utility
#In Last_Point
#Line # replaces Last_Point ##
- Set Last_Point to (x, y). If Point_Array is empty, append kMove_Verb to
+ Sets Last_Point to (x, y). If Point_Array is empty, append kMove_Verb to
Verb_Array and append (x, y) to Point_Array.
#Param x set x-axis value of Last_Point ##
@@ -4876,7 +4880,7 @@ Last_Point can be read and written directly with getLastPt and setLastPt.
#Method void setLastPt(const SkPoint& p)
- Set the last point on the path. If Point_Array is empty, append kMove_Verb to
+ Sets the last point on the path. If Point_Array is empty, append kMove_Verb to
Verb_Array and append p to Point_Array.
#Param p set value of Last_Point ##
@@ -5194,7 +5198,7 @@ path is equal to copy
#Method sk_sp<SkData> serialize() const
#In Utility
#Line # copies data to buffer ##
-Write Path to buffer, returning the buffer written to, wrapped in Data.
+Writes Path to buffer, returning the buffer written to, wrapped in Data.
serialize() writes Fill_Type, Verb_Array, Point_Array, Conic_Weight, and
additionally writes computed information like Convexity and bounds.
diff --git a/docs/SkPicture_Reference.bmh b/docs/SkPicture_Reference.bmh
index a722a1deb6..64561de50e 100644
--- a/docs/SkPicture_Reference.bmh
+++ b/docs/SkPicture_Reference.bmh
@@ -22,10 +22,15 @@ This base class handles serialization and a few other miscellany.
# ------------------------------------------------------------------------------
#Class AbortCallback
-#Line # incomplete ##
+#Line # utility to stop picture playback ##
#Code
-#ToDo fill this in manually ##
+ class AbortCallback {
+ public:
+ AbortCallback() {}
+ virtual ~AbortCallback() {}
+ virtual bool abort() = 0;
+ };
##
Subclasses of this can be passed to playback(). During the playback
@@ -39,16 +44,16 @@ to the same level it was before the playback call was made.
# ------------------------------------------------------------------------------
#Method AbortCallback()
-#In incomplete
-#Line # incomplete ##
+#In Constructor
+#Line # defines default constructor ##
+Has no effect.
-#Return incomplete ##
+#Return abstract class cannot be instantiated ##
-#Example
-// incomplete
+#NoExample
##
-#SeeAlso incomplete
+#SeeAlso playback
#Method ##
@@ -56,53 +61,95 @@ to the same level it was before the playback call was made.
#Method virtual ~AbortCallback()
#In Constructor
-#Line # incomplete ##
+#Line # defines default destructor ##
+Has no effect.
-#Example
-// incomplete
+#NoExample
##
-#SeeAlso incomplete
+#SeeAlso playback
#Method ##
# ------------------------------------------------------------------------------
#Method virtual bool abort() = 0
-#In incomplete
-#Line # incomplete ##
+#In Utility
+#Line # aborts playback by callback ##
-#Return incomplete ##
+Stops Picture playback when some condition is met. A subclass of
+AbortCallback provides an override for abort() that can stop playback() from
+drawing the entire picture.
-#Example
-// incomplete
+#Return true to stop playback ##
+
+#NoExample
##
-#SeeAlso incomplete
+#SeeAlso playback
#Method ##
+#Example
+#Description
+JustOneDraw allows the black rectangle to draw but stops playback before the
+white rectangle appears.
+##
+#Function
+class JustOneDraw : public SkPicture::AbortCallback {
+public:
+ bool abort() override { return fCalls++ > 0; }
+private:
+ int fCalls = 0;
+};
+##
+
+void draw(SkCanvas* canvas) {
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ JustOneDraw callback;
+ picture->playback(canvas, &callback);
+}
+
+##
+
#Class AbortCallback ##
# ------------------------------------------------------------------------------
#Method static sk_sp<SkPicture> MakeFromStream(SkStream* stream,
const SkDeserialProcs* procs = nullptr)
-#In incomplete
-#Line # incomplete ##
+#In Constructor
+#Line # constructs Picture from stream ##
-Recreate a picture that was serialized into a stream or data.
+Recreates a picture that was serialized into a stream.
-#Param stream incomplete ##
-#Param procs incomplete ##
+#Param stream container for serial data ##
+#Param procs custom serial data decoders; may be nullptr ##
-#Return incomplete ##
+#Return Picture constructed from stream data ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ SkDynamicMemoryWStream writableStream;
+ picture->serialize(&writableStream);
+ std::unique_ptr<SkStreamAsset> readableStream = writableStream.detachAsStream();
+ sk_sp<SkPicture> copy = SkPicture::MakeFromStream(readableStream.get());
+ copy->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso MakeFromData SkPictureRecorder
#Method ##
@@ -110,19 +157,32 @@ Recreate a picture that was serialized into a stream or data.
#Method static sk_sp<SkPicture> MakeFromData(const SkData* data,
const SkDeserialProcs* procs = nullptr)
-#In incomplete
-#Line # incomplete ##
+#In Constructor
+#Line # constructs Picture from data ##
+
+Recreates a picture that was serialized into data.
-#Param data incomplete ##
-#Param procs incomplete ##
+#Param data container for serial data ##
+#Param procs custom serial data decoders; may be nullptr ##
-#Return incomplete ##
+#Return Picture constructed from data ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ SkDynamicMemoryWStream writableStream;
+ picture->serialize(&writableStream);
+ sk_sp<SkData> readableData = writableStream.detachAsData();
+ sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData.get());
+ copy->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso MakeFromStream SkPictureRecorder
#Method ##
@@ -130,180 +190,266 @@ Recreate a picture that was serialized into a stream or data.
#Method static sk_sp<SkPicture> MakeFromData(const void* data, size_t size,
const SkDeserialProcs* procs = nullptr)
-#In incomplete
-#Line # incomplete ##
-#Param data incomplete ##
-#Param size incomplete ##
-#Param procs incomplete ##
+#Param data pointer to serial data ##
+#Param size size of data ##
+#Param procs custom serial data decoders; may be nullptr ##
-#Return incomplete ##
+Recreates a picture that was serialized into data.
+
+#Return Picture constructed from data ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ SkDynamicMemoryWStream writableStream;
+ picture->serialize(&writableStream);
+ sk_sp<SkData> readableData = writableStream.detachAsData();
+ sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());
+ copy->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso MakeFromStream SkPictureRecorder
#Method ##
# ------------------------------------------------------------------------------
#Method virtual void playback(SkCanvas* canvas, AbortCallback* callback = nullptr) const = 0
-#In incomplete
-#Line # incomplete ##
+#In Action
+#Line # replays drawing commands on canvas ##
Replays the drawing commands on the specified canvas. Note that
this has the effect of unfurling this picture into the destination
canvas. Using the SkCanvas::drawPicture entry point gives the destination
canvas the option of just taking a ref.
-#Param canvas the canvas receiving the drawing commands.
-##
-#Param callback a callback that allows interruption of playback
-##
-
-#Return incomplete ##
+#Param canvas receiver of drawing commands ##
+#Param callback allows interruption of playback ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ picture->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso SkCanvas::drawPicture
#Method ##
# ------------------------------------------------------------------------------
#Method virtual SkRect cullRect() const = 0
-#In incomplete
-#Line # incomplete ##
+#In Property
+#Line # returns bounds used to record Picture ##
-Return a cull rect for this picture.
+Returns cull Rect for this picture.
Ops recorded into this picture that attempt to draw outside the cull might not be drawn.
-#Return incomplete ##
+#Return bounds passed when Picture was created ##
#Example
-// incomplete
+#Description
+Picture recorded bounds are smaller than contents; contents outside recorded
+bounds may be drawn, and are drawn in this example.
+##
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({64, 64, 192, 192});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ picture->playback(canvas);
+ paint.setBlendMode(SkBlendMode::kModulate);
+ paint.setColor(0x40404040);
+ canvas->drawRect(picture->cullRect(), paint);
##
-#SeeAlso incomplete
+#SeeAlso SkCanvas::clipRect
#Method ##
# ------------------------------------------------------------------------------
#Method uint32_t uniqueID() const
-#In incomplete
-#Line # incomplete ##
+#In Property
+#Line # returns identifier for Picture ##
Returns a non-zero value unique among all pictures.
-#Return incomplete ##
+#Return identifier for Picture ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ recorder.beginRecording({0, 0, 0, 0});
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ SkDebugf("empty picture id = %d\n", picture->uniqueID());
+ sk_sp<SkPicture> placeholder = SkPicture::MakePlaceholder({0, 0, 0, 0});
+ SkDebugf("placeholder id = %d\n", placeholder->uniqueID());
+#StdOut
+empty picture id = 1
+placeholder id = 2
+##
##
-#SeeAlso incomplete
+#SeeAlso SkRefCnt
#Method ##
# ------------------------------------------------------------------------------
#Method sk_sp<SkData> serialize(const SkSerialProcs* procs = nullptr) const
-#In incomplete
-#Line # incomplete ##
+#In Utility
+#Line # writes Picture to data ##
+Returns storage containing data describing Picture, using optional custom encoders.
-#Param procs incomplete ##
+#Param procs custom serial data encoders; may be nullptr ##
-#Return incomplete ##
+#Return storage containing serialized Picture ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ sk_sp<SkData> readableData = picture->serialize();
+ sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());
+ copy->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso MakeFromData SkData SkSerialProcs
#Method ##
# ------------------------------------------------------------------------------
#Method void serialize(SkWStream* stream, const SkSerialProcs* procs = nullptr) const
-#In incomplete
-#Line # incomplete ##
+Writes picture to stream, using optional custom encoders.
-#Param stream incomplete ##
-#Param procs incomplete ##
+#Param stream writable serial data stream ##
+#Param procs custom serial data encoders; may be nullptr ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ SkDynamicMemoryWStream writableStream;
+ picture->serialize(&writableStream);
+ sk_sp<SkData> readableData = writableStream.detachAsData();
+ sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());
+ copy->playback(canvas);
##
-#SeeAlso incomplete
+#SeeAlso MakeFromStream SkWStream SkSerialProcs
#Method ##
# ------------------------------------------------------------------------------
#Method static sk_sp<SkPicture> MakePlaceholder(SkRect cull)
-#In incomplete
-#Line # incomplete ##
+#In Constructor
+#Line # constructs placeholder with unique identifier ##
-Return a placeholder SkPicture.
+Returns a placeholder SkPicture.
This placeholder does not draw anything itself. It has a distinct uniqueID()
(just like all Pictures) and will always be visible to SkSerialProcs.
-#Param cull the placeholder's dimensions
+#Param cull placeholder dimensions
##
-#Return incomplete ##
+#Return placeholder with unique identifier ##
#Example
-// incomplete
+sk_sp<SkPicture> pict1 = SkPicture::MakePlaceholder({10, 40, 80, 110});
+sk_sp<SkPicture> pict2 = SkPicture::MakePlaceholder({10, 40, 80, 110});
+for (auto pict : { pict1, pict2 } ) {
+ SkRect bounds = pict->cullRect();
+ SkDebugf("id:%d bounds:{%g, %g, %g, %g}\n", pict->uniqueID(),
+ bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom);
+}
+#StdOut
+id:1 bounds:{10, 40, 80, 110}
+id:2 bounds:{10, 40, 80, 110}
+##
##
-#SeeAlso incomplete
+#SeeAlso MakeFromStream MakeFromData
#Method ##
# ------------------------------------------------------------------------------
#Method virtual int approximateOpCount() const = 0
-#In incomplete
-#Line # incomplete ##
+#In Property
+#Line # returns approximate operation count ##
-Return the approximate number of operations in this picture. This
+Returns the approximate number of operations in this picture. This
number may be greater or less than the number of SkCanvas calls
recorded: some calls may be recorded as more than one operation, or some
calls may be optimized away.
-#Return incomplete ##
+#Return approximate operation count ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ picture->playback(canvas);
+ std::string opCount = "approximate op count: " + std::to_string(picture->approximateOpCount());
+ canvas->drawString(opCount.c_str(), 50, 220, SkPaint());
##
-#SeeAlso incomplete
+#SeeAlso approximateBytesUsed
#Method ##
# ------------------------------------------------------------------------------
#Method virtual size_t approximateBytesUsed() const = 0
-#In incomplete
-#Line # incomplete ##
+#In Property
+#Line # returns approximate size ##
-Returns the approximate byte size of this picture, not including large ref'd objects.
+Returns the approximate byte size of Picture. Does not include large objects
+referenced Picture.
-#Return incomplete ##
+#Return approximate size ##
#Example
-// incomplete
+ SkPictureRecorder recorder;
+ SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
+ SkPaint paint;
+ pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);
+ paint.setColor(SK_ColorWHITE);
+ pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+ picture->playback(canvas);
+ std::string opCount = "approximate bytes used: " + std::to_string(picture->approximateBytesUsed());
+ canvas->drawString(opCount.c_str(), 20, 220, SkPaint());
##
-#SeeAlso incomplete
+#SeeAlso approximateOpCount
#Method ##
diff --git a/docs/SkPoint_Reference.bmh b/docs/SkPoint_Reference.bmh
index 87f1b618e6..598f963ca9 100644
--- a/docs/SkPoint_Reference.bmh
+++ b/docs/SkPoint_Reference.bmh
@@ -777,6 +777,7 @@ Multiplies Point by scale. Sets Point to:
#Formula
(fX * scale, fY * scale)
##
+.
#Param scale Scalar to multiply by ##
diff --git a/docs/SkRRect_Reference.bmh b/docs/SkRRect_Reference.bmh
index a96237cdc5..638e356a6b 100644
--- a/docs/SkRRect_Reference.bmh
+++ b/docs/SkRRect_Reference.bmh
@@ -22,18 +22,17 @@ Path forward:
detect and triangulate RRectorii rather than falling back to SW in Ganesh
##
-The SkRRect class represents a rounded rect with a potentially different
-radii for each corner. It does not have a constructor so must be
-initialized with one of the initialization functions (e.g., setEmpty,
-setRectRadii, etc.)
+SkRRect describes a rounded rectangle with a bounds and a pair of radii for each corner.
+The bounds and radii can be set so that SkRRect describes a rectangle with sharp corners,
+a Circle, an Oval, or a rectangle with one or more rounded corners.
-This class allows implementing CSS properties that describe rounded corners.
-A rectangle may have up to eight radii, one for each axis on each of its four
+SkRRect allows implementing CSS properties that describe rounded corners.
+SkRRect may have up to eight different radii, one for each axis on each of its four
corners.
-If either corner's radii are zero, the corner is square.
-Negative radii are treated as zero.
-If corner curves overlap, they are proportionally reduced to fit.
+SkRRect may modify the provided parameters when initializing bounds and radii.
+If either axis radii is zero or less, radii are stored as zero; corner is square.
+If corner curves overlap, radii are proportionally reduced to fit within bounds.
#Subtopic Overview
#Populate
@@ -91,6 +90,7 @@ Initializes to copy of rrect bounds and corner radii.
#Bug 8115
#Example
+#Height 60
SkRRect rrect = SkRRect::MakeRect({10, 10, 100, 50});
SkRRect rrect2(rrect);
rrect2.inset(20, 20);
@@ -118,6 +118,7 @@ Copies rrect bounds and corner radii.
#Return copy of rrect ##
#Example
+#Height 110
SkRRect rrect = SkRRect::MakeRect({40, 40, 100, 70});
SkRRect rrect2 = rrect;
rrect2.inset(-20, -20);
@@ -159,31 +160,31 @@ kComplex_Type
Type describes possible specializations of Round_Rect. Each Type is
exclusive; a Round_Rect may only have one type.
-The enum members become progressively less restrictive; larger values of
+Type members become progressively less restrictive; larger values of
Type have more degrees of freedom than smaller values.
-#Const kEmpty_Type
+#Const kEmpty_Type 0
#Line # zero width or height ##
Round_Rect has zero width or height. All radii are zero.
##
-#Const kRect_Type
+#Const kRect_Type 1
#Line # non-zero width and height, and zeroed radii ##
Round_Rect has width and height. All radii are zero.
##
-#Const kOval_Type
+#Const kOval_Type 2
#Line # non-zero width and height filled with radii ##
Round_Rect has width and height. All four x-radii are equal,
and at least half the width. All four y-radii are equal,
and at least half the height.
##
-#Const kSimple_Type
+#Const kSimple_Type 3
#Line # non-zero width and height with equal radii ##
Round_Rect has width and height. All four x-radii are equal and
greater than zero, and all four y-radii are equal and greater than
zero. Either x-radii are less than half the width, or y-radii is
less than half the height, or both.
##
-#Const kNinePatch_Type
+#Const kNinePatch_Type 4
#Line # non-zero width and height with axis-aligned radii ##
Round_Rect has width and height. Left x-radii are equal, top
y-radii are equal, right x-radii are equal, and bottom y-radii
@@ -193,11 +194,11 @@ The centers of the corner ellipses form an axis-aligned rectangle
that divides the Round_Rect into nine rectangular patches; an
interior rectangle, four edges, and four corners.
##
-#Const kComplex_Type
+#Const kComplex_Type 5
#Line # non-zero width and height with arbitrary radii ##
both radii are non-zero.
##
-#Const kLastType = kComplex_Type
+#Const kLastType 5
#Line # largest Type value ##
##
@@ -238,6 +239,7 @@ Returns Type, one of: #list_of_rrect_types#.
#Return Type ##
#Example
+#Height 100
#Description
rrect2 is not a Rect; inset() has made it empty.
##
@@ -269,6 +271,7 @@ Returns Type, one of: #list_of_rrect_types#.
#Return Type ##
#Example
+#Height 100
#Description
inset() has made rrect2 empty.
##
@@ -325,7 +328,8 @@ to rect().fBottom.
#Method inline bool isRect() const
#In Property
#Line # returns true if not empty, and one radius at each corner is zero ##
-Returns true if not empty, and if either x or y radius at each corner is zero.
+Returns true if not empty, and if either x-axis or y-axis radius at each corner
+is zero.
#Return true if not empty, and one radius at each corner is zero ##
@@ -365,8 +369,8 @@ least half the height.
#Description
The first radii are scaled down proportionately until both x-axis and y-axis fit
within the bounds. After scaling, x-axis radius is smaller than half the width;
-left round rect is not an oval. The second radii are equal to half the
-dimensions; right round rect is an oval.
+left Round_Rect is not an oval. The second radii are equal to half the
+dimensions; right Round_Rect is an oval.
##
SkPaint paint;
paint.setAntiAlias(true);
@@ -389,12 +393,12 @@ dimensions; right round rect is an oval.
#Method inline bool isSimple() const
#In Property
-#Line # returns true if not empty, rect or oval; and axes radii are equal ##
+#Line # returns true if not empty, Rect or Oval; and axes radii are equal ##
Returns true if not empty, if all x-axis radii are equal but not zero,
if all y-axis radii are equal but not zero; and x-axis radius is less than half
width(), or y-axis radius is less than half height().
-#Return true if not empty, rect or oval; and axes radii are equal ##
+#Return true if not empty, Rect or Oval; and axes radii are equal ##
#Bug 8107
#Example
@@ -423,12 +427,12 @@ width(), or y-axis radius is less than half height().
#Method inline bool isNinePatch() const
#In Property
-#Line # returns true if not empty, rect, oval or simple; and radii are axis-aligned ##
+#Line # returns true if not empty, Rect, Oval or simple; and radii are axis-aligned ##
Returns true if isEmpty, isRect, isOval, and isSimple return false; and if
left x-axis radii are equal, right x-axis radii are equal, top y-axis radii are
equal, and bottom y-axis radii are equal.
-#Return true if not empty, rect, oval or simple; and radii are axis-aligned ##
+#Return true if not empty, Rect, Oval or simple; and radii are axis-aligned ##
#Bug 8107
#Example
@@ -457,7 +461,7 @@ equal, and bottom y-axis radii are equal.
#Method inline bool isComplex() const
#In Property
-#Line # returns true if not empty, rect, oval, simple, or nine-patch ##
+#Line # returns true if not empty, Rect, Oval, simple, or nine-patch ##
Returns true if isEmpty, isRect, isOval, isSimple, and isNinePatch return false.
If true: width and height are greater than zero, at least one corner radii are
@@ -465,9 +469,10 @@ both greater than zero; left x-axis radii are not equal, or right x-axis radii
are not equal, or top y-axis radii are not equal, or bottom y-axis radii are not
equal.
-#Return true if not empty, rect, oval, simple, or nine-patch ##
+#Return true if not empty, Rect, Oval, simple, or nine-patch ##
#Example
+#Height 100
SkPaint paint;
paint.setAntiAlias(true);
paint.setTextAlign(SkPaint::kCenter_Align);
@@ -492,7 +497,7 @@ equal.
#Method SkScalar width() const
#In Property
-#Line # returns span in x ##
+#Line # returns span in x-axis ##
Returns span on the x-axis. This does not check if result fits in 32-bit float;
result may be infinity.
@@ -520,7 +525,7 @@ large width: inf
#Method SkScalar height() const
#In Property
-#Line # returns span in y ##
+#Line # returns span in y-axis ##
Returns span on the y-axis. This does not check if result fits in 32-bit float;
result may be infinity.
@@ -558,6 +563,7 @@ remaining three corners has a different value.
#Return corner radii for simple types ##
#Example
+#Height 100
auto drawDetails = [=](const SkRRect& rrect) {
SkPaint paint;
paint.setAntiAlias(true);
@@ -590,8 +596,9 @@ Sets bounds to zero width and height at (0, 0), the origin. Sets
corner radii to zero and sets type to kEmpty_Type.
#Example
+#Height 80
#Description
-Nothing blue is drawn because rrect is set to empty.
+Nothing blue is drawn because Round_Rect is set to empty.
##
SkPaint paint;
SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});
@@ -609,7 +616,7 @@ Nothing blue is drawn because rrect is set to empty.
#Method void setRect(const SkRect& rect)
#In Set
-#Line # sets rect bounds with zeroed corners ##
+#Line # sets Round_Rect bounds with zeroed corners ##
Sets bounds to sorted rect, and sets corner radii to zero.
If set bounds has width and height, and sets type to kRect_Type;
@@ -694,7 +701,7 @@ Initializes to copy of r bounds and zeroes corner radii.
#Line # creates Oval to fit bounds ##
Sets bounds to oval, x-axis radii to half oval.width(), and all y-axis radii
-to half oval.height(). If rect is empty, sets to kEmpty_Type.
+to half oval.height(). If oval bounds is empty, sets to kEmpty_Type.
Otherwise, sets to kOval_Type.
#Param oval bounds of Oval ##
@@ -757,7 +764,7 @@ Otherwise, sets to kSimple_Type.
#Line # replaces with Oval to fit bounds ##
Sets bounds to oval, x-axis radii to half oval.width(), and all y-axis radii
-to half oval.height(). If rect is empty, sets to kEmpty_Type.
+to half oval.height(). If oval bounds is empty, sets to kEmpty_Type.
Otherwise, sets to kOval_Type.
#Param oval bounds of Oval ##
@@ -878,6 +885,7 @@ sets to kSimple_Type. Otherwise, sets to kNinePatch_Type.
#Param radii corner x-axis and y-axis radii ##
#Example
+#Height 128
SkPaint paint;
paint.setStrokeWidth(15);
paint.setStrokeCap(SkPaint::kSquare_Cap);
@@ -1001,7 +1009,7 @@ Both radii may be zero. If not zero, both are positive and finite.
#Example
#Description
Finite values are scaled proportionately to fit; other values are set to zero.
-Scaled values cannot be larger than 25, half the bounding rect width.
+Scaled values cannot be larger than 25, half the bounding Round_Rect width.
Small scaled values are halved to scale in proportion to the y-axis corner
radius, which is twice the bounds height.
##
@@ -1121,15 +1129,17 @@ contain zeroes width different signs.
#In Inset_Outset_Offset
#Line # insets bounds and radii ##
-Calls inset on the bounds, and adjust the radii to reflect what happens.
-If the corner is sharp (no curvature), leave it alone,
-otherwise we grow/shrink the radii by the amount of the inset. If a
-given radius becomes negative, it is pinned to 0.
-If the inset amount is larger than the width/height then the rrect collapses to
-a degenerate line or point.
-If the inset is sufficiently negative to cause the bounds to become infinite then
-the result is a default initialized rrect.
-It is valid for dst == this.
+Copies Round_Rect to dst, then insets dst bounds by dx and dy, and adjusts dst
+radii by dx and dy. dx and dy may be positive, negative, or zero. dst may be
+Round_Rect.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If dx exceeds half dst bounds width, dst bounds left and right are set to
+bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and
+bottom are set to bounds y-axis center.
+
+If dx or dy cause the bounds to become infinite, dst bounds is zeroed.
#Param dx added to rect().fLeft, and subtracted from rect().fRight ##
#Param dy added to rect().fTop, and subtracted from rect().fBottom ##
@@ -1155,6 +1165,16 @@ It is valid for dst == this.
#Method void inset(SkScalar dx, SkScalar dy)
#In Inset_Outset_Offset
#Line # insets bounds and radii ##
+Insets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If dx exceeds half bounds width, bounds left and right are set to
+bounds x-axis center. If dy exceeds half bounds height, bounds top and
+bottom are set to bounds y-axis center.
+
+If dx or dy cause the bounds to become infinite, bounds is zeroed.
#Param dx added to rect().fLeft, and subtracted from rect().fRight ##
#Param dy added to rect().fTop, and subtracted from rect().fBottom ##
@@ -1181,11 +1201,16 @@ It is valid for dst == this.
#In Inset_Outset_Offset
#Line # outsets bounds and radii ##
-Call outset on the bounds, and adjust the radii to reflect what happens
-in stroking. If the corner is sharp (no curvature), leave it alone,
-otherwise we grow/shrink the radii by the amount of the inset. If a
-given radius becomes negative, it is pinned to 0.
-It is valid for dst == this.
+Outsets dst bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If dx exceeds half dst bounds width, dst bounds left and right are set to
+bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and
+bottom are set to bounds y-axis center.
+
+If dx or dy cause the bounds to become infinite, dst bounds is zeroed.
#Param dx subtracted from rect().fLeft, and added to rect().fRight ##
#Param dy subtracted from rect().fTop, and added to rect().fBottom ##
@@ -1213,6 +1238,17 @@ It is valid for dst == this.
#In Inset_Outset_Offset
#Line # outsets bounds and radii ##
+Outsets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If dx exceeds half bounds width, bounds left and right are set to
+bounds x-axis center. If dy exceeds half bounds height, bounds top and
+bottom are set to bounds y-axis center.
+
+If dx or dy cause the bounds to become infinite, bounds is zeroed.
+
#Param dx subtracted from rect().fLeft, and added to rect().fRight ##
#Param dy subtracted from rect().fTop, and added to rect().fBottom ##
@@ -1237,7 +1273,7 @@ It is valid for dst == this.
#In Inset_Outset_Offset
#Line # offsets bounds and radii ##
-Translates the rrect by (dx, dy).
+Translates Round_Rect by (dx, dy).
#Param dx offset added to rect().fLeft and rect().fRight ##
#Param dy offset added to rect().fTop and rect().fBottom ##
@@ -1263,6 +1299,8 @@ Translates the rrect by (dx, dy).
#In Inset_Outset_Offset
#Line # offsets bounds and radii ##
+Returns Round_Rect translated by (dx, dy).
+
#Param dx offset added to rect().fLeft and rect().fRight ##
#Param dy offset added to rect().fTop and rect().fBottom ##
@@ -1297,7 +1335,22 @@ Round_Rect and rect are not empty.
#Return true if Round_Rect contains rect ##
#Example
-// incomplete
+#Height 110
+ SkRect test = {10, 10, 110, 80};
+ SkRRect rrect = SkRRect::MakeRect(test);
+ SkRRect oval = SkRRect::MakeOval(test);
+ test.inset(10, 10);
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextAlign(SkPaint::kCenter_Align);
+ canvas->drawString(rrect.contains(test) ? "contains" : "does not contain", 55, 100, paint);
+ canvas->drawString(oval.contains(test) ? "contains" : "does not contain", 185, 100, paint);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRRect(rrect, paint);
+ canvas->drawRect(test, paint);
+ canvas->translate(120, 0);
+ canvas->drawRRect(oval, paint);
+ canvas->drawRect(test, paint);
##
#SeeAlso SkRect::contains
@@ -1308,26 +1361,40 @@ Round_Rect and rect are not empty.
#Method bool isValid() const
#In Utility
-#Line # incomplete ##
+#Line # returns if type() matches bounds and radii ##
+Returns true if bounds and radii values are finite and describe a Round_Rect
+Type that matches getType. All Round_Rect methods construct valid types,
+even if the input values are not valid. Invalid Round_Rect data can only
+be generated by corrupting memory.
-#Return incomplete ##
+#Return true if bounds and radii match type() ##
#Example
-// incomplete
+#Height 110
+ SkRRect rrect = SkRRect::MakeRect({10, 10, 110, 80});
+ SkRRect corrupt = rrect;
+ *((float*) &corrupt) = 120;
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextAlign(SkPaint::kCenter_Align);
+ canvas->drawString(rrect.isValid() ? "is valid" : "is corrupted", 55, 100, paint);
+ canvas->drawString(corrupt.isValid() ? "is valid" : "is corrupted", 185, 100, paint);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRRect(rrect, paint);
+ canvas->translate(120, 0);
+ canvas->drawRRect(corrupt, paint);
##
-#SeeAlso incomplete
+#SeeAlso Type getType
#Method ##
# ------------------------------------------------------------------------------
#Const kSizeInMemory 48
-#Line # incomplete ##
+#Line # storage space for Round_Rect ##
-#Example
-// incomplete
-##
+Space required to serialize SkRRect into a buffer. Always a multiple of four.
#Const ##
@@ -1335,21 +1402,34 @@ Round_Rect and rect are not empty.
#Method size_t writeToMemory(void* buffer) const
#In Utility
-#Line # incomplete ##
+#Line # writes Round_Rect to buffer ##
-Write the rrect into the specified buffer. This is guaranteed to always
-write kSizeInMemory bytes, and that value is guaranteed to always be
-a multiple of 4. Return kSizeInMemory.
+Writes Round_Rect to buffer. Writes kSizeInMemory bytes, and returns
+kSizeInMemory, the number of bytes written.
-#Param buffer incomplete ##
+#Param buffer storage for Round_Rect ##
-#Return incomplete ##
+#Return bytes written, kSizeInMemory ##
#Example
-// incomplete
+#Height 110
+ SkRRect rrect = SkRRect::MakeRect({10, 10, 110, 80});
+ char storage[SkRRect::kSizeInMemory];
+ rrect.writeToMemory(storage);
+ SkRRect copy;
+ copy.readFromMemory(storage, sizeof(storage));
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextAlign(SkPaint::kCenter_Align);
+ canvas->drawString("rrect", 55, 100, paint);
+ canvas->drawString("copy", 185, 100, paint);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRRect(rrect, paint);
+ canvas->translate(120, 0);
+ canvas->drawRRect(copy, paint);
##
-#SeeAlso incomplete
+#SeeAlso readFromMemory
#Method ##
@@ -1357,26 +1437,39 @@ a multiple of 4. Return kSizeInMemory.
#Method size_t readFromMemory(const void* buffer, size_t length)
#In Utility
-#Line # incomplete ##
+#Line # reads Round_Rect from buffer ##
-Reads the rrect from the specified buffer.
-If the specified buffer is large enough, this will read kSizeInMemory bytes,
-and that value is guaranteed to always be a multiple of 4.
+Reads Round_Rect from buffer, reading kSizeInMemory bytes.
+Returns kSizeInMemory, bytes read if length is at least kSizeInMemory.
+Otherwise, returns zero.
-#Param buffer memory to read from
-##
-#Param length amount of memory available in the buffer
-##
+#Param buffer memory to read from ##
+#Param length size of buffer ##
-#Return number of bytes read (must be a multiple of 4) or
- 0 if there was not enough memory available
+#Return bytes read, or 0 if length is less than kSizeInMemory
##
#Example
-// incomplete
+#Height 110
+ SkVector radii[] = {{5, 5}, {10, 10}, {15, 15}, {5, 5}};
+ SkRRect rrect;
+ rrect.setRectRadii({10, 10, 110, 80}, radii);
+ char storage[SkRRect::kSizeInMemory];
+ rrect.writeToMemory(storage);
+ SkRRect copy;
+ copy.readFromMemory(storage, sizeof(storage));
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextAlign(SkPaint::kCenter_Align);
+ canvas->drawString("rrect", 55, 100, paint);
+ canvas->drawString("copy", 185, 100, paint);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRRect(rrect, paint);
+ canvas->translate(120, 0);
+ canvas->drawRRect(copy, paint);
##
-#SeeAlso incomplete
+#SeeAlso writeToMemory
#Method ##
@@ -1399,10 +1492,25 @@ Asserts in debug builds if Round_Rect equals dst.
##
#Example
-// incomplete
+#Height 110
+ SkVector radii[] = {{5, 5}, {10, 10}, {15, 15}, {5, 5}};
+ SkRRect rrect;
+ rrect.setRectRadii({10, 10, 110, 80}, radii);
+ SkRRect transformed;
+ SkMatrix matrix = SkMatrix::MakeRectToRect(rrect.rect(), {140, 30, 220, 80},
+ SkMatrix::kCenter_ScaleToFit);
+ bool success = rrect.transform(matrix, &transformed);
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextAlign(SkPaint::kCenter_Align);
+ canvas->drawString("rrect", 55, 100, paint);
+ canvas->drawString(success ? "transformed" : "transform failed", 185, 100, paint);
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRRect(rrect, paint);
+ canvas->drawRRect(transformed, paint);
##
-#SeeAlso incomplete
+#SeeAlso SkPath::transform
#Method ##
diff --git a/docs/SkSurface_Reference.bmh b/docs/SkSurface_Reference.bmh
index cf42ef7aa5..a84a6dd1c2 100644
--- a/docs/SkSurface_Reference.bmh
+++ b/docs/SkSurface_Reference.bmh
@@ -1250,6 +1250,7 @@ Does not copy, and returns false if:
# Pixmap pixels could not be allocated. ##
# dst.rowBytes() is too small to contain one row of pixels. ##
##
+.
#Param dst storage for pixels copied from Surface ##
#Param srcX offset into readable pixels on x-axis; may be negative ##
@@ -1309,6 +1310,7 @@ Does not copy, and returns false if:
# Surface pixels could not be converted to dstInfo.colorType() or dstInfo.alphaType(). ##
# dstRowBytes is too small to contain one row of pixels. ##
##
+.
#Param dstInfo width, height, Color_Type, and Alpha_Type of dstPixels ##
#Param dstPixels storage for pixels; dstInfo.height() times dstRowBytes, or larger ##
@@ -1375,6 +1377,7 @@ Does not copy, and returns false if:
# dst pixels could not be allocated. ##
# dst.rowBytes() is too small to contain one row of pixels. ##
##
+.
#Param dst storage for pixels copied from Surface ##
#Param srcX offset into readable pixels on x-axis; may be negative ##
@@ -1417,6 +1420,7 @@ Destination Rect corners are (dstX, dstY) and
(dstX + Surface width(), dstY + Surface height())
##
.
+
Copies each readable pixel intersecting both rectangles, without scaling,
converting to Surface colorType() and Surface alphaType() if required.
@@ -1457,6 +1461,7 @@ Destination Rect corners are (dstX, dstY) and
(dstX + Surface width(), dstY + Surface height())
##
.
+
Copies each readable pixel intersecting both rectangles, without scaling,
converting to Surface colorType() and Surface alphaType() if required.
diff --git a/docs/undocumented.bmh b/docs/undocumented.bmh
index 91e3a4030e..c4a65a18a6 100644
--- a/docs/undocumented.bmh
+++ b/docs/undocumented.bmh
@@ -137,14 +137,6 @@ FT_Load_Glyph
#Substitute HTML gray
##
-#Topic HTML_DarkGray
-#Substitute HTML dark gray
-##
-
-#Topic HTML_LightGray
-#Substitute HTML light gray
-##
-
#Topic HTML_Silver
#Substitute HTML silver
##
@@ -614,6 +606,7 @@ FT_Load_Glyph
#Topic Premultiply
#Alias Premultiplied ##
+#Alias Premultiplies ##
##
#Topic Raster_Engine
diff --git a/docs/usingBookmaker.bmh b/docs/usingBookmaker.bmh
index 236c16d7c5..f74db8f77f 100644
--- a/docs/usingBookmaker.bmh
+++ b/docs/usingBookmaker.bmh
@@ -118,6 +118,12 @@ which will be ignored.
Install
#A Go # https://golang.org/doc/install ##
if needed.
+Check the version. The resuls should be 1.10 or greater.
+
+#Code
+$ go version
+##
+
Get the fiddle command line interface tool.
By default this will appear in your home directory.
diff --git a/site/user/api/METADATA b/site/user/api/METADATA
index f0db250f41..590bcdc72a 100644
--- a/site/user/api/METADATA
+++ b/site/user/api/METADATA
@@ -2,7 +2,10 @@
"fileOrder": [
"SkAutoCanvasRestore_Reference",
"SkBitmap_Reference",
+ "SkBlendMode_Reference",
"SkCanvas_Reference",
+ "SkColor_Reference",
+ "SkColor4f_Reference",
"SkImage_Reference",
"SkImageInfo_Reference",
"SkIPoint_Reference",
@@ -11,8 +14,10 @@
"SkMatrix_Reference",
"SkPaint_Reference",
"SkPath_Reference",
+ "SkPicture_Reference",
"SkPixmap_Reference",
"SkPoint_Reference",
+ "SkRRect_Reference",
"SkRect_Reference",
"SkSurface_Reference",
"usingBookmaker",
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md
index 61550cbed9..625fdfbadf 100644
--- a/site/user/api/SkBitmap_Reference.md
+++ b/site/user/api/SkBitmap_Reference.md
@@ -1043,7 +1043,7 @@ Returns pixel count in each row. Should be equal or less than:
<a href='#SkBitmap_rowBytes'>rowBytes</a> / <a href='#SkBitmap_info'>info</a>.<a href='#SkBitmap_bytesPerPixel'>bytesPerPixel</a>.
-Maybe be less than <a href='#SkBitmap_pixelRef'>pixelRef</a>.<a href='#SkBitmap_width'>width</a>. Will not exceed <a href='#SkBitmap_pixelRef'>pixelRef</a>.<a href='#SkBitmap_width'>width</a> less
+May be less than <a href='#SkBitmap_pixelRef'>pixelRef</a>.<a href='#SkBitmap_width'>width</a>. Will not exceed <a href='#SkBitmap_pixelRef'>pixelRef</a>.<a href='#SkBitmap_width'>width</a> less
<a href='#SkBitmap_pixelRefOrigin'>pixelRefOrigin</a>.fX.
### Return Value
@@ -1408,7 +1408,7 @@ width: 2 height: 2 empty: false
bool <a href='#SkBitmap_isNull'>isNull</a>() const
</pre>
-Return true if <a href='undocumented#Pixel_Ref'>Pixel Ref</a> is nullptr.
+Returns true if <a href='undocumented#Pixel_Ref'>Pixel Ref</a> is nullptr.
Does not check if <a href='#SkBitmap_width'>width</a> or <a href='#SkBitmap_height'>height</a> are zero; call <a href='#SkBitmap_drawsNothing'>drawsNothing</a> to check
<a href='#SkBitmap_width'>width</a>, <a href='#SkBitmap_height'>height</a>, and <a href='undocumented#Pixel_Ref'>Pixel Ref</a>.
@@ -1444,7 +1444,7 @@ allocated bitmap does have pixels
bool <a href='#SkBitmap_drawsNothing'>drawsNothing</a>() const
</pre>
-Return true if <a href='#SkBitmap_width'>width</a> or <a href='#SkBitmap_height'>height</a> are zero, or if <a href='undocumented#Pixel_Ref'>Pixel Ref</a> is nullptr.
+Returns true if <a href='#SkBitmap_width'>width</a> or <a href='#SkBitmap_height'>height</a> are zero, or if <a href='undocumented#Pixel_Ref'>Pixel Ref</a> is nullptr.
If true, <a href='#Bitmap'>Bitmap</a> has no effect when drawn or drawn into.
### Return Value
@@ -1744,8 +1744,8 @@ isOpaque: true
bool <a href='#SkBitmap_isVolatile'>isVolatile</a>() const
</pre>
-If true, provides a hint to caller that pixels should not
-be cached. Only true if <a href='#SkBitmap_setIsVolatile'>setIsVolatile</a> has been called to mark as volatile.
+Provides a hint to caller that pixels should not be cached. Only true if
+<a href='#SkBitmap_setIsVolatile'>setIsVolatile</a> has been called to mark as volatile.
Volatile state is not shared by other bitmaps sharing the same <a href='undocumented#Pixel_Ref'>Pixel Ref</a>.
@@ -2058,6 +2058,8 @@ Calls <a href='#SkBitmap_reset'>reset</a> and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkBitmap_setInfo_imageInfo'><code><strong>imageInfo</strong></code></a></td>
@@ -3398,6 +3400,8 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkBitmap_getAddr32_x'><code><strong>x</strong></code></a></td>
@@ -3452,6 +3456,8 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkBitmap_getAddr16_x'><code><strong>x</strong></code></a></td>
@@ -3506,6 +3512,8 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkBitmap_getAddr8_x'><code><strong>x</strong></code></a></td>
@@ -3565,6 +3573,8 @@ Return false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkBitmap_extractSubset_dst'><code><strong>dst</strong></code></a></td>
@@ -3633,6 +3643,8 @@ row to the next. Returns true if pixels are copied. Returns false if:
</tr>
</table>
+.
+
<a href='#Pixels'>Pixels</a> are copied only if pixel conversion is possible. If <a href='#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is
<a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, or <a href='SkImageInfo_Reference#kAlpha_8_SkColorType'>kAlpha_8_SkColorType</a>; <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkBitmap_colorType'>colorType</a> must match.
If <a href='#Bitmap'>Bitmap</a> <a href='#SkBitmap_colorType'>colorType</a> is <a href='SkImageInfo_Reference#kGray_8_SkColorType'>kGray_8_SkColorType</a>, <a href='#SkBitmap_readPixels_dstInfo'>dstInfo</a>.<a href='#SkBitmap_colorSpace'>colorSpace</a> must match.
diff --git a/site/user/api/SkBlendMode_Reference.md b/site/user/api/SkBlendMode_Reference.md
index 80e98b474f..b00e325725 100644
--- a/site/user/api/SkBlendMode_Reference.md
+++ b/site/user/api/SkBlendMode_Reference.md
@@ -292,7 +292,7 @@ components color information, using <a href='https://www.w3.org/TR/compositing-1
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kClear'><code>SkBlendMode::kClear</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Clear'>Blend&nbsp;Mode&nbsp;Clear</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Clear'>Clear</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> components set to zero;
a fully transparent pixel.
@@ -301,7 +301,7 @@ a fully transparent pixel.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrc'><code>SkBlendMode::kSrc</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src'>Blend&nbsp;Mode&nbsp;Src</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src'>Src</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source. Destination alpha and color component values
are ignored.
@@ -310,7 +310,7 @@ are ignored.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDst'><code>SkBlendMode::kDst</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst'>Blend&nbsp;Mode&nbsp;Dst</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst'>Dst</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Preserves destination, ignoring source. Drawing with <a href='SkPaint_Reference#Paint'>Paint</a> set to <a href='#SkBlendMode_kDst'>kDst</a> has
no effect.
@@ -319,7 +319,7 @@ no effect.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOver'><code>SkBlendMode::kSrcOver</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Over'>Blend&nbsp;Mode&nbsp;Src&nbsp;Over</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Over'>Src&nbsp;Over</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source blended with destination. If source is opaque,
replaces destination with source. Used as the default <a href='#Blend_Mode'>Blend Mode</a> for <a href='SkPaint_Reference#SkPaint'>SkPaint</a>.
@@ -328,7 +328,7 @@ replaces destination with source. Used as the default <a href='#Blend_Mode'>Blen
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOver'><code>SkBlendMode::kDstOver</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Over'>Blend&nbsp;Mode&nbsp;Dst&nbsp;Over</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Over'>Dst&nbsp;Over</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with destination blended with source. If destination is opaque,
has no effect.
@@ -337,7 +337,7 @@ has no effect.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcIn'><code>SkBlendMode::kSrcIn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_In'>Blend&nbsp;Mode&nbsp;Src&nbsp;In</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_In'>Src&nbsp;In</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source using destination opacity.
</td>
@@ -345,7 +345,7 @@ Replaces destination with source using destination opacity.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstIn'><code>SkBlendMode::kDstIn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_In'>Blend&nbsp;Mode&nbsp;Dst&nbsp;In</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_In'>Dst&nbsp;In</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Scales destination opacity by source opacity.
</td>
@@ -353,7 +353,7 @@ Scales destination opacity by source opacity.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOut'><code>SkBlendMode::kSrcOut</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Out'>Blend&nbsp;Mode&nbsp;Src&nbsp;Out</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Out'>Src&nbsp;Out</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source using the inverse of destination opacity,
drawing source fully where destination opacity is zero.
@@ -362,7 +362,7 @@ drawing source fully where destination opacity is zero.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOut'><code>SkBlendMode::kDstOut</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Out'>Blend&nbsp;Mode&nbsp;Dst&nbsp;Out</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Out'>Dst&nbsp;Out</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination opacity with inverse of source opacity. If source is
transparent, has no effect.
@@ -371,7 +371,7 @@ transparent, has no effect.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcATop'><code>SkBlendMode::kSrcATop</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Src_Atop'>Blend&nbsp;Mode&nbsp;Src&nbsp;Atop</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Atop'>Src&nbsp;Atop</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination with source using read destination opacity.
</td>
@@ -379,7 +379,7 @@ Blends destination with source using read destination opacity.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstATop'><code>SkBlendMode::kDstATop</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Dst_Atop'>Blend&nbsp;Mode&nbsp;Dst&nbsp;Atop</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Atop'>Dst&nbsp;Atop</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination with source using source opacity.
</td>
@@ -387,7 +387,7 @@ Blends destination with source using source opacity.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kXor'><code>SkBlendMode::kXor</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Xor'>Blend&nbsp;Mode&nbsp;Xor</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Xor'>Xor</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Blends destination by exchanging transparency of the source and destination.
</td>
@@ -395,7 +395,7 @@ Blends destination by exchanging transparency of the source and destination.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kPlus'><code>SkBlendMode::kPlus</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Plus'>Blend&nbsp;Mode&nbsp;Plus</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Plus'>Plus</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source and destination added together.
</td>
@@ -403,7 +403,7 @@ Replaces destination with source and destination added together.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kModulate'><code>SkBlendMode::kModulate</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>13</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Modulate'>Blend&nbsp;Mode&nbsp;Modulate</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Modulate'>Modulate</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with source and destination multiplied together.
</td>
@@ -411,7 +411,7 @@ Replaces destination with source and destination multiplied together.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kScreen'><code>SkBlendMode::kScreen</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Screen'>Blend&nbsp;Mode&nbsp;Screen</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Screen'>Screen</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with inverted source and destination multiplied together.
</td>
@@ -426,7 +426,7 @@ last Porter_Duff blend mode</td>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kOverlay'><code>SkBlendMode::kOverlay</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>15</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Overlay'>Blend&nbsp;Mode&nbsp;Overlay</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Overlay'>Overlay</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with multiply or screen, depending on destination.
</td>
@@ -434,7 +434,7 @@ Replaces destination with multiply or screen, depending on destination.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDarken'><code>SkBlendMode::kDarken</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>16</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Darken'>Blend&nbsp;Mode&nbsp;Darken</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Darken'>Darken</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with darker of source and destination.
</td>
@@ -442,7 +442,7 @@ Replaces destination with darker of source and destination.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLighten'><code>SkBlendMode::kLighten</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>17</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Lighten'>Blend&nbsp;Mode&nbsp;Lighten</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Lighten'>Lighten</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces destination with lighter of source and destination.
</td>
@@ -450,7 +450,7 @@ Replaces destination with lighter of source and destination.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorDodge'><code>SkBlendMode::kColorDodge</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>18</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color_Dodge'>Blend&nbsp;Mode&nbsp;Color&nbsp;Dodge</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Dodge'>Color&nbsp;Dodge</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination brighter to reflect source.
</td>
@@ -458,7 +458,7 @@ Makes destination brighter to reflect source.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorBurn'><code>SkBlendMode::kColorBurn</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>19</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color_Burn'>Blend&nbsp;Mode&nbsp;Color&nbsp;Burn</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Burn'>Color&nbsp;Burn</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination darker to reflect source.
</td>
@@ -466,7 +466,7 @@ Makes destination darker to reflect source.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHardLight'><code>SkBlendMode::kHardLight</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>20</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Hard_Light'>Blend&nbsp;Mode&nbsp;Hard&nbsp;Light</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hard_Light'>Hard&nbsp;Light</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination lighter or darker, depending on source.
</td>
@@ -474,7 +474,7 @@ Makes destination lighter or darker, depending on source.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSoftLight'><code>SkBlendMode::kSoftLight</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>21</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Soft_Light'>Blend&nbsp;Mode&nbsp;Soft&nbsp;Light</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Soft_Light'>Soft&nbsp;Light</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Makes destination lighter or darker, depending on source.
</td>
@@ -482,7 +482,7 @@ Makes destination lighter or darker, depending on source.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDifference'><code>SkBlendMode::kDifference</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>22</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Difference'>Blend&nbsp;Mode&nbsp;Difference</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Difference'>Difference</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Subtracts darker from lighter with higher contrast.
</td>
@@ -490,7 +490,7 @@ Subtracts darker from lighter with higher contrast.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kExclusion'><code>SkBlendMode::kExclusion</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>23</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Exclusion'>Blend&nbsp;Mode&nbsp;Exclusion</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Exclusion'>Exclusion</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Subtracts darker from lighter with lower contrast.
</td>
@@ -498,7 +498,7 @@ Subtracts darker from lighter with lower contrast.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kMultiply'><code>SkBlendMode::kMultiply</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Multiply'>Blend&nbsp;Mode&nbsp;Multiply</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Multiply'>Multiply</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Multiplies source with destination, darkening image.
</td>
@@ -514,7 +514,7 @@ Last blend mode operating separately on components.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHue'><code>SkBlendMode::kHue</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>25</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Hue'>Blend&nbsp;Mode&nbsp;Hue</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hue'>Hue</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces hue of destination with hue of source, leaving saturation and luminosity
unchanged.
@@ -523,7 +523,7 @@ unchanged.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSaturation'><code>SkBlendMode::kSaturation</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>26</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Saturation'>Blend&nbsp;Mode&nbsp;Saturation</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Saturation'>Saturation</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces saturation of destination saturation hue of source, leaving hue and
luminosity unchanged.
@@ -532,7 +532,7 @@ luminosity unchanged.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColor'><code>SkBlendMode::kColor</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>27</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Color'>Blend&nbsp;Mode&nbsp;Color</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color'>Color</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces hue and saturation of destination with hue and saturation of source,
leaving luminosity unchanged.
@@ -541,7 +541,7 @@ leaving luminosity unchanged.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLuminosity'><code>SkBlendMode::kLuminosity</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Blend_Mode_Luminosity'>Blend&nbsp;Mode&nbsp;Luminosity</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Luminosity'>Luminosity</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Replaces luminosity of destination with luminosity of source, leaving hue and
saturation unchanged.
@@ -770,7 +770,7 @@ Da as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, Dc as destination
scaling <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='#Color'>Color</a> components by the lesser of the values.
<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> differs from <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> in two ways.
<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> like <a href='#SkBlendMode_kSrcATop'>SkBlendMode::kSrcATop</a> alters the destination inside
-the destination area, as if the destination <a href='SkColor_Reference#Alpha'>Alpha</a> defined the boudaries of a
+the destination area, as if the destination <a href='SkColor_Reference#Alpha'>Alpha</a> defined the boundaries of a
soft clip. <a href='#SkBlendMode_kMultiply'>SkBlendMode::kMultiply</a> like <a href='#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a> can alter the
destination where the destination is transparent.
<a href='#SkBlendMode_kModulate'>SkBlendMode::kModulate</a> computes the product of the source and destination using
diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md
index ca2cc86795..4e24c9161b 100644
--- a/site/user/api/SkCanvas_Reference.md
+++ b/site/user/api/SkCanvas_Reference.md
@@ -816,7 +816,7 @@ soon
explicit <a href='#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bitmap)
</pre>
-Construct a canvas that draws into <a href='#SkCanvas_copy_const_SkBitmap_bitmap'>bitmap</a>.
+Constructs a canvas that draws into <a href='#SkCanvas_copy_const_SkBitmap_bitmap'>bitmap</a>.
Sets <a href='undocumented#SkSurfaceProps_kLegacyFontHost_InitType'>SkSurfaceProps::kLegacyFontHost InitType</a> in constructed <a href='SkSurface_Reference#Surface'>Surface</a>.
<a href='SkBitmap_Reference#Bitmap'>Bitmap</a> is copied so that subsequently editing <a href='#SkCanvas_copy_const_SkBitmap_bitmap'>bitmap</a> will not affect
@@ -895,7 +895,7 @@ Is a placeholder to allow specialized constructor; has no meaning.
<a href='#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bitmap, <a href='#SkCanvas_ColorBehavior'>ColorBehavior</a> behavior)
</pre>
-Android framework only.
+For use by Android framework only.
### Parameters
@@ -920,7 +920,7 @@ Android framework only.
<a href='#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bitmap, const <a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a>& props)
</pre>
-Construct a canvas that draws into <a href='#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap'>bitmap</a>.
+Constructs a canvas that draws into <a href='#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap'>bitmap</a>.
Use <a href='#SkCanvas_const_SkBitmap_const_SkSurfaceProps_props'>props</a> to match the device characteristics, like LCD striping.
<a href='#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap'>bitmap</a> is copied so that subsequently editing <a href='#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap'>bitmap</a> will not affect
@@ -1104,9 +1104,8 @@ emptyInfo == canvasInfo
bool <a href='#SkCanvas_getProps'>getProps</a>(<a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a>* props) const
</pre>
-If <a href='#Canvas'>Canvas</a> is associated with <a href='undocumented#Raster_Surface'>Raster Surface</a> or
-<a href='undocumented#GPU_Surface'>GPU Surface</a>, copies <a href='undocumented#Surface_Properties'>Surface Properties</a> and returns true. Otherwise,
-return false and leave <a href='#SkCanvas_getProps_props'>props</a> unchanged.
+Copies <a href='undocumented#Surface_Properties'>Surface Properties</a>, if <a href='#Canvas'>Canvas</a> is associated with <a href='undocumented#Raster_Surface'>Raster Surface</a> or
+<a href='undocumented#GPU_Surface'>GPU Surface</a>, and returns true. Otherwise, returns false and leave <a href='#SkCanvas_getProps_props'>props</a> unchanged.
### Parameters
@@ -1498,6 +1497,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkCanvas_readPixels_dstInfo'><code><strong>dstInfo</strong></code></a></td>
@@ -1594,6 +1595,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkCanvas_readPixels_2_pixmap'><code><strong>pixmap</strong></code></a></td>
@@ -1674,6 +1677,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkCanvas_readPixels_3_bitmap'><code><strong>bitmap</strong></code></a></td>
@@ -1753,6 +1758,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkCanvas_writePixels_info'><code><strong>info</strong></code></a></td>
@@ -1829,6 +1836,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkCanvas_writePixels_2_bitmap'><code><strong>bitmap</strong></code></a></td>
@@ -2664,9 +2673,9 @@ Outside of the circle the mandrill is brightened.
void <a href='#SkCanvas_translate'>translate</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
-Translate <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_translate_dx'>dx</a> along the x-axis and <a href='#SkCanvas_translate_dy'>dy</a> along the y-axis.
+Translates <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_translate_dx'>dx</a> along the x-axis and <a href='#SkCanvas_translate_dy'>dy</a> along the y-axis.
-Mathematically, replace <a href='#Matrix'>Matrix</a> with a translation matrix
+Mathematically, replaces <a href='#Matrix'>Matrix</a> with a translation matrix
<a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
This has the effect of moving the drawing by (<a href='#SkCanvas_translate_dx'>dx</a>, <a href='#SkCanvas_translate_dy'>dy</a>) before transforming
@@ -2706,9 +2715,9 @@ follows translate of (50, 50).
void <a href='#SkCanvas_scale'>scale</a>(<a href='undocumented#SkScalar'>SkScalar</a> sx, <a href='undocumented#SkScalar'>SkScalar</a> sy)
</pre>
-Scale <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_scale_sx'>sx</a> on the x-axis and <a href='#SkCanvas_scale_sy'>sy</a> on the y-axis.
+Scales <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_scale_sx'>sx</a> on the x-axis and <a href='#SkCanvas_scale_sy'>sy</a> on the y-axis.
-Mathematically, replace <a href='#Matrix'>Matrix</a> with a scale matrix
+Mathematically, replaces <a href='#Matrix'>Matrix</a> with a scale matrix
<a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
This has the effect of scaling the drawing by (<a href='#SkCanvas_scale_sx'>sx</a>, <a href='#SkCanvas_scale_sy'>sy</a>) before transforming
@@ -2741,9 +2750,9 @@ the result with <a href='#Matrix'>Matrix</a>.
void <a href='#SkCanvas_rotate'>rotate</a>(<a href='undocumented#SkScalar'>SkScalar</a> degrees)
</pre>
-Rotate <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_rotate_degrees'>degrees</a>. Positive <a href='#SkCanvas_rotate_degrees'>degrees</a> rotates clockwise.
+Rotates <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_rotate_degrees'>degrees</a>. Positive <a href='#SkCanvas_rotate_degrees'>degrees</a> rotates clockwise.
-Mathematically, replace <a href='#Matrix'>Matrix</a> with a rotation matrix
+Mathematically, replaces <a href='#Matrix'>Matrix</a> with a rotation matrix
<a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
This has the effect of rotating the drawing by <a href='#SkCanvas_rotate_degrees'>degrees</a> before transforming
@@ -2774,11 +2783,11 @@ are rotated clockwise.
void <a href='#SkCanvas_rotate'>rotate</a>(<a href='undocumented#SkScalar'>SkScalar</a> degrees, <a href='undocumented#SkScalar'>SkScalar</a> px, <a href='undocumented#SkScalar'>SkScalar</a> py)
</pre>
-Rotate <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_rotate_2_degrees'>degrees</a> about a point at (<a href='#SkCanvas_rotate_2_px'>px</a>, <a href='#SkCanvas_rotate_2_py'>py</a>). Positive <a href='#SkCanvas_rotate_2_degrees'>degrees</a> rotates
+Rotates <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_rotate_2_degrees'>degrees</a> about a point at (<a href='#SkCanvas_rotate_2_px'>px</a>, <a href='#SkCanvas_rotate_2_py'>py</a>). Positive <a href='#SkCanvas_rotate_2_degrees'>degrees</a> rotates
clockwise.
-Mathematically, construct a rotation matrix. <a href='undocumented#Premultiply'>Premultiply</a> the rotation matrix by
-a translation matrix, then replace <a href='#Matrix'>Matrix</a> with the resulting matrix
+Mathematically, constructs a rotation matrix; <a href='undocumented#Premultiply'>Premultiplies</a> the rotation matrix by
+a translation matrix; then replaces <a href='#Matrix'>Matrix</a> with the resulting matrix
<a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
This has the effect of rotating the drawing about a given point before
@@ -2814,11 +2823,11 @@ transforming the result with <a href='#Matrix'>Matrix</a>.
void <a href='#SkCanvas_skew'>skew</a>(<a href='undocumented#SkScalar'>SkScalar</a> sx, <a href='undocumented#SkScalar'>SkScalar</a> sy)
</pre>
-Skew <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_skew_sx'>sx</a> on the x-axis and <a href='#SkCanvas_skew_sy'>sy</a> on the y-axis. A positive value of <a href='#SkCanvas_skew_sx'>sx</a>
+Skews <a href='#Matrix'>Matrix</a> by <a href='#SkCanvas_skew_sx'>sx</a> on the x-axis and <a href='#SkCanvas_skew_sy'>sy</a> on the y-axis. A positive value of <a href='#SkCanvas_skew_sx'>sx</a>
skews the drawing right as y-axis values increase; a positive value of <a href='#SkCanvas_skew_sy'>sy</a> skews
the drawing down as x-axis values increase.
-Mathematically, replace <a href='#Matrix'>Matrix</a> with a skew matrix <a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
+Mathematically, replaces <a href='#Matrix'>Matrix</a> with a skew matrix <a href='undocumented#Premultiply'>Premultiplied</a> with <a href='#Matrix'>Matrix</a>.
This has the effect of skewing the drawing by (<a href='#SkCanvas_skew_sx'>sx</a>, <a href='#SkCanvas_skew_sy'>sy</a>) before transforming
the result with <a href='#Matrix'>Matrix</a>.
@@ -2855,7 +2864,7 @@ Blue text combines <a href='#SkCanvas_skew_sx'>sx</a> and <a href='#SkCanvas_ske
void <a href='#SkCanvas_concat'>concat</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix)
</pre>
-Replace <a href='#Matrix'>Matrix</a> with <a href='#SkCanvas_concat_matrix'>matrix</a> <a href='undocumented#Premultiply'>Premultiplied</a> with existing <a href='#Matrix'>Matrix</a>.
+Replaces <a href='#Matrix'>Matrix</a> with <a href='#SkCanvas_concat_matrix'>matrix</a> <a href='undocumented#Premultiply'>Premultiplied</a> with existing <a href='#Matrix'>Matrix</a>.
This has the effect of transforming the drawn geometry by <a href='#SkCanvas_concat_matrix'>matrix</a>, before
transforming the result with existing <a href='#Matrix'>Matrix</a>.
@@ -2884,7 +2893,7 @@ transforming the result with existing <a href='#Matrix'>Matrix</a>.
void <a href='#SkCanvas_setMatrix'>setMatrix</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix)
</pre>
-Replace <a href='#Matrix'>Matrix</a> with <a href='#SkCanvas_setMatrix_matrix'>matrix</a>.
+Replaces <a href='#Matrix'>Matrix</a> with <a href='#SkCanvas_setMatrix_matrix'>matrix</a>.
Unlike <a href='#SkCanvas_concat'>concat</a>, any prior <a href='#SkCanvas_setMatrix_matrix'>matrix</a> state is overwritten.
### Parameters
@@ -3000,7 +3009,7 @@ The edge of the <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> clip par
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_rect'>rect</a>,
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_rect'>rect</a>,
with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> clip edge. <a href='#SkCanvas_clipRect_rect'>rect</a> is transformed by <a href='#Matrix'>Matrix</a>
before it is combined with <a href='#Clip'>Clip</a>.
@@ -3033,7 +3042,7 @@ before it is combined with <a href='#Clip'>Clip</a>.
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkClipOp'>SkClipOp</a> op)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_2_rect'>rect</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_2_rect'>rect</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='#SkCanvas_clipRect_2_rect'>rect</a> is transformed by <a href='#Matrix'>Matrix</a> before it is combined with <a href='#Clip'>Clip</a>.
@@ -3063,7 +3072,7 @@ Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>;
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, bool doAntiAlias = false)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_3_rect'>rect</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRect_3_rect'>rect</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='#SkCanvas_clipRect_3_rect'>rect</a> is transformed by <a href='#Matrix'>Matrix</a>
before it is combined with <a href='#Clip'>Clip</a>.
@@ -3121,7 +3130,7 @@ Pass an empty <a href='#SkCanvas_androidFramework_setDeviceClipRestriction_rect'
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_rrect'>rrect</a>,
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_rrect'>rrect</a>,
with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> clip edge.
<a href='#SkCanvas_clipRRect_rrect'>rrect</a> is transformed by <a href='#Matrix'>Matrix</a>
before it is combined with <a href='#Clip'>Clip</a>.
@@ -3155,7 +3164,7 @@ before it is combined with <a href='#Clip'>Clip</a>.
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_2_rrect'>rrect</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_2_rrect'>rrect</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='#SkCanvas_clipRRect_2_rrect'>rrect</a> is transformed by <a href='#Matrix'>Matrix</a> before it is combined with <a href='#Clip'>Clip</a>.
@@ -3185,7 +3194,7 @@ Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>;
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, bool doAntiAlias = false)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_3_rrect'>rrect</a>,
+Replaces <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipRRect_3_rrect'>rrect</a>,
with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> clip edge.
<a href='#SkCanvas_clipRRect_3_rrect'>rrect</a> is transformed by <a href='#Matrix'>Matrix</a> before it is combined with <a href='#Clip'>Clip</a>.
@@ -3216,7 +3225,7 @@ with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#A
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& path, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_path'>path</a>,
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_path'>path</a>,
with an <a href='undocumented#Alias'>Aliased</a> or <a href='SkPaint_Reference#Anti_Alias'>Anti Aliased</a> clip edge. <a href='SkPath_Reference#Fill_Type'>Path Fill Type</a> determines if <a href='#SkCanvas_clipPath_path'>path</a>
describes the area inside or outside its contours; and if <a href='SkPath_Reference#Contour'>Path Contour</a> overlaps
itself or another <a href='SkPath_Reference#Contour'>Path Contour</a>, whether the overlaps form part of the area.
@@ -3256,7 +3265,7 @@ area inside clip is intersected with circle.
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& path, <a href='undocumented#SkClipOp'>SkClipOp</a> op)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_2_path'>path</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_2_path'>path</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='SkPath_Reference#Fill_Type'>Path Fill Type</a> determines if <a href='#SkCanvas_clipPath_2_path'>path</a>
describes the area inside or outside its contours; and if <a href='SkPath_Reference#Contour'>Path Contour</a> overlaps
@@ -3293,7 +3302,7 @@ before it is combined with <a href='#Clip'>Clip</a>.
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& path, bool doAntiAlias = false)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_3_path'>path</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection of <a href='#Clip'>Clip</a> and <a href='#SkCanvas_clipPath_3_path'>path</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='SkPath_Reference#Fill_Type'>Path Fill Type</a> determines if <a href='#SkCanvas_clipPath_3_path'>path</a>
describes the area inside or outside its contours; and if <a href='SkPath_Reference#Contour'>Path Contour</a> overlaps
@@ -3343,7 +3352,7 @@ testingSet to simplify clip stack using <a href='undocumented#PathOps'>PathOps</
void <a href='#SkCanvas_clipRegion'>clipRegion</a>(const <a href='undocumented#SkRegion'>SkRegion</a>& deviceRgn, <a href='undocumented#SkClipOp'>SkClipOp</a> op = <a href='undocumented#SkClipOp_kIntersect'>SkClipOp::kIntersect</a>)
</pre>
-Replace <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='undocumented#Region'>Region</a> <a href='#SkCanvas_clipRegion_deviceRgn'>deviceRgn</a>.
+Replaces <a href='#Clip'>Clip</a> with the intersection or difference of <a href='#Clip'>Clip</a> and <a href='undocumented#Region'>Region</a> <a href='#SkCanvas_clipRegion_deviceRgn'>deviceRgn</a>.
Resulting <a href='#Clip'>Clip</a> is <a href='undocumented#Alias'>Aliased</a>; pixels are fully contained by the clip.
<a href='#SkCanvas_clipRegion_deviceRgn'>deviceRgn</a> is unaffected by <a href='#Matrix'>Matrix</a>.
@@ -3377,7 +3386,7 @@ aligns to pixel boundaries.
bool <a href='#SkCanvas_quickReject'>quickReject</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect) const
</pre>
-Return true if <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_quickReject_rect'>rect</a>, transformed by <a href='#Matrix'>Matrix</a>, can be quickly determined to be
+Returns true if <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_quickReject_rect'>rect</a>, transformed by <a href='#Matrix'>Matrix</a>, can be quickly determined to be
outside of <a href='#Clip'>Clip</a>. May return false even though <a href='#SkCanvas_quickReject_rect'>rect</a> is outside of <a href='#Clip'>Clip</a>.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@@ -3418,7 +3427,7 @@ quickReject false
bool <a href='#SkCanvas_quickReject'>quickReject</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& path) const
</pre>
-Return true if <a href='#SkCanvas_quickReject_2_path'>path</a>, transformed by <a href='#Matrix'>Matrix</a>, can be quickly determined to be
+Returns true if <a href='#SkCanvas_quickReject_2_path'>path</a>, transformed by <a href='#Matrix'>Matrix</a>, can be quickly determined to be
outside of <a href='#Clip'>Clip</a>. May return false even though <a href='#SkCanvas_quickReject_2_path'>path</a> is outside of <a href='#Clip'>Clip</a>.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@@ -3460,7 +3469,7 @@ quickReject false
<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkCanvas_getLocalClipBounds'>getLocalClipBounds</a>() const
</pre>
-Return bounds of <a href='#Clip'>Clip</a>, transformed by inverse of <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
+Returns bounds of <a href='#Clip'>Clip</a>, transformed by inverse of <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
return <a href='SkRect_Reference#SkRect_MakeEmpty'>SkRect::MakeEmpty</a>, where all <a href='SkRect_Reference#Rect'>Rect</a> sides equal zero.
<a href='SkRect_Reference#Rect'>Rect</a> returned is outset by one to account for partial pixel coverage if <a href='#Clip'>Clip</a>
@@ -3500,7 +3509,7 @@ left:14.5 top:64.5 right:60.5 bottom:115.5
bool <a href='#SkCanvas_getLocalClipBounds'>getLocalClipBounds</a>(<a href='SkRect_Reference#SkRect'>SkRect</a>* bounds) const
</pre>
-Return <a href='#SkCanvas_getLocalClipBounds_2_bounds'>bounds</a> of <a href='#Clip'>Clip</a>, transformed by inverse of <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
+Returns <a href='#SkCanvas_getLocalClipBounds_2_bounds'>bounds</a> of <a href='#Clip'>Clip</a>, transformed by inverse of <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
return false, and set <a href='#SkCanvas_getLocalClipBounds_2_bounds'>bounds</a> to <a href='SkRect_Reference#SkRect_MakeEmpty'>SkRect::MakeEmpty</a>, where all <a href='SkRect_Reference#Rect'>Rect</a> sides equal zero.
<a href='#SkCanvas_getLocalClipBounds_2_bounds'>bounds</a> is outset by one to account for partial pixel coverage if <a href='#Clip'>Clip</a>
@@ -3543,7 +3552,7 @@ local bounds empty = true
<a href='SkIRect_Reference#SkIRect'>SkIRect</a> <a href='#SkCanvas_getDeviceClipBounds'>getDeviceClipBounds</a>() const
</pre>
-Return <a href='SkIRect_Reference#IRect'>IRect</a> bounds of <a href='#Clip'>Clip</a>, unaffected by <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
+Returns <a href='SkIRect_Reference#IRect'>IRect</a> bounds of <a href='#Clip'>Clip</a>, unaffected by <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
return <a href='SkRect_Reference#SkRect_MakeEmpty'>SkRect::MakeEmpty</a>, where all <a href='SkRect_Reference#Rect'>Rect</a> sides equal zero.
Unlike <a href='#SkCanvas_getLocalClipBounds'>getLocalClipBounds</a>, returned <a href='SkIRect_Reference#IRect'>IRect</a> is not outset.
@@ -3582,7 +3591,7 @@ left:15 top:65 right:60 bottom:115
bool <a href='#SkCanvas_getDeviceClipBounds'>getDeviceClipBounds</a>(<a href='SkIRect_Reference#SkIRect'>SkIRect</a>* bounds) const
</pre>
-Return <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_getDeviceClipBounds_2_bounds'>bounds</a> of <a href='#Clip'>Clip</a>, unaffected by <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
+Returns <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_getDeviceClipBounds_2_bounds'>bounds</a> of <a href='#Clip'>Clip</a>, unaffected by <a href='#Matrix'>Matrix</a>. If <a href='#Clip'>Clip</a> is empty,
return false, and set <a href='#SkCanvas_getDeviceClipBounds_2_bounds'>bounds</a> to <a href='SkRect_Reference#SkRect_MakeEmpty'>SkRect::MakeEmpty</a>, where all <a href='SkRect_Reference#Rect'>Rect</a> sides equal zero.
Unlike <a href='#SkCanvas_getLocalClipBounds'>getLocalClipBounds</a>, <a href='#SkCanvas_getDeviceClipBounds_2_bounds'>bounds</a> is not outset.
@@ -3816,7 +3825,7 @@ device bounds empty = true
void <a href='#SkCanvas_drawColor'>drawColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> color, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode = <a href='SkBlendMode_Reference#SkBlendMode_kSrcOver'>SkBlendMode::kSrcOver</a>)
</pre>
-Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawColor_color'>color</a>.
+Fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_drawColor_color'>color</a>.
<a href='#SkCanvas_drawColor_mode'>mode</a> determines how ARGB is combined with destination.
### Parameters
@@ -3846,7 +3855,7 @@ Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <
void <a href='#SkCanvas_clear'>clear</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> color)
</pre>
-Fill <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_clear_color'>color</a> using <a href='SkBlendMode_Reference#SkBlendMode_kSrc'>SkBlendMode::kSrc</a>.
+Fills <a href='#Clip'>Clip</a> with <a href='SkColor_Reference#Color'>Color</a> <a href='#SkCanvas_clear_color'>color</a> using <a href='SkBlendMode_Reference#SkBlendMode_kSrc'>SkBlendMode::kSrc</a>.
This has the effect of replacing all pixels contained by <a href='#Clip'>Clip</a> with <a href='#SkCanvas_clear_color'>color</a>.
### Parameters
@@ -3873,7 +3882,7 @@ This has the effect of replacing all pixels contained by <a href='#Clip'>Clip</a
void <a href='#SkCanvas_discard'>discard</a>()
</pre>
-Make <a href='#Canvas'>Canvas</a> contents undefined. Subsequent calls that read <a href='#Canvas'>Canvas</a> pixels,
+Makes <a href='#Canvas'>Canvas</a> contents undefined. Subsequent calls that read <a href='#Canvas'>Canvas</a> pixels,
such as drawing with <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>, return undefined results. <a href='#SkCanvas_discard'>discard</a> does
not change <a href='#Clip'>Clip</a> or <a href='#Matrix'>Matrix</a>.
@@ -3898,7 +3907,7 @@ any cached data is deleted when owning <a href='SkSurface_Reference#Surface'>Sur
void <a href='#SkCanvas_drawPaint'>drawPaint</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-Fill <a href='#Clip'>Clip</a> with <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPaint_paint'>paint</a>. <a href='SkPaint_Reference#Paint'>Paint</a> components <a href='undocumented#Mask_Filter'>Mask Filter</a>, <a href='undocumented#Shader'>Shader</a>,
+Fills <a href='#Clip'>Clip</a> with <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPaint_paint'>paint</a>. <a href='SkPaint_Reference#Paint'>Paint</a> components <a href='undocumented#Mask_Filter'>Mask Filter</a>, <a href='undocumented#Shader'>Shader</a>,
<a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> affect drawing;
<a href='undocumented#Path_Effect'>Path Effect</a> in <a href='#SkCanvas_drawPaint_paint'>paint</a> is ignored.
@@ -3977,7 +3986,7 @@ The lower left corner shows two lines with a miter when path contains polygon.
void <a href='#SkCanvas_drawPoints'>drawPoints</a>(<a href='#SkCanvas_PointMode'>PointMode</a> mode, size_t count, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> pts[], const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='#SkCanvas_drawPoints_pts'>pts</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoints_paint'>paint</a>.
+Draws <a href='#SkCanvas_drawPoints_pts'>pts</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoints_paint'>paint</a>.
<a href='#SkCanvas_drawPoints_count'>count</a> is the number of points; if <a href='#SkCanvas_drawPoints_count'>count</a> is less than one, has no effect.
<a href='#SkCanvas_drawPoints_mode'>mode</a> may be one of: <a href='#SkCanvas_kPoints_PointMode'>kPoints PointMode</a>, <a href='#SkCanvas_kLines_PointMode'>kLines PointMode</a>, or <a href='#SkCanvas_kPolygon_PointMode'>kPolygon PointMode</a>.
@@ -4055,7 +4064,7 @@ the path is drawn all at once.
void <a href='#SkCanvas_drawPoint'>drawPoint</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> point at (<a href='#SkCanvas_drawPoint_x'>x</a>, <a href='#SkCanvas_drawPoint_y'>y</a>) using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoint_paint'>paint</a>.
+Draws point at (<a href='#SkCanvas_drawPoint_x'>x</a>, <a href='#SkCanvas_drawPoint_y'>y</a>) using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoint_paint'>paint</a>.
The shape of point drawn depends on <a href='#SkCanvas_drawPoint_paint'>paint</a> <a href='SkPaint_Reference#Stroke_Cap'>Paint Stroke Cap</a>.
If <a href='#SkCanvas_drawPoint_paint'>paint</a> is set to <a href='SkPaint_Reference#SkPaint_kRound_Cap'>SkPaint::kRound Cap</a>, draw a circle of diameter
@@ -4092,7 +4101,7 @@ draw a square of width and height <a href='SkPaint_Reference#Stroke_Width'>Paint
void <a href='#SkCanvas_drawPoint'>drawPoint</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> p, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> point <a href='#SkCanvas_drawPoint_2_p'>p</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoint_2_paint'>paint</a>.
+Draws point <a href='#SkCanvas_drawPoint_2_p'>p</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a> and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPoint_2_paint'>paint</a>.
The shape of point drawn depends on <a href='#SkCanvas_drawPoint_2_paint'>paint</a> <a href='SkPaint_Reference#Stroke_Cap'>Paint Stroke Cap</a>.
If <a href='#SkCanvas_drawPoint_2_paint'>paint</a> is set to <a href='SkPaint_Reference#SkPaint_kRound_Cap'>SkPaint::kRound Cap</a>, draw a circle of diameter
@@ -4202,7 +4211,7 @@ In <a href='#SkCanvas_drawLine_2_paint'>paint</a>: <a href='SkPaint_Reference#St
void <a href='#SkCanvas_drawRect'>drawRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRect_rect'>rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRect_paint'>paint</a>.
+Draws <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRect_rect'>rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRect_paint'>paint</a>.
In <a href='#SkCanvas_drawRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness, and
<a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> draws the corners rounded or square.
@@ -4234,7 +4243,7 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc
void <a href='#SkCanvas_drawIRect'>drawIRect</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& rect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawIRect_rect'>rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawIRect_paint'>paint</a>.
+Draws <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawIRect_rect'>rect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawIRect_paint'>paint</a>.
In <a href='#SkCanvas_drawIRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness, and
<a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> draws the corners rounded or square.
@@ -4266,7 +4275,7 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc
void <a href='#SkCanvas_drawRegion'>drawRegion</a>(const <a href='undocumented#SkRegion'>SkRegion</a>& region, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Region'>Region</a> <a href='#SkCanvas_drawRegion_region'>region</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRegion_paint'>paint</a>.
+Draws <a href='undocumented#Region'>Region</a> <a href='#SkCanvas_drawRegion_region'>region</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRegion_paint'>paint</a>.
In <a href='#SkCanvas_drawRegion_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness, and
<a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> draws the corners rounded or square.
@@ -4298,7 +4307,7 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc
void <a href='#SkCanvas_drawOval'>drawOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Oval'>Oval</a> <a href='#SkCanvas_drawOval_oval'>oval</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a>.
+Draws <a href='undocumented#Oval'>Oval</a> <a href='#SkCanvas_drawOval_oval'>oval</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a>.
In <a href='#SkCanvas_drawOval_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Oval'>Oval</a> is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness.
@@ -4329,7 +4338,7 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc
void <a href='#SkCanvas_drawRRect'>drawRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawRRect_rrect'>rrect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRRect_paint'>paint</a>.
+Draws <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawRRect_rrect'>rrect</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRRect_paint'>paint</a>.
In <a href='#SkCanvas_drawRRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='#SkCanvas_drawRRect_rrect'>rrect</a> is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness.
@@ -4363,7 +4372,7 @@ may have any combination of positive non-square radii for the four corners.
void <a href='#SkCanvas_drawDRRect'>drawDRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& outer, const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& inner, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> and <a href='#SkCanvas_drawDRRect_inner'>inner</a>
+Draws <a href='SkRRect_Reference#RRect'>Round Rect</a> <a href='#SkCanvas_drawDRRect_outer'>outer</a> and <a href='#SkCanvas_drawDRRect_inner'>inner</a>
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawDRRect_paint'>paint</a>.
<a href='#SkCanvas_drawDRRect_outer'>outer</a> must contain <a href='#SkCanvas_drawDRRect_inner'>inner</a> or the drawing is undefined.
In <a href='#SkCanvas_drawDRRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled;
@@ -4412,7 +4421,7 @@ Stroke join does not affect <a href='#SkCanvas_drawDRRect_inner'>inner</a> <a hr
void <a href='#SkCanvas_drawCircle'>drawCircle</a>(<a href='undocumented#SkScalar'>SkScalar</a> cx, <a href='undocumented#SkScalar'>SkScalar</a> cy, <a href='undocumented#SkScalar'>SkScalar</a> radius, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Circle'>Circle</a> at (<a href='#SkCanvas_drawCircle_cx'>cx</a>, <a href='#SkCanvas_drawCircle_cy'>cy</a>) with <a href='#SkCanvas_drawCircle_radius'>radius</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawCircle_paint'>paint</a>.
+Draws <a href='undocumented#Circle'>Circle</a> at (<a href='#SkCanvas_drawCircle_cx'>cx</a>, <a href='#SkCanvas_drawCircle_cy'>cy</a>) with <a href='#SkCanvas_drawCircle_radius'>radius</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawCircle_paint'>paint</a>.
If <a href='#SkCanvas_drawCircle_radius'>radius</a> is zero or less, nothing is drawn.
In <a href='#SkCanvas_drawCircle_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Circle'>Circle</a> is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness.
@@ -4449,7 +4458,7 @@ if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> desc
void <a href='#SkCanvas_drawCircle'>drawCircle</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> center, <a href='undocumented#SkScalar'>SkScalar</a> radius, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Circle'>Circle</a> at <a href='#SkCanvas_drawCircle_2_center'>center</a> with <a href='#SkCanvas_drawCircle_2_radius'>radius</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawCircle_2_paint'>paint</a>.
+Draws <a href='undocumented#Circle'>Circle</a> at <a href='#SkCanvas_drawCircle_2_center'>center</a> with <a href='#SkCanvas_drawCircle_2_radius'>radius</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawCircle_2_paint'>paint</a>.
If <a href='#SkCanvas_drawCircle_2_radius'>radius</a> is zero or less, nothing is drawn.
In <a href='#SkCanvas_drawCircle_2_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='undocumented#Circle'>Circle</a> is stroked or filled;
if stroked, <a href='SkPaint_Reference#Stroke_Width'>Paint Stroke Width</a> describes the line thickness.
@@ -4485,7 +4494,7 @@ void <a href='#SkCanvas_drawArc'>drawArc</a>(const <a href='SkRect_Reference#SkR
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Arc'>Arc</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawArc_paint'>paint</a>.
+Draws <a href='undocumented#Arc'>Arc</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawArc_paint'>paint</a>.
<a href='undocumented#Arc'>Arc</a> is part of <a href='undocumented#Oval'>Oval</a> bounded by <a href='#SkCanvas_drawArc_oval'>oval</a>, sweeping from <a href='#SkCanvas_drawArc_startAngle'>startAngle</a> to <a href='#SkCanvas_drawArc_startAngle'>startAngle</a> plus
<a href='#SkCanvas_drawArc_sweepAngle'>sweepAngle</a>. <a href='#SkCanvas_drawArc_startAngle'>startAngle</a> and <a href='#SkCanvas_drawArc_sweepAngle'>sweepAngle</a> are in degrees.
@@ -4539,7 +4548,7 @@ If <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawArc_oval'>ova
void <a href='#SkCanvas_drawRoundRect'>drawRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> rx, <a href='undocumented#SkScalar'>SkScalar</a> ry, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRRect_Reference#RRect'>Round Rect</a> bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRoundRect_rect'>rect</a>, with corner radii (<a href='#SkCanvas_drawRoundRect_rx'>rx</a>, <a href='#SkCanvas_drawRoundRect_ry'>ry</a>) using <a href='#Clip'>Clip</a>,
+Draws <a href='SkRRect_Reference#RRect'>Round Rect</a> bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawRoundRect_rect'>rect</a>, with corner radii (<a href='#SkCanvas_drawRoundRect_rx'>rx</a>, <a href='#SkCanvas_drawRoundRect_ry'>ry</a>) using <a href='#Clip'>Clip</a>,
<a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawRoundRect_paint'>paint</a>.
In <a href='#SkCanvas_drawRoundRect_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled;
@@ -4586,7 +4595,7 @@ DrawRRect <a href='#SkCanvas_drawRect'>drawRect</a> <a href='#SkCanvas_drawDRRec
void <a href='#SkCanvas_drawPath'>drawPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& path, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawPath_path'>path</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPath_paint'>paint</a>.
+Draws <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawPath_path'>path</a> using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPath_paint'>paint</a>.
<a href='SkPath_Reference#Path'>Path</a> contains an array of <a href='SkPath_Reference#Contour'>Path Contour</a>, each of which may be open or closed.
In <a href='#SkCanvas_drawPath_paint'>paint</a>: <a href='SkPaint_Reference#Style'>Paint Style</a> determines if <a href='SkRRect_Reference#RRect'>Round Rect</a> is stroked or filled:
@@ -4633,7 +4642,7 @@ a smart pointer as a convenience. The pairs of calls are otherwise identical.
void <a href='#SkCanvas_drawImage'>drawImage</a>(const <a href='SkImage_Reference#SkImage'>SkImage</a>* image, <a href='undocumented#SkScalar'>SkScalar</a> left, <a href='undocumented#SkScalar'>SkScalar</a> top, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImage_image'>image</a>, with its <a href='#SkCanvas_drawImage_top'>top</a>-<a href='#SkCanvas_drawImage_left'>left</a> corner at (<a href='#SkCanvas_drawImage_left'>left</a>, <a href='#SkCanvas_drawImage_top'>top</a>),
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImage_image'>image</a>, with its <a href='#SkCanvas_drawImage_top'>top</a>-<a href='#SkCanvas_drawImage_left'>left</a> corner at (<a href='#SkCanvas_drawImage_left'>left</a>, <a href='#SkCanvas_drawImage_top'>top</a>),
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImage_paint'>paint</a>.
If <a href='#SkCanvas_drawImage_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>,
@@ -4677,7 +4686,7 @@ void <a href='#SkCanvas_drawImage'>drawImage</a>(const <a href='undocumented#sk_
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImage_2_image'>image</a>, with its <a href='#SkCanvas_drawImage_2_top'>top</a>-<a href='#SkCanvas_drawImage_2_left'>left</a> corner at (<a href='#SkCanvas_drawImage_2_left'>left</a>, <a href='#SkCanvas_drawImage_2_top'>top</a>),
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImage_2_image'>image</a>, with its <a href='#SkCanvas_drawImage_2_top'>top</a>-<a href='#SkCanvas_drawImage_2_left'>left</a> corner at (<a href='#SkCanvas_drawImage_2_left'>left</a>, <a href='#SkCanvas_drawImage_2_top'>top</a>),
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImage_2_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImage_2_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -4778,7 +4787,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='SkImage_
<a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_src'>src</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_dst'>dst</a>.
+Draws <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_src'>src</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_dst'>dst</a>.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -4835,7 +4844,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='SkImage_
<a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageRect_2_isrc'>isrc</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_2_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_2_dst'>dst</a>.
+Draws <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageRect_2_isrc'>isrc</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_2_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_2_dst'>dst</a>.
Note that <a href='#SkCanvas_drawImageRect_2_isrc'>isrc</a> is on integer pixel boundaries; <a href='#SkCanvas_drawImageRect_2_dst'>dst</a> may include fractional
boundaries. Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a>
<a href='#SkCanvas_drawImageRect_2_paint'>paint</a>.
@@ -4889,7 +4898,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='SkImage_
<a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_3_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_3_dst'>dst</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>,
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_3_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_3_dst'>dst</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>,
and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_3_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_3_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -4938,7 +4947,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_4_src'>src</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_4_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_4_dst'>dst</a>.
+Draws <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_4_src'>src</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_4_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_4_dst'>dst</a>.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_4_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_4_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -4992,7 +5001,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageRect_5_isrc'>isrc</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_5_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_5_dst'>dst</a>.
+Draws <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageRect_5_isrc'>isrc</a> of <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_5_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_5_dst'>dst</a>.
<a href='#SkCanvas_drawImageRect_5_isrc'>isrc</a> is on integer pixel boundaries; <a href='#SkCanvas_drawImageRect_5_dst'>dst</a> may include fractional boundaries.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_5_paint'>paint</a>.
@@ -5045,7 +5054,7 @@ void <a href='#SkCanvas_drawImageRect'>drawImageRect</a>(const <a href='undocume
<a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_6_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_6_dst'>dst</a>,
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageRect_6_image'>image</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageRect_6_dst'>dst</a>,
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_6_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawImageRect_6_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -5095,7 +5104,7 @@ void <a href='#SkCanvas_drawImageNine'>drawImageNine</a>(const <a href='SkImage_
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageNine_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageNine_dst'>dst</a>.
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageNine_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageNine_dst'>dst</a>.
<a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageNine_center'>center</a> divides the <a href='#SkCanvas_drawImageNine_image'>image</a> into nine sections: four sides, four corners, and
the <a href='#SkCanvas_drawImageNine_center'>center</a>. Corners are unmodified or scaled down proportionately if their sides
are larger than <a href='#SkCanvas_drawImageNine_dst'>dst</a>; <a href='#SkCanvas_drawImageNine_center'>center</a> and four sides are scaled to fit remaining space, if any.
@@ -5149,7 +5158,7 @@ void <a href='#SkCanvas_drawImageNine'>drawImageNine</a>(const <a href='undocume
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageNine_2_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageNine_2_dst'>dst</a>.
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageNine_2_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageNine_2_dst'>dst</a>.
<a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawImageNine_2_center'>center</a> divides the <a href='#SkCanvas_drawImageNine_2_image'>image</a> into nine sections: four sides, four corners, and
the <a href='#SkCanvas_drawImageNine_2_center'>center</a>. Corners are not scaled, or scaled down proportionately if their sides
are larger than <a href='#SkCanvas_drawImageNine_2_dst'>dst</a>; <a href='#SkCanvas_drawImageNine_2_center'>center</a> and four sides are scaled to fit remaining space, if any.
@@ -5205,7 +5214,7 @@ and below <a href='#SkCanvas_drawImageNine_2_center'>center</a> to fill the rema
void <a href='#SkCanvas_drawBitmap'>drawBitmap</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& bitmap, <a href='undocumented#SkScalar'>SkScalar</a> left, <a href='undocumented#SkScalar'>SkScalar</a> top, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmap_bitmap'>bitmap</a>, with its <a href='#SkCanvas_drawBitmap_top'>top</a>-<a href='#SkCanvas_drawBitmap_left'>left</a> corner at (<a href='#SkCanvas_drawBitmap_left'>left</a>, <a href='#SkCanvas_drawBitmap_top'>top</a>),
+Draws <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmap_bitmap'>bitmap</a>, with its <a href='#SkCanvas_drawBitmap_top'>top</a>-<a href='#SkCanvas_drawBitmap_left'>left</a> corner at (<a href='#SkCanvas_drawBitmap_left'>left</a>, <a href='#SkCanvas_drawBitmap_top'>top</a>),
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmap_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmap_paint'>paint</a> is not nullptr, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -5252,7 +5261,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_src'>src</a> of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_dst'>dst</a>.
+Draws <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_src'>src</a> of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_dst'>dst</a>.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_paint'>paint</a>.
If <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_paint'>paint</a> is supplied, apply <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Image_Filter'>Image Filter</a>,
@@ -5305,7 +5314,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint, <a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawBitmapRect_2_isrc'>isrc</a> of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_2_dst'>dst</a>.
+Draws <a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawBitmapRect_2_isrc'>isrc</a> of <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_2_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_2_dst'>dst</a>.
<a href='#SkCanvas_drawBitmapRect_2_isrc'>isrc</a> is on integer pixel boundaries; <a href='#SkCanvas_drawBitmapRect_2_dst'>dst</a> may include fractional boundaries.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_2_paint'>paint</a>.
@@ -5359,7 +5368,7 @@ void <a href='#SkCanvas_drawBitmapRect'>drawBitmapRect</a>(const <a href='SkBitm
<a href='#SkCanvas_SrcRectConstraint'>SrcRectConstraint</a> constraint = <a href='#SkCanvas_kStrict_SrcRectConstraint'>kStrict SrcRectConstraint</a>)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_3_dst'>dst</a>.
+Draws <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a>, scaled and translated to fill <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapRect_3_dst'>dst</a>.
<a href='#SkCanvas_drawBitmapRect_3_bitmap'>bitmap</a> bounds is on integer pixel boundaries; <a href='#SkCanvas_drawBitmapRect_3_dst'>dst</a> may include fractional boundaries.
Additionally transform draw using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawBitmapRect_3_paint'>paint</a>.
@@ -5411,7 +5420,7 @@ void <a href='#SkCanvas_drawBitmapNine'>drawBitmapNine</a>(const <a href='SkBitm
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapNine_bitmap'>bitmap</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapNine_dst'>dst</a>.
+Draws <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapNine_bitmap'>bitmap</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapNine_dst'>dst</a>.
<a href='SkIRect_Reference#IRect'>IRect</a> <a href='#SkCanvas_drawBitmapNine_center'>center</a> divides the <a href='#SkCanvas_drawBitmapNine_bitmap'>bitmap</a> into nine sections: four sides, four corners,
and the <a href='#SkCanvas_drawBitmapNine_center'>center</a>. Corners are not scaled, or scaled down proportionately if their
sides are larger than <a href='#SkCanvas_drawBitmapNine_dst'>dst</a>; <a href='#SkCanvas_drawBitmapNine_center'>center</a> and four sides are scaled to fit remaining
@@ -5647,7 +5656,7 @@ void <a href='#SkCanvas_drawBitmapLattice'>drawBitmapLattice</a>(const <a href='
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapLattice_bitmap'>bitmap</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapLattice_dst'>dst</a>.
+Draws <a href='SkBitmap_Reference#Bitmap'>Bitmap</a> <a href='#SkCanvas_drawBitmapLattice_bitmap'>bitmap</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawBitmapLattice_dst'>dst</a>.
<a href='#SkCanvas_Lattice'>Lattice</a> <a href='#SkCanvas_drawBitmapLattice_lattice'>lattice</a> divides <a href='#SkCanvas_drawBitmapLattice_bitmap'>bitmap</a> into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -5708,7 +5717,7 @@ void <a href='#SkCanvas_drawImageLattice'>drawImageLattice</a>(const <a href='Sk
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageLattice_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageLattice_dst'>dst</a>.
+Draws <a href='SkImage_Reference#Image'>Image</a> <a href='#SkCanvas_drawImageLattice_image'>image</a> stretched proportionally to fit into <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawImageLattice_dst'>dst</a>.
<a href='#SkCanvas_Lattice'>Lattice</a> <a href='#SkCanvas_drawImageLattice_lattice'>lattice</a> divides <a href='#SkCanvas_drawImageLattice_image'>image</a> into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -5822,7 +5831,7 @@ are scaled if needed to take up the remaining space; the center is transparent.
void <a href='#SkCanvas_drawText'>drawText</a>(const void* text, size_t byteLength, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='#SkCanvas_drawText_text'>text</a>, with origin at (<a href='#SkCanvas_drawText_x'>x</a>, <a href='#SkCanvas_drawText_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawText_paint'>paint</a>.
+Draws <a href='#SkCanvas_drawText_text'>text</a>, with origin at (<a href='#SkCanvas_drawText_x'>x</a>, <a href='#SkCanvas_drawText_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawText_paint'>paint</a>.
<a href='#SkCanvas_drawText_text'>text</a> meaning depends on <a href='SkPaint_Reference#Text_Encoding'>Paint Text Encoding</a>; by default, <a href='#SkCanvas_drawText_text'>text</a> is encoded as
UTF-8.
@@ -5921,7 +5930,7 @@ ending with a char value of zero</td>
void <a href='#SkCanvas_drawString'>drawString</a>(const <a href='undocumented#SkString'>SkString</a>& string, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> null terminated <a href='#SkCanvas_drawString_2_string'>string</a>, with origin at (<a href='#SkCanvas_drawString_2_x'>x</a>, <a href='#SkCanvas_drawString_2_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and
+Draws null terminated <a href='#SkCanvas_drawString_2_string'>string</a>, with origin at (<a href='#SkCanvas_drawString_2_x'>x</a>, <a href='#SkCanvas_drawString_2_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and
<a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawString_2_paint'>paint</a>.
<a href='#SkCanvas_drawString_2_string'>string</a> meaning depends on <a href='SkPaint_Reference#Text_Encoding'>Paint Text Encoding</a>; by default, strings are encoded
@@ -5970,7 +5979,7 @@ ending with a char value of zero</td>
void <a href='#SkCanvas_drawPosText'>drawPosText</a>(const void* text, size_t byteLength, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> pos[], const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> each glyph in <a href='#SkCanvas_drawPosText_text'>text</a> with the origin in <a href='#SkCanvas_drawPosText_pos'>pos</a> array, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and
+Draws each glyph in <a href='#SkCanvas_drawPosText_text'>text</a> with the origin in <a href='#SkCanvas_drawPosText_pos'>pos</a> array, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and
<a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPosText_paint'>paint</a>. The number of entries in <a href='#SkCanvas_drawPosText_pos'>pos</a> array must match the number of <a href='undocumented#Glyph'>Glyphs</a>
described by <a href='#SkCanvas_drawPosText_byteLength'>byteLength</a> of <a href='#SkCanvas_drawPosText_text'>text</a>.
@@ -6020,7 +6029,7 @@ void <a href='#SkCanvas_drawPosTextH'>drawPosTextH</a>(const void* text, size_t
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> each glyph in <a href='#SkCanvas_drawPosTextH_text'>text</a> with its (x, y) origin composed from <a href='#SkCanvas_drawPosTextH_xpos'>xpos</a> array and
+Draws each glyph in <a href='#SkCanvas_drawPosTextH_text'>text</a> with its (x, y) origin composed from <a href='#SkCanvas_drawPosTextH_xpos'>xpos</a> array and
<a href='#SkCanvas_drawPosTextH_constY'>constY</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPosTextH_paint'>paint</a>. The number of entries in <a href='#SkCanvas_drawPosTextH_xpos'>xpos</a> array
must match the number of <a href='undocumented#Glyph'>Glyphs</a> described by <a href='#SkCanvas_drawPosTextH_byteLength'>byteLength</a> of <a href='#SkCanvas_drawPosTextH_text'>text</a>.
@@ -6075,7 +6084,7 @@ void <a href='#SkCanvas_drawTextOnPathHV'>drawTextOnPathHV</a>(const void* text,
<a href='undocumented#SkScalar'>SkScalar</a> vOffset, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='#SkCanvas_drawTextOnPathHV_text'>text</a> on <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawTextOnPathHV_path'>path</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextOnPathHV_paint'>paint</a>.
+Draws <a href='#SkCanvas_drawTextOnPathHV_text'>text</a> on <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawTextOnPathHV_path'>path</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextOnPathHV_paint'>paint</a>.
Origin of <a href='#SkCanvas_drawTextOnPathHV_text'>text</a> is at distance <a href='#SkCanvas_drawTextOnPathHV_hOffset'>hOffset</a> along the <a href='#SkCanvas_drawTextOnPathHV_path'>path</a>, offset by a perpendicular
vector of length <a href='#SkCanvas_drawTextOnPathHV_vOffset'>vOffset</a>. If the <a href='#SkCanvas_drawTextOnPathHV_path'>path</a> section corresponding the glyph advance is
@@ -6132,7 +6141,7 @@ void <a href='#SkCanvas_drawTextOnPath'>drawTextOnPath</a>(const void* text, siz
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='#SkCanvas_drawTextOnPath_text'>text</a> on <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawTextOnPath_path'>path</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextOnPath_paint'>paint</a>.
+Draws <a href='#SkCanvas_drawTextOnPath_text'>text</a> on <a href='SkPath_Reference#Path'>Path</a> <a href='#SkCanvas_drawTextOnPath_path'>path</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextOnPath_paint'>paint</a>.
Origin of <a href='#SkCanvas_drawTextOnPath_text'>text</a> is at beginning of <a href='#SkCanvas_drawTextOnPath_path'>path</a> offset by <a href='#SkCanvas_drawTextOnPath_matrix'>matrix</a>, if not nullptr.
<a href='#SkCanvas_drawTextOnPath_matrix'>matrix</a> transforms <a href='#SkCanvas_drawTextOnPath_text'>text</a> before <a href='#SkCanvas_drawTextOnPath_text'>text</a> is mapped to <a href='#SkCanvas_drawTextOnPath_path'>path</a>. If the <a href='#SkCanvas_drawTextOnPath_path'>path</a> section
@@ -6190,7 +6199,7 @@ void <a href='#SkCanvas_drawTextRSXform'>drawTextRSXform</a>(const void* text, s
const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='#SkCanvas_drawTextRSXform_text'>text</a>, transforming each glyph by the corresponding <a href='undocumented#SkRSXform'>SkRSXform</a>,
+Draws <a href='#SkCanvas_drawTextRSXform_text'>text</a>, transforming each glyph by the corresponding <a href='undocumented#SkRSXform'>SkRSXform</a>,
using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextRSXform_paint'>paint</a>.
<a href='undocumented#RSXform'>RSXform</a> <a href='#SkCanvas_drawTextRSXform_xform'>xform</a> array specifies a separate square scale, rotation, and translation
@@ -6239,7 +6248,7 @@ filled 12 point black <a href='undocumented#Glyph'>Glyphs</a>.
void <a href='#SkCanvas_drawTextBlob'>drawTextBlob</a>(const <a href='undocumented#SkTextBlob'>SkTextBlob</a>* blob, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Text_Blob'>Text Blob</a> <a href='#SkCanvas_drawTextBlob_blob'>blob</a> at (<a href='#SkCanvas_drawTextBlob_x'>x</a>, <a href='#SkCanvas_drawTextBlob_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextBlob_paint'>paint</a>.
+Draws <a href='undocumented#Text_Blob'>Text Blob</a> <a href='#SkCanvas_drawTextBlob_blob'>blob</a> at (<a href='#SkCanvas_drawTextBlob_x'>x</a>, <a href='#SkCanvas_drawTextBlob_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextBlob_paint'>paint</a>.
<a href='#SkCanvas_drawTextBlob_blob'>blob</a> contains <a href='undocumented#Glyph'>Glyphs</a>, their positions, and <a href='#SkCanvas_drawTextBlob_paint'>paint</a> attributes specific to text:
<a href='undocumented#Typeface'>Typeface</a>, <a href='SkPaint_Reference#Text_Size'>Paint Text Size</a>, <a href='SkPaint_Reference#Text_Scale_X'>Paint Text Scale X</a>, <a href='SkPaint_Reference#Text_Skew_X'>Paint Text Skew X</a>,
@@ -6284,7 +6293,7 @@ Elements of <a href='#SkCanvas_drawTextBlob_paint'>paint</a>: <a href='undocumen
void <a href='#SkCanvas_drawTextBlob'>drawTextBlob</a>(const <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkTextBlob'>SkTextBlob</a>&gt;& blob, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Text_Blob'>Text Blob</a> <a href='#SkCanvas_drawTextBlob_2_blob'>blob</a> at (<a href='#SkCanvas_drawTextBlob_2_x'>x</a>, <a href='#SkCanvas_drawTextBlob_2_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextBlob_2_paint'>paint</a>.
+Draws <a href='undocumented#Text_Blob'>Text Blob</a> <a href='#SkCanvas_drawTextBlob_2_blob'>blob</a> at (<a href='#SkCanvas_drawTextBlob_2_x'>x</a>, <a href='#SkCanvas_drawTextBlob_2_y'>y</a>), using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawTextBlob_2_paint'>paint</a>.
<a href='#SkCanvas_drawTextBlob_2_blob'>blob</a> contains <a href='undocumented#Glyph'>Glyphs</a>, their positions, and <a href='#SkCanvas_drawTextBlob_2_paint'>paint</a> attributes specific to text:
<a href='undocumented#Typeface'>Typeface</a>, <a href='SkPaint_Reference#Text_Size'>Paint Text Size</a>, <a href='SkPaint_Reference#Text_Scale_X'>Paint Text Scale X</a>, <a href='SkPaint_Reference#Text_Skew_X'>Paint Text Skew X</a>,
@@ -6332,7 +6341,7 @@ Elements of <a href='#SkCanvas_drawTextBlob_2_paint'>paint</a>: <a href='undocum
void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Reference#SkPicture'>SkPicture</a>* picture)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
+Draws <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
<a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a> are unchanged by <a href='#SkCanvas_drawPicture_picture'>picture</a> contents, as if
<a href='#SkCanvas_save'>save</a> was called before and <a href='#SkCanvas_restore'>restore</a> was called after <a href='#SkCanvas_drawPicture'>drawPicture</a>.
@@ -6361,7 +6370,7 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Re
void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt;& picture)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_2_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
+Draws <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_2_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
<a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a> are unchanged by <a href='#SkCanvas_drawPicture_2_picture'>picture</a> contents, as if
<a href='#SkCanvas_save'>save</a> was called before and <a href='#SkCanvas_restore'>restore</a> was called after <a href='#SkCanvas_drawPicture'>drawPicture</a>.
@@ -6390,7 +6399,7 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented
void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Reference#SkPicture'>SkPicture</a>* picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_3_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>; transforming <a href='#SkCanvas_drawPicture_3_picture'>picture</a> with
+Draws <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_3_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>; transforming <a href='#SkCanvas_drawPicture_3_picture'>picture</a> with
<a href='#Matrix'>Matrix</a> <a href='#SkCanvas_drawPicture_3_matrix'>matrix</a>, if provided; and use <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPicture_3_paint'>paint</a> <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>,
<a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, if provided.
@@ -6426,7 +6435,7 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='SkPicture_Re
void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='SkPicture_Reference#SkPicture'>SkPicture</a>&gt;& picture, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_4_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>; transforming <a href='#SkCanvas_drawPicture_4_picture'>picture</a> with
+Draws <a href='SkPicture_Reference#Picture'>Picture</a> <a href='#SkCanvas_drawPicture_4_picture'>picture</a>, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>; transforming <a href='#SkCanvas_drawPicture_4_picture'>picture</a> with
<a href='#Matrix'>Matrix</a> <a href='#SkCanvas_drawPicture_4_matrix'>matrix</a>, if provided; and use <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawPicture_4_paint'>paint</a> <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>,
<a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>, if provided.
@@ -6463,7 +6472,7 @@ void <a href='#SkCanvas_drawPicture'>drawPicture</a>(const <a href='undocumented
void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#SkVertices'>SkVertices</a>* vertices, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
+Draws <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_paint'>paint</a>
contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>.
@@ -6496,7 +6505,7 @@ contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Referenc
void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkVertices'>SkVertices</a>&gt;& vertices, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_2_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
+Draws <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_2_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>.
If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_2_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_2_paint'>paint</a>
contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_2_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>.
@@ -6530,7 +6539,7 @@ void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocument
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_3_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. Bone data is used to
+Draws <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_3_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. Bone data is used to
deform <a href='#SkCanvas_drawVertices_3_vertices'>vertices</a> with bone weights.
If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_3_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_3_paint'>paint</a>
contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_3_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>.
@@ -6575,7 +6584,7 @@ void <a href='#SkCanvas_drawVertices'>drawVertices</a>(const <a href='undocument
<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& paint)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_4_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. Bone data is used to
+Draws <a href='undocumented#Vertices'>Vertices</a> <a href='#SkCanvas_drawVertices_4_vertices'>vertices</a>, a triangle mesh, using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>. Bone data is used to
deform <a href='#SkCanvas_drawVertices_4_vertices'>vertices</a> with bone weights.
If <a href='undocumented#Texs'>Vertices Texs</a> and <a href='undocumented#Colors'>Vertices Colors</a> are defined in <a href='#SkCanvas_drawVertices_4_vertices'>vertices</a>, and <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawVertices_4_paint'>paint</a>
contains <a href='undocumented#Shader'>Shader</a>, <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a> <a href='#SkCanvas_drawVertices_4_mode'>mode</a> combines <a href='undocumented#Colors'>Vertices Colors</a> with <a href='undocumented#Shader'>Shader</a>.
@@ -6734,7 +6743,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='SkImage_Referenc
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> a set of sprites from <a href='#SkCanvas_drawAtlas_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_paint'>paint</a>.
+Draws a set of sprites from <a href='#SkCanvas_drawAtlas_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_paint'>paint</a>.
<a href='#SkCanvas_drawAtlas_paint'>paint</a> uses <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>
to draw, if present. For each entry in the array, <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawAtlas_tex'>tex</a> locates sprite in
<a href='#SkCanvas_drawAtlas_atlas'>atlas</a>, and <a href='undocumented#RSXform'>RSXform</a> <a href='#SkCanvas_drawAtlas_xform'>xform</a> transforms it into destination space.
@@ -6791,7 +6800,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='undocumented#sk_
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> a set of sprites from <a href='#SkCanvas_drawAtlas_2_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_2_paint'>paint</a>.
+Draws a set of sprites from <a href='#SkCanvas_drawAtlas_2_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_2_paint'>paint</a>.
<a href='#SkCanvas_drawAtlas_2_paint'>paint</a> uses <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>
to draw, if present. For each entry in the array, <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawAtlas_2_tex'>tex</a> locates sprite in
<a href='#SkCanvas_drawAtlas_2_atlas'>atlas</a>, and <a href='undocumented#RSXform'>RSXform</a> <a href='#SkCanvas_drawAtlas_2_xform'>xform</a> transforms it into destination space.
@@ -6846,7 +6855,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='SkImage_Referenc
const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> a set of sprites from <a href='#SkCanvas_drawAtlas_3_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_3_paint'>paint</a>.
+Draws a set of sprites from <a href='#SkCanvas_drawAtlas_3_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_3_paint'>paint</a>.
<a href='#SkCanvas_drawAtlas_3_paint'>paint</a> uses <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>
to draw, if present. For each entry in the array, <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawAtlas_3_tex'>tex</a> locates sprite in
<a href='#SkCanvas_drawAtlas_3_atlas'>atlas</a>, and <a href='undocumented#RSXform'>RSXform</a> <a href='#SkCanvas_drawAtlas_3_xform'>xform</a> transforms it into destination space.
@@ -6894,7 +6903,7 @@ void <a href='#SkCanvas_drawAtlas'>drawAtlas</a>(const <a href='undocumented#sk_
const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* paint)
</pre>
-<a href='#Draw'>Draw</a> a set of sprites from <a href='#SkCanvas_drawAtlas_4_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_4_paint'>paint</a>.
+Draws a set of sprites from <a href='#SkCanvas_drawAtlas_4_atlas'>atlas</a>, using <a href='#Clip'>Clip</a>, <a href='#Matrix'>Matrix</a>, and optional <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkCanvas_drawAtlas_4_paint'>paint</a>.
<a href='#SkCanvas_drawAtlas_4_paint'>paint</a> uses <a href='SkPaint_Reference#Anti_Alias'>Anti Alias</a>, <a href='SkColor_Reference#Alpha'>Color Alpha</a>, <a href='undocumented#Color_Filter'>Color Filter</a>, <a href='undocumented#Image_Filter'>Image Filter</a>, and <a href='SkBlendMode_Reference#Blend_Mode'>Blend Mode</a>
to draw, if present. For each entry in the array, <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkCanvas_drawAtlas_4_tex'>tex</a> locates sprite in
<a href='#SkCanvas_drawAtlas_4_atlas'>atlas</a>, and <a href='undocumented#RSXform'>RSXform</a> <a href='#SkCanvas_drawAtlas_4_xform'>xform</a> transforms it into destination space.
@@ -6942,7 +6951,7 @@ If <a href='#SkCanvas_drawAtlas_4_cullRect'>cullRect</a> is outside of <a href='
void <a href='#SkCanvas_drawDrawable'>drawDrawable</a>(<a href='undocumented#SkDrawable'>SkDrawable</a>* drawable, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* matrix = nullptr)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Drawable'>Drawable</a> <a href='#SkCanvas_drawDrawable_drawable'>drawable</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>, concatenated with
+Draws <a href='undocumented#Drawable'>Drawable</a> <a href='#SkCanvas_drawDrawable_drawable'>drawable</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>, concatenated with
optional <a href='#SkCanvas_drawDrawable_matrix'>matrix</a>.
If <a href='#Canvas'>Canvas</a> has an asynchronous implementation, as is the case
@@ -6976,7 +6985,7 @@ immediate drawing, call <a href='undocumented#SkDrawable_draw'>SkDrawable::draw(
void <a href='#SkCanvas_drawDrawable'>drawDrawable</a>(<a href='undocumented#SkDrawable'>SkDrawable</a>* drawable, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
-<a href='#Draw'>Draw</a> <a href='undocumented#Drawable'>Drawable</a> <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>, offset by (<a href='#SkCanvas_drawDrawable_2_x'>x</a>, <a href='#SkCanvas_drawDrawable_2_y'>y</a>).
+Draws <a href='undocumented#Drawable'>Drawable</a> <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> using <a href='#Clip'>Clip</a> and <a href='#Matrix'>Matrix</a>, offset by (<a href='#SkCanvas_drawDrawable_2_x'>x</a>, <a href='#SkCanvas_drawDrawable_2_y'>y</a>).
If <a href='#Canvas'>Canvas</a> has an asynchronous implementation, as is the case
when it is recording into <a href='SkPicture_Reference#Picture'>Picture</a>, then <a href='#SkCanvas_drawDrawable_2_drawable'>drawable</a> will be referenced,
@@ -7013,7 +7022,7 @@ immediate drawing, call <a href='undocumented#SkDrawable_draw'>SkDrawable::draw(
void <a href='#SkCanvas_drawAnnotation'>drawAnnotation</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const char key[], <a href='undocumented#SkData'>SkData</a>* value)
</pre>
-Associate <a href='SkRect_Reference#Rect'>Rect</a> on <a href='#Canvas'>Canvas</a> with an annotation; a <a href='#SkCanvas_drawAnnotation_key'>key</a>-<a href='#SkCanvas_drawAnnotation_value'>value</a> pair, where the <a href='#SkCanvas_drawAnnotation_key'>key</a> is
+Associates <a href='SkRect_Reference#Rect'>Rect</a> on <a href='#Canvas'>Canvas</a> with an annotation; a <a href='#SkCanvas_drawAnnotation_key'>key</a>-<a href='#SkCanvas_drawAnnotation_value'>value</a> pair, where the <a href='#SkCanvas_drawAnnotation_key'>key</a> is
a null-terminated utf8 string, and optional <a href='#SkCanvas_drawAnnotation_value'>value</a> is stored as <a href='undocumented#Data'>Data</a>.
Only some canvas implementations, such as recording to <a href='SkPicture_Reference#Picture'>Picture</a>, or drawing to
@@ -7048,7 +7057,7 @@ Only some canvas implementations, such as recording to <a href='SkPicture_Refere
void <a href='#SkCanvas_drawAnnotation'>drawAnnotation</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const char key[], const <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkData'>SkData</a>&gt;& value)
</pre>
-Associate <a href='SkRect_Reference#Rect'>Rect</a> on <a href='#Canvas'>Canvas</a> when an annotation; a <a href='#SkCanvas_drawAnnotation_2_key'>key</a>-<a href='#SkCanvas_drawAnnotation_2_value'>value</a> pair, where the <a href='#SkCanvas_drawAnnotation_2_key'>key</a> is
+Associates <a href='SkRect_Reference#Rect'>Rect</a> on <a href='#Canvas'>Canvas</a> when an annotation; a <a href='#SkCanvas_drawAnnotation_2_key'>key</a>-<a href='#SkCanvas_drawAnnotation_2_value'>value</a> pair, where the <a href='#SkCanvas_drawAnnotation_2_key'>key</a> is
a null-terminated utf8 string, and optional <a href='#SkCanvas_drawAnnotation_2_value'>value</a> is stored as <a href='undocumented#Data'>Data</a>.
Only some canvas implementations, such as recording to <a href='SkPicture_Reference#Picture'>Picture</a>, or drawing to
diff --git a/site/user/api/SkColor_Reference.md b/site/user/api/SkColor_Reference.md
index 11920e670c..cb497f6537 100644
--- a/site/user/api/SkColor_Reference.md
+++ b/site/user/api/SkColor_Reference.md
@@ -477,7 +477,7 @@ opaque colors and masks. Their use is not required.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_AlphaTRANSPARENT'><code>SK_AlphaTRANSPARENT</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x00</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_Constants_Transparent'>Alpha&nbsp;Constants&nbsp;Transparent</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Transparent'>Transparent</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully transparent <a href='#SkAlpha'>SkAlpha</a> value. <a href='#SkAlpha'>SkAlpha</a> ranges from zero,
fully transparent; to 255, fully opaque.
@@ -486,7 +486,7 @@ fully transparent; to 255, fully opaque.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_AlphaOPAQUE'><code>SK_AlphaOPAQUE</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_Constants_Opaque'>Alpha&nbsp;Constants&nbsp;Opaque</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Opaque'>Opaque</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque <a href='#SkAlpha'>SkAlpha</a> value. <a href='#SkAlpha'>SkAlpha</a> ranges from zero,
fully transparent; to 255, fully opaque.
@@ -621,7 +621,7 @@ The values chosen for names may not be the same as values used by
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorTRANSPARENT'><code>SK_ColorTRANSPARENT</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x00000000</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Constants_Transparent'>Color&nbsp;Constants&nbsp;Transparent</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Transparent'>Transparent</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully transparent <a href='#SkColor'>SkColor</a>. May be used to initialize a destination
containing a mask or a non-rectangular image.
@@ -630,7 +630,7 @@ containing a mask or a non-rectangular image.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SK_ColorBLACK'><code>SK_ColorBLACK</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0xFF000000</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Constants_Black'>Color&nbsp;Constants&nbsp;Black</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Black'>Black</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Represents fully opaque black.
</td>
diff --git a/site/user/api/SkImageInfo_Reference.md b/site/user/api/SkImageInfo_Reference.md
index 0edfe5baf5..e1642271be 100644
--- a/site/user/api/SkImageInfo_Reference.md
+++ b/site/user/api/SkImageInfo_Reference.md
@@ -197,7 +197,7 @@ components improve performance.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kOpaque_SkAlphaType'><code>kOpaque_SkAlphaType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_Type_Opaque'>Alpha&nbsp;Type&nbsp;Opaque</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Opaque'>Opaque</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Pixels are opaque. The <a href='#Color_Type'>Color Type</a> must have no explicit alpha
component, or all alpha components must be set to their maximum value.
@@ -206,7 +206,7 @@ component, or all alpha components must be set to their maximum value.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kPremul_SkAlphaType'><code>kPremul_SkAlphaType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_Type_Premul'>Alpha&nbsp;Type&nbsp;Premul</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Premul'>Premul</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Pixels have <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='undocumented#Premultiply'>Premultiplied</a> into color components.
<a href='SkSurface_Reference#Surface'>Surface</a> pixels must be <a href='undocumented#Premultiply'>Premultiplied</a>.
@@ -215,7 +215,7 @@ Pixels have <a href='SkColor_Reference#Alpha'>Alpha</a> <a href='undocumented#Pr
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kUnpremul_SkAlphaType'><code>kUnpremul_SkAlphaType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_Type_Unpremul'>Alpha&nbsp;Type&nbsp;Unpremul</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Unpremul'>Unpremul</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='undocumented#Pixel'>Pixel</a> color component values are independent of alpha value.
Images generated from encoded data like PNG do not <a href='undocumented#Premultiply'>Premultiply</a> pixel color
@@ -375,7 +375,7 @@ encoding format and size is unknown.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kAlpha_8_SkColorType'><code>kAlpha_8_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_Alpha_8'>Color&nbsp;Type&nbsp;Alpha&nbsp;8</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Alpha_8'>Alpha&nbsp;8</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 8-bit byte pixel encoding that represents transparency. Value of zero
is completely transparent; a value of 255 is completely opaque.
@@ -384,7 +384,7 @@ is completely transparent; a value of 255 is completely opaque.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_565_SkColorType'><code>kRGB_565_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_565'>Color&nbsp;Type&nbsp;RGB&nbsp;565</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_565'>RGB&nbsp;565</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 16-bit word pixel encoding that contains five bits of blue,
six bits of green, and five bits of red.
@@ -393,7 +393,7 @@ six bits of green, and five bits of red.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kARGB_4444_SkColorType'><code>kARGB_4444_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_ARGB_4444'>Color&nbsp;Type&nbsp;ARGB&nbsp;4444</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#ARGB_4444'>ARGB&nbsp;4444</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 16-bit word pixel encoding that contains four bits of alpha,
four bits of blue, four bits of green, and four bits of red.
@@ -402,7 +402,7 @@ four bits of blue, four bits of green, and four bits of red.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_8888_SkColorType'><code>kRGBA_8888_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_8888'>Color&nbsp;Type&nbsp;RGBA&nbsp;8888</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_8888'>RGBA&nbsp;8888</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 32-bit word pixel encoding that contains eight bits of red,
eight bits of green, eight bits of blue, and eight bits of alpha.
@@ -411,7 +411,7 @@ eight bits of green, eight bits of blue, and eight bits of alpha.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_888x_SkColorType'><code>kRGB_888x_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_888'>Color&nbsp;Type&nbsp;RGB&nbsp;888</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_888'>RGB&nbsp;888</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 32-bit word pixel encoding that contains eight bits of red,
eight bits of green, eight bits of blue, and eight unused bits.
@@ -420,7 +420,7 @@ eight bits of green, eight bits of blue, and eight unused bits.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kBGRA_8888_SkColorType'><code>kBGRA_8888_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_BGRA_8888'>Color&nbsp;Type&nbsp;BGRA&nbsp;8888</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#BGRA_8888'>BGRA&nbsp;8888</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 32-bit word pixel encoding that contains eight bits of blue,
eight bits of green, eight bits of red, and eight bits of alpha.
@@ -429,7 +429,7 @@ eight bits of green, eight bits of red, and eight bits of alpha.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_1010102_SkColorType'><code>kRGBA_1010102_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_1010102'>Color&nbsp;Type&nbsp;RGBA&nbsp;1010102</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_1010102'>RGBA&nbsp;1010102</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 32-bit word pixel encoding that contains ten bits of red,
ten bits of green, ten bits of blue, and two bits of alpha.
@@ -438,7 +438,7 @@ ten bits of green, ten bits of blue, and two bits of alpha.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGB_101010x_SkColorType'><code>kRGB_101010x_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGB_101010'>Color&nbsp;Type&nbsp;RGB&nbsp;101010</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGB_101010'>RGB&nbsp;101010</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 32-bit word pixel encoding that contains ten bits of red,
ten bits of green, ten bits of blue, and two unused bits.
@@ -447,7 +447,7 @@ ten bits of green, ten bits of blue, and two unused bits.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kGray_8_SkColorType'><code>kGray_8_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_Gray_8'>Color&nbsp;Type&nbsp;Gray&nbsp;8</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Gray_8'>Gray&nbsp;8</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 8-bit byte pixel encoding that equivalent to equal values for red,
blue, and green, representing colors from black to white.
@@ -456,7 +456,7 @@ blue, and green, representing colors from black to white.
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_F16_SkColorType'><code>kRGBA_F16_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_F16'>Color&nbsp;Type&nbsp;RGBA&nbsp;F16</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_F16'>RGBA&nbsp;F16</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 64-bit word pixel encoding that contains 16 bits of blue,
16 bits of green, 16 bits of red, and 16 bits of alpha. Each component
@@ -466,7 +466,7 @@ is encoded as a half float.
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='kRGBA_F32_SkColorType'><code>kRGBA_F32_SkColorType</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Type_RGBA_F32'>Color&nbsp;Type&nbsp;RGBA&nbsp;F32</a>&nbsp;</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#RGBA_F32'>RGBA&nbsp;F32</a>&nbsp;</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
Stores 128-bit word pixel encoding that contains 32 bits of blue,
32 bits of green, 32 bits of red, and 32 bits of alpha. Each component
diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md
index fc6a7e9d00..eec6966d98 100644
--- a/site/user/api/SkImage_Reference.md
+++ b/site/user/api/SkImage_Reference.md
@@ -2300,7 +2300,7 @@ partial or full <a href='#Image'>Image</a>, or nullptr
### Example
-<div><fiddle-embed name="4f153cf1d0dbe1a95acf5badeec14dae"></fiddle-embed></div>
+<div><fiddle-embed name="93669037c9eb9d142e7776b9f936fa96"></fiddle-embed></div>
### See Also
diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md
index 4c891add50..617ccc8915 100644
--- a/site/user/api/SkMatrix_Reference.md
+++ b/site/user/api/SkMatrix_Reference.md
@@ -680,6 +680,8 @@ Sets <a href='#Matrix'>Matrix</a> to scale by (<a href='#SkMatrix_MakeScale_sx'>
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_MakeScale_sx'><code><strong>sx</strong></code></a></td>
@@ -718,6 +720,8 @@ Sets <a href='#Matrix'>Matrix</a> to <a href='#SkMatrix_MakeScale_2_scale'>scale
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_MakeScale_2_scale'><code><strong>scale</strong></code></a></td>
@@ -754,6 +758,8 @@ Sets <a href='#Matrix'>Matrix</a> to translate by (<a href='#SkMatrix_MakeTrans_
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_MakeTrans_dx'><code><strong>dx</strong></code></a></td>
@@ -795,6 +801,8 @@ Sets <a href='#Matrix'>Matrix</a> to:
| pers0 pers1 pers2 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_MakeAll_scaleX'><code><strong>scaleX</strong></code></a></td>
@@ -1076,6 +1084,8 @@ Returns true if <a href='#Matrix'>Matrix</a> is identity. Identity matrix is:
| 0 0 1 |
</pre>
+.
+
### Return Value
true if <a href='#Matrix'>Matrix</a> has no effect
@@ -1115,6 +1125,8 @@ contain only scale elements, only translate elements, or both. <a href='#Matrix'
| 0 0 1 |
</pre>
+.
+
### Return Value
true if <a href='#Matrix'>Matrix</a> is identity; or scales, translates, or both
@@ -1155,6 +1167,8 @@ Returns true if <a href='#Matrix'>Matrix</a> is identity, or translates. <a href
| 0 0 1 |
</pre>
+.
+
### Return Value
true if <a href='#Matrix'>Matrix</a> is identity, or translates
@@ -2472,6 +2486,8 @@ Sets all values from parameters. Sets matrix to:
| persp0 persp1 persp2 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_setAll_scaleX'><code><strong>scaleX</strong></code></a></td>
@@ -2570,6 +2586,8 @@ Sets matrix to:
| buffer[6] buffer[7] buffer[8] |
</pre>
+.
+
In the future, <a href='#SkMatrix_set9'>set9</a> followed by <a href='#SkMatrix_get9'>get9</a> may not return the same values. Since <a href='#Matrix'>Matrix</a>
maps non-homogeneous coordinates, scaling all nine values produces an equivalent
transformation, possibly improving precision.
@@ -2606,6 +2624,8 @@ Sets <a href='#Matrix'>Matrix</a> to identity; which has no effect on mapped <a
| 0 0 1 |
</pre>
+.
+
Also called <a href='#SkMatrix_setIdentity'>setIdentity</a>; use the one that provides better inline
documentation.
@@ -2642,6 +2662,8 @@ Sets <a href='#Matrix'>Matrix</a> to identity; which has no effect on mapped <a
| 0 0 1 |
</pre>
+.
+
Also called <a href='#SkMatrix_reset'>reset</a>; use the one that provides better inline
documentation.
@@ -3037,6 +3059,8 @@ a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_setConcat_a'><code><strong>a</strong></code></a></td>
@@ -3085,6 +3109,8 @@ Matrix * T(dx, dy) = | D E F | | 0 1 dy | = | D E D*dx+E*dy+F |
| G H I | | 0 0 1 | | G H G*dx+H*dy+I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preTranslate_dx'><code><strong>dx</strong></code></a></td>
@@ -3139,6 +3165,8 @@ Matrix * S(sx, sy, px, py) = | D E F | | 0 sy dy | = | D*sx E*sy D*dx+E*dy+F |
| G H I | | 0 0 1 | | G*sx H*sy G*dx+H*dy+I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preScale_sx'><code><strong>sx</strong></code></a></td>
@@ -3191,6 +3219,8 @@ Matrix * S(sx, sy) = | D E F | | 0 sy 0 | = | D*sx E*sy F |
| G H I | | 0 0 1 | | G*sx H*sy I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preScale_2_sx'><code><strong>sx</strong></code></a></td>
@@ -3249,6 +3279,8 @@ Matrix * R(degrees, px, py) = | D E F | | s c dy | = | Dc+Es -Ds+Ec D*dx+E*dy+F
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc G*dx+H*dy+I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preRotate_degrees'><code><strong>degrees</strong></code></a></td>
@@ -3307,6 +3339,8 @@ Matrix * R(degrees, px, py) = | D E F | | s c 0 | = | Dc+Es -Ds+Ec F |
| G H I | | 0 0 1 | | Gc+Hs -Gs+Hc I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preRotate_2_degrees'><code><strong>degrees</strong></code></a></td>
@@ -3358,6 +3392,8 @@ Matrix * K(kx, ky, px, py) = | D E F | | ky 1 dy | = | D+E*ky D*kx+E D*dx+E*dy+
| G H I | | 0 0 1 | | G+H*ky G*kx+H G*dx+H*dy+I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preSkew_kx'><code><strong>kx</strong></code></a></td>
@@ -3410,6 +3446,8 @@ Matrix * K(kx, ky) = | D E F | | ky 1 0 | = | D+E*ky D*kx+E F |
| G H I | | 0 0 1 | | G+H*ky G*kx+H I |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preSkew_2_kx'><code><strong>kx</strong></code></a></td>
@@ -3456,6 +3494,8 @@ Matrix * other = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_preConcat_other'><code><strong>other</strong></code></a></td>
@@ -3501,6 +3541,8 @@ T(dx, dy) * Matrix = | 0 1 dy | | M N O | = | M+dy*P N+dy*Q O+dy*R |
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postTranslate_dx'><code><strong>dx</strong></code></a></td>
@@ -3556,6 +3598,8 @@ S(sx, sy, px, py) * Matrix = | 0 sy dy | | M N O | = | sy*M+dy*P sy*N+dy*Q sy*O
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postScale_sx'><code><strong>sx</strong></code></a></td>
@@ -3608,6 +3652,8 @@ S(sx, sy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postScale_2_sx'><code><strong>sx</strong></code></a></td>
@@ -3663,6 +3709,8 @@ I(divx, divy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O |
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postIDiv_divx'><code><strong>divx</strong></code></a></td>
@@ -3725,6 +3773,8 @@ R(degrees, px, py) * Matrix = |s c dy| |M N O| = |sJ+cM+dy*P sK+cN+dy*Q sL+cO+d
|0 0 1| |P Q R| | P Q R|
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postRotate_degrees'><code><strong>degrees</strong></code></a></td>
@@ -3783,6 +3833,8 @@ R(degrees, px, py) * Matrix = | s c dy | | M N O | = | sJ+cM sK+cN sL+cO |
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postRotate_2_degrees'><code><strong>degrees</strong></code></a></td>
@@ -3834,6 +3886,8 @@ K(kx, ky, px, py) * Matrix = |ky 1 dy| |M N O| = |ky*J+M+dy*P ky*K+N+dy*Q ky*L+
| 0 0 1| |P Q R| | P Q R|
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postSkew_kx'><code><strong>kx</strong></code></a></td>
@@ -3886,6 +3940,8 @@ K(kx, ky) * Matrix = | ky 1 0 | | M N O | = | ky*J+M ky*K+N ky*L+O |
| 0 0 1 | | P Q R | | P Q R |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postSkew_2_kx'><code><strong>kx</strong></code></a></td>
@@ -3932,6 +3988,8 @@ other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_postConcat_other'><code><strong>other</strong></code></a></td>
@@ -4035,6 +4093,8 @@ Returns true if <a href='#SkMatrix_setRectToRect_dst'>dst</a> is empty, and sets
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_setRectToRect_src'><code><strong>src</strong></code></a></td>
@@ -4096,6 +4156,8 @@ empty, returns <a href='#Matrix'>Matrix</a> set to:
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_MakeRectToRect_src'><code><strong>src</strong></code></a></td>
@@ -4229,6 +4291,8 @@ Sets <a href='#SkMatrix_SetAffineIdentity_affine'>affine</a> to:
| 0 1 0 |
</pre>
+.
+
Affine 3x2 matrices in column major order are used by OpenGL and XPS.
### Parameters
@@ -4270,6 +4334,8 @@ Fills <a href='#SkMatrix_asAffine_affine'>affine</a> in column major order. Sets
| skew-y scale-y translate-y |
</pre>
+.
+
If <a href='#Matrix'>Matrix</a> contains perspective, returns false and leaves <a href='#SkMatrix_asAffine_affine'>affine</a> unchanged.
### Parameters
@@ -4324,6 +4390,8 @@ column, then row, as:
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_setAffine_affine'><code><strong>affine</strong></code></a></td>
@@ -4471,6 +4539,8 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
<a href='#SkMatrix_mapPoints_src'>src</a> and <a href='#SkMatrix_mapPoints_dst'>dst</a> may point to the same storage.
### Parameters
@@ -4528,6 +4598,8 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapPoints_2_pts'><code><strong>pts</strong></code></a></td>
@@ -4572,6 +4644,8 @@ Matrix * src = |D E F| |y| = |Ax+By+Cz Dx+Ey+Fz Gx+Hy+Iz|
|G H I| |z|
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapHomogeneousPoints_dst'><code><strong>dst</strong></code></a></td>
@@ -4618,6 +4692,8 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapXY_x'><code><strong>x</strong></code></a></td>
@@ -4663,6 +4739,8 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapXY_2_x'><code><strong>x</strong></code></a></td>
@@ -4778,6 +4856,8 @@ Matrix * vec = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapVectors_2_vecs'><code><strong>vecs</strong></code></a></td>
@@ -4822,6 +4902,8 @@ Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- ,
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapVector_dx'><code><strong>dx</strong></code></a></td>
@@ -4868,6 +4950,8 @@ Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- ,
|G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapVector_2_dx'><code><strong>dx</strong></code></a></td>
@@ -5022,6 +5106,8 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
|G H I| |1| Gx+Hy+I Gx+Hy+I
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_mapRectToQuad_dst'><code><strong>dst</strong></code></a></td>
@@ -5491,7 +5577,7 @@ Returns true if <a href='#SkMatrix_decomposeScale_scale'>scale</a> components ar
unchanged if <a href='#Matrix'>Matrix</a> contains perspective; <a href='#SkMatrix_decomposeScale_scale'>scale</a> factors are not finite, or
are nearly zero.
-On success<a href='#Matrix'>Matrix</a> = <a href='#SkMatrix_decomposeScale_scale'>scale</a> * Remaining
+On success<a href='#Matrix'>Matrix</a> = <a href='#SkMatrix_decomposeScale_scale'>scale</a> * Remaining.
### Parameters
@@ -5543,6 +5629,8 @@ Returns reference to const identity <a href='#Matrix'>Matrix</a>. Returned <a hr
| 0 0 1 |
</pre>
+.
+
### Return Value
const identity <a href='#Matrix'>Matrix</a>
@@ -5582,6 +5670,8 @@ to:
| SK_ScalarMax SK_ScalarMax SK_ScalarMax |
</pre>
+.
+
### Return Value
const invalid <a href='#Matrix'>Matrix</a>
@@ -5629,6 +5719,8 @@ a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR |
| G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_Concat_a'><code><strong>a</strong></code></a></td>
@@ -5701,6 +5793,8 @@ Initializes <a href='#Matrix'>Matrix</a> with scale and translate elements.
| 0 0 1 |
</pre>
+.
+
### Parameters
<table> <tr> <td><a name='SkMatrix_setScaleTranslate_sx'><code><strong>sx</strong></code></a></td>
diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md
index c63d3cad40..342579d231 100644
--- a/site/user/api/SkPaint_Reference.md
+++ b/site/user/api/SkPaint_Reference.md
@@ -1661,7 +1661,7 @@ The lines are drawn into <a href='SkBitmap_Reference#Bitmap'>Bitmap</a>, then dr
bool <a href='#SkPaint_isAntiAlias'>isAntiAlias</a>() const
</pre>
-If true, pixels on the active edges of <a href='SkPath_Reference#Path'>Path</a> may be drawn with partial transparency.
+Returns true if pixels on the active edges of <a href='SkPath_Reference#Path'>Path</a> may be drawn with partial transparency.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kAntiAlias_Flag'>kAntiAlias Flag</a>.
@@ -1757,7 +1757,7 @@ dither, making it easier to see.
bool <a href='#SkPaint_isDither'>isDither</a>() const
</pre>
-If true, color error may be distributed to smooth color transition.
+Returns true if color error may be distributed to smooth color transition.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kDither_Flag'>kDither Flag</a>.
@@ -1860,7 +1860,7 @@ If <a href='#SkPaint_kLinearText_Flag'>kLinearText Flag</a> is clear, it is the
bool <a href='#SkPaint_isLinearText'>isLinearText</a>() const
</pre>
-If true, text is converted to <a href='SkPath_Reference#Path'>Path</a> before drawing and measuring.
+Returns true if text is converted to <a href='SkPath_Reference#Path'>Path</a> before drawing and measuring.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kLinearText_Flag'>kLinearText Flag</a>.
@@ -1885,7 +1885,7 @@ Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkP
void <a href='#SkPaint_setLinearText'>setLinearText</a>(bool linearText)
</pre>
-If true, text is converted to <a href='SkPath_Reference#Path'>Path</a> before drawing and measuring.
+Returns true if text is converted to <a href='SkPath_Reference#Path'>Path</a> before drawing and measuring.
By default, <a href='#SkPaint_kLinearText_Flag'>kLinearText Flag</a> is clear.
Sets <a href='#SkPaint_kLinearText_Flag'>kLinearText Flag</a> if <a href='#SkPaint_setLinearText_linearText'>linearText</a> is true.
@@ -1921,7 +1921,7 @@ of the color increases, the edge of the glyph appears to move towards the outsid
bool <a href='#SkPaint_isSubpixelText'>isSubpixelText</a>() const
</pre>
-If true, <a href='undocumented#Glyph'>Glyphs</a> at different sub-pixel positions may differ on pixel edge coverage.
+Returns true if <a href='undocumented#Glyph'>Glyphs</a> at different sub-pixel positions may differ on pixel edge coverage.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kSubpixelText_Flag'>kSubpixelText Flag</a>.
@@ -1992,7 +1992,7 @@ the color components as RGB or BGR.
bool <a href='#SkPaint_isLCDRenderText'>isLCDRenderText</a>() const
</pre>
-If true, <a href='undocumented#Glyph'>Glyphs</a> may use LCD striping to improve glyph edges.
+Returns true if <a href='undocumented#Glyph'>Glyphs</a> may use LCD striping to improve glyph edges.
Returns true if <a href='#SkPaint_Flags'>Flags</a> <a href='#SkPaint_kLCDRenderText_Flag'>kLCDRenderText Flag</a> is set.
@@ -2095,7 +2095,7 @@ Windows may select the bitmap glyph but is not required to do so.
bool <a href='#SkPaint_isEmbeddedBitmapText'>isEmbeddedBitmapText</a>() const
</pre>
-If true, <a href='undocumented#Engine'>Font Engine</a> may return <a href='undocumented#Glyph'>Glyphs</a> from font bitmaps instead of from outlines.
+Returns true if <a href='undocumented#Engine'>Font Engine</a> may return <a href='undocumented#Glyph'>Glyphs</a> from font bitmaps instead of from outlines.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kEmbeddedBitmapText_Flag'>kEmbeddedBitmapText Flag</a>.
@@ -2167,9 +2167,9 @@ instructs the <a href='undocumented#Font_Manager'>Font Manager</a> to always hin
bool <a href='#SkPaint_isAutohinted'>isAutohinted</a>() const
</pre>
-If true, and if <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='#SkPaint_kNormal_Hinting'>kNormal Hinting</a> or <a href='#SkPaint_kFull_Hinting'>kFull Hinting</a>, and if
-platform uses FreeType as the <a href='undocumented#Font_Manager'>Font Manager</a>, instruct the <a href='undocumented#Font_Manager'>Font Manager</a> to always hint
-<a href='undocumented#Glyph'>Glyphs</a>.
+Returns true if <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='#SkPaint_kNormal_Hinting'>kNormal Hinting</a> or <a href='#SkPaint_kFull_Hinting'>kFull Hinting</a>, and if
+platform uses FreeType as the <a href='undocumented#Font_Manager'>Font Manager</a>. If true, instructs
+the <a href='undocumented#Font_Manager'>Font Manager</a> to always hint <a href='undocumented#Glyph'>Glyphs</a>.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kAutoHinting_Flag'>kAutoHinting Flag</a>.
@@ -2203,8 +2203,9 @@ paint.isAutohinted() == !!(paint.getFlags() & SkPaint::kAutoHinting_Flag)
void <a href='#SkPaint_setAutohinted'>setAutohinted</a>(bool useAutohinter)
</pre>
+Sets whether to always hint <a href='undocumented#Glyph'>Glyphs</a>.
If <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='#SkPaint_kNormal_Hinting'>kNormal Hinting</a> or <a href='#SkPaint_kFull_Hinting'>kFull Hinting</a> and <a href='#SkPaint_setAutohinted_useAutohinter'>useAutohinter</a> is set,
-instruct the <a href='undocumented#Font_Manager'>Font Manager</a> to always hint <a href='undocumented#Glyph'>Glyphs</a>.
+instructs the <a href='undocumented#Font_Manager'>Font Manager</a> to always hint <a href='undocumented#Glyph'>Glyphs</a>.
<a href='#Automatic_Hinting'>Automatic Hinting</a> has no effect if <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='#SkPaint_kNo_Hinting'>kNo Hinting</a> or
<a href='#SkPaint_kSlight_Hinting'>kSlight Hinting</a>.
@@ -2263,7 +2264,7 @@ into glyph series.
bool <a href='#SkPaint_isVerticalText'>isVerticalText</a>() const
</pre>
-If true, <a href='undocumented#Glyph'>Glyphs</a> are drawn top to bottom instead of left to right.
+Returns true if <a href='undocumented#Glyph'>Glyphs</a> are drawn top to bottom instead of left to right.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kVerticalText_Flag'>kVerticalText Flag</a>.
@@ -2293,7 +2294,7 @@ paint.isVerticalText() == !!(paint.getFlags() & SkPaint::kVerticalText_Flag)
void <a href='#SkPaint_setVerticalText'>setVerticalText</a>(bool verticalText)
</pre>
-If true, text advance positions the next glyph below the previous glyph instead of to the
+Returns true if text advance positions the next glyph below the previous glyph instead of to the
right of previous glyph.
Sets <a href='#SkPaint_kVerticalText_Flag'>kVerticalText Flag</a> if vertical is true.
@@ -2346,7 +2347,7 @@ by increasing the stroke width and setting the <a href='#SkPaint_Style'>Style</a
bool <a href='#SkPaint_isFakeBoldText'>isFakeBoldText</a>() const
</pre>
-If true, approximate bold by increasing the stroke width when creating glyph bitmaps
+Returns true if approximate bold by increasing the stroke width when creating glyph bitmaps
from outlines.
Equivalent to <a href='#SkPaint_getFlags'>getFlags</a> masked with <a href='#SkPaint_kFakeBoldText_Flag'>kFakeBoldText Flag</a>.
@@ -2377,7 +2378,7 @@ paint.isFakeBoldText() == !!(paint.getFlags() & SkPaint::kFakeBoldText_Flag)
void <a href='#SkPaint_setFakeBoldText'>setFakeBoldText</a>(bool fakeBoldText)
</pre>
-Use increased stroke width when creating glyph bitmaps to approximate a bold typeface.
+Increases stroke width when creating glyph bitmaps to approximate a bold typeface.
Sets <a href='#SkPaint_kFakeBoldText_Flag'>kFakeBoldText Flag</a> if <a href='#SkPaint_setFakeBoldText_fakeBoldText'>fakeBoldText</a> is true.
Clears <a href='#SkPaint_kFakeBoldText_Flag'>kFakeBoldText Flag</a> if <a href='#SkPaint_setFakeBoldText_fakeBoldText'>fakeBoldText</a> is false.
@@ -2844,7 +2845,7 @@ May be used to verify that <a href='#SkPaint_Style'>Style</a> is a legal value.
<a href='#SkPaint_Style'>Style</a> <a href='#SkPaint_getStyle'>getStyle</a>() const
</pre>
-Whether the geometry is filled, stroked, or filled and stroked.
+Returns whether the geometry is filled, stroked, or filled and stroked.
### Return Value
@@ -3027,7 +3028,7 @@ by a bevel join.
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPaint_getStrokeMiter'>getStrokeMiter</a>() const
</pre>
-The limit at which a sharp corner is drawn beveled.
+Returns the limit at which a sharp corner is drawn beveled.
### Return Value
@@ -3058,7 +3059,7 @@ default miter limit == 4
void <a href='#SkPaint_setStrokeMiter'>setStrokeMiter</a>(<a href='undocumented#SkScalar'>SkScalar</a> miter)
</pre>
-The limit at which a sharp corner is drawn beveled.
+Sets the limit at which a sharp corner is drawn beveled.
Valid values are zero and greater.
Has no effect if <a href='#SkPaint_setStrokeMiter_miter'>miter</a> is less than zero.
@@ -3186,7 +3187,7 @@ at the contour point.
<a href='#SkPaint_Cap'>Cap</a> <a href='#SkPaint_getStrokeCap'>getStrokeCap</a>() const
</pre>
-The geometry drawn at the beginning and end of strokes.
+Returns the geometry drawn at the beginning and end of strokes.
### Return Value
@@ -3217,7 +3218,7 @@ kButt_Cap == default stroke cap
void <a href='#SkPaint_setStrokeCap'>setStrokeCap</a>(<a href='#SkPaint_Cap'>Cap</a> cap)
</pre>
-The geometry drawn at the beginning and end of strokes.
+Sets the geometry drawn at the beginning and end of strokes.
### Parameters
@@ -3352,7 +3353,7 @@ May be used to verify that <a href='#Stroke_Join'>Stroke Join</a> is a legal val
<a href='#SkPaint_Join'>Join</a> <a href='#SkPaint_getStrokeJoin'>getStrokeJoin</a>() const
</pre>
-The geometry drawn at the corners of strokes.
+Returns the geometry drawn at the corners of strokes.
### Return Value
@@ -3383,7 +3384,7 @@ kMiter_Join == default stroke join
void <a href='#SkPaint_setStrokeJoin'>setStrokeJoin</a>(<a href='#SkPaint_Join'>Join</a> join)
</pre>
-The geometry drawn at the corners of strokes.
+Sets the geometry drawn at the corners of strokes.
### Parameters
@@ -3442,7 +3443,7 @@ returns false since <a href='#Style_Hairline'>Hairline</a> has no filled equival
bool <a href='#SkPaint_getFillPath'>getFillPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& src, <a href='SkPath_Reference#SkPath'>SkPath</a>* dst, const <a href='SkRect_Reference#SkRect'>SkRect</a>* cullRect, <a href='undocumented#SkScalar'>SkScalar</a> resScale = 1) const
</pre>
-The filled equivalent of the stroked path.
+Returns the filled equivalent of the stroked path.
### Parameters
@@ -3480,7 +3481,7 @@ At the highest precision, the filled path has high fidelity compared to the orig
bool <a href='#SkPaint_getFillPath'>getFillPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& src, <a href='SkPath_Reference#SkPath'>SkPath</a>* dst) const
</pre>
-The filled equivalent of the stroked path.
+Returns the filled equivalent of the stroked path.
Replaces <a href='#SkPaint_getFillPath_2_dst'>dst</a> with the <a href='#SkPaint_getFillPath_2_src'>src</a> path modified by <a href='undocumented#Path_Effect'>Path Effect</a> and <a href='#Style_Stroke'>Style Stroke</a>.
<a href='undocumented#Path_Effect'>Path Effect</a>, if any, is not culled. <a href='#Stroke_Width'>Stroke Width</a> is created with default precision.
@@ -3538,7 +3539,7 @@ If <a href='undocumented#Shader'>Shader</a> generates only <a href='SkColor_Refe
<a href='undocumented#SkShader'>SkShader</a>* <a href='#SkPaint_getShader'>getShader</a>() const
</pre>
-Optional colors used when filling a path, such as a gradient.
+Returns optional colors used when filling a path, such as a gradient.
Does not alter <a href='undocumented#Shader'>Shader</a> <a href='undocumented#Reference_Count'>Reference Count</a>.
@@ -3568,7 +3569,7 @@ nullptr != shader
<a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkShader'>SkShader</a>&gt; <a href='#SkPaint_refShader'>refShader</a>() const
</pre>
-Optional colors used when filling a path, such as a gradient.
+Returns optional colors used when filling a path, such as a gradient.
Increases <a href='undocumented#Shader'>Shader</a> <a href='undocumented#Reference_Count'>Reference Count</a> by one.
@@ -3598,7 +3599,7 @@ shader unique: false
void <a href='#SkPaint_setShader'>setShader</a>(<a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkShader'>SkShader</a>&gt; shader)
</pre>
-Optional colors used when filling a path, such as a gradient.
+Sets optional colors used when filling a path, such as a gradient.
Sets <a href='undocumented#Shader'>Shader</a> to <a href='#SkPaint_setShader_shader'>shader</a>, decreasing <a href='undocumented#Reference_Count'>Reference Count</a> of the previous <a href='undocumented#Shader'>Shader</a>.
Increments <a href='#SkPaint_setShader_shader'>shader</a> <a href='undocumented#Reference_Count'>Reference Count</a> by one.
@@ -5131,7 +5132,7 @@ If <a href='#SkPaint_FontMetrics_kStrikeoutPositionIsValid_Flag'>kStrikeoutPosit
bool <a href='#SkPaint_FontMetrics_hasUnderlineThickness'>hasUnderlineThickness</a>(<a href='undocumented#SkScalar'>SkScalar</a>* thickness) const
</pre>
-If <a href='#Font_Metrics'>Font Metrics</a> has a valid underline <a href='#SkPaint_FontMetrics_hasUnderlineThickness_thickness'>thickness</a>, return true, and set
+Returns true if <a href='#Font_Metrics'>Font Metrics</a> has a valid underline <a href='#SkPaint_FontMetrics_hasUnderlineThickness_thickness'>thickness</a>, and sets
<a href='#SkPaint_FontMetrics_hasUnderlineThickness_thickness'>thickness</a> to that value. If the underline <a href='#SkPaint_FontMetrics_hasUnderlineThickness_thickness'>thickness</a> is not valid,
return false, and ignore <a href='#SkPaint_FontMetrics_hasUnderlineThickness_thickness'>thickness</a>.
@@ -5155,7 +5156,7 @@ true if font specifies underline width
bool <a href='#SkPaint_FontMetrics_hasUnderlinePosition'>hasUnderlinePosition</a>(<a href='undocumented#SkScalar'>SkScalar</a>* position) const
</pre>
-If <a href='#Font_Metrics'>Font Metrics</a> has a valid underline <a href='#SkPaint_FontMetrics_hasUnderlinePosition_position'>position</a>, return true, and set
+Returns true if <a href='#Font_Metrics'>Font Metrics</a> has a valid underline <a href='#SkPaint_FontMetrics_hasUnderlinePosition_position'>position</a>, and sets
<a href='#SkPaint_FontMetrics_hasUnderlinePosition_position'>position</a> to that value. If the underline <a href='#SkPaint_FontMetrics_hasUnderlinePosition_position'>position</a> is not valid,
return false, and ignore <a href='#SkPaint_FontMetrics_hasUnderlinePosition_position'>position</a>.
@@ -5179,7 +5180,7 @@ true if font specifies underline <a href='#SkPaint_FontMetrics_hasUnderlinePosit
bool <a href='#SkPaint_FontMetrics_hasStrikeoutThickness'>hasStrikeoutThickness</a>(<a href='undocumented#SkScalar'>SkScalar</a>* thickness) const
</pre>
-If <a href='#Font_Metrics'>Font Metrics</a> has a valid strikeout <a href='#SkPaint_FontMetrics_hasStrikeoutThickness_thickness'>thickness</a>, return true, and set
+Returns true if <a href='#Font_Metrics'>Font Metrics</a> has a valid strikeout <a href='#SkPaint_FontMetrics_hasStrikeoutThickness_thickness'>thickness</a>, and sets
<a href='#SkPaint_FontMetrics_hasStrikeoutThickness_thickness'>thickness</a> to that value. If the underline <a href='#SkPaint_FontMetrics_hasStrikeoutThickness_thickness'>thickness</a> is not valid,
return false, and ignore <a href='#SkPaint_FontMetrics_hasStrikeoutThickness_thickness'>thickness</a>.
@@ -5203,7 +5204,7 @@ true if font specifies strikeout width
bool <a href='#SkPaint_FontMetrics_hasStrikeoutPosition'>hasStrikeoutPosition</a>(<a href='undocumented#SkScalar'>SkScalar</a>* position) const
</pre>
-If <a href='#Font_Metrics'>Font Metrics</a> has a valid strikeout <a href='#SkPaint_FontMetrics_hasStrikeoutPosition_position'>position</a>, return true, and set
+Returns true if <a href='#Font_Metrics'>Font Metrics</a> has a valid strikeout <a href='#SkPaint_FontMetrics_hasStrikeoutPosition_position'>position</a>, and sets
<a href='#SkPaint_FontMetrics_hasStrikeoutPosition_position'>position</a> to that value. If the underline <a href='#SkPaint_FontMetrics_hasStrikeoutPosition_position'>position</a> is not valid,
return false, and ignore <a href='#SkPaint_FontMetrics_hasStrikeoutPosition_position'>position</a>.
@@ -5925,7 +5926,7 @@ number of intersections; may be zero
### Example
-<div><fiddle-embed name="48d963ad4286eddf680f9c511eb6da91"><div><a href='undocumented#Text'>Text</a> intercepts do not take stroke thickness into consideration.
+<div><fiddle-embed name="dc9851c43acc3716aca8c9a4d40d452d"><div><a href='undocumented#Text'>Text</a> intercepts do not take stroke thickness into consideration.
</div></fiddle-embed></div>
---
diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md
index 612f5c44dc..9442e4d14a 100644
--- a/site/user/api/SkPath_Reference.md
+++ b/site/user/api/SkPath_Reference.md
@@ -906,7 +906,7 @@ contour travels counterclockwise</td>
<a href='#SkPath'>SkPath</a>()
</pre>
-By default, <a href='#Path'>Path</a> has no <a href='#Verb'>Verbs</a>, no <a href='SkPoint_Reference#Point'>Points</a>, and no <a href='#Conic_Weight'>Weights</a>.
+Constucts an empty path. By default, <a href='#Path'>Path</a> has no <a href='#Verb'>Verbs</a>, no <a href='SkPoint_Reference#Point'>Points</a>, and no <a href='#Conic_Weight'>Weights</a>.
<a href='#Fill_Type'>Fill Type</a> is set to <a href='#SkPath_kWinding_FillType'>kWinding FillType</a>.
### Return Value
@@ -938,6 +938,7 @@ path is empty
<a href='#SkPath'>SkPath</a>(const <a href='#SkPath'>SkPath</a>& path)
</pre>
+Constructs a copy of an existing <a href='#SkPath_copy_const_SkPath_path'>path</a>.
Copy constructor makes two paths identical by value. Internally, <a href='#SkPath_copy_const_SkPath_path'>path</a> and
the returned result share pointer values. The underlying <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>
and <a href='#Conic_Weight'>Weights</a> are copied when modified.
@@ -1008,6 +1009,7 @@ Releases ownership of any shared data and deletes data if <a href='#Path'>Path</
<a href='#SkPath'>SkPath</a>& <a href='#SkPath_copy_operator'>operator=(const SkPath& path)</a>
</pre>
+Constructs a copy of an existing <a href='#SkPath_copy_operator_path'>path</a>.
<a href='#Path'>Path</a> assignment makes two paths identical by value. Internally, assignment
shares pointer values. The underlying <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a> and <a href='#Conic_Weight'>Weights</a>
are copied when modified.
@@ -1226,7 +1228,7 @@ convexity !=
bool <a href='#SkPath_isInterpolatable'>isInterpolatable</a>(const <a href='#SkPath'>SkPath</a>& compare) const
</pre>
-Return true if <a href='#Path'>Paths</a> contain equal <a href='#Verb'>Verbs</a> and equal <a href='#Conic_Weight'>Weights</a>.
+Returns true if <a href='#Path'>Paths</a> contain equal <a href='#Verb'>Verbs</a> and equal <a href='#Conic_Weight'>Weights</a>.
If <a href='#Path'>Paths</a> contain one or more <a href='#Conic'>Conics</a>, the <a href='#Conic_Weight'>Weights</a> must match.
<a href='#SkPath_conicTo'>conicTo</a> may add different <a href='#Verb'>Verbs</a> depending on <a href='#Conic_Weight'>Conic Weight</a>, so it is not
@@ -1281,7 +1283,7 @@ paths are interpolatable
bool <a href='#SkPath_interpolate'>interpolate</a>(const <a href='#SkPath'>SkPath</a>& ending, <a href='undocumented#SkScalar'>SkScalar</a> weight, <a href='#SkPath'>SkPath</a>* out) const
</pre>
-<a href='#Interpolate'>Interpolate</a> between <a href='#Path'>Paths</a> with <a href='#Point_Array'>Point Array</a> of equal size.
+Interpolates 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='#Conic_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:
(<a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a> * <a href='#SkPath_interpolate_weight'>weight</a>) + <a href='#SkPath_interpolate_ending'>ending</a> <a href='SkPoint_Reference#Point'>Point</a> * (1 - <a href='#SkPath_interpolate_weight'>weight</a>)
@@ -1506,7 +1508,7 @@ default path fill type is inverse: false
void <a href='#SkPath_toggleInverseFillType'>toggleInverseFillType</a>()
</pre>
-Replace <a href='#SkPath_FillType'>FillType</a> with its inverse. The inverse of <a href='#SkPath_FillType'>FillType</a> describes the area
+Replaces <a href='#SkPath_FillType'>FillType</a> with its inverse. The inverse of <a href='#SkPath_FillType'>FillType</a> describes the area
unmodified by the original <a href='#SkPath_FillType'>FillType</a>.
| <a href='#SkPath_FillType'>FillType</a> | toggled <a href='#SkPath_FillType'>FillType</a> |
@@ -1820,6 +1822,7 @@ a newly initialized path.
bool <a href='#SkPath_isEmpty'>isEmpty</a>() const
</pre>
+Returns if <a href='#Path'>Path</a> is empty.
Empty <a href='#Path'>Path</a> may have <a href='#SkPath_FillType'>FillType</a> but has no <a href='SkPoint_Reference#SkPoint'>SkPoint</a>, <a href='#SkPath_Verb'>Verb</a>, or <a href='#Conic_Weight'>Conic Weight</a>.
<a href='#SkPath_empty_constructor'>SkPath()</a> constructs empty <a href='#Path'>Path</a>; <a href='#SkPath_reset'>reset</a> and (rewind) make <a href='#Path'>Path</a> empty.
@@ -1856,6 +1859,7 @@ after reset path is empty
bool <a href='#SkPath_isLastContourClosed'>isLastContourClosed</a>() const
</pre>
+Returns if <a href='#Contour'>Contour</a> is closed.
<a href='#Contour'>Contour</a> is closed if <a href='#Path'>Path</a> <a href='#SkPath_Verb'>Verb</a> array was last modified by <a href='#SkPath_close'>close</a>. When stroked,
closed <a href='#Contour'>Contour</a> draws <a href='SkPaint_Reference#Stroke_Join'>Paint Stroke Join</a> instead of <a href='SkPaint_Reference#Stroke_Cap'>Paint Stroke Cap</a> at first and last <a href='SkPoint_Reference#Point'>Point</a>.
@@ -1974,7 +1978,7 @@ volatile by default is false
void <a href='#SkPath_setIsVolatile'>setIsVolatile</a>(bool <a href='#SkPath_isVolatile'>isVolatile</a>)
</pre>
-Specify whether <a href='#Path'>Path</a> is volatile; whether it will be altered or discarded
+Specifies whether <a href='#Path'>Path</a> is volatile; whether it will be altered or discarded
by the caller after it is drawn. <a href='#Path'>Paths</a> by default have volatile set false, allowing
<a href='undocumented#Device'>Device</a> to attach a cache of data which speeds repeated drawing.
@@ -2011,7 +2015,7 @@ Mark unchanging <a href='#Path'>Path</a> non-volatile to improve repeated render
static bool <a href='#SkPath_IsLineDegenerate'>IsLineDegenerate</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p1, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p2, bool exact)
</pre>
-Test if <a href='undocumented#Line'>Line</a> between <a href='SkPoint_Reference#Point'>Point</a> pair is degenerate.
+Tests if <a href='undocumented#Line'>Line</a> between <a href='SkPoint_Reference#Point'>Point</a> pair is degenerate.
<a href='undocumented#Line'>Line</a> with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -2066,7 +2070,7 @@ line from (100,100) to (100.0001,100.0001) is not degenerate, exactly
static bool <a href='#SkPath_IsQuadDegenerate'>IsQuadDegenerate</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p1, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p2, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p3, bool exact)
</pre>
-Test if <a href='#Quad'>Quad</a> is degenerate.
+Tests if <a href='#Quad'>Quad</a> is degenerate.
<a href='#Quad'>Quad</a> with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -2123,7 +2127,7 @@ static bool <a href='#SkPath_IsCubicDegenerate'>IsCubicDegenerate</a>(const <a h
const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p4, bool exact)
</pre>
-Test if <a href='#Cubic'>Cubic</a> is degenerate.
+Tests if <a href='#Cubic'>Cubic</a> is degenerate.
<a href='#Cubic'>Cubic</a> with no length or that moves a very short distance is degenerate; it is
treated as a point.
@@ -2580,7 +2584,7 @@ rotated circle bounds = 14.6447, 9.64466, 85.3553, 80.3553
void <a href='#SkPath_updateBoundsCache'>updateBoundsCache</a>() const
</pre>
-Update internal bounds so that subsequent calls to <a href='#SkPath_getBounds'>getBounds</a> are instantaneous.
+Updates internal bounds so that subsequent calls to <a href='#SkPath_getBounds'>getBounds</a> are instantaneous.
Unaltered copies of <a href='#Path'>Path</a> may also access cached bounds through <a href='#SkPath_getBounds'>getBounds</a>.
For now, identical to calling <a href='#SkPath_getBounds'>getBounds</a> and ignoring the returned value.
@@ -2696,7 +2700,7 @@ true if <a href='#SkPath_conservativelyContainsRect_rect'>rect</a> is contained
void <a href='#SkPath_incReserve'>incReserve</a>(unsigned extraPtCount)
</pre>
-grows <a href='#Path'>Path</a> <a href='#Verb_Array'>Verb Array</a> and <a href='#Point_Array'>Point Array</a> to contain <a href='#SkPath_incReserve_extraPtCount'>extraPtCount</a> additional <a href='SkPoint_Reference#Point'>Points</a>.
+Grows <a href='#Path'>Path</a> <a href='#Verb_Array'>Verb Array</a> and <a href='#Point_Array'>Point Array</a> to contain <a href='#SkPath_incReserve_extraPtCount'>extraPtCount</a> additional <a href='SkPoint_Reference#Point'>Points</a>.
May improve performance and use less memory by
reducing the number and size of allocations when creating <a href='#Path'>Path</a>.
@@ -3637,7 +3641,7 @@ Direction sweep, SkScalar x, SkScalar y)</a></td>
void <a href='#SkPath_arcTo'>arcTo</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval, <a href='undocumented#SkScalar'>SkScalar</a> startAngle, <a href='undocumented#SkScalar'>SkScalar</a> sweepAngle, bool forceMoveTo)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> added is part of ellipse
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> added is part of ellipse
bounded by <a href='#SkPath_arcTo_oval'>oval</a>, from <a href='#SkPath_arcTo_startAngle'>startAngle</a> through <a href='#SkPath_arcTo_sweepAngle'>sweepAngle</a>. Both <a href='#SkPath_arcTo_startAngle'>startAngle</a> and
<a href='#SkPath_arcTo_sweepAngle'>sweepAngle</a> are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends <a href='#Arc'>Arc</a> clockwise.
@@ -3680,7 +3684,7 @@ is not empty.
void <a href='#SkPath_arcTo'>arcTo</a>(<a href='undocumented#SkScalar'>SkScalar</a> x1, <a href='undocumented#SkScalar'>SkScalar</a> y1, <a href='undocumented#SkScalar'>SkScalar</a> x2, <a href='undocumented#SkScalar'>SkScalar</a> y2, <a href='undocumented#SkScalar'>SkScalar</a> radius)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, after appending <a href='undocumented#Line'>Line</a> if needed. <a href='#Arc'>Arc</a> is implemented by <a href='#Conic'>Conic</a>
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, after appending <a href='undocumented#Line'>Line</a> if needed. <a href='#Arc'>Arc</a> is implemented by <a href='#Conic'>Conic</a>
weighted to describe part of <a href='undocumented#Circle'>Circle</a>. <a href='#Arc'>Arc</a> is contained by tangent from
last <a href='#Path'>Path</a> point (x0, y0) to (<a href='#SkPath_arcTo_2_x1'>x1</a>, <a href='#SkPath_arcTo_2_y1'>y1</a>), and tangent from (<a href='#SkPath_arcTo_2_x1'>x1</a>, <a href='#SkPath_arcTo_2_y1'>y1</a>) to (<a href='#SkPath_arcTo_2_x2'>x2</a>, <a href='#SkPath_arcTo_2_y2'>y2</a>). <a href='#Arc'>Arc</a>
is part of <a href='undocumented#Circle'>Circle</a> sized to <a href='#SkPath_arcTo_2_radius'>radius</a>, positioned so it touches both tangent lines.
@@ -3748,7 +3752,7 @@ conic (79.2893,20),(200,20),(114.645,105.355) weight 0.382683
void <a href='#SkPath_arcTo'>arcTo</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> p1, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> p2, <a href='undocumented#SkScalar'>SkScalar</a> radius)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, after appending <a href='undocumented#Line'>Line</a> if needed. <a href='#Arc'>Arc</a> is implemented by <a href='#Conic'>Conic</a>
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, after appending <a href='undocumented#Line'>Line</a> if needed. <a href='#Arc'>Arc</a> is implemented by <a href='#Conic'>Conic</a>
weighted to describe part of <a href='undocumented#Circle'>Circle</a>. <a href='#Arc'>Arc</a> is contained by tangent from
last <a href='#Path'>Path</a> point to <a href='#SkPath_arcTo_3_p1'>p1</a>, and tangent from <a href='#SkPath_arcTo_3_p1'>p1</a> to <a href='#SkPath_arcTo_3_p2'>p2</a>. <a href='#Arc'>Arc</a>
is part of <a href='undocumented#Circle'>Circle</a> sized to <a href='#SkPath_arcTo_3_radius'>radius</a>, positioned so it touches both tangent lines.
@@ -3846,7 +3850,7 @@ void <a href='#SkPath_arcTo'>arcTo</a>(<a href='undocumented#SkScalar'>SkScalar<
<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> is implemented by one or more <a href='#Conic'>Conics</a> weighted to
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> is implemented by one or more <a href='#Conic'>Conics</a> weighted to
describe part of <a href='undocumented#Oval'>Oval</a> with radii (<a href='#SkPath_arcTo_4_rx'>rx</a>, <a href='#SkPath_arcTo_4_ry'>ry</a>) rotated by <a href='#SkPath_arcTo_4_xAxisRotate'>xAxisRotate</a> degrees. <a href='#Arc'>Arc</a>
curves from last <a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a> to (<a href='#SkPath_arcTo_4_x'>x</a>, <a href='#SkPath_arcTo_4_y'>y</a>), choosing one of four possible routes:
clockwise or counterclockwise, and smaller or larger.
@@ -3902,7 +3906,7 @@ while <a href='#SkPath_kCW_Direction'>kCW Direction</a> cast to int is zero.
void <a href='#SkPath_arcTo'>arcTo</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> r, <a href='undocumented#SkScalar'>SkScalar</a> xAxisRotate, <a href='#SkPath_ArcSize'>ArcSize</a> largeArc, <a href='#SkPath_Direction'>Direction</a> sweep, const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> xy)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> is implemented by one or more <a href='#Conic'>Conic</a> weighted to describe part of <a href='undocumented#Oval'>Oval</a>
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>. <a href='#Arc'>Arc</a> is implemented by one or more <a href='#Conic'>Conic</a> weighted to describe part of <a href='undocumented#Oval'>Oval</a>
with radii (<a href='#SkPath_arcTo_5_r'>r</a>.fX, <a href='#SkPath_arcTo_5_r'>r</a>.fY) rotated by <a href='#SkPath_arcTo_5_xAxisRotate'>xAxisRotate</a> degrees. <a href='#Arc'>Arc</a> curves from last <a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a> to
(<a href='#SkPath_arcTo_5_xy'>xy</a>.fX, <a href='#SkPath_arcTo_5_xy'>xy</a>.fY), choosing one of four possible routes: clockwise or counterclockwise,
and smaller or larger.
@@ -3953,7 +3957,7 @@ void <a href='#SkPath_rArcTo'>rArcTo</a>(<a href='undocumented#SkScalar'>SkScala
<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, relative to last <a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a>. <a href='#Arc'>Arc</a> is implemented by one or
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, relative to last <a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a>. <a href='#Arc'>Arc</a> is implemented by one or
more <a href='#Conic'>Conic</a>, weighted to describe part of <a href='undocumented#Oval'>Oval</a> with radii (<a href='#SkPath_rArcTo_rx'>rx</a>, <a href='#SkPath_rArcTo_ry'>ry</a>) rotated by
<a href='#SkPath_rArcTo_xAxisRotate'>xAxisRotate</a> degrees. <a href='#Arc'>Arc</a> curves from last <a href='#Path'>Path</a> <a href='SkPoint_Reference#Point'>Point</a> (x0, y0) to end <a href='SkPoint_Reference#Point'>Point</a>:
@@ -4015,7 +4019,7 @@ opposite the integer value of <a href='#SkPath_rArcTo_sweep'>sweep</a>; <a href=
void <a href='#SkPath_close'>close</a>()
</pre>
-Append <a href='#SkPath_kClose_Verb'>kClose Verb</a> to <a href='#Path'>Path</a>. A closed <a href='#Contour'>Contour</a> connects the first and last <a href='SkPoint_Reference#Point'>Point</a>
+Appends <a href='#SkPath_kClose_Verb'>kClose Verb</a> to <a href='#Path'>Path</a>. A closed <a href='#Contour'>Contour</a> connects the first and last <a href='SkPoint_Reference#Point'>Point</a>
with <a href='undocumented#Line'>Line</a>, forming a continuous loop. Open and closed <a href='#Contour'>Contour</a> draw the same
with <a href='SkPaint_Reference#SkPaint_kFill_Style'>SkPaint::kFill Style</a>. With <a href='SkPaint_Reference#SkPaint_kStroke_Style'>SkPaint::kStroke Style</a>, open <a href='#Contour'>Contour</a> draws
<a href='SkPaint_Reference#Stroke_Cap'>Paint Stroke Cap</a> at <a href='#Contour'>Contour</a> start and end; closed <a href='#Contour'>Contour</a> draws
@@ -4185,7 +4189,7 @@ number of <a href='#Quad'>Quad</a> curves written to <a href='#SkPath_ConvertCon
### Example
-<div><fiddle-embed name="00b430bd80d740e19c6d020a940f56d5"><div>A pair of <a href='#Quad'>Quad</a> curves are drawn in red on top of the elliptical <a href='#Conic'>Conic</a> curve in black.
+<div><fiddle-embed name="3ba94448a4ba48f926e643baeb5b1016"><div>A pair of <a href='#Quad'>Quad</a> curves are drawn in red on top of the elliptical <a href='#Conic'>Conic</a> curve in black.
The middle curve is nearly circular. The top-right curve is parabolic, which can
be drawn exactly with a single <a href='#Quad'>Quad</a>.
</div></fiddle-embed></div>
@@ -4306,7 +4310,7 @@ inner (12.5, 22.5, 27.5, 37.5); direction CCW
void <a href='#SkPath_addRect'>addRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Add <a href='SkRect_Reference#Rect'>Rect</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, three <a href='#SkPath_kLine_Verb'>kLine Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>,
+Adds <a href='SkRect_Reference#Rect'>Rect</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, three <a href='#SkPath_kLine_Verb'>kLine Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>,
starting with top-left corner of <a href='SkRect_Reference#Rect'>Rect</a>; followed by top-right, bottom-right,
and bottom-left if <a href='#SkPath_addRect_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>; or followed by bottom-left,
bottom-right, and top-right if <a href='#SkPath_addRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>.
@@ -4339,7 +4343,7 @@ The right <a href='SkRect_Reference#Rect'>Rect</a> dashes starting at the top-le
void <a href='#SkPath_addRect'>addRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='#SkPath_Direction'>Direction</a> dir, unsigned start)
</pre>
-Add <a href='SkRect_Reference#Rect'>Rect</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, three <a href='#SkPath_kLine_Verb'>kLine Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
+Adds <a href='SkRect_Reference#Rect'>Rect</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, three <a href='#SkPath_kLine_Verb'>kLine Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
If <a href='#SkPath_addRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='SkRect_Reference#Rect'>Rect</a> corners are added clockwise; if <a href='#SkPath_addRect_2_dir'>dir</a> is
<a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='SkRect_Reference#Rect'>Rect</a> corners are added counterclockwise.
<a href='#SkPath_addRect_2_start'>start</a> determines the first corner added.
@@ -4383,7 +4387,7 @@ void <a href='#SkPath_addRect'>addRect</a>(<a href='undocumented#SkScalar'>SkSca
<a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Add <a href='SkRect_Reference#Rect'>Rect</a> (<a href='#SkPath_addRect_3_left'>left</a>, <a href='#SkPath_addRect_3_top'>top</a>, <a href='#SkPath_addRect_3_right'>right</a>, <a href='#SkPath_addRect_3_bottom'>bottom</a>) to <a href='#Path'>Path</a>,
+Adds <a href='SkRect_Reference#Rect'>Rect</a> (<a href='#SkPath_addRect_3_left'>left</a>, <a href='#SkPath_addRect_3_top'>top</a>, <a href='#SkPath_addRect_3_right'>right</a>, <a href='#SkPath_addRect_3_bottom'>bottom</a>) to <a href='#Path'>Path</a>,
appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, three <a href='#SkPath_kLine_Verb'>kLine Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>,
starting with <a href='#SkPath_addRect_3_top'>top</a>-<a href='#SkPath_addRect_3_left'>left</a> corner of <a href='SkRect_Reference#Rect'>Rect</a>; followed by <a href='#SkPath_addRect_3_top'>top</a>-<a href='#SkPath_addRect_3_right'>right</a>, <a href='#SkPath_addRect_3_bottom'>bottom</a>-<a href='#SkPath_addRect_3_right'>right</a>,
and <a href='#SkPath_addRect_3_bottom'>bottom</a>-<a href='#SkPath_addRect_3_left'>left</a> if <a href='#SkPath_addRect_3_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>; or followed by <a href='#SkPath_addRect_3_bottom'>bottom</a>-<a href='#SkPath_addRect_3_left'>left</a>,
@@ -4427,7 +4431,7 @@ The <a href='#SkPath_addRect_3_right'>right</a> <a href='SkRect_Reference#Rect'>
void <a href='#SkPath_addOval'>addOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Add <a href='undocumented#Oval'>Oval</a> to path, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, four <a href='#SkPath_kConic_Verb'>kConic Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
+Adds <a href='undocumented#Oval'>Oval</a> to path, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, four <a href='#SkPath_kConic_Verb'>kConic Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
<a href='undocumented#Oval'>Oval</a> is upright ellipse bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkPath_addOval_oval'>oval</a> with radii equal to half <a href='#SkPath_addOval_oval'>oval</a> width
and half <a href='#SkPath_addOval_oval'>oval</a> height. <a href='undocumented#Oval'>Oval</a> begins at (<a href='#SkPath_addOval_oval'>oval</a>.fRight, <a href='#SkPath_addOval_oval'>oval</a>.centerY()) and continues
clockwise if <a href='#SkPath_addOval_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, counterclockwise if <a href='#SkPath_addOval_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>.
@@ -4458,7 +4462,7 @@ clockwise if <a href='#SkPath_addOval_dir'>dir</a> is <a href='#SkPath_kCW_Direc
void <a href='#SkPath_addOval'>addOval</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval, <a href='#SkPath_Direction'>Direction</a> dir, unsigned start)
</pre>
-Add <a href='undocumented#Oval'>Oval</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, four <a href='#SkPath_kConic_Verb'>kConic Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
+Adds <a href='undocumented#Oval'>Oval</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>, four <a href='#SkPath_kConic_Verb'>kConic Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>.
<a href='undocumented#Oval'>Oval</a> is upright ellipse bounded by <a href='SkRect_Reference#Rect'>Rect</a> <a href='#SkPath_addOval_2_oval'>oval</a> with radii equal to half <a href='#SkPath_addOval_2_oval'>oval</a> width
and half <a href='#SkPath_addOval_2_oval'>oval</a> height. <a href='undocumented#Oval'>Oval</a> begins at <a href='#SkPath_addOval_2_start'>start</a> and continues
clockwise if <a href='#SkPath_addOval_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, counterclockwise if <a href='#SkPath_addOval_2_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>.
@@ -4500,7 +4504,7 @@ clockwise if <a href='#SkPath_addOval_2_dir'>dir</a> is <a href='#SkPath_kCW_Dir
void <a href='#SkPath_addCircle'>addCircle</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y, <a href='undocumented#SkScalar'>SkScalar</a> radius, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Add <a href='undocumented#Circle'>Circle</a> centered at (<a href='#SkPath_addCircle_x'>x</a>, <a href='#SkPath_addCircle_y'>y</a>) of size <a href='#SkPath_addCircle_radius'>radius</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>,
+Adds <a href='undocumented#Circle'>Circle</a> centered at (<a href='#SkPath_addCircle_x'>x</a>, <a href='#SkPath_addCircle_y'>y</a>) of size <a href='#SkPath_addCircle_radius'>radius</a> to <a href='#Path'>Path</a>, appending <a href='#SkPath_kMove_Verb'>kMove Verb</a>,
four <a href='#SkPath_kConic_Verb'>kConic Verb</a>, and <a href='#SkPath_kClose_Verb'>kClose Verb</a>. <a href='undocumented#Circle'>Circle</a> begins at:
(<a href='#SkPath_addCircle_x'>x</a> + <a href='#SkPath_addCircle_radius'>radius</a>, <a href='#SkPath_addCircle_y'>y</a>)
,
@@ -4542,7 +4546,7 @@ Has no effect if <a href='#SkPath_addCircle_radius'>radius</a> is zero or negati
void <a href='#SkPath_addArc'>addArc</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& oval, <a href='undocumented#SkScalar'>SkScalar</a> startAngle, <a href='undocumented#SkScalar'>SkScalar</a> sweepAngle)
</pre>
-Append <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, as the start of new <a href='#Contour'>Contour</a>. <a href='#Arc'>Arc</a> added is part of ellipse
+Appends <a href='#Arc'>Arc</a> to <a href='#Path'>Path</a>, as the start of new <a href='#Contour'>Contour</a>. <a href='#Arc'>Arc</a> added is part of ellipse
bounded by <a href='#SkPath_addArc_oval'>oval</a>, from <a href='#SkPath_addArc_startAngle'>startAngle</a> through <a href='#SkPath_addArc_sweepAngle'>sweepAngle</a>. Both <a href='#SkPath_addArc_startAngle'>startAngle</a> and
<a href='#SkPath_addArc_sweepAngle'>sweepAngle</a> are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends <a href='#Arc'>Arc</a> clockwise.
@@ -4584,7 +4588,7 @@ and <a href='#SkPath_addArc_startAngle'>startAngle</a> modulo 90 is not zero.
void <a href='#SkPath_addRoundRect'>addRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, <a href='undocumented#SkScalar'>SkScalar</a> rx, <a href='undocumented#SkScalar'>SkScalar</a> ry, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Append <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds
+Appends <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds
equal to <a href='#SkPath_addRoundRect_rect'>rect</a>; each corner is 90 degrees of an ellipse with radii (<a href='#SkPath_addRoundRect_rx'>rx</a>, <a href='#SkPath_addRoundRect_ry'>ry</a>). If
<a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at top-left of the lower-left corner and
winds clockwise. If <a href='#SkPath_addRoundRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='SkRRect_Reference#RRect'>Round Rect</a> starts at the bottom-left
@@ -4633,7 +4637,7 @@ drawn in green.
void <a href='#SkPath_addRoundRect'>addRoundRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& rect, const <a href='undocumented#SkScalar'>SkScalar</a> radii[], <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Append <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds
+Appends <a href='SkRRect_Reference#RRect'>Round Rect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. <a href='SkRRect_Reference#RRect'>Round Rect</a> has bounds
equal to <a href='#SkPath_addRoundRect_2_rect'>rect</a>; each corner is 90 degrees of an ellipse with <a href='#SkPath_addRoundRect_2_radii'>radii</a> from the
array.
@@ -4688,7 +4692,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href=
void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir = <a href='#SkPath_kCW_Direction'>kCW Direction</a>)
</pre>
-Add <a href='#SkPath_addRRect_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If
+Adds <a href='#SkPath_addRRect_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If
<a href='#SkPath_addRRect_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='#SkPath_addRRect_rrect'>rrect</a> starts at top-left of the lower-left corner and
winds clockwise. If <a href='#SkPath_addRRect_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='#SkPath_addRRect_rrect'>rrect</a> starts at the bottom-left
of the upper-left corner and winds counterclockwise.
@@ -4721,7 +4725,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href=
void <a href='#SkPath_addRRect'>addRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='#SkPath_Direction'>Direction</a> dir, unsigned start)
</pre>
-Add <a href='#SkPath_addRRect_2_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If <a href='#SkPath_addRRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='#SkPath_addRRect_2_rrect'>rrect</a>
+Adds <a href='#SkPath_addRRect_2_rrect'>rrect</a> to <a href='#Path'>Path</a>, creating a new closed <a href='#Contour'>Contour</a>. If <a href='#SkPath_addRRect_2_dir'>dir</a> is <a href='#SkPath_kCW_Direction'>kCW Direction</a>, <a href='#SkPath_addRRect_2_rrect'>rrect</a>
winds clockwise; if <a href='#SkPath_addRRect_2_dir'>dir</a> is <a href='#SkPath_kCCW_Direction'>kCCW Direction</a>, <a href='#SkPath_addRRect_2_rrect'>rrect</a> winds counterclockwise.
<a href='#SkPath_addRRect_2_start'>start</a> determines the first point of <a href='#SkPath_addRRect_2_rrect'>rrect</a> to add.
@@ -4768,7 +4772,7 @@ After appending, <a href='#Path'>Path</a> may be empty, or may contain: <a href=
void <a href='#SkPath_addPoly'>addPoly</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a> pts[], int count, bool close)
</pre>
-Add <a href='#Contour'>Contour</a> created from <a href='undocumented#Line'>Line</a> array, adding (<a href='#SkPath_addPoly_count'>count</a> - 1) <a href='undocumented#Line'>Line</a> segments.
+Adds <a href='#Contour'>Contour</a> created from <a href='undocumented#Line'>Line</a> array, adding (<a href='#SkPath_addPoly_count'>count</a> - 1) <a href='undocumented#Line'>Line</a> segments.
<a href='#Contour'>Contour</a> added starts at <a href='#SkPath_addPoly_pts'>pts</a>[0], then adds a line for every additional <a href='SkPoint_Reference#Point'>Point</a>
in <a href='#SkPath_addPoly_pts'>pts</a> array. If close is true,appends <a href='#SkPath_kClose_Verb'>kClose Verb</a> to <a href='#Path'>Path</a>, connecting
<a href='#SkPath_addPoly_pts'>pts</a>[<a href='#SkPath_addPoly_count'>count</a> - 1] and <a href='#SkPath_addPoly_pts'>pts</a>[0].
@@ -4855,7 +4859,7 @@ The top right composition is made up of one contour; the other three have two.
void <a href='#SkPath_addPath'>addPath</a>(const <a href='#SkPath'>SkPath</a>& src, <a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkPath_AddPathMode'>AddPathMode</a> mode = <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>)
</pre>
-Append <a href='#SkPath_addPath_src'>src</a> to <a href='#Path'>Path</a>, offset by (<a href='#SkPath_addPath_dx'>dx</a>, <a href='#SkPath_addPath_dy'>dy</a>).
+Appends <a href='#SkPath_addPath_src'>src</a> to <a href='#Path'>Path</a>, offset by (<a href='#SkPath_addPath_dx'>dx</a>, <a href='#SkPath_addPath_dy'>dy</a>).
If <a href='#SkPath_addPath_mode'>mode</a> is <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>, <a href='#SkPath_addPath_src'>src</a> <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weights</a> are
added unaltered. If <a href='#SkPath_addPath_mode'>mode</a> is <a href='#SkPath_kExtend_AddPathMode'>kExtend AddPathMode</a>, add <a href='undocumented#Line'>Line</a> before appending
@@ -4893,7 +4897,7 @@ added unaltered. If <a href='#SkPath_addPath_mode'>mode</a> is <a href='#SkPath_
void <a href='#SkPath_addPath'>addPath</a>(const <a href='#SkPath'>SkPath</a>& src, <a href='#SkPath_AddPathMode'>AddPathMode</a> mode = <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>)
</pre>
-Append <a href='#SkPath_addPath_2_src'>src</a> to <a href='#Path'>Path</a>.
+Appends <a href='#SkPath_addPath_2_src'>src</a> to <a href='#Path'>Path</a>.
If <a href='#SkPath_addPath_2_mode'>mode</a> is <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>, <a href='#SkPath_addPath_2_src'>src</a> <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weights</a> are
added unaltered. If <a href='#SkPath_addPath_2_mode'>mode</a> is <a href='#SkPath_kExtend_AddPathMode'>kExtend AddPathMode</a>, add <a href='undocumented#Line'>Line</a> before appending
@@ -4925,7 +4929,7 @@ added unaltered. If <a href='#SkPath_addPath_2_mode'>mode</a> is <a href='#SkPat
void <a href='#SkPath_addPath'>addPath</a>(const <a href='#SkPath'>SkPath</a>& src, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix, <a href='#SkPath_AddPathMode'>AddPathMode</a> mode = <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>)
</pre>
-Append <a href='#SkPath_addPath_3_src'>src</a> to <a href='#Path'>Path</a>, transformed by <a href='#SkPath_addPath_3_matrix'>matrix</a>. Transformed curves may have different
+Appends <a href='#SkPath_addPath_3_src'>src</a> to <a href='#Path'>Path</a>, transformed by <a href='#SkPath_addPath_3_matrix'>matrix</a>. Transformed curves may have different
<a href='#Verb'>Verbs</a>, <a href='SkPoint_Reference#Point'>Points</a>, and <a href='#Conic_Weight'>Conic Weights</a>.
If <a href='#SkPath_addPath_3_mode'>mode</a> is <a href='#SkPath_kAppend_AddPathMode'>kAppend AddPathMode</a>, <a href='#SkPath_addPath_3_src'>src</a> <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and <a href='#Conic_Weight'>Conic Weights</a> are
@@ -4962,7 +4966,7 @@ added unaltered. If <a href='#SkPath_addPath_3_mode'>mode</a> is <a href='#SkPat
void <a href='#SkPath_reverseAddPath'>reverseAddPath</a>(const <a href='#SkPath'>SkPath</a>& src)
</pre>
-Append <a href='#SkPath_reverseAddPath_src'>src</a> to <a href='#Path'>Path</a>, from back to front.
+Appends <a href='#SkPath_reverseAddPath_src'>src</a> to <a href='#Path'>Path</a>, from back to front.
Reversed <a href='#SkPath_reverseAddPath_src'>src</a> always appends a new <a href='#Contour'>Contour</a> to <a href='#Path'>Path</a>.
### Parameters
@@ -4989,7 +4993,7 @@ Reversed <a href='#SkPath_reverseAddPath_src'>src</a> always appends a new <a hr
void <a href='#SkPath_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkPath'>SkPath</a>* dst) const
</pre>
-Offset <a href='#Point_Array'>Point Array</a> by (<a href='#SkPath_offset_dx'>dx</a>, <a href='#SkPath_offset_dy'>dy</a>). Offset <a href='#Path'>Path</a> replaces <a href='#SkPath_offset_dst'>dst</a>.
+Offsets <a href='#Point_Array'>Point Array</a> by (<a href='#SkPath_offset_dx'>dx</a>, <a href='#SkPath_offset_dy'>dy</a>). Offset <a href='#Path'>Path</a> replaces <a href='#SkPath_offset_dst'>dst</a>.
If <a href='#SkPath_offset_dst'>dst</a> is nullptr, <a href='#Path'>Path</a> is replaced by offset data.
### Parameters
@@ -5053,7 +5057,7 @@ If <a href='#SkPath_offset_dst'>dst</a> is nullptr, <a href='#Path'>Path</a> is
void <a href='#SkPath_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
-Offset <a href='#Point_Array'>Point Array</a> by (<a href='#SkPath_offset_2_dx'>dx</a>, <a href='#SkPath_offset_2_dy'>dy</a>). <a href='#Path'>Path</a> is replaced by offset data.
+Offsets <a href='#Point_Array'>Point Array</a> by (<a href='#SkPath_offset_2_dx'>dx</a>, <a href='#SkPath_offset_2_dy'>dy</a>). <a href='#Path'>Path</a> is replaced by offset data.
### Parameters
@@ -5082,7 +5086,7 @@ Offset <a href='#Point_Array'>Point Array</a> by (<a href='#SkPath_offset_2_dx'>
void <a href='#SkPath_transform'>transform</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix, <a href='#SkPath'>SkPath</a>* dst) const
</pre>
-<a href='#Transform'>Transform</a> <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and weight by <a href='#SkPath_transform_matrix'>matrix</a>.
+Transforms <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and weight by <a href='#SkPath_transform_matrix'>matrix</a>.
transform may change <a href='#Verb'>Verbs</a> and increase their number.
Transformed <a href='#Path'>Path</a> replaces <a href='#SkPath_transform_dst'>dst</a>; if <a href='#SkPath_transform_dst'>dst</a> is nullptr, original data
is replaced.
@@ -5113,7 +5117,7 @@ is replaced.
void <a href='#SkPath_transform'>transform</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>& matrix)
</pre>
-<a href='#Transform'>Transform</a> <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and weight by <a href='#SkPath_transform_2_matrix'>matrix</a>.
+Transforms <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, and weight by <a href='#SkPath_transform_2_matrix'>matrix</a>.
transform may change <a href='#Verb'>Verbs</a> and increase their number.
<a href='#Path'>Path</a> is replaced by transformed data.
@@ -5186,7 +5190,7 @@ last point: 35.2786, 52.9772
void <a href='#SkPath_setLastPt'>setLastPt</a>(<a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y)
</pre>
-Set <a href='#Last_Point'>Last Point</a> to (<a href='#SkPath_setLastPt_x'>x</a>, <a href='#SkPath_setLastPt_y'>y</a>). If <a href='#Point_Array'>Point Array</a> is empty, append <a href='#SkPath_kMove_Verb'>kMove Verb</a> to
+Sets <a href='#Last_Point'>Last Point</a> to (<a href='#SkPath_setLastPt_x'>x</a>, <a href='#SkPath_setLastPt_y'>y</a>). If <a href='#Point_Array'>Point Array</a> is empty, append <a href='#SkPath_kMove_Verb'>kMove Verb</a> to
<a href='#Verb_Array'>Verb Array</a> and append (<a href='#SkPath_setLastPt_x'>x</a>, <a href='#SkPath_setLastPt_y'>y</a>) to <a href='#Point_Array'>Point Array</a>.
### Parameters
@@ -5215,7 +5219,7 @@ Set <a href='#Last_Point'>Last Point</a> to (<a href='#SkPath_setLastPt_x'>x</a>
void <a href='#SkPath_setLastPt'>setLastPt</a>(const <a href='SkPoint_Reference#SkPoint'>SkPoint</a>& p)
</pre>
-Set the last point on the path. If <a href='#Point_Array'>Point Array</a> is empty, append <a href='#SkPath_kMove_Verb'>kMove Verb</a> to
+Sets the last point on the path. If <a href='#Point_Array'>Point Array</a> is empty, append <a href='#SkPath_kMove_Verb'>kMove Verb</a> to
<a href='#Verb_Array'>Verb Array</a> and append <a href='#SkPath_setLastPt_2_p'>p</a> to <a href='#Point_Array'>Point Array</a>.
### Parameters
@@ -5556,7 +5560,7 @@ path is equal to copy
<a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkData'>SkData</a>&gt; <a href='#SkPath_serialize'>serialize</a>() const
</pre>
-Write <a href='#Path'>Path</a> to buffer, returning the buffer written to, wrapped in <a href='undocumented#Data'>Data</a>.
+Writes <a href='#Path'>Path</a> to buffer, returning the buffer written to, wrapped in <a href='undocumented#Data'>Data</a>.
<a href='#SkPath_serialize'>serialize</a> writes <a href='#Fill_Type'>Fill Type</a>, <a href='#Verb_Array'>Verb Array</a>, <a href='#Point_Array'>Point Array</a>, <a href='#Conic_Weight'>Conic Weight</a>, and
additionally writes computed information like <a href='#SkPath_Convexity'>Convexity</a> and bounds.
diff --git a/site/user/api/SkPicture_Reference.md b/site/user/api/SkPicture_Reference.md
index c904aedb18..0992737b04 100644
--- a/site/user/api/SkPicture_Reference.md
+++ b/site/user/api/SkPicture_Reference.md
@@ -14,15 +14,15 @@ SkPicture can be constructed or initialized by these functions, including C++ cl
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromData'>MakeFromData</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs <a href='#Picture'>Picture</a> from data</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromStream'>MakeFromStream</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs <a href='#Picture'>Picture</a> from stream</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs placeholder with unique identifier</td>
</tr>
</table>
@@ -58,7 +58,7 @@ SkPicture uses C++ classes to declare the public data structures and interfaces.
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_AbortCallback'>AbortCallback</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>utility to stop picture playback</td>
</tr>
</table>
@@ -71,39 +71,39 @@ SkPicture member functions read and modify the structure properties.
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromData'>MakeFromData</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs <a href='#Picture'>Picture</a> from data</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakeFromStream'>MakeFromStream</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs <a href='#Picture'>Picture</a> from stream</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>constructs placeholder with unique identifier</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns approximate size</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_approximateOpCount'>approximateOpCount</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns approximate operation count</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_cullRect'>cullRect</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns bounds used to record <a href='#Picture'>Picture</a></td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_playback'>playback</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>replays drawing commands on canvas</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_serialize'>serialize</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>writes <a href='#Picture'>Picture</a> to data</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkPicture_uniqueID'>uniqueID</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns identifier for <a href='#Picture'>Picture</a></td>
</tr>
</table>
@@ -128,6 +128,10 @@ SkPicture member functions read and modify the structure properties.
</table>
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
+ class <a href='#SkPicture_AbortCallback_empty_constructor'>AbortCallback</a> {
+ public:
+ <a href='#SkPicture_AbortCallback_empty_constructor'>AbortCallback()</a> {}
+ virtual
</pre>
<a href='undocumented#Subclasses'>Subclasses</a> of this can be passed to <a href='#SkPicture_playback'>playback</a>. During the playback
@@ -145,17 +149,15 @@ to the same level it was before the playback call was made.
<a href='#SkPicture_AbortCallback_empty_constructor'>AbortCallback</a>()
</pre>
-### Return Value
-
-incomplete
+Has no effect.
-### Example
+### Return Value
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+abstract class cannot be instantiated
### See Also
-incomplete
+<a href='#SkPicture_playback'>playback</a>
---
@@ -166,13 +168,11 @@ incomplete
virtual
</pre>
-### Example
-
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+Has no effect.
### See Also
-incomplete
+<a href='#SkPicture_playback'>playback</a>
---
@@ -183,20 +183,26 @@ incomplete
virtual bool <a href='#SkPicture_AbortCallback_abort'>abort</a>() = 0
</pre>
-### Return Value
+Stops <a href='#Picture'>Picture</a> playback when some condition is met. A subclass of
+<a href='#SkPicture_AbortCallback_empty_constructor'>AbortCallback</a> provides an override for <a href='#SkPicture_AbortCallback_abort'>abort</a> that can stop <a href='#SkPicture_playback'>playback</a> from
+drawing the entire picture.
-incomplete
-
-### Example
+### Return Value
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+true to stop playback
### See Also
-incomplete
+<a href='#SkPicture_playback'>playback</a>
---
+### Example
+
+<div><fiddle-embed name="56ed920dadbf2b2967ac45fb5a9bded6"><div>JustOneDraw allows the black rectangle to draw but stops playback before the
+white rectangle appears.
+</div></fiddle-embed></div>
+
<a name='SkPicture_MakeFromStream'></a>
## MakeFromStream
@@ -204,29 +210,29 @@ incomplete
static <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakeFromStream'>MakeFromStream</a>(<a href='undocumented#SkStream'>SkStream</a>* stream, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr)
</pre>
-Recreate a picture that was serialized into a <a href='#SkPicture_MakeFromStream_stream'>stream</a> or data.
+Recreates a picture that was serialized into a <a href='#SkPicture_MakeFromStream_stream'>stream</a>.
### Parameters
<table> <tr> <td><a name='SkPicture_MakeFromStream_stream'><code><strong>stream</strong></code></a></td>
- <td>incomplete</td>
+ <td>container for serial data</td>
</tr>
<tr> <td><a name='SkPicture_MakeFromStream_procs'><code><strong>procs</strong></code></a></td>
- <td>incomplete</td>
+ <td>custom serial data decoders; may be nullptr</td>
</tr>
</table>
### Return Value
-incomplete
+<a href='#Picture'>Picture</a> constructed from <a href='#SkPicture_MakeFromStream_stream'>stream</a> data
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="404fb42560a289c2004cad1caf3b96de"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromData'>MakeFromData</a><sup><a href='#SkPicture_MakeFromData_2'>[2]</a></sup> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
---
@@ -237,27 +243,29 @@ incomplete
static <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakeFromData'>MakeFromData</a>(const <a href='undocumented#SkData'>SkData</a>* data, const <a href='undocumented#SkDeserialProcs'>SkDeserialProcs</a>* procs = nullptr)
</pre>
+Recreates a picture that was serialized into <a href='#SkPicture_MakeFromData_data'>data</a>.
+
### Parameters
<table> <tr> <td><a name='SkPicture_MakeFromData_data'><code><strong>data</strong></code></a></td>
- <td>incomplete</td>
+ <td>container for serial <a href='#SkPicture_MakeFromData_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_procs'><code><strong>procs</strong></code></a></td>
- <td>incomplete</td>
+ <td>custom serial <a href='#SkPicture_MakeFromData_data'>data</a> decoders; may be nullptr</td>
</tr>
</table>
### Return Value
-incomplete
+<a href='#Picture'>Picture</a> constructed from <a href='#SkPicture_MakeFromData_data'>data</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="58b44bf47d8816782066618700afdecb"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
---
@@ -271,27 +279,29 @@ static <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='#SkPicture'>SkPicture<
### Parameters
<table> <tr> <td><a name='SkPicture_MakeFromData_2_data'><code><strong>data</strong></code></a></td>
- <td>incomplete</td>
+ <td>pointer to serial <a href='#SkPicture_MakeFromData_2_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_2_size'><code><strong>size</strong></code></a></td>
- <td>incomplete</td>
+ <td><a href='#SkPicture_MakeFromData_2_size'>size</a> of <a href='#SkPicture_MakeFromData_2_data'>data</a></td>
</tr>
<tr> <td><a name='SkPicture_MakeFromData_2_procs'><code><strong>procs</strong></code></a></td>
- <td>incomplete</td>
+ <td>custom serial <a href='#SkPicture_MakeFromData_2_data'>data</a> decoders; may be nullptr</td>
</tr>
+Recreates a picture that was serialized into <a href='#SkPicture_MakeFromData_2_data'>data</a>.
+
</table>
### Return Value
-incomplete
+<a href='#Picture'>Picture</a> constructed from <a href='#SkPicture_MakeFromData_2_data'>data</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="30b9f1b310187db6aff720a5d67591e2"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='undocumented#SkPictureRecorder'>SkPictureRecorder</a>
---
@@ -310,25 +320,20 @@ this has the effect of unfurling this picture into the destination
### Parameters
<table> <tr> <td><a name='SkPicture_playback_canvas'><code><strong>canvas</strong></code></a></td>
- <td>the <a href='#SkPicture_playback_canvas'>canvas</a> receiving the drawing commands.
-</td>
+ <td>receiver of drawing commands</td>
</tr>
<tr> <td><a name='SkPicture_playback_callback'><code><strong>callback</strong></code></a></td>
- <td>a <a href='#SkPicture_playback_callback'>callback</a> that allows interruption of playback</td>
+ <td>allows interruption of playback</td>
</tr>
</table>
-### Return Value
-
-incomplete
-
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="6b0ffb03ba05f526b345dc65a1c73fe4"></fiddle-embed></div>
### See Also
-incomplete
+<a href='SkCanvas_Reference#SkCanvas_drawPicture'>SkCanvas::drawPicture</a><sup><a href='SkCanvas_Reference#SkCanvas_drawPicture_2'>[2]</a></sup><sup><a href='SkCanvas_Reference#SkCanvas_drawPicture_3'>[3]</a></sup><sup><a href='SkCanvas_Reference#SkCanvas_drawPicture_4'>[4]</a></sup>
---
@@ -339,20 +344,22 @@ incomplete
virtual <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPicture_cullRect'>cullRect</a>() const = 0
</pre>
-Return a cull rect for this picture.
+Returns cull <a href='SkRect_Reference#Rect'>Rect</a> for this picture.
Ops recorded into this picture that attempt to draw outside the cull might not be drawn.
### Return Value
-incomplete
+bounds passed when <a href='#Picture'>Picture</a> was created
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="15bb9a9596b40c5e2045f76e8c1dcf8e"><div><a href='#Picture'>Picture</a> recorded bounds are smaller than contents; contents outside recorded
+bounds may be drawn, and are drawn in this example.
+</div></fiddle-embed></div>
### See Also
-incomplete
+<a href='SkCanvas_Reference#SkCanvas_clipRect'>SkCanvas::clipRect</a><sup><a href='SkCanvas_Reference#SkCanvas_clipRect_2'>[2]</a></sup><sup><a href='SkCanvas_Reference#SkCanvas_clipRect_3'>[3]</a></sup>
---
@@ -367,15 +374,24 @@ Returns a non-zero value unique among all pictures.
### Return Value
-incomplete
+identifier for <a href='#Picture'>Picture</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="8e4257245c988c600410fe4fd7293f07">
+
+#### Example Output
+
+~~~~
+empty picture id = 1
+placeholder id = 2
+~~~~
+
+</fiddle-embed></div>
### See Also
-incomplete
+<a href='undocumented#SkRefCnt'>SkRefCnt</a>
---
@@ -386,24 +402,26 @@ incomplete
<a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='undocumented#SkData'>SkData</a>&gt; <a href='#SkPicture_serialize'>serialize</a>(const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const
</pre>
+Returns storage containing data describing <a href='#Picture'>Picture</a>, using optional custom encoders.
+
### Parameters
<table> <tr> <td><a name='SkPicture_serialize_procs'><code><strong>procs</strong></code></a></td>
- <td>incomplete</td>
+ <td>custom serial data encoders; may be nullptr</td>
</tr>
</table>
### Return Value
-incomplete
+storage containing serialized <a href='#Picture'>Picture</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="dacdebe1355c884ebd3c2ea038cc7a20"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromData'>MakeFromData</a><sup><a href='#SkPicture_MakeFromData_2'>[2]</a></sup> <a href='undocumented#SkData'>SkData</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
---
@@ -413,23 +431,25 @@ incomplete
void <a href='#SkPicture_serialize'>serialize</a>(<a href='undocumented#SkWStream'>SkWStream</a>* stream, const <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>* procs = nullptr) const
</pre>
+Writes picture to <a href='#SkPicture_serialize_2_stream'>stream</a>, using optional custom encoders.
+
### Parameters
<table> <tr> <td><a name='SkPicture_serialize_2_stream'><code><strong>stream</strong></code></a></td>
- <td>incomplete</td>
+ <td>writable serial data <a href='#SkPicture_serialize_2_stream'>stream</a></td>
</tr>
<tr> <td><a name='SkPicture_serialize_2_procs'><code><strong>procs</strong></code></a></td>
- <td>incomplete</td>
+ <td>custom serial data encoders; may be nullptr</td>
</tr>
</table>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="30b9f1b310187db6aff720a5d67591e2"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='undocumented#SkWStream'>SkWStream</a> <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>
---
@@ -440,28 +460,37 @@ incomplete
static <a href='undocumented#sk_sp'>sk sp</a>&lt;<a href='#SkPicture'>SkPicture</a>&gt; <a href='#SkPicture_MakePlaceholder'>MakePlaceholder</a>(<a href='SkRect_Reference#SkRect'>SkRect</a> cull)
</pre>
-Return a placeholder <a href='#SkPicture'>SkPicture</a>.
+Returns a placeholder <a href='#SkPicture'>SkPicture</a>.
This placeholder does not draw anything itself. It has a distinct <a href='#SkPicture_uniqueID'>uniqueID</a>
(just like all <a href='#Picture'>Pictures</a>) and will always be visible to <a href='undocumented#SkSerialProcs'>SkSerialProcs</a>.
### Parameters
<table> <tr> <td><a name='SkPicture_MakePlaceholder_cull'><code><strong>cull</strong></code></a></td>
- <td>the placeholder's dimensions</td>
+ <td>placeholder dimensions</td>
</tr>
</table>
### Return Value
-incomplete
+placeholder with unique identifier
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="32f84819483a906ede9c5525801845ef">
+
+#### Example Output
+
+~~~~
+id:1 bounds:{10, 40, 80, 110}
+id:2 bounds:{10, 40, 80, 110}
+~~~~
+
+</fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_MakeFromStream'>MakeFromStream</a> <a href='#SkPicture_MakeFromData'>MakeFromData</a><sup><a href='#SkPicture_MakeFromData_2'>[2]</a></sup>
---
@@ -472,22 +501,22 @@ incomplete
virtual int <a href='#SkPicture_approximateOpCount'>approximateOpCount</a>() const = 0
</pre>
-Return the approximate number of operations in this picture. This
+Returns the approximate number of operations in this picture. This
number may be greater or less than the number of <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> calls
recorded: some calls may be recorded as more than one operation, or some
calls may be optimized away.
### Return Value
-incomplete
+approximate operation count
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="4b3d879118ef770d1f11a23c6493b2c4"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>
---
@@ -498,19 +527,20 @@ incomplete
virtual size_t <a href='#SkPicture_approximateBytesUsed'>approximateBytesUsed</a>() const = 0
</pre>
-Returns the approximate byte size of this picture, not including large ref'd objects.
+Returns the approximate byte size of <a href='#Picture'>Picture</a>. Does not include large objects
+referenced <a href='#Picture'>Picture</a>.
### Return Value
-incomplete
+approximate size
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="ececbda21218bd732394a305dba393a2"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkPicture_approximateOpCount'>approximateOpCount</a>
---
diff --git a/site/user/api/SkPoint_Reference.md b/site/user/api/SkPoint_Reference.md
index e35801822d..85e49c1455 100644
--- a/site/user/api/SkPoint_Reference.md
+++ b/site/user/api/SkPoint_Reference.md
@@ -1224,6 +1224,7 @@ Returns <a href='#Point'>Point</a> multiplied by scale.
Multiplies <a href='#Point'>Point</a> by scale. Sets <a href='#Point'>Point</a> to:
(<a href='#SkPoint_fX'>fX</a> * scale, <a href='#SkPoint_fY'>fY</a> * scale)
+.
### Parameters
diff --git a/site/user/api/SkRRect_Reference.md b/site/user/api/SkRRect_Reference.md
index c2f16d38ab..e83c3cfe6b 100644
--- a/site/user/api/SkRRect_Reference.md
+++ b/site/user/api/SkRRect_Reference.md
@@ -58,7 +58,7 @@ SkRRect related constants are defined by <code>enum</code>, <code>enum class</co
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>storage space for <a href='#RRect'>Round Rect</a></td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_kUpperLeft_Corner'>kUpperLeft Corner</a></td>
@@ -83,18 +83,17 @@ SkRRect global, <code>struct</code>, and <code>class</code> related member funct
</tr>
</table>
-The <a href='#SkRRect'>SkRRect</a> class represents a rounded rect with a potentially different
-radii for each corner. It does not have a constructor so must be
-initialized with one of the initialization functions (e.g., <a href='#SkRRect_setEmpty'>setEmpty</a>,
-<a href='#SkRRect_setRectRadii'>setRectRadii</a>, etc.)
+<a href='#SkRRect'>SkRRect</a> describes a rounded rectangle with a bounds and a pair of radii for each corner.
+The bounds and radii can be set so that <a href='#SkRRect'>SkRRect</a> describes a rectangle with sharp corners,
+a <a href='undocumented#Circle'>Circle</a>, an <a href='undocumented#Oval'>Oval</a>, or a rectangle with one or more rounded corners.
-This class allows implementing CSS properties that describe rounded corners.
-A rectangle may have up to eight radii, one for each axis on each of its four
+<a href='#SkRRect'>SkRRect</a> allows implementing CSS properties that describe rounded corners.
+<a href='#SkRRect'>SkRRect</a> may have up to eight different radii, one for each axis on each of its four
corners.
-If either corner's radii are zero, the corner is square.
-Negative radii are treated as zero.
-If corner curves overlap, they are proportionally reduced to fit.
+<a href='#SkRRect'>SkRRect</a> may modify the provided parameters when initializing bounds and radii.
+If either axis radii is zero or less, radii are stored as zero; corner is square.
+If corner curves overlap, radii are proportionally reduced to fit within bounds.
## Overview
@@ -231,7 +230,7 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_height'>height</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in y</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in y-axis</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_inset'>inset</a></td>
@@ -239,7 +238,7 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isComplex'>isComplex</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect, oval, simple, or nine-patch</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, simple, or nine-patch</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isEmpty'>isEmpty</a></td>
@@ -247,7 +246,7 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isNinePatch'>isNinePatch</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect, oval or simple; and radii are axis-aligned</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a> or simple; and radii are axis-aligned</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isOval'>isOval</a></td>
@@ -259,11 +258,11 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isSimple'>isSimple</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, rect or oval; and axes radii are equal</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns true if not empty, <a href='SkRect_Reference#Rect'>Rect</a> or <a href='undocumented#Oval'>Oval</a>; and axes radii are equal</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_isValid'>isValid</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns if <a href='#SkRRect_type'>type</a> matches bounds and radii</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_makeOffset'>makeOffset</a></td>
@@ -283,7 +282,7 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_readFromMemory'>readFromMemory</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>reads <a href='#RRect'>Round Rect</a> from buffer</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_rect'>rect</a></td>
@@ -303,7 +302,7 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setRect'>setRect</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets rect bounds with zeroed corners</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>sets <a href='#RRect'>Round Rect</a> bounds with zeroed corners</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_setRectRadii'>setRectRadii</a></td>
@@ -323,11 +322,11 @@ SkRRect member functions read and modify the structure properties.
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_width'>width</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in x</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>returns span in x-axis</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#SkRRect_writeToMemory'>writeToMemory</a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>incomplete</td>
+ <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>writes <a href='#RRect'>Round Rect</a> to buffer</td>
</tr>
</table>
@@ -377,7 +376,7 @@ copy of <a href='#SkRRect_copy_const_SkRRect_rrect'>rrect</a>
### Example
-<div><fiddle-embed name="9be9adb06c26dac75a5a5a7c1ceca681"></fiddle-embed></div>
+<div><fiddle-embed name="ad8f5d49edfcee60eddfe2a955b6c5f5"></fiddle-embed></div>
### See Also
@@ -407,7 +406,7 @@ copy of <a href='#SkRRect_copy_operator_rrect'>rrect</a>
### Example
-<div><fiddle-embed name="94c298c404fff922ec53a3d7567852a2"></fiddle-embed></div>
+<div><fiddle-embed name="52926c98c1cca00606d3ea99f23fea3d"></fiddle-embed></div>
### See Also
@@ -434,7 +433,7 @@ copy of <a href='#SkRRect_copy_operator_rrect'>rrect</a>
<a href='#SkRRect_Type'>Type</a> describes possible specializations of <a href='#RRect'>Round Rect</a>. Each <a href='#SkRRect_Type'>Type</a> is
exclusive; a <a href='#RRect'>Round Rect</a> may only have one type.
-The enum members become progressively less restrictive; larger values of
+<a href='#SkRRect_Type'>Type</a> members become progressively less restrictive; larger values of
<a href='#SkRRect_Type'>Type</a> have more degrees of freedom than smaller values.
### Constants
@@ -445,21 +444,21 @@ The enum members become progressively less restrictive; larger values of
<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kEmpty_Type'><code>SkRRect::kEmpty_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # zero width or height ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#RRect'>Round Rect</a> has zero width or height. All radii are zero.
</td>
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kRect_Type'><code>SkRRect::kRect_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # non-zero width and height, and zeroed radii ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#RRect'>Round Rect</a> has width and height. All radii are zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kOval_Type'><code>SkRRect::kOval_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # non-zero width and height filled with radii ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#RRect'>Round Rect</a> has width and height. All four x-radii are equal,
and at least half the width. All four y-radii are equal,
@@ -468,7 +467,7 @@ and at least half the height.
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSimple_Type'><code>SkRRect::kSimple_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # non-zero width and height with equal radii ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#RRect'>Round Rect</a> has width and height. All four x-radii are equal and
greater than zero, and all four y-radii are equal and greater than
@@ -478,7 +477,7 @@ less than half the height, or both.
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kNinePatch_Type'><code>SkRRect::kNinePatch_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # non-zero width and height with axis-aligned radii ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
<a href='#RRect'>Round Rect</a> has width and height. Left x-radii are equal, top
y-radii are equal, right x-radii are equal, and bottom y-radii
@@ -491,14 +490,14 @@ interior rectangle, four edges, and four corners.
</tr>
<tr>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kComplex_Type'><code>SkRRect::kComplex_Type</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>#Line # non-zero width and height with arbitrary radii ##</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
both radii are non-zero.
</td>
</tr>
<tr style='background-color: #f0f0f0; '>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kLastType'><code>SkRRect::kLastType</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>= kComplex_Type</td>
+ <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
largest Type value</td>
</tr>
@@ -528,7 +527,7 @@ Returns <a href='#SkRRect_Type'>Type</a>, one of: <a href='#SkRRect_kEmpty_Type'
### Example
-<div><fiddle-embed name="53634cc0794c0fa6c0c2b3ac4cc69490"><div>rrect2 is not a <a href='SkRect_Reference#Rect'>Rect</a>; <a href='#SkRRect_inset'>inset</a> has made it empty.
+<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.
</div></fiddle-embed></div>
### See Also
@@ -553,7 +552,7 @@ Returns <a href='#SkRRect_Type'>Type</a>, one of: <a href='#SkRRect_kEmpty_Type'
### Example
-<div><fiddle-embed name="02b03d651c4b5d18018c6f75fa88b8ce"><div><a href='#SkRRect_inset'>inset</a> has made rrect2 empty.
+<div><fiddle-embed name="1080805c8449406a4e26d694bc56d2dc"><div><a href='#SkRRect_inset'>inset</a> has made rrect2 empty.
</div></fiddle-embed></div>
### See Also
@@ -593,7 +592,8 @@ true if <a href='#SkRRect_width'>width</a> or <a href='#SkRRect_height'>height</
inline bool <a href='#SkRRect_isRect'>isRect</a>() const
</pre>
-Returns true if not empty, and if either x or y radius at each corner is zero.
+Returns true if not empty, and if either x-axis or y-axis radius at each corner
+is zero.
### Return Value
@@ -628,8 +628,8 @@ true if has identical geometry to <a href='undocumented#Oval'>Oval</a>
<div><fiddle-embed name="ab9b3aef7896aee80b780789848fbba4"><div>The first radii are scaled down proportionately until both x-axis and y-axis fit
within the bounds. After scaling, x-axis radius is smaller than half the width;
-left round rect is not an oval. The second radii are equal to half the
-dimensions; right round rect is an oval.
+left <a href='#RRect'>Round Rect</a> is not an oval. The second radii are equal to half the
+dimensions; right <a href='#RRect'>Round Rect</a> is an oval.
</div></fiddle-embed></div>
### See Also
@@ -651,7 +651,7 @@ if all y-axis radii are equal but not zero; and x-axis radius is less than half
### Return Value
-true if not empty, rect or oval; and axes radii are equal
+true if not empty, <a href='SkRect_Reference#Rect'>Rect</a> or <a href='undocumented#Oval'>Oval</a>; and axes radii are equal
### Example
@@ -676,7 +676,7 @@ equal, and bottom y-axis radii are equal.
### Return Value
-true if not empty, rect, oval or simple; and radii are axis-aligned
+true if not empty, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a> or simple; and radii are axis-aligned
### Example
@@ -703,11 +703,11 @@ equal.
### Return Value
-true if not empty, rect, oval, simple, or nine-patch
+true if not empty, <a href='SkRect_Reference#Rect'>Rect</a>, <a href='undocumented#Oval'>Oval</a>, simple, or nine-patch
### Example
-<div><fiddle-embed name="75db3f4e4757478bca641bccf89b9398"></fiddle-embed></div>
+<div><fiddle-embed name="e4ba9346ee5c2d37d5e504f8cc678544"></fiddle-embed></div>
### See Also
@@ -801,7 +801,7 @@ corner radii for simple types
### Example
-<div><fiddle-embed name="f0e02101ecbdb5a2963ec82e7832afb1"></fiddle-embed></div>
+<div><fiddle-embed name="ebcc50ed30240e94de8439d21dd8171c"></fiddle-embed></div>
### See Also
@@ -821,7 +821,7 @@ corner radii to zero and sets type to <a href='#SkRRect_kEmpty_Type'>kEmpty Type
### Example
-<div><fiddle-embed name="59c1025b8116ec1d3b55f4f6306d1e37"><div>Nothing blue is drawn because rrect is set to empty.
+<div><fiddle-embed name="44e9a9c2c5ef1af2a616086ff46a9037"><div>Nothing blue is drawn because <a href='#RRect'>Round Rect</a> is set to empty.
</div></fiddle-embed></div>
### See Also
@@ -920,7 +920,7 @@ static <a href='#SkRRect'>SkRRect</a> <a href='#SkRRect_MakeOval'>MakeOval</a>(c
</pre>
Sets bounds to <a href='#SkRRect_MakeOval_oval'>oval</a>, x-axis radii to half <a href='#SkRRect_MakeOval_oval'>oval</a>.<a href='#SkRRect_width'>width</a>, and all y-axis radii
-to half <a href='#SkRRect_MakeOval_oval'>oval</a>.<a href='#SkRRect_height'>height</a>. If rect is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>.
+to half <a href='#SkRRect_MakeOval_oval'>oval</a>.<a href='#SkRRect_height'>height</a>. If <a href='#SkRRect_MakeOval_oval'>oval</a> bounds is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>.
Otherwise, sets to <a href='#SkRRect_kOval_Type'>kOval Type</a>.
### Parameters
@@ -993,7 +993,7 @@ void <a href='#SkRRect_setOval'>setOval</a>(const <a href='SkRect_Reference#SkRe
</pre>
Sets bounds to <a href='#SkRRect_setOval_oval'>oval</a>, x-axis radii to half <a href='#SkRRect_setOval_oval'>oval</a>.<a href='#SkRRect_width'>width</a>, and all y-axis radii
-to half <a href='#SkRRect_setOval_oval'>oval</a>.<a href='#SkRRect_height'>height</a>. If rect is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>.
+to half <a href='#SkRRect_setOval_oval'>oval</a>.<a href='#SkRRect_height'>height</a>. If <a href='#SkRRect_setOval_oval'>oval</a> bounds is empty, sets to <a href='#SkRRect_kEmpty_Type'>kEmpty Type</a>.
Otherwise, sets to <a href='#SkRRect_kOval_Type'>kOval Type</a>.
### Parameters
@@ -1129,7 +1129,7 @@ sets to <a href='#SkRRect_kSimple_Type'>kSimple Type</a>. Otherwise, sets to <a
### Example
-<div><fiddle-embed name="4589dd49da291f8cd414db96c12851c7"></fiddle-embed></div>
+<div><fiddle-embed name="340d6c51efaa1f7f3d0dcaf8b0e90696"></fiddle-embed></div>
### See Also
@@ -1252,7 +1252,7 @@ x-axis and y-axis radii for one <a href='#SkRRect_radii_corner'>corner</a>
### Example
<div><fiddle-embed name="8d5c88478528584913867ada423e0d59"><div>Finite values are scaled proportionately to fit; other values are set to zero.
-Scaled values cannot be larger than 25, half the bounding rect width.
+Scaled values cannot be larger than 25, half the bounding <a href='#RRect'>Round Rect</a> width.
Small scaled values are halved to scale in proportion to the y-axis <a href='#SkRRect_radii_corner'>corner</a>
radius, which is twice the bounds height.
</div>
@@ -1379,15 +1379,17 @@ true if members are not equal
void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkRRect'>SkRRect</a>* dst) const
</pre>
-Calls inset on the bounds, and adjust the radii to reflect what happens.
-If the corner is sharp (no curvature), leave it alone,
-otherwise we grow/shrink the radii by the amount of the inset. If a
-given radius becomes negative, it is pinned to 0.
-If the inset amount is larger than the width/height then the rrect collapses to
-a degenerate line or point.
-If the inset is sufficiently negative to cause the bounds to become infinite then
-the result is a default initialized rrect.
-It is valid for <a href='#SkRRect_inset_dst'>dst</a> == this.
+Copies <a href='#RRect'>Round Rect</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>
+radii 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
+<a href='#RRect'>Round Rect</a>.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If <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
+bounds 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
+bottom are set to bounds y-axis center.
+
+If <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.
### Parameters
@@ -1418,6 +1420,17 @@ It is valid for <a href='#SkRRect_inset_dst'>dst</a> == this.
void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
+Insets 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
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If <a href='#SkRRect_inset_2_dx'>dx</a> exceeds half bounds width, bounds left and right are set to
+bounds x-axis center. If <a href='#SkRRect_inset_2_dy'>dy</a> exceeds half bounds height, bounds top and
+bottom are set to bounds y-axis center.
+
+If <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.
+
### Parameters
<table> <tr> <td><a name='SkRRect_inset_2_dx'><code><strong>dx</strong></code></a></td>
@@ -1445,11 +1458,16 @@ void <a href='#SkRRect_inset'>inset</a>(<a href='undocumented#SkScalar'>SkScalar
void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy, <a href='#SkRRect'>SkRRect</a>* dst) const
</pre>
-Call outset on the bounds, and adjust the radii to reflect what happens
-in stroking. If the corner is sharp (no curvature), leave it alone,
-otherwise we grow/shrink the radii by the amount of the inset. If a
-given radius becomes negative, it is pinned to 0.
-It is valid for <a href='#SkRRect_outset_dst'>dst</a> == this.
+Outsets <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
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If <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
+bounds 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
+bottom are set to bounds y-axis center.
+
+If <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.
### Parameters
@@ -1480,6 +1498,17 @@ It is valid for <a href='#SkRRect_outset_dst'>dst</a> == this.
void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
+Outsets 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
+positive, negative, or zero.
+
+If either corner radius is zero, the corner has no curvature and is unchanged.
+Otherwise, if adjusted radius becomes negative, pins radius to zero.
+If <a href='#SkRRect_outset_2_dx'>dx</a> exceeds half bounds width, bounds left and right are set to
+bounds x-axis center. If <a href='#SkRRect_outset_2_dy'>dy</a> exceeds half bounds height, bounds top and
+bottom are set to bounds y-axis center.
+
+If <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.
+
### Parameters
<table> <tr> <td><a name='SkRRect_outset_2_dx'><code><strong>dx</strong></code></a></td>
@@ -1507,7 +1536,7 @@ void <a href='#SkRRect_outset'>outset</a>(<a href='undocumented#SkScalar'>SkScal
void <a href='#SkRRect_offset'>offset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy)
</pre>
-Translates the rrect by (<a href='#SkRRect_offset_dx'>dx</a>, <a href='#SkRRect_offset_dy'>dy</a>).
+Translates <a href='#RRect'>Round Rect</a> by (<a href='#SkRRect_offset_dx'>dx</a>, <a href='#SkRRect_offset_dy'>dy</a>).
### Parameters
@@ -1536,6 +1565,8 @@ Translates the rrect by (<a href='#SkRRect_offset_dx'>dx</a>, <a href='#SkRRect_
<a href='#SkRRect'>SkRRect</a> SK_WARN_UNUSED_RESULT <a href='#SkRRect_makeOffset'>makeOffset</a>(<a href='undocumented#SkScalar'>SkScalar</a> dx, <a href='undocumented#SkScalar'>SkScalar</a> dy) const
</pre>
+Returns <a href='#RRect'>Round Rect</a> translated by (<a href='#SkRRect_makeOffset_dx'>dx</a>, <a href='#SkRRect_makeOffset_dy'>dy</a>).
+
### Parameters
<table> <tr> <td><a name='SkRRect_makeOffset_dx'><code><strong>dx</strong></code></a></td>
@@ -1583,7 +1614,7 @@ true if <a href='#RRect'>Round Rect</a> contains rect
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="884447c809921cfaebc87aeb63dedd48"></fiddle-embed></div>
### See Also
@@ -1598,17 +1629,22 @@ true if <a href='#RRect'>Round Rect</a> contains rect
bool <a href='#SkRRect_isValid'>isValid</a>() const
</pre>
+Returns true if bounds and radii values are finite and describe a <a href='#RRect'>Round Rect</a>
+<a href='#SkRRect_Type'>Type</a> that matches <a href='#SkRRect_getType'>getType</a>. All <a href='#RRect'>Round Rect</a> methods construct valid types,
+even if the input values are not valid. Invalid <a href='#RRect'>Round Rect</a> data can only
+be generated by corrupting memory.
+
### Return Value
-incomplete
+true if bounds and radii match <a href='#SkRRect_type'>type</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="d28709aa457742391842a9ab1f21b5fa"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkRRect_Type'>Type</a> <a href='#SkRRect_getType'>getType</a>
---
@@ -1622,12 +1658,7 @@ incomplete
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkRRect_kSizeInMemory'><code>SkRRect::kSizeInMemory</code></a></td>
<td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>48</td>
<td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-
-
-### Example
-
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>incomplete
-
+Space required to serialize <a href='#SkRRect'>SkRRect</a> into a buffer. Always a multiple of four.
</td>
</tr>
</table>
@@ -1639,28 +1670,27 @@ incomplete
size_t <a href='#SkRRect_writeToMemory'>writeToMemory</a>(void* buffer) const
</pre>
-Write the rrect into the specified <a href='#SkRRect_writeToMemory_buffer'>buffer</a>. This is guaranteed to always
-write <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes, and that value is guaranteed to always be
-a multiple of 4. Return <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>.
+Writes <a href='#RRect'>Round Rect</a> to <a href='#SkRRect_writeToMemory_buffer'>buffer</a>. Writes <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes, and returns
+<a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>, the number of bytes written.
### Parameters
<table> <tr> <td><a name='SkRRect_writeToMemory_buffer'><code><strong>buffer</strong></code></a></td>
- <td>incomplete</td>
+ <td>storage for <a href='#RRect'>Round Rect</a></td>
</tr>
</table>
### Return Value
-incomplete
+bytes written, <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="1466c844a78fd05a7362537347e360ca"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkRRect_readFromMemory'>readFromMemory</a>
---
@@ -1671,9 +1701,9 @@ incomplete
size_t <a href='#SkRRect_readFromMemory'>readFromMemory</a>(const void* buffer, size_t length)
</pre>
-Reads the rrect from the specified <a href='#SkRRect_readFromMemory_buffer'>buffer</a>.
-If the specified <a href='#SkRRect_readFromMemory_buffer'>buffer</a> is large enough, this will read <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes,
-and that value is guaranteed to always be a multiple of 4.
+Reads <a href='#RRect'>Round Rect</a> from <a href='#SkRRect_readFromMemory_buffer'>buffer</a>, reading <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a> bytes.
+Returns <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>.
+Otherwise, returns zero.
### Parameters
@@ -1681,22 +1711,21 @@ and that value is guaranteed to always be a multiple of 4.
<td>memory to read from</td>
</tr>
<tr> <td><a name='SkRRect_readFromMemory_length'><code><strong>length</strong></code></a></td>
- <td>amount of memory available in the <a href='#SkRRect_readFromMemory_buffer'>buffer</a></td>
+ <td>size of <a href='#SkRRect_readFromMemory_buffer'>buffer</a></td>
</tr>
</table>
### Return Value
-number of bytes read (must be a multiple of 4) or
-0 if there was not enough memory available
+bytes read, or 0 if <a href='#SkRRect_readFromMemory_length'>length</a> is less than <a href='#SkRRect_kSizeInMemory'>kSizeInMemory</a>
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="b877c0adff35470865a57aa150bf5329"></fiddle-embed></div>
### See Also
-incomplete
+<a href='#SkRRect_writeToMemory'>writeToMemory</a>
---
@@ -1729,11 +1758,11 @@ true if transformation succeeded.
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="99ccc6862bb9fe3ca35228eee9f9725d"></fiddle-embed></div>
### See Also
-incomplete
+<a href='SkPath_Reference#SkPath_transform'>SkPath::transform</a><sup><a href='SkPath_Reference#SkPath_transform_2'>[2]</a></sup>
---
diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md
index 387c6cbae6..c1fbe929dc 100644
--- a/site/user/api/SkSurface_Reference.md
+++ b/site/user/api/SkSurface_Reference.md
@@ -1627,6 +1627,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkSurface_readPixels_dst'><code><strong>dst</strong></code></a></td>
@@ -1688,6 +1690,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkSurface_readPixels_2_dstInfo'><code><strong>dstInfo</strong></code></a></td>
@@ -1760,6 +1764,8 @@ Does not copy, and returns false if:
</tr>
</table>
+.
+
### Parameters
<table> <tr> <td><a name='SkSurface_readPixels_3_dst'><code><strong>dst</strong></code></a></td>
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index e1fe83ea30..7ad0dc349d 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -2373,6 +2373,20 @@
"name": "SkPath::writeToMemory",
"stdout": "path is equal to copy\\n"
},
+ "SkPicture_MakePlaceholder": {
+ "code": "void draw(SkCanvas* canvas) {\n sk_sp<SkPicture> pict1 = SkPicture::MakePlaceholder({10, 40, 80, 110});\n sk_sp<SkPicture> pict2 = SkPicture::MakePlaceholder({10, 40, 80, 110});\n for (auto pict : { pict1, pict2 } ) {\n SkRect bounds = pict->cullRect();\n SkDebugf(\"id:%d bounds:{%g, %g, %g, %g}\\n\", pict->uniqueID(), \n bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom);\n }\n}",
+ "hash": "32f84819483a906ede9c5525801845ef",
+ "file": "SkPicture_Reference",
+ "name": "SkPicture::MakePlaceholder",
+ "stdout": "id:1 bounds:{10, 40, 80, 110}\\nid:2 bounds:{10, 40, 80, 110}\\n"
+ },
+ "SkPicture_uniqueID": {
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n recorder.beginRecording({0, 0, 0, 0});\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n SkDebugf(\"empty picture id = %d\\n\", picture->uniqueID());\n sk_sp<SkPicture> placeholder = SkPicture::MakePlaceholder({0, 0, 0, 0});\n SkDebugf(\"placeholder id = %d\\n\", placeholder->uniqueID());\n}",
+ "hash": "8e4257245c988c600410fe4fd7293f07",
+ "file": "SkPicture_Reference",
+ "name": "SkPicture::uniqueID",
+ "stdout": "empty picture id = 1\\nplaceholder id = 2\\n"
+ },
"SkPixmap_addr": {
"code": "void draw(SkCanvas* canvas) {\n std::vector<int32_t> pixels;\n pixels.resize(image->height() * image->width() * 4);\n SkPixmap pixmap(SkImageInfo::Make(image->width(), image->height(), kN32_SkColorType,\n image->alphaType()), (const void*) &pixels.front(), image->width() * 4);\n image->readPixels(pixmap, 0, 0);\n SkDebugf(\"pixels address: 0x%llx\\n\", pixmap.addr());\n SkPixmap inset;\n if (pixmap.extractSubset(&inset, {128, 128, 512, 512})) {\n SkDebugf(\"inset address: 0x%llx\\n\", inset.addr());\n }\n}",
"hash": "17bcabaaee2dbb7beba562e9ca50b55e",
@@ -7153,118 +7167,86 @@
"file": "SkPath_Reference",
"name": "SkPath::transform_2"
},
- "SkPicture_AbortCallback_abort": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "SkPicture_AbortCallback": {
+ "code": "class JustOneDraw : public SkPicture::AbortCallback {\npublic:\n bool abort() override { return fCalls++ > 0; }\nprivate:\n int fCalls = 0;\n};\n\nvoid draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n JustOneDraw callback;\n picture->playback(canvas, &callback);\n}\n",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "56ed920dadbf2b2967ac45fb5a9bded6",
"file": "SkPicture_Reference",
- "name": "SkPicture::AbortCallback::abort()"
-},
- "SkPicture_AbortCallback_empty_constructor": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkPicture_Reference",
- "name": "SkPicture::AbortCallback::AbortCallback()"
+ "name": "SkPicture::AbortCallback"
},
"SkPicture_MakeFromData": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n SkDynamicMemoryWStream writableStream;\n picture->serialize(&writableStream);\n sk_sp<SkData> readableData = writableStream.detachAsData();\n sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData.get());\n copy->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "58b44bf47d8816782066618700afdecb",
"file": "SkPicture_Reference",
"name": "SkPicture::MakeFromData"
},
"SkPicture_MakeFromData_2": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n SkDynamicMemoryWStream writableStream;\n picture->serialize(&writableStream);\n sk_sp<SkData> readableData = writableStream.detachAsData();\n sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());\n copy->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "30b9f1b310187db6aff720a5d67591e2",
"file": "SkPicture_Reference",
"name": "SkPicture::MakeFromData_2"
},
"SkPicture_MakeFromStream": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n SkDynamicMemoryWStream writableStream;\n picture->serialize(&writableStream);\n std::unique_ptr<SkStreamAsset> readableStream = writableStream.detachAsStream();\n sk_sp<SkPicture> copy = SkPicture::MakeFromStream(readableStream.get());\n copy->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "404fb42560a289c2004cad1caf3b96de",
"file": "SkPicture_Reference",
"name": "SkPicture::MakeFromStream"
},
- "SkPicture_MakePlaceholder": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkPicture_Reference",
- "name": "SkPicture::MakePlaceholder"
-},
"SkPicture_approximateBytesUsed": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n picture->playback(canvas);\n std::string opCount = \"approximate bytes used: \" + std::to_string(picture->approximateBytesUsed());\n canvas->drawString(opCount.c_str(), 20, 220, SkPaint());\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "ececbda21218bd732394a305dba393a2",
"file": "SkPicture_Reference",
"name": "SkPicture::approximateBytesUsed"
},
"SkPicture_approximateOpCount": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n picture->playback(canvas);\n std::string opCount = \"approximate op count: \" + std::to_string(picture->approximateOpCount());\n canvas->drawString(opCount.c_str(), 50, 220, SkPaint());\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "4b3d879118ef770d1f11a23c6493b2c4",
"file": "SkPicture_Reference",
"name": "SkPicture::approximateOpCount"
},
"SkPicture_cullRect": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({64, 64, 192, 192});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n picture->playback(canvas);\n paint.setBlendMode(SkBlendMode::kModulate);\n paint.setColor(0x40404040);\n canvas->drawRect(picture->cullRect(), paint);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "15bb9a9596b40c5e2045f76e8c1dcf8e",
"file": "SkPicture_Reference",
"name": "SkPicture::cullRect"
},
- "SkPicture_destructor": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkPicture_Reference",
- "name": "SkPicture::AbortCallback::~AbortCallback()"
-},
"SkPicture_playback": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n picture->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "6b0ffb03ba05f526b345dc65a1c73fe4",
"file": "SkPicture_Reference",
"name": "SkPicture::playback()"
},
"SkPicture_serialize": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n sk_sp<SkData> readableData = picture->serialize();\n sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());\n copy->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "dacdebe1355c884ebd3c2ea038cc7a20",
"file": "SkPicture_Reference",
"name": "SkPicture::serialize()"
},
"SkPicture_serialize_2": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPictureRecorder recorder;\n SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});\n SkPaint paint;\n pictureCanvas->drawRect(SkRect::MakeWH(200, 200), paint);\n paint.setColor(SK_ColorWHITE);\n pictureCanvas->drawRect(SkRect::MakeLTRB(20, 20, 180, 180), paint);\n sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();\n SkDynamicMemoryWStream writableStream;\n picture->serialize(&writableStream);\n sk_sp<SkData> readableData = writableStream.detachAsData();\n sk_sp<SkPicture> copy = SkPicture::MakeFromData(readableData->data(), readableData->size());\n copy->playback(canvas);\n}",
"width": 256,
"height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "hash": "30b9f1b310187db6aff720a5d67591e2",
"file": "SkPicture_Reference",
"name": "SkPicture::serialize_2"
},
- "SkPicture_uniqueID": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkPicture_Reference",
- "name": "SkPicture::uniqueID"
-},
"SkPixmap_erase": {
"code": "void draw(SkCanvas* canvas) {\n uint32_t storage[2];\n SkImageInfo info = SkImageInfo::MakeN32Premul(1, 2);\n SkPixmap pixmap(info, storage, info.minRowBytes());\n pixmap.erase(SK_ColorBLUE, {0, 0, 1, 1});\n pixmap.erase(SK_ColorRED, {0, 1, 1, 2});\n SkBitmap bitmap;\n canvas->scale(20, 20);\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 0, 0);\n}",
"width": 256,
@@ -7658,26 +7640,26 @@
"name": "SkRRect::Type"
},
"SkRRect_contains": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkRect test = {10, 10, 110, 80};\n SkRRect rrect = SkRRect::MakeRect(test);\n SkRRect oval = SkRRect::MakeOval(test);\n test.inset(10, 10);\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(rrect.contains(test) ? \"contains\" : \"does not contain\", 55, 100, paint);\n canvas->drawString(oval.contains(test) ? \"contains\" : \"does not contain\", 185, 100, paint); \n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRRect(rrect, paint);\n canvas->drawRect(test, paint);\n canvas->translate(120, 0);\n canvas->drawRRect(oval, paint);\n canvas->drawRect(test, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 110,
+ "hash": "884447c809921cfaebc87aeb63dedd48",
"file": "SkRRect_Reference",
"name": "SkRRect::contains()"
},
"SkRRect_copy_const_SkRRect": {
"code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({10, 10, 100, 50});\n SkRRect rrect2(rrect);\n rrect2.inset(20, 20);\n SkPaint p;\n p.setStyle(SkPaint::kStroke_Style);\n p.setStrokeWidth(10);\n canvas->drawRRect(rrect, p);\n canvas->drawRRect(rrect2, p);\n}",
"width": 256,
- "height": 256,
- "hash": "9be9adb06c26dac75a5a5a7c1ceca681",
+ "height": 60,
+ "hash": "ad8f5d49edfcee60eddfe2a955b6c5f5",
"file": "SkRRect_Reference",
"name": "SkRRect::SkRRect(const SkRRect& rrect)"
},
"SkRRect_copy_operator": {
"code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({40, 40, 100, 70});\n SkRRect rrect2 = rrect;\n rrect2.inset(-20, -20);\n SkPaint p;\n p.setStyle(SkPaint::kStroke_Style);\n p.setStrokeWidth(10);\n canvas->drawRRect(rrect, p);\n canvas->drawRRect(rrect2, p);\n}",
"width": 256,
- "height": 256,
- "hash": "94c298c404fff922ec53a3d7567852a2",
+ "height": 110,
+ "hash": "52926c98c1cca00606d3ea99f23fea3d",
"file": "SkRRect_Reference",
"name": "SkRRect::operator=(const SkRRect& rrect)"
},
@@ -7708,16 +7690,16 @@
"SkRRect_getSimpleRadii": {
"code": "void draw(SkCanvas* canvas) {\n auto drawDetails = [=](const SkRRect& rrect) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(12);\n canvas->drawRRect(rrect, paint);\n SkVector corner = rrect.getSimpleRadii();\n std::string label = \"corner: \" + std::to_string(corner.fX).substr(0, 3) + \", \" +\n std::to_string(corner.fY).substr(0, 3);\n canvas->drawString(label.c_str(), 64, 90, paint);\n canvas->translate(128, 0);\n };\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n drawDetails(rrect);\n rrect.setRectXY(rrect.getBounds(), 5, 8);\n drawDetails(rrect);\n}",
"width": 256,
- "height": 256,
- "hash": "f0e02101ecbdb5a2963ec82e7832afb1",
+ "height": 100,
+ "hash": "ebcc50ed30240e94de8439d21dd8171c",
"file": "SkRRect_Reference",
"name": "SkRRect::getSimpleRadii"
},
"SkRRect_getType": {
"code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({10, 10, 100, 50});\n SkRRect rrect2(rrect);\n rrect2.inset(20, 20);\n SkPaint p;\n p.setStyle(SkPaint::kStroke_Style);\n p.setStrokeWidth(10);\n std::string str(\"Type \");\n str += SkRRect::kRect_Type == rrect2.getType() ? \"=\" : \"!\"; \n str += \"= SkRRect::kRect_Type\";\n canvas->drawString(str.c_str(), 20, 80, SkPaint());\n canvas->drawRRect(rrect2, p);\n}",
"width": 256,
- "height": 256,
- "hash": "53634cc0794c0fa6c0c2b3ac4cc69490",
+ "height": 100,
+ "hash": "ace8f4aebf90527d43e4b7291375c9ad",
"file": "SkRRect_Reference",
"name": "SkRRect::getType"
},
@@ -7740,8 +7722,8 @@
"SkRRect_isComplex": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n paint.setTextSize(16);\n SkVector radii[] = {{25, 30}, {40, 30}, {40, 30}, {20, 30}};\n SkRRect rrect;\n rrect.setRectRadii({30, 10, 100, 60}, radii);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isComplex() ? \"complex\" : \"not complex\", 64, 90, paint);\n radii[0].fX = 20;\n rrect.setRectRadii(rrect.getBounds(), radii);\n canvas->translate(128, 0);\n canvas->drawRRect(rrect, paint);\n canvas->drawString(rrect.isComplex() ? \"complex\" : \"not complex\", 64, 90, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "75db3f4e4757478bca641bccf89b9398",
+ "height": 100,
+ "hash": "e4ba9346ee5c2d37d5e504f8cc678544",
"file": "SkRRect_Reference",
"name": "SkRRect::isComplex"
},
@@ -7786,21 +7768,13 @@
"name": "SkRRect::isSimple"
},
"SkRRect_isValid": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({10, 10, 110, 80});\n SkRRect corrupt = rrect;\n *((float*) &corrupt) = 120;\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(rrect.isValid() ? \"is valid\" : \"is corrupted\", 55, 100, paint);\n canvas->drawString(corrupt.isValid() ? \"is valid\" : \"is corrupted\", 185, 100, paint); \n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRRect(rrect, paint);\n canvas->translate(120, 0);\n canvas->drawRRect(corrupt, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 110,
+ "hash": "d28709aa457742391842a9ab1f21b5fa",
"file": "SkRRect_Reference",
"name": "SkRRect::isValid"
},
- "SkRRect_kSizeInMemory": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkRRect_Reference",
- "name": "SkRRect::kSizeInMemory"
-},
"SkRRect_makeOffset": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setStyle(SkPaint::kStroke_Style);\n SkRRect rrect = SkRRect::MakeRectXY({100, 20, 140, 220}, 50, 100);\n for (int index = 0; index < 25; ++index) {\n canvas->drawRRect(rrect, paint);\n rrect = rrect.makeOffset(-3, 3);\n }\n}",
"width": 256,
@@ -7842,18 +7816,18 @@
"name": "SkRRect::outset_2"
},
"SkRRect_readFromMemory": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkVector radii[] = {{5, 5}, {10, 10}, {15, 15}, {5, 5}};\n SkRRect rrect;\n rrect.setRectRadii({10, 10, 110, 80}, radii);\n char storage[SkRRect::kSizeInMemory];\n rrect.writeToMemory(storage);\n SkRRect copy;\n copy.readFromMemory(storage, sizeof(storage));\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"rrect\", 55, 100, paint);\n canvas->drawString(\"copy\", 185, 100, paint); \n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRRect(rrect, paint);\n canvas->translate(120, 0);\n canvas->drawRRect(copy, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 110,
+ "hash": "b877c0adff35470865a57aa150bf5329",
"file": "SkRRect_Reference",
"name": "SkRRect::readFromMemory"
},
"SkRRect_setEmpty": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkRRect rrect = SkRRect::MakeRect({30, 10, 100, 60});\n canvas->drawRRect(rrect, paint);\n rrect.setEmpty();\n paint.setColor(SK_ColorBLUE);\n canvas->drawRRect(rrect, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "59c1025b8116ec1d3b55f4f6306d1e37",
+ "height": 80,
+ "hash": "44e9a9c2c5ef1af2a616086ff46a9037",
"file": "SkRRect_Reference",
"name": "SkRRect::setEmpty"
},
@@ -7884,8 +7858,8 @@
"SkRRect_setRectRadii": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStrokeWidth(15);\n paint.setStrokeCap(SkPaint::kSquare_Cap);\n paint.setAntiAlias(true);\n float intervals[] = { 5, 21.75f };\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 0));\n SkPath path;\n SkRRect rrect;\n SkVector corners[] = {{15, 17}, {17, 19}, {19, 15}, {15, 15}};\n rrect.setRectRadii({20, 20, 100, 100}, corners);\n path.addRRect(rrect, SkPath::kCW_Direction);\n canvas->drawPath(path, paint);\n path.rewind();\n path.addRRect(rrect, SkPath::kCCW_Direction, 1);\n canvas->translate(120, 0);\n canvas->drawPath(path, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "4589dd49da291f8cd414db96c12851c7",
+ "height": 128,
+ "hash": "340d6c51efaa1f7f3d0dcaf8b0e90696",
"file": "SkRRect_Reference",
"name": "SkRRect::setRectRadii"
},
@@ -7898,26 +7872,26 @@
"name": "SkRRect::setRectXY"
},
"SkRRect_transform": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkVector radii[] = {{5, 5}, {10, 10}, {15, 15}, {5, 5}};\n SkRRect rrect;\n rrect.setRectRadii({10, 10, 110, 80}, radii);\n SkRRect transformed;\n SkMatrix matrix = SkMatrix::MakeRectToRect(rrect.rect(), {140, 30, 220, 80},\n SkMatrix::kCenter_ScaleToFit);\n bool success = rrect.transform(matrix, &transformed);\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"rrect\", 55, 100, paint);\n canvas->drawString(success ? \"transformed\" : \"transform failed\", 185, 100, paint); \n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRRect(rrect, paint);\n canvas->drawRRect(transformed, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 110,
+ "hash": "99ccc6862bb9fe3ca35228eee9f9725d",
"file": "SkRRect_Reference",
"name": "SkRRect::transform()"
},
"SkRRect_type": {
"code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({10, 10, 100, 50});\n SkRRect rrect2(rrect);\n rrect2.inset(20, 20);\n SkPaint p;\n p.setStyle(SkPaint::kStroke_Style);\n p.setStrokeWidth(10);\n std::string str(\"Type \");\n str += SkRRect::kEmpty_Type == rrect2.type() ? \"=\" : \"!\"; \n str += \"= SkRRect::kEmpty_Type\";\n canvas->drawString(str.c_str(), 20, 80, SkPaint());\n canvas->drawRRect(rrect2, p);\n}",
"width": 256,
- "height": 256,
- "hash": "02b03d651c4b5d18018c6f75fa88b8ce",
+ "height": 100,
+ "hash": "1080805c8449406a4e26d694bc56d2dc",
"file": "SkRRect_Reference",
"name": "SkRRect::type()"
},
"SkRRect_writeToMemory": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkRRect rrect = SkRRect::MakeRect({10, 10, 110, 80});\n char storage[SkRRect::kSizeInMemory];\n rrect.writeToMemory(storage);\n SkRRect copy;\n copy.readFromMemory(storage, sizeof(storage));\n SkPaint paint;\n paint.setAntiAlias(true);\n paint.setTextAlign(SkPaint::kCenter_Align);\n canvas->drawString(\"rrect\", 55, 100, paint);\n canvas->drawString(\"copy\", 185, 100, paint); \n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRRect(rrect, paint);\n canvas->translate(120, 0);\n canvas->drawRRect(copy, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 110,
+ "hash": "1466c844a78fd05a7362537347e360ca",
"file": "SkRRect_Reference",
"name": "SkRRect::writeToMemory"
},
diff --git a/site/user/api/index.md b/site/user/api/index.md
index 1e116e721d..bfb0493c93 100644
--- a/site/user/api/index.md
+++ b/site/user/api/index.md
@@ -7,7 +7,10 @@ Full references with examples are available for:
* [SkAutoCanvasRestore](/user/api/SkAutoCanvasRestore_Reference) - Canvas save stack manager
* [SkBitmap](/user/api/SkBitmap_Reference) - two-dimensional raster pixel array
+* [SkBlendMode](/user/api/SkBlendMode_Reference) - pixel color arithmetic
* [SkCanvas](/user/api/SkCanvas_Reference) - drawing context
+* [SkColor](/user/api/SkColor_Reference) - color encoding using integer numbers
+* [SkColor4f](/user/api/SkColor4f_Reference) - color encoding using floating point numbers
* [SkImage](/user/api/SkImage_Reference) - two dimensional array of pixels to draw
* [SkImageInfo](/user/api/SkImageInfo_Reference) - pixel dimensions and characteristics
* [SkIPoint](/user/api/SkIPoint_Reference) - two integer coordinates
@@ -16,8 +19,10 @@ Full references with examples are available for:
* [SkMatrix](/user/api/SkMatrix_Reference) - 3x3 transformation matrix
* [SkPaint](/user/api/SkPaint_Reference) - color, stroke, font, effects
* [SkPath](/user/api/SkPath_Reference) - sequence of connected lines and curves
+* [SkPicture](/user/api/SkPicture_Reference) - sequence of drawing commands
* [SkPixmap](/user/api/SkPixmap_Reference) - pixel map: image info and pixel address
* [SkPoint](/user/api/SkPoint_Reference) - two floating point coordinates
+* [SkRRect](/user/api/SkRRect_Reference) - floating point rounded rectangle
* [SkRect](/user/api/SkRect_Reference) - floating point rectangle
* [SkSurface](/user/api/SkSurface_Reference) - drawing destination
diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md
index 26e9795b37..45e5551cb2 100644
--- a/site/user/api/undocumented.md
+++ b/site/user/api/undocumented.md
@@ -284,16 +284,12 @@ void <a href='#GrContext_flush'>flush</a>()
## <a name='ArcTo'>ArcTo</a>
-# <a name='HTML_DarkGray'>HTML DarkGray</a>
-
# <a name='HTML_Fuchsia'>HTML Fuchsia</a>
# <a name='HTML_Gray'>HTML Gray</a>
# <a name='HTML_Green'>HTML Green</a>
-# <a name='HTML_LightGray'>HTML LightGray</a>
-
# <a name='HTML_Lime'>HTML Lime</a>
# <a name='HTML_Silver'>HTML Silver</a>
diff --git a/site/user/api/usingBookmaker.md b/site/user/api/usingBookmaker.md
index 348d1c6704..684e906ed5 100644
--- a/site/user/api/usingBookmaker.md
+++ b/site/user/api/usingBookmaker.md
@@ -100,6 +100,12 @@ which will be ignored.
## <a name='Installing'>Installing</a>
Install <a href='https://golang.org/doc/install'>Go</a></a> if needed.
+Check the version. The resuls should be 1.10 or greater.
+
+<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
+$ go version
+</pre>
+
Get the fiddle command line interface tool.
By default this will appear in your home directory.
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index 15598be95f..65f89f5dfe 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -48,10 +48,9 @@ trouble with aliases, plurals
deprecated methods should be sorted down in md out, and show include "Deprecated." text body.
rewrap text to fit in some number of columns
#Literal is inflexible, making the entire #Code block link-less (see $Literal in SkImageInfo)
- would rather keep links for boby above #Literal, and/or make it a block and not a one-liner
+ would rather keep links for body above #Literal, and/or make it a block and not a one-liner
add check to require #Const to contain #Code block if defining const or constexpr (enum consts have
- #Code blocks inside the #Enum def
-add spelling rule to look for x-bit but allow x bits
+ #Code blocks inside the #Enum def)
There are a number of formatting bugs with ad hoc patches where a substitution doesn't keep
the space before or after, or the linefeeds before or after. The rules are not very good either.
@@ -72,8 +71,6 @@ there is special case code to skip phrase def when looking for additional substi
phrase def. Could put it in the token list instead I guess, or make a definition subclass used
by phrase def with an additional slot...
-
-
#Deprecated soon
##
should emit the text "To be deprecated soon." (right now you get just "soon")
@@ -86,9 +83,8 @@ has #Const children. If so, generate a summary table first.
Or, only allow #Line and moderate text description in #Const. Put more verbose text, example,
seealso, in subsequent #SubTopic. Alpha_Type does this and it looks good.
-more spelling: x-value y-value
-
see head of selfCheck.cpp for additional todos
+see head of spellCheck.cpp for additional todos
*/
/*
diff --git a/tools/bookmaker/definition.cpp b/tools/bookmaker/definition.cpp
index 18ce808068..056e4f7fe4 100644
--- a/tools/bookmaker/definition.cpp
+++ b/tools/bookmaker/definition.cpp
@@ -530,6 +530,67 @@ bool Definition::checkMethod() const {
return paramError.reportError<bool>("#Param without param in #Method");
}
}
+ // check after end of #Line and before next child for description
+ const char* descStart = fContentStart;
+ const char* descEnd = nullptr;
+ for (auto& child : fChildren) {
+ if (MarkType::kAnchor == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kCode == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kDeprecated == child->fMarkType) {
+ return true;
+ }
+ if (MarkType::kExperimental == child->fMarkType) {
+ return true;
+ }
+ if (MarkType::kFormula == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kList == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kMarkChar == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kPhraseRef == child->fMarkType) {
+ continue;
+ }
+ if (MarkType::kPrivate == child->fMarkType) {
+ return true;
+ }
+ TextParser emptyCheck(fFileName, descStart, child->fStart, child->fLineCount);
+ if (!emptyCheck.eof() && emptyCheck.skipWhiteSpace()) {
+ descStart = emptyCheck.fChar;
+ emptyCheck.trimEnd();
+ descEnd = emptyCheck.fEnd;
+ break;
+ }
+ descStart = child->fTerminator;
+ }
+ if (!descEnd) {
+ return methodParser.reportError<bool>("missing description");
+ }
+ TextParser description(fFileName, descStart, descEnd, fLineCount);
+ // expect first word capitalized and pluralized. expect a trailing period
+ SkASSERT(descStart < descEnd);
+ if (!isupper(descStart[0])) {
+ description.reportWarning("expected capital");
+ } else if ('.' != descEnd[-1]) {
+ description.reportWarning("expected period");
+ } else {
+ if (!description.startsWith("For use by Android")) {
+ description.skipToSpace();
+ if (',' == description.fChar[-1]) {
+ --description.fChar;
+ }
+ if ('s' != description.fChar[-1]) {
+ description.reportWarning("expected plural");
+ }
+ }
+ }
return true;
}
@@ -852,6 +913,9 @@ bool Definition::methodHasReturn(string name, TextParser* methodParser) const {
if (methodParser->skipExact("static")) {
methodParser->skipWhiteSpace();
}
+ if (methodParser->skipExact("virtual")) {
+ methodParser->skipWhiteSpace();
+ }
const char* lastStart = methodParser->fChar;
const char* nameInParser = methodParser->strnstr(name.c_str(), methodParser->fEnd);
methodParser->skipTo(nameInParser);
diff --git a/tools/bookmaker/includeParser.cpp b/tools/bookmaker/includeParser.cpp
index 716d90afeb..238fcf5109 100644
--- a/tools/bookmaker/includeParser.cpp
+++ b/tools/bookmaker/includeParser.cpp
@@ -2469,9 +2469,12 @@ bool IncludeParser::parseChar() {
// find token on start of line
auto lineIter = fParent->fTokens.end();
do {
+ if (fParent->fTokens.begin() == lineIter) {
+ break;
+ }
--lineIter;
} while (lineIter->fContentStart > fLine);
- if (lineIter->fContentStart < fLine) {
+ if (lineIter->fContentStart < fLine && fParent->fTokens.end() != lineIter) {
++lineIter;
}
Definition* lineStart = &*lineIter;
@@ -2571,7 +2574,8 @@ bool IncludeParser::parseChar() {
list<Definition>::iterator baseIter = fParent->fTokens.end();
list<Definition>::iterator namedIter = fParent->fTokens.end();
for (auto tokenIter = fParent->fTokens.end();
- fParent->fTokens.begin() != tokenIter--; ) {
+ fParent->fTokens.begin() != tokenIter; ) {
+ --tokenIter;
if (tokenIter->fLineCount == fLineCount) {
if ('f' == tokenIter->fStart[0] && isupper(tokenIter->fStart[1])) {
if (namedIter != fParent->fTokens.end()) {
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index 18beff4809..e16da320eb 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -2051,6 +2051,7 @@ bool IncludeWriter::populate(BmhParser& bmhParser) {
return this->reportError<bool>("expected fileName.h");
}
string skClassName = fileName.substr(0, fileName.length() - 2);
+ this->reset();
fOut = fopen(fileName.c_str(), "wb");
if (!fOut) {
SkDebugf("could not open output file %s\n", fileName.c_str());
diff --git a/tools/bookmaker/mdOut.cpp b/tools/bookmaker/mdOut.cpp
index 653ca5e2f3..4fdc206185 100644
--- a/tools/bookmaker/mdOut.cpp
+++ b/tools/bookmaker/mdOut.cpp
@@ -1354,7 +1354,7 @@ void MdOut::markTypeOut(Definition* def, const Definition** prior) {
if (fBmhParser.fTopicMap.end() == fBmhParser.fTopicMap.find(fullName)) {
(*subtopic)->reportError<void>("missing #Details subtopic");
}
- subtopicName = parentSubtopic->fName + '_' + subtopicName;
+ // subtopicName = parentSubtopic->fName + '_' + subtopicName;
string noUnderscores = subtopicName;
replace_all(noUnderscores, "_", "&nbsp;");
details = this->anchorLocalRef(subtopicName, noUnderscores) + "&nbsp;";
diff --git a/tools/bookmaker/spellCheck.cpp b/tools/bookmaker/spellCheck.cpp
index a65e2c1762..39621dbb0c 100644
--- a/tools/bookmaker/spellCheck.cpp
+++ b/tools/bookmaker/spellCheck.cpp
@@ -20,7 +20,10 @@ if word is camel cased, look for :: matches on suffix
when function crosses lines, whole thing isn't seen as a 'word' e.g., search for largeArc in path
words in external not seen
+
+look for x-bit but allow x bits
*/
+
struct CheckEntry {
string fFile;
int fLine;
@@ -389,6 +392,7 @@ void SpellCheck::leafCheck(const char* start, const char* end) {
int inParens = 0;
bool inQuotes = false;
bool allLower = true;
+ char prePriorCh = 0;
char priorCh = 0;
char lastCh = 0;
const char* wordStart = nullptr;
@@ -400,7 +404,10 @@ void SpellCheck::leafCheck(const char* start, const char* end) {
if (!allLower || (!inQuotes && '\"' != lastCh && !inParens
&& ')' != lastCh && !inAngles && '>' != lastCh)) {
string word(wordStart, (possibleEnd ? possibleEnd : wordEnd) - wordStart);
- wordCheck(word);
+ if ("e" != word || !isdigit(prePriorCh) || ('+' != lastCh &&
+ '-' != lastCh && !isdigit(lastCh))) {
+ this->wordCheck(word);
+ }
}
wordStart = nullptr;
}
@@ -469,6 +476,7 @@ void SpellCheck::leafCheck(const char* start, const char* end) {
wordEnd = chPtr;
break;
}
+ prePriorCh = priorCh;
priorCh = lastCh;
lastCh = *chPtr;
} while (++chPtr <= end);
@@ -655,6 +663,9 @@ void SpellCheck::wordCheck(string str) {
}
iter->second.fCount += 1;
} else {
+ if ("e" == str) {
+ SkDebugf("");
+ }
CheckEntry* entry = &mappy[str];
entry->fFile = fFileName;
entry->fLine = fLineCount + fLocalLine;