aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/SkBitmap_Reference.bmh3
-rw-r--r--docs/SkCanvas_Reference.bmh323
-rw-r--r--docs/SkMatrix_Reference.bmh14
-rw-r--r--docs/SkPaint_Reference.bmh32
-rw-r--r--docs/SkPath_Reference.bmh3
-rw-r--r--docs/SkPixmap_Reference.bmh8
-rw-r--r--docs/undocumented.bmh41
-rw-r--r--site/user/api/SkBitmap_Reference.md6
-rw-r--r--site/user/api/SkCanvas_Reference.md517
-rw-r--r--site/user/api/SkMatrix_Reference.md8
-rw-r--r--site/user/api/SkPaint_Reference.md16
-rw-r--r--site/user/api/SkPath_Reference.md3
-rw-r--r--site/user/api/SkPixmap_Reference.md14
-rw-r--r--site/user/api/catalog.htm85
-rw-r--r--site/user/api/undocumented.md147
15 files changed, 995 insertions, 225 deletions
diff --git a/docs/SkBitmap_Reference.bmh b/docs/SkBitmap_Reference.bmh
index 78677655e8..7da6797dff 100644
--- a/docs/SkBitmap_Reference.bmh
+++ b/docs/SkBitmap_Reference.bmh
@@ -1295,6 +1295,7 @@ Returns IRect { 0, 0, width(), height() }.
#Return integral rectangle from origin to width() and height() ##
#Example
+#Height 128
#Image 4
SkIRect bounds = source.bounds();
for (int x : { 0, bounds.width() } ) {
@@ -2246,7 +2247,7 @@ subset origin: 32, 64
##
##
-#ToDo incomplete ##
+#SeeAlso SkPixelRef getSubset setPixelRef
##
diff --git a/docs/SkCanvas_Reference.bmh b/docs/SkCanvas_Reference.bmh
index 3c836b41d3..aec7610739 100644
--- a/docs/SkCanvas_Reference.bmh
+++ b/docs/SkCanvas_Reference.bmh
@@ -73,7 +73,6 @@ when no Surface is required, and some helpers implicitly create Raster_Surface.
# SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props) # Uses existing Bitmap and Surface_Properties. ##
# MakeRasterDirect # Creates from SkImageInfo and Pixel_Storage. ##
# MakeRasterDirectN32 # Creates from image data and Pixel_Storage. ##
-#ToDo incomplete ##
#Table ##
#Subtopic ##
@@ -232,9 +231,8 @@ void draw(SkCanvas* ) {
##
##
-#ToDo incomplete ##
-
#SeeAlso MakeRasterDirectN32 SkSurface::MakeRasterDirect
+
##
# ------------------------------------------------------------------------------
@@ -306,7 +304,7 @@ void draw(SkCanvas* ) {
##
##
-#ToDo incomplete ##
+#SeeAlso MakeRasterDirect SkSurface::MakeRasterDirect SkImageInfo::MakeN32Premul
##
@@ -358,7 +356,7 @@ void draw(SkCanvas* canvas) {
##
##
-#ToDo incomplete ##
+#SeeAlso MakeRasterDirect SkRasterHandleAllocator::MakeCanvas SkSurface::getCanvas SkCreateColorSpaceXformCanvas
##
@@ -393,7 +391,7 @@ different characteristics, it is best not to rely on this legacy behavior.
##
##
-#SeeAlso SkSurfaceProps SkPixelGeometry
+#SeeAlso MakeRasterDirect SkSurfaceProps SkPixelGeometry SkCreateColorSpaceXformCanvas
##
@@ -416,7 +414,9 @@ Used by child classes of SkCanvas.
: SkCanvas(dev.get()) {}
##
-#ToDo either remove doc of figure out a way to fiddle it ##
+#ToDo either remove doc or figure out a way to fiddle it ##
+
+#SeeAlso MakeRasterDirect SkRasterHandleAllocator::MakeCanvas SkSurface::getCanvas SkCreateColorSpaceXformCanvas
##
@@ -479,7 +479,7 @@ The actual output depends on the installed fonts.
#StdOut ##
##
-#ToDo incomplete ##
+#SeeAlso MakeRasterDirect SkRasterHandleAllocator::MakeCanvas SkSurface::getCanvas SkCreateColorSpaceXformCanvas
##
@@ -571,7 +571,7 @@ The actual output depends on the installed fonts.
#StdOut ##
##
-#ToDo incomplete ##
+#SeeAlso MakeRasterDirect SkRasterHandleAllocator::MakeCanvas SkSurface::getCanvas SkCreateColorSpaceXformCanvas
##
@@ -636,7 +636,7 @@ The storage is freed when Canvas is deleted.
#StdOut ##
##
-#ToDo incomplete ##
+#SeeAlso SkMetaData
##
@@ -660,7 +660,7 @@ GPU_Surface, returned Image_Color_Type is set to kUnknown_SkColorType.
##
##
-#ToDo incomplete ##
+#SeeAlso SkImageInfo MakeRasterDirect makeSurface
##
@@ -694,7 +694,7 @@ return false and leave props unchanged.
#StdOut ##
##
-#ToDo incomplete ##
+#SeeAlso SkSurfaceProps makeSurface
##
@@ -704,12 +704,31 @@ return false and leave props unchanged.
Triggers the immediate execution of all pending draw operations.
If Canvas is associated with GPU_Surface, resolves all pending GPU operations.
+If Canvas is associated with Raster_Surface, has no effect; raster draw
+operations are never deferred.
+
+#ToDo
+In an overview section on managing the GPU, include:
+- flush should never change what is drawn
+- call to kick off gpu work
+- calling too much impacts performance
+- some calls (peekPixels, prepareForExternalIO) call it internally
+- canvas call is local, GrContext::flush is global
+- diffentiate between flush, flushAndSignalSemaphores
+- normally never needs to be called
+- call it when sharing gpu resources, feeling memory pressure, swapping out app, and before
+ abandoning context
+- also call to say "I'm finished drawing here", e.g., when drawing to a GPU-backed offscreen surface
+ (created with SkSurface::MakeRenderTarget)
+
+for posterity: this doesn't show a difference: fiddle.skia.org/c/@flushfail
+##
#Example
#Error "haven't thought of a useful example to put here"
##
-#ToDo incomplete ##
+#SeeAlso peekPixels SkSurface::flush() GrContext::flush() SkSurface::prepareForExternalIO GrContext::abandonContext()
##
@@ -744,6 +763,8 @@ smaller (due to clipping or saveLayer).
#ToDo is this the same as the width and height of surface? ##
+#SeeAlso getDeviceClipBounds
+
##
# ------------------------------------------------------------------------------
@@ -775,7 +796,7 @@ does not have Surface_Properties, creates Surface with default Surface_Propertie
##
##
-#ToDo incomplete ##
+#SeeAlso SkSurface SkSurface::makeSurface SkImageInfo SkSurfaceProps
##
@@ -799,6 +820,8 @@ void draw(SkCanvas* canvas) {
#ToDo fiddle should show both CPU and GPU out ##
+#SeeAlso GrContext
+
##
# ------------------------------------------------------------------------------
@@ -879,6 +902,8 @@ void draw(SkCanvas* canvas) {
#ToDo there are no callers of this that I can find. Deprecate? ##
#ToDo fiddle should show both CPU and GPU out ##
+#SeeAlso SkImageInfo SkPixmap
+
##
# ------------------------------------------------------------------------------
@@ -968,6 +993,8 @@ Canvas or Surface call may invalidate the pixmap values.
##
##
+#SeeAlso readPixels SkBitmap::peekPixels SkImage::peekPixels SkSurface::peekPixels
+
##
# ------------------------------------------------------------------------------
@@ -1059,7 +1086,7 @@ Does not copy, and returns false if:
##
##
-#SeeAlso peekPixels writePixels drawBitmap drawImage
+#SeeAlso peekPixels writePixels drawBitmap drawImage SkBitmap::readPixels SkPixmap::readPixels SkImage::readPixels SkSurface::readPixels
##
@@ -1122,7 +1149,7 @@ Does not copy, and returns false if:
##
##
-#SeeAlso peekPixels writePixels drawBitmap drawImage
+#SeeAlso peekPixels writePixels drawBitmap drawImage SkBitmap::readPixels SkPixmap::readPixels SkImage::readPixels SkSurface::readPixels
##
@@ -1185,7 +1212,7 @@ void draw(SkCanvas* canvas) {
##
##
-#SeeAlso peekPixels writePixels drawBitmap drawImage
+#SeeAlso peekPixels writePixels drawBitmap drawImage SkBitmap::readPixels SkPixmap::readPixels SkImage::readPixels SkSurface::readPixels
##
@@ -1242,7 +1269,7 @@ this->imageInfo().alphaType(). ##
}
##
-#SeeAlso readPixels drawBitmap drawImage
+#SeeAlso readPixels drawBitmap drawImage SkBitmap::writePixels
##
@@ -1307,7 +1334,7 @@ void draw(SkCanvas* canvas) {
}
##
-#SeeAlso readPixels drawBitmap drawImage
+#SeeAlso readPixels drawBitmap drawImage SkBitmap::writePixels
##
@@ -1418,7 +1445,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha restore() restoreToCount
##
@@ -1440,6 +1467,8 @@ void draw(SkCanvas* canvas) {
}
##
+#SeeAlso save() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha restoreToCount
+
##
# ------------------------------------------------------------------------------
@@ -1468,6 +1497,8 @@ depth = 1
##
##
+#SeeAlso save() restore() restoreToCount
+
##
# ------------------------------------------------------------------------------
@@ -1498,6 +1529,8 @@ depth = 1
##
##
+#SeeAlso restore() getSaveCount save()
+
##
#Topic State_Stack ##
@@ -1561,7 +1594,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha SaveLayerRec
##
@@ -1609,7 +1642,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayerPreserveLCDTextRequests saveLayerAlpha SaveLayerRec
##
@@ -1666,7 +1699,7 @@ incorrect blending.
}
##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayer saveLayerAlpha SaveLayerRec
##
@@ -1707,7 +1740,7 @@ Call restoreToCount with returned value to restore this and subsequent saves.
canvas->restore();
##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests SaveLayerRec
##
@@ -1773,7 +1806,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha SaveLayerRec
#Enum ##
@@ -1870,6 +1903,8 @@ Sets fBounds, fPaint, and fBackdrop to nullptr. Clears fSaveLayerFlags.
##
##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
+
##
#Method SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0)
@@ -1894,6 +1929,8 @@ Sets fBounds, fPaint, and fSaveLayerFlags; sets fBackdrop to nullptr.
##
##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
+
##
#Method SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
@@ -1923,6 +1960,8 @@ Sets fBounds, fPaint, fBackdrop, and fSaveLayerFlags.
##
##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
+
##
#Method SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
@@ -1937,7 +1976,7 @@ Sets fBounds, fPaint, fBackdrop, fClipMask, fClipMatrix, and fSaveLayerFlags.
clipMatrix uses Color_Alpha channel of image, transformed by clipMatrix, to clip
Layer when drawn to Canvas.
-Implementation is incomplete; has no effect if Device is GPU-backed.
+Implementation is not complete; has no effect if Device is GPU-backed.
#Param bounds Layer dimensions; may be nullptr ##
#Param paint graphics state applied to Layer when overlaying prior
@@ -1954,7 +1993,7 @@ Implementation is incomplete; has no effect if Device is GPU-backed.
#Return SaveLayerRec fully specified ##
-#ToDo incomplete ##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
##
@@ -2003,6 +2042,8 @@ Outside of the circle the mandrill is brightened.
#ToDo above example needs to replace GetResourceAsImage with way to select image in fiddle ##
+#SeeAlso save() restore() saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
+
##
#Topic Layer ##
@@ -2054,7 +2095,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso concat() scale() skew() rotate() setMatrix
##
@@ -2086,7 +2127,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso concat() translate() skew() rotate() setMatrix
##
@@ -2123,7 +2164,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso concat() translate() skew() scale() setMatrix
##
@@ -2156,7 +2197,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso concat() translate() skew() scale() setMatrix
##
@@ -2201,7 +2242,7 @@ the result with Matrix.
canvas->drawString("A1", 0, 0, paint);
##
-#ToDo incomplete ##
+#SeeAlso concat() translate() rotate() scale() setMatrix
##
@@ -2233,7 +2274,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso translate() rotate() scale() skew() setMatrix
##
@@ -2259,7 +2300,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso resetMatrix concat() translate() rotate() scale() skew()
##
@@ -2282,7 +2323,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso setMatrix concat() translate() rotate() scale() skew()
##
@@ -2302,7 +2343,7 @@ This does not account for translation by Device or Surface.
##
##
-#ToDo incomplete ##
+#SeeAlso setMatrix resetMatrix concat()
##
@@ -2394,7 +2435,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRRect clipPath clipRegion
##
@@ -2422,7 +2463,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRRect clipPath clipRegion
##
@@ -2463,7 +2504,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRRect clipPath clipRegion
##
@@ -2510,7 +2551,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipPath clipRegion
##
@@ -2534,7 +2575,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipPath clipRegion
##
@@ -2558,7 +2599,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipPath clipRegion
##
@@ -2599,7 +2640,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipRRect clipRegion
##
@@ -2640,7 +2681,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipRRect clipRegion
##
@@ -2682,7 +2723,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipRRect clipRegion
##
@@ -2731,7 +2772,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clipRect clipRRect clipPath
##
@@ -2764,7 +2805,7 @@ void draw(SkCanvas* canvas) {
##
##
-#ToDo incomplete ##
+#SeeAlso getLocalClipBounds getTotalMatrix SkBitmap::drawsNothing
##
@@ -2800,7 +2841,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso getLocalClipBounds getTotalMatrix SkBitmap::drawsNothing
##
@@ -2845,6 +2886,7 @@ is Anti-aliased.
# local canvas in example works around bug in fiddle ##
#Bug 6524 ##
+#SeeAlso getDeviceClipBounds getBaseLayerSize quickReject
##
@@ -2880,6 +2922,7 @@ is Anti-aliased.
# local canvas in example works around bug in fiddle ##
#Bug 6524 ##
+#SeeAlso getDeviceClipBounds getBaseLayerSize quickReject
##
@@ -2927,6 +2970,7 @@ void draw(SkCanvas* canvas) {
##
#ToDo some confusion on why with an identity Matrix local and device are different ##
+#SeeAlso getLocalClipBounds getBaseLayerSize quickReject
# device canvas in example works around bug in fiddle ##
#Bug 6524 ##
@@ -2960,7 +3004,7 @@ Unlike getLocalClipBounds, bounds is not outset.
##
##
-#ToDo incomplete ##
+#SeeAlso getLocalClipBounds getBaseLayerSize quickReject
##
@@ -2984,7 +3028,7 @@ mode determines how Color_ARGB is combined with destination.
canvas->drawColor(SkColorSetARGB(0x80, 0x00, 0x00, 0xFF), SkBlendMode::kPlus);
##
-#ToDo incomplete ##
+#SeeAlso clear SkBitmap::erase drawPaint
##
@@ -3012,7 +3056,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawColor SkBitmap::erase drawPaint
##
@@ -3033,6 +3077,7 @@ It is not necessary to call discard() once done with Canvas;
any cached data is deleted when owning Surface or Device is deleted.
#ToDo example? not sure how to make this meaningful w/o more implementation detail ##
+#SeeAlso flush() SkSurface::prepareForExternalIO GrContext::abandonContext
#NoExample
##
@@ -3061,7 +3106,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso clear drawColor SkBitmap::erase
##
@@ -3116,7 +3161,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawLine drawPoint drawPath
##
@@ -3196,7 +3241,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawLine drawPoint drawPath
##
@@ -3232,7 +3277,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawPoints drawCircle drawRect drawLine drawPath
##
@@ -3265,7 +3310,7 @@ void draw(SkCanvas* canvas) {
}
##
-#SeeAlso drawPoints drawCircle drawRect
+#SeeAlso drawPoints drawCircle drawRect drawLine drawPath
##
@@ -3295,7 +3340,7 @@ Paint_Style is ignored, as if were set to SkPaint::kStroke_Style.
canvas->drawLine(288, 96, 288, 160, paint);
##
-#ToDo incomplete ##
+#SeeAlso drawPoint drawCircle drawRect drawPath
##
@@ -3321,7 +3366,7 @@ Paint_Style is ignored, as if were set to SkPaint::kStroke_Style.
canvas->drawLine({288, 96}, {288, 160}, paint);
##
-#ToDo incomplete ##
+#SeeAlso drawPoint drawCircle drawRect drawPath
##
@@ -3357,7 +3402,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawIRect drawRRect drawRoundRect drawRegion drawPath drawLine
##
@@ -3387,7 +3432,7 @@ Paint_Stroke_Join draws the corners rounded or square.
}
##
-#ToDo incomplete ##
+#SeeAlso drawRect drawRRect drawRoundRect drawRegion drawPath drawLine
##
@@ -3417,7 +3462,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawRect drawIRect drawPath
##
@@ -3448,7 +3493,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawCircle drawPoint drawPath drawRRect drawRoundRect
##
@@ -3487,7 +3532,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawRect drawRoundRect drawDRRect drawCircle drawOval drawPath
##
@@ -3541,7 +3586,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawRect drawRoundRect drawRRect drawCircle drawOval drawPath
##
@@ -3571,7 +3616,7 @@ if stroked, Paint_Stroke_Width describes the line thickness.
}
##
-#ToDo incomplete ##
+#SeeAlso drawOval drawRRect drawRoundRect drawPath drawArc drawPoint drawLine
##
@@ -3598,7 +3643,7 @@ if stroked, Paint_Stroke_Width describes the line thickness.
}
##
-#ToDo incomplete ##
+#SeeAlso drawOval drawRRect drawRoundRect drawPath drawArc drawPoint drawLine
##
@@ -3662,7 +3707,7 @@ If Rect oval is empty or sweepAngle is zero, nothing is drawn.
}
##
-#ToDo incomplete ##
+#SeeAlso SkPath::arcTo drawCircle drawOval drawPath
##
@@ -3709,7 +3754,7 @@ Paint_Stroke_Join.
}
##
-#ToDo incomplete ##
+#SeeAlso DrawRRect drawRect drawDRRect drawPath drawCircle drawOval drawPoint
##
@@ -3772,7 +3817,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SkPath drawLine drawArc drawRect drawPoints
##
@@ -3815,7 +3860,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmap drawImageLattice drawImageNine drawImageRect SkPaint::setImageFilter
##
@@ -3854,7 +3899,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmap drawImageLattice drawImageNine drawImageRect SkPaint::setImageFilter
##
@@ -3922,7 +3967,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageRect drawImage SkPaint::setImageFilter
##
@@ -3987,7 +4032,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
##
@@ -4032,7 +4077,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
##
@@ -4073,7 +4118,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
##
@@ -4129,7 +4174,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
##
@@ -4181,7 +4226,8 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
+
##
# ------------------------------------------------------------------------------
@@ -4230,7 +4276,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SrcRectConstraint drawImage drawImageLattice drawImageNine
##
@@ -4296,7 +4342,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImage drawBitmapNine drawImageLattice drawImageRect
##
@@ -4363,7 +4409,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImage drawBitmapNine drawImageLattice drawImageRect
##
@@ -4415,7 +4461,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImage drawBitmapLattice drawBitmapNine drawBitmapRect SkBitmap::readPixels SkBitmap::writePixels
##
@@ -4472,7 +4518,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageRect drawBitmap drawBitmapLattice drawBitmapNine
##
@@ -4530,7 +4576,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageRect drawBitmap drawBitmapLattice drawBitmapNine
##
@@ -4581,7 +4627,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageRect drawBitmap drawBitmapLattice drawBitmapNine
##
@@ -4649,7 +4695,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageNine drawBitmap drawBitmapLattice drawBitmapRect
##
@@ -4807,7 +4853,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawImageLattice drawBitmap drawBitmapNine Lattice
##
@@ -4884,7 +4930,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmapLattice drawImage drawImageNine Lattice
##
@@ -4943,7 +4989,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawString drawPosText drawPosTextH drawTextBlob drawTextOnPath drawTextRSXform
##
@@ -4976,7 +5022,7 @@ filled 12 point black Glyphs.
canvas->drawString("a small hello", 20, 20, paint);
##
-#SeeAlso drawText
+#SeeAlso drawText drawPosText drawPosTextH drawTextBlob drawTextOnPath drawTextRSXform
##
@@ -5010,7 +5056,7 @@ filled 12 point black Glyphs.
canvas->drawString(string, 20, 20, paint);
##
-#SeeAlso drawText
+#SeeAlso drawText drawPosText drawPosTextH drawTextBlob drawTextOnPath drawTextRSXform
##
@@ -5053,7 +5099,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawText drawPosTextH drawTextBlob drawTextOnPath drawTextRSXform
##
@@ -5095,7 +5141,7 @@ baseline.
}
##
-#ToDo incomplete ##
+#SeeAlso drawText drawPosText drawTextBlob drawTextOnPath drawTextRSXform
##
@@ -5143,7 +5189,7 @@ filled 12 point black Glyphs.
}
##
-#ToDo incomplete ##
+#SeeAlso drawTextOnPath drawText drawPosTextH drawTextBlob drawTextRSXform
##
@@ -5197,7 +5243,7 @@ filled 12 point black Glyphs.
}
##
-#ToDo incomplete ##
+#SeeAlso drawTextOnPathHV drawText drawPosTextH drawTextBlob drawTextRSXform
##
@@ -5247,7 +5293,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawTextOnPath drawTextOnPathHV drawText drawPosText drawTextBlob
##
@@ -5297,7 +5343,7 @@ Image_Filter, and Draw_Looper; apply to blob.
}
##
-#ToDo incomplete ##
+#SeeAlso drawText drawPosText drawPosTextH
##
@@ -5342,7 +5388,7 @@ Paint attributes related to text, like text size, have no effect on paint passed
}
##
-#ToDo incomplete ##
+#SeeAlso drawText drawPosText drawPosTextH
##
@@ -5378,7 +5424,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawDrawable SkPicture SkPicture::playback
##
@@ -5413,7 +5459,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawDrawable SkPicture SkPicture::playback
##
@@ -5455,7 +5501,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawDrawable SkPicture SkPicture::playback
##
@@ -5496,7 +5542,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawDrawable SkPicture SkPicture::playback
##
@@ -5523,7 +5569,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawPatch drawPicture
##
@@ -5553,7 +5599,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawPatch drawPicture
##
@@ -5611,7 +5657,8 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete; can patch use image filter? ##
+#ToDo can patch use image filter? ##
+#SeeAlso SeeAlso drawVertices drawPicture
##
@@ -5692,7 +5739,8 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete; can patch use image filter? ##
+#ToDo can patch use image filter? ##
+#SeeAlso SeeAlso drawVertices drawPicture
##
@@ -5733,7 +5781,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmap drawImage
##
@@ -5777,6 +5825,8 @@ void draw(SkCanvas* canvas) {
#ToDo bug in example on cpu side, gpu looks ok ##
+#SeeAlso drawBitmap drawImage
+
##
# ------------------------------------------------------------------------------
@@ -5811,7 +5861,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmap drawImage
##
@@ -5846,7 +5896,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso drawBitmap drawImage
##
@@ -5892,7 +5942,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SkDrawable drawPicture
##
@@ -5936,7 +5986,7 @@ void draw(SkCanvas* canvas) {
}
##
-#ToDo incomplete ##
+#SeeAlso SkDrawable drawPicture
##
@@ -5966,7 +6016,7 @@ Document_PDF, use annotations.
canvas->drawAnnotation(bounds, "url_key", urlData.get());
##
-#ToDo incomplete ##
+#SeeAlso SkPicture SkDocument
##
@@ -5996,7 +6046,7 @@ Document_PDF, use annotations.
canvas->drawAnnotation(bounds, "url_key", urlData.get());
##
-#ToDo incomplete ##
+#SeeAlso SkPicture SkDocument
##
@@ -6043,7 +6093,7 @@ work until Clip changes.
##
##
-#ToDo incomplete ##
+#SeeAlso isClipRect getLocalClipBounds getDeviceClipBounds
##
@@ -6068,7 +6118,7 @@ Returns false if the clip is empty, or if it is not Rect.
##
##
-#ToDo incomplete ##
+#SeeAlso isClipEmpty getLocalClipBounds getDeviceClipBounds
##
@@ -6090,7 +6140,18 @@ Preserves Canvas save count. Optionally saves Canvas Clip and Matrix.
#Return utility to restore Canvas state on destructor ##
#Example
-// incomplete
+#Height 128
+ SkPaint p;
+ p.setAntiAlias(true);
+ p.setTextSize(64);
+ for (SkScalar sx : { -1, 1 } ) {
+ for (SkScalar sy : { -1, 1 } ) {
+ SkAutoCanvasRestore autoRestore(canvas, true);
+ SkMatrix m = SkMatrix::MakeAll(sx, 1, 96, 0, sy, 64, 0, 0, 1);
+ canvas->concat(m);
+ canvas->drawString("R", 0, 0, p);
+ }
+ }
##
#SeeAlso SkCanvas::save SkCanvas::restore
@@ -6099,10 +6160,10 @@ Preserves Canvas save count. Optionally saves Canvas Clip and Matrix.
#Method ~SkAutoCanvasRestore()
-Restores Canvas to saved state.
+Restores Canvas to saved state. Destructor is called when container goes out of
+scope.
-#Example
-// incomplete
+#NoExample
##
#SeeAlso SkCanvas::save SkCanvas::restore
@@ -6115,7 +6176,31 @@ Restores Canvas to saved state immediately. Subsequent calls and
~SkAutoCanvasRestore have no effect.
#Example
-// incomplete
+for (bool callRestore : { false, true } ) {
+ for (bool saveCanvas : {false, true} ) {
+ SkAutoCanvasRestore autoRestore(canvas, saveCanvas);
+ if (!saveCanvas) {
+ canvas->save();
+ }
+ SkDebugf("saveCanvas: %s before restore: %d\n",
+ saveCanvas ? "true" : "false", canvas->getSaveCount());
+ if (callRestore) autoRestore.restore();
+ SkDebugf("saveCanvas: %s after restore: %d\n",
+ saveCanvas ? "true" : "false", canvas->getSaveCount());
+ }
+}
+SkDebugf("final count: %d\n", canvas->getSaveCount());
+#StdOut
+saveCanvas: false before restore: 2
+saveCanvas: false after restore: 2
+saveCanvas: true before restore: 2
+saveCanvas: true after restore: 2
+saveCanvas: false before restore: 2
+saveCanvas: false after restore: 1
+saveCanvas: true before restore: 2
+saveCanvas: true after restore: 1
+final count: 1
+##
##
#SeeAlso SkCanvas::save SkCanvas::restore
diff --git a/docs/SkMatrix_Reference.bmh b/docs/SkMatrix_Reference.bmh
index 54d21c8fff..107457c5a6 100644
--- a/docs/SkMatrix_Reference.bmh
+++ b/docs/SkMatrix_Reference.bmh
@@ -1372,6 +1372,7 @@ Sets all values from parameters. Sets matrix to:
#Param persp2 perspective scale factor to store ##
#Example
+#Height 128
SkPaint p;
p.setAntiAlias(true);
p.setTextSize(64);
@@ -1379,7 +1380,7 @@ Sets all values from parameters. Sets matrix to:
for (SkScalar sx : { -1, 1 } ) {
for (SkScalar sy : { -1, 1 } ) {
SkAutoCanvasRestore autoRestore(canvas, true);
- m.setAll(sx, 1, 128, 0, sy, 128, 0, 0, 1);
+ m.setAll(sx, 1, 128, 0, sy, 64, 0, 0, 1);
canvas->concat(m);
canvas->drawString("K", 0, 0, p);
}
@@ -1574,6 +1575,7 @@ The pivot point is unchanged when mapped with Matrix.
#Param py pivot y ##
#Example
+#Height 128
SkPaint p;
p.setAntiAlias(true);
p.setTextSize(64);
@@ -1581,9 +1583,9 @@ The pivot point is unchanged when mapped with Matrix.
for (SkScalar sx : { -1, 1 } ) {
for (SkScalar sy : { -1, 1 } ) {
SkAutoCanvasRestore autoRestore(canvas, true);
- m.setScale(sx, sy, 128, 128);
+ m.setScale(sx, sy, 128, 64);
canvas->concat(m);
- canvas->drawString("K", 128, 128, p);
+ canvas->drawString("%", 128, 64, p);
}
}
##
@@ -1602,6 +1604,7 @@ Sets Matrix to scale by sx and sy about at pivot point at (0, 0).
#Param sy vertical scale factor ##
#Example
+#Height 128
SkPaint p;
p.setAntiAlias(true);
p.setTextSize(64);
@@ -1610,9 +1613,9 @@ Sets Matrix to scale by sx and sy about at pivot point at (0, 0).
for (SkScalar sy : { -1, 1 } ) {
SkAutoCanvasRestore autoRestore(canvas, true);
m.setScale(sx, sy);
- m.postTranslate(128, 128);
+ m.postTranslate(128, 64);
canvas->concat(m);
- canvas->drawString("K", 0, 0, p);
+ canvas->drawString("@", 0, 0, p);
}
}
##
@@ -3827,6 +3830,7 @@ Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , -------
#Param rect Rect to map ##
#Example
+#Height 192
SkPaint paint;
paint.setAntiAlias(true);
SkMatrix matrix;
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 3369cd2861..aa388d3b09 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -630,7 +630,7 @@ by the client.
#NoExample
##
-#ToDo incomplete ##
+#SeeAlso SkReadBuffer
##
@@ -847,7 +847,7 @@ To be deprecated; only valid for Android framework.
mask for strike-thru text
##
-#ToDo incomplete ##
+#SeeAlso Flags getFlags
#Enum ##
@@ -2431,6 +2431,7 @@ Stroke_Width at the contour point.
Stroke_Cap is kButt_Cap by default.
#Example
+#Height 200
SkPaint paint;
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(20);
@@ -2502,18 +2503,19 @@ to the end of a curve within the contour does not match the tangent direction of
the following curve, the pair of curves meet at Stroke_Join.
#Example
- SkPaint paint;
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setStrokeWidth(20);
- SkPath path;
- path.moveTo(30, 30);
- path.lineTo(40, 50);
- path.conicTo(70, 30, 100, 30, .707f);
- for (SkPaint::Join j : { SkPaint::kMiter_Join, SkPaint::kRound_Join, SkPaint::kBevel_Join } ) {
- paint.setStrokeJoin(j);
- canvas->drawPath(path, paint);
- canvas->translate(0, 70);
- }
+#Height 200
+ SkPaint paint;
+ paint.setStyle(SkPaint::kStroke_Style);
+ paint.setStrokeWidth(20);
+ SkPath path;
+ path.moveTo(30, 20);
+ path.lineTo(40, 40);
+ path.conicTo(70, 20, 100, 20, .707f);
+ for (SkPaint::Join j : { SkPaint::kMiter_Join, SkPaint::kRound_Join, SkPaint::kBevel_Join } ) {
+ paint.setStrokeJoin(j);
+ canvas->drawPath(path, paint);
+ canvas->translate(0, 70);
+ }
##
#Enum Join
@@ -5293,7 +5295,7 @@ suppressed by defining SK_IGNORE_TO_STRING.
##
-#ToDo incomplete ##
+#SeeAlso SkPathEffect::toString SkMaskFilter::toString SkColorFilter::toString SkImageFilter::toString
##
diff --git a/docs/SkPath_Reference.bmh b/docs/SkPath_Reference.bmh
index 9caad2d481..1027a71fee 100644
--- a/docs/SkPath_Reference.bmh
+++ b/docs/SkPath_Reference.bmh
@@ -204,7 +204,6 @@ SkPath::updateBoundsCache to make Path thread safe.
#Topic Overview
#Subtopic Constants
-#ToDo incomplete ##
#Table
#Legend
# constants # description ##
@@ -214,7 +213,7 @@ SkPath::updateBoundsCache to make Path thread safe.
# Convexity # Returns if Path is convex or concave. ##
# Direction # Sets Contour clockwise or counterclockwise. ##
# FillType # Sets winding rule and inverse fill. ##
-# SegmentMask
+# SegmentMask # Returns Verb types in Path. ##
# Verb # Controls how Path Points are interpreted. ##
#Table ##
#Subtopic ##
diff --git a/docs/SkPixmap_Reference.bmh b/docs/SkPixmap_Reference.bmh
index 9cec400b4b..e06f70909a 100644
--- a/docs/SkPixmap_Reference.bmh
+++ b/docs/SkPixmap_Reference.bmh
@@ -219,7 +219,7 @@ out of scope, addr is unaffected.
#Example
#Image 4
-#Height 128
+#Height 64
void draw(SkCanvas* canvas) {
std::vector<int32_t> pixels;
pixels.resize(image->height() * image->width() * 4);
@@ -1144,7 +1144,7 @@ pixmap.addr32(1, 2) == &storage[1 + 2 * w]
##
##
-#ToDo incomplete ##
+#SeeAlso addr() addr8 addr16 addr64 addrF16 getColor writable_addr writable_addr64
##
@@ -1437,6 +1437,7 @@ One word corresponds to one pixel.
#Return writable unsigned 64-bit pointer to pixel ##
#Example
+#Height 40
SkImageInfo info = SkImageInfo::Make(3, 3, kRGBA_F16_SkColorType, kPremul_SkAlphaType);
uint64_t storage[9];
SkPixmap pixmap(info, storage, 3 * sizeof(uint64_t));
@@ -1894,6 +1895,7 @@ not intersect bounds().
#Return true if pixels are changed ##
#Example
+#Height 50
uint32_t storage[2];
SkImageInfo info = SkImageInfo::MakeN32Premul(1, 2);
SkPixmap pixmap(info, storage, info.minRowBytes());
@@ -1922,6 +1924,7 @@ is empty.
#Return true if pixels are changed ##
#Example
+#Height 50
uint32_t storage[2];
SkImageInfo info = SkImageInfo::MakeN32Premul(1, 2);
SkPixmap pixmap(info, storage, info.minRowBytes());
@@ -1951,6 +1954,7 @@ not intersect bounds(), or if subset is nullptr and bounds() is empty.
#Return true if pixels are changed ##
#Example
+#Height 50
uint32_t storage[2];
SkImageInfo info = SkImageInfo::MakeN32Premul(1, 2);
SkPixmap pixmap(info, storage, info.minRowBytes());
diff --git a/docs/undocumented.bmh b/docs/undocumented.bmh
index 8a57459607..8cb21282a0 100644
--- a/docs/undocumented.bmh
+++ b/docs/undocumented.bmh
@@ -137,6 +137,8 @@ FT_Load_Glyph
#Topic Color_Filter
#Class SkColorFilter
+#Method void toString(SkString* str) const
+##
#Class ##
#Topic ##
@@ -153,6 +155,12 @@ FT_Load_Glyph
#EnumClass ##
##
+#Topic Create_Color_Space_Xform_Canvas
+#Method std::unique_ptr<SkCanvas> SK_API SkCreateColorSpaceXformCanvas(SkCanvas* target,
+ sk_sp<SkColorSpace> targetCS)
+##
+##
+
#Topic Core_Graphics
#Substitute Core Graphics
##
@@ -254,6 +262,10 @@ FT_Load_Glyph
#Topic GPU_Context
#Substitute GPU context
+#Class GrContext
+#Method void flush()
+##
+##
##
#Topic GPU_Surface
@@ -312,6 +324,8 @@ FT_Load_Glyph
#Struct SkImageInfo
#Method SkImageInfo()
##
+ #Method static SkImageInfo MakeN32Premul(int width, int height, sk_sp<SkColorSpace> cs = nullptr)
+ ##
#Method SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const
##
#Method size_t minRowBytes() const
@@ -351,6 +365,8 @@ FT_Load_Glyph
##
#Method bool scalePixels(const SkPixmap& dst, SkFilterQuality, CachingHint = kAllow_CachingHint) const
##
+ #Method bool peekPixels(SkPixmap* pixmap) const
+ ##
##
#Topic ##
@@ -358,6 +374,8 @@ FT_Load_Glyph
#Subtopic Scaling
#Subtopic ##
#Class SkImageFilter
+#Method void toString(SkString* str) const
+##
#Class ##
#Topic ##
@@ -410,6 +428,8 @@ FT_Load_Glyph
#Method virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
SkIPoint* margin) const
##
+#Method void toString(SkString* str) const
+##
#Class ##
#Topic ##
@@ -436,6 +456,11 @@ FT_Load_Glyph
##
##
+#Topic Meta_Data
+#Class SkMetaData
+##
+##
+
#Topic Mip_Map
##
@@ -508,6 +533,8 @@ FT_Load_Glyph
#Topic Path_Effect
#Class SkPathEffect
+ #Method void toString(SkString* str) const
+ ##
#Class ##
#Topic ##
@@ -524,6 +551,10 @@ FT_Load_Glyph
#Topic ##
#Topic Picture
+#Class SkPicture
+#Method virtual void playback(SkCanvas*, AbortCallback* = nullptr) const = 0
+##
+##
#Subtopic Recorder
#Class SkPictureRecorder
#Method SkCanvas* beginRecording(const SkRect& bounds,
@@ -677,6 +708,16 @@ FT_Load_Glyph
##
#Method bool readPixels(const SkPixmap& dst, int srcX, int srcY);
##
+ #Method SkCanvas* getCanvas()
+ ##
+ #Method void flush()
+ ##
+ #Method void prepareForExternalIO()
+ ##
+ #Method sk_sp<SkSurface> makeSurface(const SkImageInfo&)
+ ##
+ #Method bool peekPixels(SkPixmap*)
+ ##
##
#Subtopic Properties
#Class SkSurfaceProps
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md
index df514533e9..824da343c7 100644
--- a/site/user/api/SkBitmap_Reference.md
+++ b/site/user/api/SkBitmap_Reference.md
@@ -1406,7 +1406,7 @@ integral rectangle from origin to <a href="#SkBitmap_width">width</a> and <a hre
### Example
-<div><fiddle-embed name="977dd8a850f89a610505e3f4f260d540"></fiddle-embed></div>
+<div><fiddle-embed name="bd020c1527964761adf7646e82a36487"></fiddle-embed></div>
### See Also
@@ -2262,6 +2262,10 @@ subset origin: 32, 64
</fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkPixelRef">SkPixelRef</a> <a href="#SkBitmap_getSubset">getSubset</a> <a href="#SkBitmap_setPixelRef">setPixelRef</a>
+
---
<a name="SkBitmap_setPixelRef"></a>
diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md
index 5d59fd4dd4..33ce63104b 100644
--- a/site/user/api/SkCanvas_Reference.md
+++ b/site/user/api/SkCanvas_Reference.md
@@ -268,6 +268,10 @@ in the center.</div>
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkSurface_MakeRasterDirect">SkSurface::MakeRasterDirect</a> <a href="#SkImageInfo_MakeN32Premul">SkImageInfo::MakeN32Premul</a>
+
---
<a name="SkCanvas_empty_constructor"></a>
@@ -298,6 +302,10 @@ paint draws text top to bottom
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a> <a href="#SkSurface_getCanvas">SkSurface::getCanvas</a> <a href="undocumented#SkCreateColorSpaceXformCanvas">SkCreateColorSpaceXformCanvas</a>
+
---
<a name="SkCanvas_int_int_const_SkSurfaceProps_star"></a>
@@ -346,7 +354,7 @@ canvas is empty
### See Also
-<a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> <a href="undocumented#SkPixelGeometry">SkPixelGeometry</a>
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> <a href="undocumented#SkPixelGeometry">SkPixelGeometry</a> <a href="undocumented#SkCreateColorSpaceXformCanvas">SkCreateColorSpaceXformCanvas</a>
---
@@ -375,6 +383,10 @@ specifies a <a href="#SkCanvas_copy_SkBaseDevice_star_device">device</a> for the
<div><fiddle-embed name=""></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a> <a href="#SkSurface_getCanvas">SkSurface::getCanvas</a> <a href="undocumented#SkCreateColorSpaceXformCanvas">SkCreateColorSpaceXformCanvas</a>
+
---
<a name="SkCanvas_copy_const_SkBitmap"></a>
@@ -426,6 +438,10 @@ storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td>
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a> <a href="#SkSurface_getCanvas">SkSurface::getCanvas</a> <a href="undocumented#SkCreateColorSpaceXformCanvas">SkCreateColorSpaceXformCanvas</a>
+
---
## <a name="SkCanvas_ColorBehavior"></a> Enum SkCanvas::ColorBehavior
@@ -516,6 +532,10 @@ device independent fonts</td>
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a> <a href="#SkSurface_getCanvas">SkSurface::getCanvas</a> <a href="undocumented#SkCreateColorSpaceXformCanvas">SkCreateColorSpaceXformCanvas</a>
+
---
<a name="SkCanvas_destructor"></a>
@@ -569,6 +589,10 @@ after: (null)
</fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkMetaData">SkMetaData</a>
+
---
<a name="SkCanvas_imageInfo"></a>
@@ -597,6 +621,10 @@ emptyInfo == canvasInfo
</fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkImageInfo">SkImageInfo</a> <a href="#SkCanvas_MakeRasterDirect">MakeRasterDirect</a> <a href="#SkCanvas_makeSurface">makeSurface</a>
+
---
<a name="SkCanvas_getProps"></a>
@@ -634,6 +662,10 @@ isRGB:1
</fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkSurfaceProps">SkSurfaceProps</a> <a href="#SkCanvas_makeSurface">makeSurface</a>
+
---
<a name="SkCanvas_flush"></a>
@@ -645,11 +677,17 @@ void flush()
Triggers the immediate execution of all pending draw operations.
If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#GPU_Surface">GPU Surface</a>, resolves all pending <a href="undocumented#GPU">GPU</a> operations.
+If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#Raster_Surface">Raster Surface</a>, has no effect; raster draw
+operations are never deferred.
### Example
<div><fiddle-embed name=""></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkSurface_flush">SkSurface::flush()</a> <a href="#flush">GrContext::flush()</a> <a href="#SkSurface_prepareForExternalIO">SkSurface::prepareForExternalIO</a> GrContext::abandonContext()
+
---
<a name="SkCanvas_getBaseLayerSize"></a>
@@ -680,6 +718,10 @@ size=20,30
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a>
+
---
<a name="SkCanvas_makeSurface"></a>
@@ -722,6 +764,10 @@ size = 3, 4
</fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkSurface">SkSurface</a> <a href="#SkSurface_makeSurface">SkSurface::makeSurface</a> <a href="undocumented#SkImageInfo">SkImageInfo</a> <a href="undocumented#SkSurfaceProps">SkSurfaceProps</a>
+
---
<a name="SkCanvas_getGrContext"></a>
@@ -741,6 +787,10 @@ Returns <a href="undocumented#GPU_Context">GPU Context</a> of the <a href="undoc
<div><fiddle-embed name="c4ea949e5fa5a0630dcb6b0204bd498f"></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#GrContext">GrContext</a>
+
---
<a name="SkCanvas_accessTopLayerPixels"></a>
@@ -787,6 +837,10 @@ device.
The <a href="#Layer">Layer</a> and blended result appear on the <a href="undocumented#CPU">CPU</a> and <a href="undocumented#GPU">GPU</a> but the large dotted
"" appear only on the <a href="undocumented#CPU">CPU</a>.</div></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkImageInfo">SkImageInfo</a> <a href="SkPixmap_Reference#SkPixmap">SkPixmap</a>
+
---
<a name="SkCanvas_accessTopRasterHandle"></a>
@@ -865,6 +919,10 @@ width=256 height=256
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_readPixels">readPixels</a> <a href="#SkBitmap_peekPixels">SkBitmap::peekPixels</a> <a href="#SkImage_peekPixels">SkImage::peekPixels</a> <a href="#SkSurface_peekPixels">SkSurface::peekPixels</a>
+
---
<a name="SkCanvas_readPixels"></a>
@@ -949,7 +1007,7 @@ pixel = 8056a9ff
### See Also
-<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a>
---
@@ -1019,7 +1077,7 @@ pixel = 802b5580
### See Also
-<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a>
---
@@ -1089,7 +1147,7 @@ pixel = 802b5580
### See Also
-<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+<a href="#SkCanvas_peekPixels">peekPixels</a> <a href="#SkCanvas_writePixels">writePixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a> <a href="#SkImage_readPixels">SkImage::readPixels</a> <a href="#SkSurface_readPixels">SkSurface::readPixels</a>
---
@@ -1156,7 +1214,7 @@ true if <a href="#SkCanvas_writePixels_pixels">pixels</a> were written to <a hre
### See Also
-<a href="#SkCanvas_readPixels">readPixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+<a href="#SkCanvas_readPixels">readPixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkBitmap_writePixels">SkBitmap::writePixels</a>
---
@@ -1217,7 +1275,7 @@ true if pixels were written to <a href="#Canvas">Canvas</a>
### See Also
-<a href="#SkCanvas_readPixels">readPixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+<a href="#SkCanvas_readPixels">readPixels</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkBitmap_writePixels">SkBitmap::writePixels</a>
---
@@ -1282,6 +1340,10 @@ depth of saved stack
Restoring <a href="#Canvas">Canvas</a> state removes <a href="#SkCanvas_translate">translate</a> from <a href="#Canvas">Canvas</a> stack;
the red square is not translated, and is drawn at the origin.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_restoreToCount">restoreToCount</a>
+
---
<a name="SkCanvas_restore"></a>
@@ -1300,6 +1362,10 @@ Does nothing if the stack is empty.
<div><fiddle-embed name="e78471212a67f2f4fd39496e17a30d17"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_restoreToCount">restoreToCount</a>
+
---
<a name="SkCanvas_getSaveCount"></a>
@@ -1331,6 +1397,10 @@ depth = 1
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_restoreToCount">restoreToCount</a>
+
---
<a name="SkCanvas_restoreToCount"></a>
@@ -1367,6 +1437,10 @@ depth = 1
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_getSaveCount">getSaveCount</a> <a href="#SkCanvas_save">save</a>
+
---
# <a name="Layer"></a> Layer
@@ -1422,6 +1496,10 @@ depth of saved stack
<div><fiddle-embed name="05f9b6fa6b5007aea89dfe66c306855d"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main
<a href="#Canvas">Canvas</a>.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1464,6 +1542,10 @@ depth of saved stack
The red rectangle is clipped; it does not fully fit on <a href="#Layer">Layer</a>.
<a href="undocumented#Image_Filter">Image Filter</a> blurs past edge of <a href="#Layer">Layer</a> so red rectangle is blurred on all sides.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>
+
---
<a name="SkCanvas_saveLayerPreserveLCDTextRequests"></a>
@@ -1512,6 +1594,10 @@ depth of saved stack
<div><fiddle-embed name="8460bf8b013f46c67e0bd96e13451aff"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>
+
---
<a name="SkCanvas_saveLayerAlpha"></a>
@@ -1555,6 +1641,10 @@ depth of saved stack
<div><fiddle-embed name="8ab88d86fb438856cc48d6e2f08a6e24"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>
+
---
## <a name="SkCanvas__anonymous"></a> Enum SkCanvas::_anonymous
@@ -1597,6 +1687,10 @@ Skips setting a clip to the <a href="#Layer">Layer</a> bounds.</td>
<div><fiddle-embed name="d314c688925d2c549d4762f5cc6e6a1a"><div><a href="#Canvas">Canvas</a> <a href="#Layer">Layer</a> captures red and blue circles scaled up by four.
scalePaint blends <a href="#Layer">Layer</a> back with transparency.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> <a href="#SkCanvas_SaveLayerRec">SaveLayerRec</a>
+
# <a name="SkCanvas_SaveLayerRec"></a> Struct SkCanvas::SaveLayerRec
@@ -1679,6 +1773,10 @@ rec1 == rec2
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1715,6 +1813,10 @@ rec1 == rec2
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1754,6 +1856,10 @@ rec1 == rec2
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1766,7 +1872,7 @@ Not ready for general use.Sets <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds<
<a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a> uses <a href="#Alpha">Color Alpha</a> channel of image, transformed by <a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a>, to clip
<a href="#Layer">Layer</a> when drawn to <a href="#Canvas">Canvas</a>.
-Implementation is incomplete; has no effect if <a href="undocumented#Device">Device</a> is <a href="undocumented#GPU_backed">GPU-backed</a>.
+Implementation is not complete; has no effect if <a href="undocumented#Device">Device</a> is <a href="undocumented#GPU_backed">GPU-backed</a>.
### Parameters
@@ -1792,6 +1898,10 @@ identity matrix</td>
<a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> fully specified
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1830,6 +1940,10 @@ Next it punches a hole in <a href="#Layer">Layer</a> and <a href="#SkCanvas_rest
Where <a href="#Layer">Layer</a> was cleared, the original image will draw unchanged.
Outside of the circle the mandrill is brightened.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_save">save</a> <a href="#SkCanvas_restore">restore</a> <a href="#SkCanvas_saveLayer">saveLayer</a> <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a>
+
---
# <a name="Matrix"></a> Matrix
@@ -1868,6 +1982,10 @@ fill follows <a href="#SkCanvas_scale">scale</a> of (2, 1/2.f). After restoring
<a href="#Matrix">Matrix</a>, a red frame follows the same <a href="#SkCanvas_scale">scale</a> of (2, 1/2.f); a gray fill
follows <a href="#SkCanvas_translate">translate</a> of (50, 50).</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_skew">skew</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<a name="SkCanvas_scale"></a>
@@ -1898,6 +2016,10 @@ amount to <a href="#SkCanvas_scale">scale</a> in y</td>
<div><fiddle-embed name="7d0d801ef13c6c6da51e840c22ac15b0"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_skew">skew</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<a name="SkCanvas_rotate"></a>
@@ -1927,6 +2049,10 @@ amount to <a href="#SkCanvas_rotate">rotate</a>, in <a href="#SkCanvas_rotate_de
<div><fiddle-embed name="caafb205771b714948e00dcd58ccaf1f"><div>Draw clock hands at time 5:10. The hour hand and minute hand point up and
are rotated clockwise.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_skew">skew</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1958,6 +2084,10 @@ y-coordinate of the point to <a href="#SkCanvas_rotate">rotate</a> about</td>
<div><fiddle-embed name="bcf5baea1c66a957d5ffd7b54bbbfeff"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_skew">skew</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<a name="SkCanvas_skew"></a>
@@ -1993,6 +2123,10 @@ shifts the geometry to the right as the y values decrease.
increase.
<a href="#Blue">Blue</a> text combines x and y <a href="#SkCanvas_skew">skew</a> to <a href="#SkCanvas_rotate">rotate</a> and <a href="#SkCanvas_scale">scale</a>.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<a name="SkCanvas_concat"></a>
@@ -2018,6 +2152,10 @@ transforming the result with existing <a href="#Matrix">Matrix</a>.
<div><fiddle-embed name="8f6818b25a92a88638ad99b2dd293f61"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_skew">skew</a> <a href="#SkCanvas_setMatrix">setMatrix</a>
+
---
<a name="SkCanvas_setMatrix"></a>
@@ -2041,6 +2179,10 @@ Unlike <a href="#SkCanvas_concat">concat</a>, any prior <a href="#SkCanvas_setMa
<div><fiddle-embed name="24b9cf7e6f9a08394e1e07413bd8733a"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_resetMatrix">resetMatrix</a> <a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_skew">skew</a>
+
---
<a name="SkCanvas_resetMatrix"></a>
@@ -2057,6 +2199,10 @@ Any prior matrix state is overwritten.
<div><fiddle-embed name="412afffdf4682baa503a4e2e99201967"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_setMatrix">setMatrix</a> <a href="#SkCanvas_concat">concat</a> <a href="#SkCanvas_translate">translate</a> <a href="#SkCanvas_rotate">rotate</a> <a href="#SkCanvas_scale">scale</a> <a href="#SkCanvas_skew">skew</a>
+
---
<a name="SkCanvas_getTotalMatrix"></a>
@@ -2085,6 +2231,10 @@ isIdentity true
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_setMatrix">setMatrix</a> <a href="#SkCanvas_resetMatrix">resetMatrix</a> <a href="#SkCanvas_concat">concat</a>
+
---
# <a name="Clip"></a> Clip
@@ -2148,6 +2298,10 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti
<div><fiddle-embed name="6a614faa0fbcf19958b5559c19b02d0f"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2171,6 +2325,10 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f
<div><fiddle-embed name="13bbc5fa5597a6cd4d704b419dbc66d9"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2197,6 +2355,10 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti
The same circle pieces blend with pixels more than once when <a href="undocumented#Anti_alias">Anti-aliased</a>,
visible as a thin pair of lines through the right circle.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<a name="SkCanvas_androidFramework_setDeviceClipRestriction"></a>
@@ -2251,6 +2413,10 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti
<div><fiddle-embed name="182ef48ab5e04ba3578496fda8d9fa36"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2274,6 +2440,10 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f
<div><fiddle-embed name="ef6ae2eaae6761130ce38065d0364abd"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2297,6 +2467,10 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti
<div><fiddle-embed name="f583114580b2176fe3e75b0994476a84"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipPath">clipPath</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<a name="SkCanvas_clipPath"></a>
@@ -2331,6 +2505,10 @@ area outside clip is subtracted from circle.
Bottom figure uses <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a> and <a href="#SkClipOp_kIntersect">SkClipOp::kIntersect</a>;
area inside clip is intersected with circle.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2360,6 +2538,10 @@ before it is combined with <a href="#Clip">Clip</a>.
<a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
<a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2388,6 +2570,10 @@ true if <a href="#Clip">Clip</a> is to be <a href="undocumented#Anti_alias">Anti
is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
<a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipRegion">clipRegion</a>
+
---
<a name="SkCanvas_setAllowSimplifyClip"></a>
@@ -2427,6 +2613,10 @@ Resulting <a href="#Clip">Clip</a> is <a href="#Alias">Aliased</a>; pixels are f
Both clips are <a href="#Alias">Aliased</a>; this is not noticeable on <a href="undocumented#Region">Region</a> clip because it
aligns to pixel boundaries.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clipRect">clipRect</a> <a href="#SkCanvas_clipRRect">clipRRect</a> <a href="#SkCanvas_clipPath">clipPath</a>
+
---
<a name="SkCanvas_quickReject"></a>
@@ -2465,6 +2655,10 @@ quickReject false
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getTotalMatrix">getTotalMatrix</a> <a href="#SkBitmap_drawsNothing">SkBitmap::drawsNothing</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2500,6 +2694,10 @@ quickReject false
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getTotalMatrix">getTotalMatrix</a> <a href="#SkBitmap_drawsNothing">SkBitmap::drawsNothing</a>
+
---
<a name="SkCanvas_getLocalClipBounds"></a>
@@ -2535,6 +2733,10 @@ left:14.5 top:64.5 right:60.5 bottom:115.5
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a> <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> <a href="#SkCanvas_quickReject">quickReject</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2571,6 +2773,10 @@ local bounds empty = true
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a> <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> <a href="#SkCanvas_quickReject">quickReject</a>
+
---
<a name="SkCanvas_getDeviceClipBounds"></a>
@@ -2605,6 +2811,10 @@ left:15 top:65 right:60 bottom:115
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> <a href="#SkCanvas_quickReject">quickReject</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2640,6 +2850,10 @@ device bounds empty = true
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> <a href="#SkCanvas_quickReject">quickReject</a>
+
---
<a name="SkCanvas_drawColor"></a>
@@ -2665,6 +2879,10 @@ Fill <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> <a hre
<div><fiddle-embed name="9cf94fead1e6b17d836c704b4eac269a"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clear">clear</a> <a href="#SkBitmap_erase">SkBitmap::erase</a> <a href="#SkCanvas_drawPaint">drawPaint</a>
+
---
<a name="SkCanvas_clear"></a>
@@ -2688,6 +2906,10 @@ This has the effect of replacing all pixels contained by <a href="#Clip">Clip</a
<div><fiddle-embed name="d97750e04989d42dc879406127b22c0b"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawColor">drawColor</a> <a href="#SkBitmap_erase">SkBitmap::erase</a> <a href="#SkCanvas_drawPaint">drawPaint</a>
+
---
<a name="SkCanvas_discard"></a>
@@ -2709,6 +2931,10 @@ cached data associated with <a href="undocumented#Surface">Surface</a> or <a hre
It is not necessary to call <a href="#SkCanvas_discard">discard</a> once done with <a href="#Canvas">Canvas</a>;
any cached data is deleted when owning <a href="undocumented#Surface">Surface</a> or <a href="undocumented#Device">Device</a> is deleted.
+### See Also
+
+<a href="#SkCanvas_flush">flush</a> <a href="#SkSurface_prepareForExternalIO">SkSurface::prepareForExternalIO</a> GrContext::abandonContext
+
---
<a name="SkCanvas_drawPaint"></a>
@@ -2733,6 +2959,10 @@ graphics state used to fill <a href="#Canvas">Canvas</a></td>
<div><fiddle-embed name="1cd076b9b1a7c976cdca72b93c4f42dd"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_clear">clear</a> <a href="#SkCanvas_drawColor">drawColor</a> <a href="#SkBitmap_erase">SkBitmap::erase</a>
+
---
## <a name="SkCanvas_PointMode"></a> Enum SkCanvas::PointMode
@@ -2768,6 +2998,10 @@ The upper right corner shows one line; when drawn as lines, two points are requi
The lower right corner shows two lines; when draw as polygon, no miter is drawn at the corner.
The lower left corner shows two lines with a miter when path contains polygon.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawLine">drawLine</a> <a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
<a name="SkCanvas_drawPoints"></a>
@@ -2832,6 +3066,10 @@ stroke, blend, color, and so on, used to draw</td>
The transparent color makes multiple line draws visible;
the path is drawn all at once.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawLine">drawLine</a> <a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawPoint"></a>
@@ -2864,6 +3102,10 @@ stroke, blend, color, and so on, used to draw</td>
<div><fiddle-embed name="3476b553e7b547b604a3f6969f02d933"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawPoints">drawPoints</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawLine">drawLine</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2893,7 +3135,7 @@ stroke, blend, color, and so on, used to draw</td>
### See Also
-<a href="#SkCanvas_drawPoints">drawPoints</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawRect">drawRect</a>
+<a href="#SkCanvas_drawPoints">drawPoints</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawLine">drawLine</a> <a href="#SkCanvas_drawPath">drawPath</a>
---
@@ -2929,6 +3171,10 @@ stroke, blend, color, and so on, used to draw</td>
<div><fiddle-embed name="d10ee4a265f278d02afe11ad889b293b"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -2955,6 +3201,10 @@ stroke, blend, color, and so on, used to draw</td>
<div><fiddle-embed name="f8525816cb596dde1a3855446792c8e0"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawRect"></a>
@@ -2982,6 +3232,10 @@ stroke or fill, blend, color, and so on, used to draw</td>
<div><fiddle-embed name="871b0da9b4a23de11ae7a772ce14aed3"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawIRect">drawIRect</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawRegion">drawRegion</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawLine">drawLine</a>
+
---
<a name="SkCanvas_drawIRect"></a>
@@ -3009,6 +3263,10 @@ stroke or fill, blend, color, and so on, used to draw</td>
<div><fiddle-embed name="d3d8ca584134560750b1efa4a4c6e138"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawRegion">drawRegion</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawLine">drawLine</a>
+
---
<a name="SkCanvas_drawRegion"></a>
@@ -3036,6 +3294,10 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th
<div><fiddle-embed name="80309e0deca0f8add616cec7bec634ca"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawIRect">drawIRect</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawOval"></a>
@@ -3062,6 +3324,10 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th
<div><fiddle-embed name="8b6b86f8a022811cd29a9c6ab771df12"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a>
+
---
<a name="SkCanvas_drawRRect"></a>
@@ -3091,6 +3357,10 @@ may have any combination of positive non-square radii for the four corners.
<div><fiddle-embed name="369cdbfb2a200d5bb8ae40f7cc1025c3"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawDRRect">drawDRRect</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawDRRect"></a>
@@ -3133,6 +3403,10 @@ concave and <a href="#SkCanvas_drawDRRect_outer">outer</a> contains <a href="#Sk
Inner <a href="undocumented#Round_Rect">Round Rect</a> has corner radii; outset stroke increases radii of corners.
Stroke join does not affect <a href="#SkCanvas_drawDRRect_inner">inner</a> <a href="undocumented#Round_Rect">Round Rect</a> since it has no sharp corners.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawCircle"></a>
@@ -3164,6 +3438,10 @@ half the diameter of <a href="undocumented#Circle">Circle</a></td>
<div><fiddle-embed name="841229e25ca9dfb68bd0dc4dfff356eb"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawArc">drawArc</a> <a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawLine">drawLine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3190,6 +3468,10 @@ half the diameter of <a href="undocumented#Circle">Circle</a></td>
<div><fiddle-embed name="9303ffae45ddd0b0a1f93d816a1762f4"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawRRect">drawRRect</a> <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawArc">drawArc</a> <a href="#SkCanvas_drawPoint">drawPoint</a> <a href="#SkCanvas_drawLine">drawLine</a>
+
---
<a name="SkCanvas_drawArc"></a>
@@ -3237,6 +3519,10 @@ if true, include the center of the <a href="#SkCanvas_drawArc_oval">oval</a></td
<div><fiddle-embed name="e91dbe45974489b8962c815017b7914f"></fiddle-embed></div>
+### See Also
+
+<a href="#SkPath_arcTo">SkPath::arcTo</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawPath">drawPath</a>
+
---
<a name="SkCanvas_drawRoundRect"></a>
@@ -3277,6 +3563,10 @@ Second row radii sum to less than sides.
Third row radii sum equals sides.
Fourth row radii sum exceeds sides; radii are scaled to fit.</div></fiddle-embed></div>
+### See Also
+
+DrawRRect <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawDRRect">drawDRRect</a> <a href="#SkCanvas_drawPath">drawPath</a> <a href="#SkCanvas_drawCircle">drawCircle</a> <a href="#SkCanvas_drawOval">drawOval</a> <a href="#SkCanvas_drawPoint">drawPoint</a>
+
---
<a name="SkCanvas_drawPath"></a>
@@ -3313,6 +3603,10 @@ First bottom column shows winding fills overlap.
Second bottom column shows even odd fills exclude overlap.
Third bottom column shows inverse winding fills area outside both contours.</div></fiddle-embed></div>
+### See Also
+
+<a href="SkPath_Reference#SkPath">SkPath</a> <a href="#SkCanvas_drawLine">drawLine</a> <a href="#SkCanvas_drawArc">drawArc</a> <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawPoints">drawPoints</a>
+
---
# <a name="Draw_Image"></a> Draw Image
@@ -3355,6 +3649,10 @@ and so on; or nullptr</td>
<div><fiddle-embed name="185746dc0faa6f1df30c4afe098646ff"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a> <a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkPaint_setImageFilter">SkPaint::setImageFilter</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3390,6 +3688,10 @@ and so on; or nullptr</td>
<div><fiddle-embed name="a4e877e891b1be5faa2b7fd07f673a10"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a> <a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkPaint_setImageFilter">SkPaint::setImageFilter</a>
+
---
## <a name="SkCanvas_SrcRectConstraint"></a> Enum SkCanvas::SrcRectConstraint
@@ -3429,6 +3731,10 @@ The middle and right bitmaps are filtered checkerboards.
Drawing the checkerboard with <a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a> shows only a blur of black and white.
Drawing the checkerboard with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> allows red to bleed in the corners.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkPaint_setImageFilter">SkPaint::setImageFilter</a>
+
<a name="SkCanvas_drawImageRect"></a>
@@ -3479,6 +3785,10 @@ the middle and right bitmaps draw with <a href="undocumented#SkFilterQuality">kL
<a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a>, the filter remains within the checkerboard, and
with <a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a> red bleeds on the edges.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3524,6 +3834,10 @@ filter strictly within <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> or draw
<div><fiddle-embed name="b63b8f9f587b8d918973dc065ce4a593"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3564,6 +3878,10 @@ filter strictly within <a href="#SkCanvas_drawImageRect_3_image">image</a> or dr
<div><fiddle-embed name="3cf8fb639fef99993cafc064d550c739"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3608,6 +3926,10 @@ filter strictly within <a href="#SkCanvas_drawImageRect_4_src">src</a> or draw f
<div><fiddle-embed name="589999454db90c573f7facfb007253a7"><div><a href="#Canvas">Canvas</a> scales and translates; transformation from <a href="#SkCanvas_drawImageRect_4_src">src</a> to <a href="#SkCanvas_drawImageRect_4_dst">dst</a> also scales.
The two matrices are concatenated to create the final transformation.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3652,6 +3974,10 @@ filter strictly within <a href="#SkCanvas_drawImageRect_5_image">image</a> or dr
<div><fiddle-embed name="249fadde5d0d0fc515e9f53f188af48b"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3693,6 +4019,10 @@ filter strictly within <a href="#SkCanvas_drawImageRect_6_image">image</a> or dr
<div><fiddle-embed name="37a85bd2247487c7af584e42c1cabe4a"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a>
+
---
<a name="SkCanvas_drawImageNine"></a>
@@ -3739,6 +4069,10 @@ The second <a href="#SkCanvas_drawImageNine_image">image</a> equals the size of
The remaining images are larger than <a href="#SkCanvas_drawImageNine_center">center</a>. All corners draw without scaling.
The sides and <a href="#SkCanvas_drawImageNine_center">center</a> are scaled if needed to take up the remaining space.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageRect">drawImageRect</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3784,6 +4118,10 @@ fill the remaining space.
The rightmost <a href="#SkCanvas_drawImageNine_2_image">image</a> has four corners scaled vertically to fit, and uses sides above
and below <a href="#SkCanvas_drawImageNine_2_center">center</a> to fill the remaining space.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> <a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawImageRect">drawImageRect</a>
+
---
<a name="SkCanvas_drawBitmap"></a>
@@ -3824,6 +4162,10 @@ and so on; or nullptr</td>
<div><fiddle-embed name="70d7fbf7de82264dd66a526d98d31def"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> <a href="#SkCanvas_drawBitmapRect">drawBitmapRect</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a> <a href="#SkBitmap_writePixels">SkBitmap::writePixels</a>
+
---
<a name="SkCanvas_drawBitmapRect"></a>
@@ -3871,6 +4213,10 @@ filter strictly within <a href="#SkCanvas_drawBitmapRect_src">src</a> or draw fa
<div><fiddle-embed name="de449106e78ec558d9921b9f076de164"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3916,6 +4262,10 @@ sample strictly within <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a>, or dr
<div><fiddle-embed name="69b028ef1f95c355672fbdcbf47550f2"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -3959,6 +4309,10 @@ filter strictly within <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> or
<div><fiddle-embed name="76b74b826e43b4a595d18115564e88c7"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageRect">drawImageRect</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a>
+
---
<a name="SkCanvas_drawBitmapNine"></a>
@@ -4009,6 +4363,10 @@ fill the remaining space.
The rightmost <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> draw has four corners scaled vertically to fit, and uses sides above
and below <a href="#SkCanvas_drawBitmapNine_center">center</a> to fill the remaining space.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageNine">drawImageNine</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawBitmapRect">drawBitmapRect</a>
+
---
# <a name="SkCanvas_Lattice"></a> Struct SkCanvas::Lattice
@@ -4140,6 +4498,10 @@ fill the remaining space; the center is transparent.
The rightmost <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> draw has four corners scaled vertically to fit, and uses sides above
and below center to fill the remaining space.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawImageLattice">drawImageLattice</a> <a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawBitmapNine">drawBitmapNine</a> <a href="#SkCanvas_Lattice">Lattice</a>
+
---
<a name="SkCanvas_drawImageLattice"></a>
@@ -4190,6 +4552,10 @@ The second <a href="#SkCanvas_drawImageLattice_image">image</a> equals the size
The remaining images are larger than center. All corners draw without scaling. The sides
are scaled if needed to take up the remaining space; the center is transparent.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmapLattice">drawBitmapLattice</a> <a href="#SkCanvas_drawImage">drawImage</a> <a href="#SkCanvas_drawImageNine">drawImageNine</a> <a href="#SkCanvas_Lattice">Lattice</a>
+
---
<a name="SkCanvas_drawText"></a>
@@ -4233,6 +4599,10 @@ start of <a href="#SkCanvas_drawText_text">text</a> on y-axis</td>
<div><fiddle-embed name="a3365bd3044b13e8e0318ee8aefbdf91"><div>The same <a href="#SkCanvas_drawText_text">text</a> is drawn varying <a href="#Text_Size">Paint Text Size</a> and varying
<a href="#Matrix">Matrix</a>.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawString">drawString</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
+
---
<a name="SkCanvas_drawString"></a>
@@ -4277,7 +4647,7 @@ text size, blend, color, and so on, used to draw</td>
### See Also
-<a href="#SkCanvas_drawText">drawText</a>
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
---
@@ -4321,7 +4691,7 @@ text size, blend, color, and so on, used to draw</td>
### See Also
-<a href="#SkCanvas_drawText">drawText</a>
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
---
@@ -4367,6 +4737,10 @@ array of glyph origins</td>
<div><fiddle-embed name="bf0b2402533a23b6392e0676b7a8414c"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
+
---
<a name="SkCanvas_drawPosTextH"></a>
@@ -4414,6 +4788,10 @@ shared y coordinate for all of x positions</td>
<div><fiddle-embed name="95c6a7ef82993a8d2add676080e9438a"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
+
---
<a name="SkCanvas_drawTextOnPathHV"></a>
@@ -4462,6 +4840,10 @@ offset of <a href="#SkCanvas_drawTextOnPathHV_text">text</a> above (if negative)
<div><fiddle-embed name="25cc5452156d7f06e85f514913d46b5c"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
+
---
<a name="SkCanvas_drawTextOnPath"></a>
@@ -4509,6 +4891,10 @@ to use identity <a href="#Matrix">Matrix</a></td>
<div><fiddle-embed name="0f60797fbdce3d3c71c46b800e6bd6f8"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawTextOnPathHV">drawTextOnPathHV</a> <a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a>
+
---
<a name="SkCanvas_drawTextRSXform"></a>
@@ -4552,6 +4938,10 @@ byte length of <a href="#SkCanvas_drawTextRSXform_text">text</a> array</td>
<div><fiddle-embed name="55c84c39890c7516f7c835c46b1b8fc9"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> <a href="#SkCanvas_drawTextOnPathHV">drawTextOnPathHV</a> <a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawTextBlob">drawTextBlob</a>
+
---
<a name="SkCanvas_drawTextBlob"></a>
@@ -4590,6 +4980,10 @@ blend, color, stroking, and so on, used to draw</td>
<div><fiddle-embed name="b8c0a748ed5c328f38e00f5f3d12e5e6"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4626,6 +5020,10 @@ blend, color, stroking, and so on, used to draw</td>
<div><fiddle-embed name="d313ad4726518f5d44f6433887bb7ce9"><div><a href="SkPaint_Reference#Paint">Paint</a> attributes unrelated to text, like color, have no effect on <a href="#SkCanvas_drawTextBlob_2_paint">paint</a> in allocated <a href="undocumented#Text_Blob">Text Blob</a>.
<a href="SkPaint_Reference#Paint">Paint</a> attributes related to text, like text size, have no effect on <a href="#SkCanvas_drawTextBlob_2_paint">paint</a> passed to <a href="#SkCanvas_drawTextBlob">drawTextBlob</a>.</div></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawText">drawText</a> <a href="#SkCanvas_drawPosText">drawPosText</a> <a href="#SkCanvas_drawPosTextH">drawPosTextH</a>
+
---
<a name="SkCanvas_drawPicture"></a>
@@ -4652,6 +5050,10 @@ recorded drawing commands to play</td>
<div><fiddle-embed name="fde216281ff93d612768a49f2cf309ae"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawDrawable">drawDrawable</a> <a href="undocumented#SkPicture">SkPicture</a> <a href="#SkPicture_playback">SkPicture::playback</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4675,6 +5077,10 @@ recorded drawing commands to play</td>
<div><fiddle-embed name="a7373b01354dda73dafe8718f4fd0cfc"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawDrawable">drawDrawable</a> <a href="undocumented#SkPicture">SkPicture</a> <a href="#SkPicture_playback">SkPicture::playback</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4704,6 +5110,10 @@ recorded drawing commands to play</td>
<div><fiddle-embed name="4ec028d8ffa0a6ae1a99ff8d094b02bc"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawDrawable">drawDrawable</a> <a href="undocumented#SkPicture">SkPicture</a> <a href="#SkPicture_playback">SkPicture::playback</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4733,6 +5143,10 @@ recorded drawing commands to play</td>
<div><fiddle-embed name="7295eb14091e98565cec0353661a6a7d"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawDrawable">drawDrawable</a> <a href="undocumented#SkPicture">SkPicture</a> <a href="#SkPicture_playback">SkPicture::playback</a>
+
---
<a name="SkCanvas_drawVertices"></a>
@@ -4762,6 +5176,10 @@ specifies the <a href="undocumented#Shader">Shader</a>, used as <a href="undocum
<div><fiddle-embed name="f48b22eaad1bb7adcc3faaa321754af6"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawPatch">drawPatch</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4788,6 +5206,10 @@ specifies the <a href="undocumented#Shader">Shader</a>, used as <a href="undocum
<div><fiddle-embed name="94e32538646d5f1299c427e473f9ec87"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawPatch">drawPatch</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<a name="SkCanvas_drawPatch"></a>
@@ -4838,6 +5260,10 @@ may be nullptr</td>
<div><fiddle-embed name="accb545d67984ced168f5be6ab824795"></fiddle-embed></div>
+### See Also
+
+SeeAlso <a href="#SkCanvas_drawVertices">drawVertices</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4886,6 +5312,10 @@ may be nullptr</td>
<div><fiddle-embed name="3412c2a16cb529af0e04878d264451f2"></fiddle-embed></div>
+### See Also
+
+SeeAlso <a href="#SkCanvas_drawVertices">drawVertices</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<a name="SkCanvas_drawAtlas"></a>
@@ -4932,6 +5362,10 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
<div><fiddle-embed name="1df575f9b8132306ce0552a2554ed132"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -4975,6 +5409,10 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
<div><fiddle-embed name="0e66a8f230a8d531bcef9f5ebdc5aac1"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -5012,6 +5450,10 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
<div><fiddle-embed name="8dc0d0fdeab20bbc21cac6874ddbefcd"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -5050,6 +5492,10 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
<div><fiddle-embed name="c093c2b14bd3e6171ede7cd4049d9b57"></fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_drawBitmap">drawBitmap</a> <a href="#SkCanvas_drawImage">drawImage</a>
+
---
<a name="SkCanvas_drawDrawable"></a>
@@ -5080,6 +5526,10 @@ transformation applied to drawing; may be nullptr</td>
<div><fiddle-embed name="3a4dfcd08838866b5cfc0d82489195ba"></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkDrawable">SkDrawable</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -5108,6 +5558,10 @@ offset into <a href="#Canvas">Canvas</a> writable pixels in <a href="#SkCanvas_d
<div><fiddle-embed name="1bdc07ad3b154c89b771722c2fcaee3f"></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkDrawable">SkDrawable</a> <a href="#SkCanvas_drawPicture">drawPicture</a>
+
---
<a name="SkCanvas_drawAnnotation"></a>
@@ -5138,6 +5592,10 @@ data holding <a href="#SkCanvas_drawAnnotation_value">value</a> stored in annota
<div><fiddle-embed name="00b430bd80d740e19c6d020a940f56d5"></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkPicture">SkPicture</a> <a href="undocumented#SkDocument">SkDocument</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -5166,6 +5624,10 @@ data holding <a href="#SkCanvas_drawAnnotation_2_value">value</a> stored in anno
<div><fiddle-embed name="00b430bd80d740e19c6d020a940f56d5"></fiddle-embed></div>
+### See Also
+
+<a href="undocumented#SkPicture">SkPicture</a> <a href="undocumented#SkDocument">SkDocument</a>
+
---
<a name="SkCanvas_getDrawFilter"></a>
@@ -5220,6 +5682,10 @@ clip is empty
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_isClipRect">isClipRect</a> <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a>
+
---
<a name="SkCanvas_isClipRect"></a>
@@ -5249,6 +5715,10 @@ clip is not rect
</fiddle-embed></div>
+### See Also
+
+<a href="#SkCanvas_isClipEmpty">isClipEmpty</a> <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a> <a href="#SkCanvas_getDeviceClipBounds">getDeviceClipBounds</a>
+
---
# <a name="SkAutoCanvasRestore"></a> Class SkAutoCanvasRestore
@@ -5278,7 +5748,7 @@ utility to <a href="#SkAutoCanvasRestore_restore">restore</a> <a href="#Canvas">
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="466ef576b88e29d7252422db7adeed1c"></fiddle-embed></div>
### See Also
@@ -5293,11 +5763,8 @@ utility to <a href="#SkAutoCanvasRestore_restore">restore</a> <a href="#Canvas">
~SkAutoCanvasRestore()
</pre>
-Restores <a href="#Canvas">Canvas</a> to saved state.
-
-### Example
-
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+Restores <a href="#Canvas">Canvas</a> to saved state. <a href="undocumented#Destructor">Destructor</a> is called when container goes out of
+scope.
### See Also
@@ -5317,7 +5784,23 @@ Restores <a href="#Canvas">Canvas</a> to saved state immediately. Subsequent cal
### Example
-<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div>
+<div><fiddle-embed name="9f459b218ec079c1ada23f4412968f9a">
+
+#### Example Output
+
+~~~~
+saveCanvas: false before restore: 2
+saveCanvas: false after restore: 2
+saveCanvas: true before restore: 2
+saveCanvas: true after restore: 2
+saveCanvas: false before restore: 2
+saveCanvas: false after restore: 1
+saveCanvas: true before restore: 2
+saveCanvas: true after restore: 1
+final count: 1
+~~~~
+
+</fiddle-embed></div>
### See Also
diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md
index 6c9b893794..4fb273ca0f 100644
--- a/site/user/api/SkMatrix_Reference.md
+++ b/site/user/api/SkMatrix_Reference.md
@@ -1466,7 +1466,7 @@ perspective scale factor to store</td>
### Example
-<div><fiddle-embed name="c51d81b637b58da30fb9ae2d68877167"></fiddle-embed></div>
+<div><fiddle-embed name="95ccfc2a89ce593e6b7a9f992a844bc0"></fiddle-embed></div>
### See Also
@@ -1697,7 +1697,7 @@ pivot y</td>
### Example
-<div><fiddle-embed name="397db8da89bc92e7c576ad013d64ed24"></fiddle-embed></div>
+<div><fiddle-embed name="4565a0792058178c88e0a129a87272d6"></fiddle-embed></div>
### See Also
@@ -1722,7 +1722,7 @@ vertical scale factor</td>
### Example
-<div><fiddle-embed name="94a9ec11b994580dca14aa2159a796a9"></fiddle-embed></div>
+<div><fiddle-embed name="1579d0cc109c26e69f66f73abd35fb0e"></fiddle-embed></div>
### See Also
@@ -3771,7 +3771,7 @@ storage for mapped corner <a href="#Point">Points</a></td>
### Example
-<div><fiddle-embed name="3bf9404624735d7cf34b47b9c7b27bcc"></fiddle-embed></div>
+<div><fiddle-embed name="c69cd2a590b5733c3cbc92cb9ceed3f5"></fiddle-embed></div>
### See Also
diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md
index ffab03e288..33a92a7da3 100644
--- a/site/user/api/SkPaint_Reference.md
+++ b/site/user/api/SkPaint_Reference.md
@@ -647,6 +647,10 @@ serialized data describing <a href="#Paint">Paint</a> content</td>
</tr>
</table>
+### See Also
+
+<a href="undocumented#SkReadBuffer">SkReadBuffer</a>
+
---
# <a name="Hinting"></a> Hinting
@@ -862,6 +866,10 @@ enum <a href="#SkPaint_ReserveFlags">ReserveFlags</a> {
</tr>
</table>
+### See Also
+
+<a href="#Flags">Flags</a> <a href="#SkPaint_getFlags">getFlags</a>
+
<a name="SkPaint_getFlags"></a>
@@ -2436,7 +2444,7 @@ at the contour point.
### Example
-<div><fiddle-embed name="3d92b449b298b4ce4004cfca6b91cee7"></fiddle-embed></div>
+<div><fiddle-embed name="2bffb6384cc20077e632e7d01da045ca"></fiddle-embed></div>
<a name="SkPaint_getStrokeCap"></a>
## getStrokeCap
@@ -2516,7 +2524,7 @@ the following curve, the pair of curves meet at <a href="#Stroke_Join">Stroke Jo
### Example
-<div><fiddle-embed name="4a4e41ed89a57d47eab5d1600c33b0e8"></fiddle-embed></div>
+<div><fiddle-embed name="917c44b504d3f9308571fd3835d90a0d"></fiddle-embed></div>
## <a name="SkPaint_Join"></a> Enum SkPaint::Join
@@ -5204,5 +5212,9 @@ text size = 12
</fiddle-embed></div>
+### See Also
+
+<a href="#SkPathEffect_toString">SkPathEffect::toString</a> <a href="#SkMaskFilter_toString">SkMaskFilter::toString</a> <a href="#SkColorFilter_toString">SkColorFilter::toString</a> <a href="#SkImageFilter_toString">SkImageFilter::toString</a>
+
---
diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md
index 154b66b27d..d0bb7e0d50 100644
--- a/site/user/api/SkPath_Reference.md
+++ b/site/user/api/SkPath_Reference.md
@@ -106,7 +106,8 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co
| <a href="#SkPath_Convexity">Convexity</a> | Returns if <a href="#Path">Path</a> is convex or concave. |
| <a href="#SkPath_Direction">Direction</a> | Sets <a href="#Contour">Contour</a> clockwise or counterclockwise. |
| <a href="#SkPath_FillType">FillType</a> | Sets winding rule and inverse fill. |
-| <a href="#SkPath_SegmentMask">SegmentMask</a> | <a href="#SkPath_Verb">Verb</a> | Controls how <a href="#Path">Path</a> <a href="#Point">Points</a> are interpreted. |
+| <a href="#SkPath_SegmentMask">SegmentMask</a> | Returns <a href="#SkPath_Verb">Verb</a> types in <a href="#Path">Path</a>. |
+| <a href="#SkPath_Verb">Verb</a> | Controls how <a href="#Path">Path</a> <a href="#Point">Points</a> are interpreted. |
## <a name="Classes_and_Structs"></a> Classes and Structs
diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md
index 6e44b60aff..969fdb3ed6 100644
--- a/site/user/api/SkPixmap_Reference.md
+++ b/site/user/api/SkPixmap_Reference.md
@@ -224,7 +224,7 @@ size of one row of <a href="#SkPixmap_addr">addr</a>; <a href="#SkPixmap_width">
### Example
-<div><fiddle-embed name="c8e31733704bfebdb038b003aa8a62d7"></fiddle-embed></div>
+<div><fiddle-embed name="a7c9bfe44f5d888ab5b9996f2b126788"></fiddle-embed></div>
### See Also
@@ -1253,6 +1253,10 @@ pixmap.addr32(1, 2) == &storage[1 + 2 * w]
</fiddle-embed></div>
+### See Also
+
+<a href="#SkPixmap_addr">addr</a> <a href="#SkPixmap_addr8">addr8</a> <a href="#SkPixmap_addr16">addr16</a> <a href="#SkPixmap_addr64">addr64</a> <a href="#SkPixmap_addrF16">addrF16</a> <a href="#SkPixmap_getColor">getColor</a> <a href="#SkPixmap_writable_addr">writable addr</a> <a href="#SkPixmap_writable_addr64">writable addr64</a>
+
---
<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
@@ -1561,7 +1565,7 @@ writable unsigned 64-bit pointer to pixel
### Example
-<div><fiddle-embed name="33a04ac51c74a1e8d461b1d6f31ed82a"></fiddle-embed></div>
+<div><fiddle-embed name="de14d8d30e4a7b6462103d0e0dd96b0b"></fiddle-embed></div>
### See Also
@@ -1938,7 +1942,7 @@ true if pixels are changed
### Example
-<div><fiddle-embed name="f0a8f4e07fd8b6c48eb52f2238d8f88b"></fiddle-embed></div>
+<div><fiddle-embed name="a0cdbafed4786788cc90681e7b294234"></fiddle-embed></div>
### See Also
@@ -1967,7 +1971,7 @@ true if pixels are changed
### Example
-<div><fiddle-embed name="ee0bb3f3aae12dbc1c2759349527e9da"></fiddle-embed></div>
+<div><fiddle-embed name="838202e0d49cad2eb3eeb495834f6d63"></fiddle-embed></div>
### See Also
@@ -1999,7 +2003,7 @@ true if pixels are changed
### Example
-<div><fiddle-embed name="da215a59c574d26bc5caf7de630d5966"></fiddle-embed></div>
+<div><fiddle-embed name="f884f3f46a565f052a5e252ae2f36e9b"></fiddle-embed></div>
### See Also
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index c38bd5fbc1..de9d211879 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -28,6 +28,13 @@
"name": "Weight_3",
"stdout": "move {0, 0}, \\nline {0, 0}, {20, 0}, \\nline {20, 0}, {20, 20}, \\ndone \\n"
},
+ "SkAutoCanvasRestore_restore": {
+ "code": "void draw(SkCanvas* canvas) {\n for (bool callRestore : { false, true } ) {\n for (bool saveCanvas : {false, true} ) {\n SkAutoCanvasRestore autoRestore(canvas, saveCanvas);\n if (!saveCanvas) {\n canvas->save();\n }\n SkDebugf(\"saveCanvas: %s before restore: %d\\n\",\n saveCanvas ? \"true\" : \"false\", canvas->getSaveCount());\n if (callRestore) autoRestore.restore();\n SkDebugf(\"saveCanvas: %s after restore: %d\\n\",\n saveCanvas ? \"true\" : \"false\", canvas->getSaveCount());\n }\n }\n SkDebugf(\"final count: %d\\n\", canvas->getSaveCount());\n}",
+ "hash": "9f459b218ec079c1ada23f4412968f9a",
+ "file": "SkCanvas_Reference",
+ "name": "SkAutoCanvasRestore::restore()",
+ "stdout": "saveCanvas: false before restore: 2\\nsaveCanvas: false after restore: 2\\nsaveCanvas: true before restore: 2\\nsaveCanvas: true after restore: 2\\nsaveCanvas: false before restore: 2\\nsaveCanvas: false after restore: 1\\nsaveCanvas: true before restore: 2\\nsaveCanvas: true after restore: 1\\nfinal count: 1\\n"
+ },
"SkBitmap_ComputeIsOpaque": {
"code": "void draw(SkCanvas* canvas) {\n SkBitmap bitmap;\n bitmap.setInfo(SkImageInfo::Make(2, 2, kN32_SkColorType, kPremul_SkAlphaType));\n for (int index = 0; index < 2; ++index) {\n bitmap.allocPixels();\n bitmap.eraseColor(0x00000000);\n SkDebugf(\"computeIsOpaque: %s\\n\", SkBitmap::ComputeIsOpaque(bitmap) ? \"true\" : \"false\");\n bitmap.eraseColor(0xFFFFFFFF);\n SkDebugf(\"computeIsOpaque: %s\\n\", SkBitmap::ComputeIsOpaque(bitmap) ? \"true\" : \"false\");\n bitmap.setInfo(bitmap.info().makeAlphaType(kOpaque_SkAlphaType));\n }\n}",
"hash": "9df1baa17658fbd0c419780f26fd854f",
@@ -3127,16 +3134,16 @@
"Paint_Stroke_Cap": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setStrokeWidth(20);\n SkPath path;\n path.moveTo(30, 30);\n path.lineTo(30, 30);\n path.moveTo(70, 30);\n path.lineTo(90, 40);\n for (SkPaint::Cap c : { SkPaint::kButt_Cap, SkPaint::kRound_Cap, SkPaint::kSquare_Cap } ) {\n paint.setStrokeCap(c);\n canvas->drawPath(path, paint);\n canvas->translate(0, 70);\n }\n}",
"width": 256,
- "height": 256,
- "hash": "3d92b449b298b4ce4004cfca6b91cee7",
+ "height": 200,
+ "hash": "2bffb6384cc20077e632e7d01da045ca",
"file": "SkPaint_Reference",
"name": "Stroke_Cap"
},
"Paint_Stroke_Join": {
- "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setStrokeWidth(20);\n SkPath path;\n path.moveTo(30, 30);\n path.lineTo(40, 50);\n path.conicTo(70, 30, 100, 30, .707f);\n for (SkPaint::Join j : { SkPaint::kMiter_Join, SkPaint::kRound_Join, SkPaint::kBevel_Join } ) {\n paint.setStrokeJoin(j);\n canvas->drawPath(path, paint);\n canvas->translate(0, 70);\n }\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setStyle(SkPaint::kStroke_Style);\n paint.setStrokeWidth(20);\n SkPath path;\n path.moveTo(30, 20);\n path.lineTo(40, 40);\n path.conicTo(70, 20, 100, 20, .707f);\n for (SkPaint::Join j : { SkPaint::kMiter_Join, SkPaint::kRound_Join, SkPaint::kBevel_Join } ) {\n paint.setStrokeJoin(j);\n canvas->drawPath(path, paint);\n canvas->translate(0, 70);\n }\n}",
"width": 256,
- "height": 256,
- "hash": "4a4e41ed89a57d47eab5d1600c33b0e8",
+ "height": 200,
+ "hash": "917c44b504d3f9308571fd3835d90a0d",
"file": "SkPaint_Reference",
"name": "Stroke_Join"
},
@@ -3293,29 +3300,13 @@
"name": "Path_2"
},
"SkAutoCanvasRestore_SkCanvas_star": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n SkMatrix m = SkMatrix::MakeAll(sx, 1, 96, 0, sy, 64, 0, 0, 1);\n canvas->concat(m);\n canvas->drawString(\"R\", 0, 0, p);\n }\n }\n}",
"width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
+ "height": 128,
+ "hash": "466ef576b88e29d7252422db7adeed1c",
"file": "SkCanvas_Reference",
"name": "SkAutoCanvasRestore::SkAutoCanvasRestore(SkCanvas* canvas, bool doSave)"
},
- "SkAutoCanvasRestore_destructor": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkCanvas_Reference",
- "name": "SkAutoCanvasRestore::~SkAutoCanvasRestore()"
-},
- "SkAutoCanvasRestore_restore": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkCanvas_Reference",
- "name": "SkAutoCanvasRestore::restore()"
-},
"SkBitmap_allocN32Pixels": {
"code": "void draw(SkCanvas* canvas) {\n SkRandom random;\n SkBitmap bitmap;\n bitmap.allocN32Pixels(64, 64);\n bitmap.eraseColor(SK_ColorTRANSPARENT);\n for (int y = 0; y < 256; y += 64) {\n for (int x = 0; x < 256; x += 64) {\n SkColor color = random.nextU();\n uint32_t w = random.nextRangeU(4, 32);\n uint32_t cx = random.nextRangeU(0, 64 - w);\n uint32_t h = random.nextRangeU(4, 32);\n uint32_t cy = random.nextRangeU(0, 64 - h);\n bitmap.erase(color, SkIRect::MakeXYWH(cx, cy, w, h));\n canvas->drawBitmap(bitmap, x, y);\n }\n }\n}",
"width": 256,
@@ -3367,8 +3358,8 @@
"SkBitmap_bounds": {
"code": "void draw(SkCanvas* canvas) {\n SkIRect bounds = source.bounds();\n for (int x : { 0, bounds.width() } ) {\n for (int y : { 0, bounds.height() } ) {\n canvas->drawBitmap(source, x, y);\n }\n }\n}",
"width": 256,
- "height": 256,
- "hash": "977dd8a850f89a610505e3f4f260d540",
+ "height": 128,
+ "hash": "bd020c1527964761adf7646e82a36487",
"file": "SkBitmap_Reference",
"name": "SkBitmap::bounds()"
},
@@ -4575,8 +4566,8 @@
"SkMatrix_mapRectToQuad": {
"code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n paint.setAntiAlias(true);\n SkMatrix matrix;\n matrix.setRotate(60, 128, 128);\n SkRect rect = {50, 50, 150, 150};\n SkPoint pts[4];\n matrix.mapRectToQuad(pts, rect);\n for (int i = 0; i < 4; ++i) {\n canvas->drawCircle(pts[i].fX, pts[i].fY, 3, paint);\n }\n canvas->concat(matrix);\n paint.setStyle(SkPaint::kStroke_Style);\n canvas->drawRect(rect, paint);\n}",
"width": 256,
- "height": 256,
- "hash": "3bf9404624735d7cf34b47b9c7b27bcc",
+ "height": 192,
+ "hash": "c69cd2a590b5733c3cbc92cb9ceed3f5",
"file": "SkMatrix_Reference",
"name": "SkMatrix::mapRectToQuad"
},
@@ -4789,10 +4780,10 @@
"name": "SkMatrix::set9"
},
"SkMatrix_setAll": {
- "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setAll(sx, 1, 128, 0, sy, 128, 0, 0, 1);\n canvas->concat(m);\n canvas->drawString(\"K\", 0, 0, p);\n }\n }\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setAll(sx, 1, 128, 0, sy, 64, 0, 0, 1);\n canvas->concat(m);\n canvas->drawString(\"K\", 0, 0, p);\n }\n }\n}",
"width": 256,
- "height": 256,
- "hash": "c51d81b637b58da30fb9ae2d68877167",
+ "height": 128,
+ "hash": "95ccfc2a89ce593e6b7a9f992a844bc0",
"file": "SkMatrix_Reference",
"name": "SkMatrix::setAll"
},
@@ -4853,10 +4844,10 @@
"name": "SkMatrix::setRotate_2"
},
"SkMatrix_setScale": {
- "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setScale(sx, sy, 128, 128);\n canvas->concat(m);\n canvas->drawString(\"K\", 128, 128, p);\n }\n }\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setScale(sx, sy, 128, 64);\n canvas->concat(m);\n canvas->drawString(\"%\", 128, 64, p);\n }\n }\n}",
"width": 256,
- "height": 256,
- "hash": "397db8da89bc92e7c576ad013d64ed24",
+ "height": 128,
+ "hash": "4565a0792058178c88e0a129a87272d6",
"file": "SkMatrix_Reference",
"name": "SkMatrix::setScale"
},
@@ -4877,10 +4868,10 @@
"name": "SkMatrix::setScaleY"
},
"SkMatrix_setScale_2": {
- "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setScale(sx, sy);\n m.postTranslate(128, 128);\n canvas->concat(m);\n canvas->drawString(\"K\", 0, 0, p);\n }\n }\n}",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint p;\n p.setAntiAlias(true);\n p.setTextSize(64);\n SkMatrix m;\n for (SkScalar sx : { -1, 1 } ) {\n for (SkScalar sy : { -1, 1 } ) {\n SkAutoCanvasRestore autoRestore(canvas, true);\n m.setScale(sx, sy);\n m.postTranslate(128, 64);\n canvas->concat(m);\n canvas->drawString(\"@\", 0, 0, p);\n }\n }\n}",
"width": 256,
- "height": 256,
- "hash": "94a9ec11b994580dca14aa2159a796a9",
+ "height": 128,
+ "hash": "1579d0cc109c26e69f66f73abd35fb0e",
"file": "SkMatrix_Reference",
"name": "SkMatrix::setScale_2"
},
@@ -5695,24 +5686,24 @@
"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,
- "height": 256,
- "hash": "f0a8f4e07fd8b6c48eb52f2238d8f88b",
+ "height": 50,
+ "hash": "a0cdbafed4786788cc90681e7b294234",
"file": "SkPixmap_Reference",
"name": "SkPixmap::erase()"
},
"SkPixmap_erase_2": {
"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);\n SkBitmap bitmap;\n canvas->scale(20, 20);\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 0, 0);\n}",
"width": 256,
- "height": 256,
- "hash": "ee0bb3f3aae12dbc1c2759349527e9da",
+ "height": 50,
+ "hash": "838202e0d49cad2eb3eeb495834f6d63",
"file": "SkPixmap_Reference",
"name": "SkPixmap::erase_2"
},
"SkPixmap_erase_3": {
"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 SkIRect topPixelBounds = {0, 0, 1, 1};\n pixmap.erase({ 0.65f, 0.45f, 0.25f, 1 }, &topPixelBounds);\n SkIRect bottomPixelBounds = {0, 1, 1, 2};\n pixmap.erase({ 0.25f, 0.65f, 0.45f, 1 }, &bottomPixelBounds);\n SkBitmap bitmap;\n canvas->scale(20, 20);\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 0, 0);\n}",
"width": 256,
- "height": 256,
- "hash": "da215a59c574d26bc5caf7de630d5966",
+ "height": 50,
+ "hash": "f884f3f46a565f052a5e252ae2f36e9b",
"file": "SkPixmap_Reference",
"name": "SkPixmap::erase_3"
},
@@ -5767,8 +5758,8 @@
"SkPixmap_reset_2": {
"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 int x = 0;\n for (auto colorType : { kRGBA_8888_SkColorType, kBGRA_8888_SkColorType } ) {\n pixmap.reset(SkImageInfo::Make(image->width(), image->height(), colorType, \n image->alphaType()), (const void*) &pixels.front(), image->width() * 4);\n SkBitmap bitmap;\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, x, 0);\n x += 128;\n }\n}\n",
"width": 256,
- "height": 128,
- "hash": "c8e31733704bfebdb038b003aa8a62d7",
+ "height": 64,
+ "hash": "a7c9bfe44f5d888ab5b9996f2b126788",
"file": "SkPixmap_Reference",
"name": "SkPixmap::reset_2"
},
@@ -5799,8 +5790,8 @@
"SkPixmap_writable_addr64": {
"code": "void draw(SkCanvas* canvas) {\n SkImageInfo info = SkImageInfo::Make(3, 3, kRGBA_F16_SkColorType, kPremul_SkAlphaType);\n uint64_t storage[9];\n SkPixmap pixmap(info, storage, 3 * sizeof(uint64_t));\n SkColor4f c4 { 1, 0.45f, 0.25f, 0.65f };\n pixmap.erase(c4);\n SkBitmap bitmap;\n canvas->scale(10, 10);\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 0, 0);\n *pixmap.writable_addr64(1, 1) |= 0x00ff000000000000LL;\n bitmap.installPixels(pixmap);\n canvas->drawBitmap(bitmap, 10, 0);\n}",
"width": 256,
- "height": 256,
- "hash": "33a04ac51c74a1e8d461b1d6f31ed82a",
+ "height": 40,
+ "hash": "de14d8d30e4a7b6462103d0e0dd96b0b",
"file": "SkPixmap_Reference",
"name": "SkPixmap::writable_addr64"
},
diff --git a/site/user/api/undocumented.md b/site/user/api/undocumented.md
index dc102f84ab..7ac1e12d33 100644
--- a/site/user/api/undocumented.md
+++ b/site/user/api/undocumented.md
@@ -223,6 +223,15 @@ int SkColorSetARGB(a, r, g, b)
# <a name="SkColorFilter"></a> Class SkColorFilter
+<a name="SkColorFilter_toString"></a>
+## toString
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void toString(SkString* str) const
+</pre>
+
+---
+
# <a name="Color_Space"></a> Color Space
# <a name="SkColorSpace"></a> Class SkColorSpace
@@ -250,6 +259,19 @@ static sk_sp&lt;SkColorSpace&gt; MakeSRGBLinear()
</table>
+# <a name="Create_Color_Space_Xform_Canvas"></a> Create Color Space Xform Canvas
+
+<a name="SkCreateColorSpaceXformCanvas"></a>
+## SkCreateColorSpaceXformCanvas
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+std::unique_ptr&lt;SkCanvas&gt; SK_API
+ SkCreateColorSpaceXformCanvas(SkCanvas* target,
+ sk_sp&lt;SkColorSpace&gt; targetCS)
+</pre>
+
+---
+
# <a name="Core_Graphics"></a> Core Graphics
# <a name="Core_Text"></a> Core Text
@@ -341,6 +363,17 @@ static std::unique_ptr&lt;SkCanvas&gt;
# <a name="GPU_Context"></a> GPU Context
+# <a name="GrContext"></a> Class GrContext
+
+<a name="GrContext_flush"></a>
+## flush
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void flush()
+</pre>
+
+---
+
# <a name="GPU_Surface"></a> GPU Surface
# <a name="Image"></a> Image
@@ -425,6 +458,16 @@ SkImageInfo()
---
+<a name="SkImageInfo_MakeN32Premul"></a>
+## MakeN32Premul
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+static SkImageInfo MakeN32Premul(int width, int height,
+ sk_sp&lt;SkColorSpace&gt; cs = nullptr)
+</pre>
+
+---
+
<a name="SkImageInfo_makeColorSpace"></a>
## makeColorSpace
@@ -577,12 +620,30 @@ bool scalePixels(const SkPixmap& dst, SkFilterQuality,
---
+<a name="SkImage_peekPixels"></a>
+## peekPixels
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+bool peekPixels(SkPixmap* pixmap) const
+</pre>
+
+---
+
# <a name="Image_Filter"></a> Image Filter
## <a name="Scaling"></a> Scaling
# <a name="SkImageFilter"></a> Class SkImageFilter
+<a name="SkImageFilter_toString"></a>
+## toString
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void toString(SkString* str) const
+</pre>
+
+---
+
# <a name="Image_Scaling"></a> Image Scaling
# <a name="Malloc_Pixel_Ref"></a> Malloc Pixel Ref
@@ -650,6 +711,15 @@ virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
---
+<a name="SkMaskFilter_toString"></a>
+## toString
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void toString(SkString* str) const
+</pre>
+
+---
+
# <a name="Math"></a> Math
<a name="sk_64_isS32"></a>
@@ -742,6 +812,14 @@ template &lt;typename D, typename S&gt; inline bool SkTFitsIn(S s)
---
+# <a name="Stream"></a> Stream
+
+# <a name="SkStream"></a> Class SkStream
+
+# <a name="Meta_Data"></a> Meta Data
+
+# <a name="SkMetaData"></a> Class SkMetaData
+
# <a name="Nine_Patch"></a> Nine Patch
# <a name="Number_Types"></a> Number Types
@@ -805,6 +883,15 @@ template &lt;typename D, typename S&gt; inline bool SkTFitsIn(S s)
# <a name="SkPathEffect"></a> Class SkPathEffect
+<a name="SkPathEffect_toString"></a>
+## toString
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void toString(SkString* str) const
+</pre>
+
+---
+
# <a name="Path_Measure"></a> Path Measure
# <a name="SkPathMeasure"></a> Class SkPathMeasure
@@ -831,6 +918,17 @@ bool SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result
# <a name="Picture"></a> Picture
+# <a name="SkPicture"></a> Class SkPicture
+
+<a name="SkPicture_playback"></a>
+## playback
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+virtual void playback(SkCanvas*, AbortCallback* = nullptr) const = 0
+</pre>
+
+---
+
## <a name="Recorder"></a> Recorder
# <a name="SkPictureRecorder"></a> Class SkPictureRecorder
@@ -969,10 +1067,6 @@ static sk_sp&lt;SkShader&gt; MakeBitmapShader(const SkBitmap& src, TileMode tmx,
# <a name="Sprite"></a> Sprite
-# <a name="Stream"></a> Stream
-
-# <a name="SkStream"></a> Class SkStream
-
# <a name="String"></a> String
# <a name="SkString"></a> Class SkString
@@ -1003,6 +1097,51 @@ bool readPixels(const SkPixmap& dst, int srcX, int srcY) ;
---
+<a name="SkSurface_getCanvas"></a>
+## getCanvas
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+SkCanvas* getCanvas()
+</pre>
+
+---
+
+<a name="SkSurface_flush"></a>
+## flush
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void flush()
+</pre>
+
+---
+
+<a name="SkSurface_prepareForExternalIO"></a>
+## prepareForExternalIO
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+void prepareForExternalIO()
+</pre>
+
+---
+
+<a name="SkSurface_makeSurface"></a>
+## makeSurface
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+sk_sp&lt;SkSurface&gt; makeSurface(const SkImageInfo&)
+</pre>
+
+---
+
+<a name="SkSurface_peekPixels"></a>
+## peekPixels
+
+<pre style="padding: 1em 1em 1em 1em;width: 50em; background-color: #f0f0f0">
+bool peekPixels(SkPixmap*)
+</pre>
+
+---
+
## <a name="Properties"></a> Properties
# <a name="SkSurfaceProps"></a> Class SkSurfaceProps