aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-02-07 07:27:09 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-07 12:46:16 +0000
commit78de7519692ea93a2d2c70f8c0e773668df49fce (patch)
tree3c6510b3d8b6b53c23c68efb6dd12fc9ad5666c2
parentd521b0cc73717186559b9bbaf9728d107bb6b975 (diff)
add subtopics to all methods
add self-check looking for #In markup on every method, pointing to an existing #Subtopic to reference the method. Docs-Preview: https://skia.org/?cl=104325 Bug: skia:6898 Change-Id: I749a25b9a43033ae68d193249b2c0b810dcf8fc8 Reviewed-on: https://skia-review.googlesource.com/104325 Commit-Queue: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
-rw-r--r--docs/SkAutoCanvasRestore_Reference.bmh2
-rw-r--r--docs/SkBitmap_Reference.bmh157
-rw-r--r--docs/SkCanvas_Reference.bmh138
-rw-r--r--docs/SkIRect_Reference.bmh4
-rw-r--r--docs/SkImageInfo_Reference.bmh73
-rw-r--r--docs/SkImage_Reference.bmh15
-rw-r--r--docs/SkMatrix_Reference.bmh12
-rw-r--r--docs/SkPaint_Reference.bmh19
-rw-r--r--docs/SkPath_Reference.bmh18
-rw-r--r--docs/SkPixmap_Reference.bmh22
-rw-r--r--docs/SkRect_Reference.bmh1
-rw-r--r--site/user/api/SkBitmap_Reference.md144
-rw-r--r--site/user/api/SkCanvas_Reference.md251
-rw-r--r--site/user/api/SkIPoint16_Reference.md1
-rw-r--r--site/user/api/SkIPoint_Reference.md3
-rw-r--r--site/user/api/SkIRect_Reference.md23
-rw-r--r--site/user/api/SkImageInfo_Reference.md62
-rw-r--r--site/user/api/SkImage_Reference.md51
-rw-r--r--site/user/api/SkMatrix_Reference.md133
-rw-r--r--site/user/api/SkPaint_Reference.md12
-rw-r--r--site/user/api/SkPath_Reference.md52
-rw-r--r--site/user/api/SkPixmap_Reference.md30
-rw-r--r--site/user/api/SkPoint_Reference.md14
-rw-r--r--site/user/api/SkRect_Reference.md13
-rw-r--r--site/user/api/SkSurface_Reference.md8
-rw-r--r--tools/bookmaker/bookmaker.h15
-rw-r--r--tools/bookmaker/definition.cpp82
-rw-r--r--tools/bookmaker/mdOut.cpp32
-rw-r--r--tools/bookmaker/selfCheck.cpp117
-rw-r--r--tools/bookmaker/spellCheck.cpp1
30 files changed, 1068 insertions, 437 deletions
diff --git a/docs/SkAutoCanvasRestore_Reference.bmh b/docs/SkAutoCanvasRestore_Reference.bmh
index 132a042c95..e4d559da41 100644
--- a/docs/SkAutoCanvasRestore_Reference.bmh
+++ b/docs/SkAutoCanvasRestore_Reference.bmh
@@ -63,7 +63,7 @@ scope.
##
#Method void restore()
-
+#In Member_Function
#Line # restores Canvas to saved state ##
Restores Canvas to saved state immediately. Subsequent calls and
~SkAutoCanvasRestore have no effect.
diff --git a/docs/SkBitmap_Reference.bmh b/docs/SkBitmap_Reference.bmh
index 088158e748..6ecaddabe1 100644
--- a/docs/SkBitmap_Reference.bmh
+++ b/docs/SkBitmap_Reference.bmh
@@ -331,7 +331,7 @@ copy has pixels: true
# ------------------------------------------------------------------------------
#Method void swap(SkBitmap& other)
-
+#In Utility
#Line # exchanges Bitmap pair ##
Swaps the fields of the two bitmaps.
@@ -368,9 +368,13 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT
##
# ------------------------------------------------------------------------------
+#Subtopic Property
+#Populate
+#Line # metrics and attributes ##
+##
#Method const SkPixmap& pixmap() const
-
+#In Property
#Line # returns Pixmap ##
Returns a constant reference to the Pixmap holding the Bitmap pixel
address, row bytes, and Image_Info.
@@ -417,7 +421,7 @@ address, row bytes, and Image_Info.
# ------------------------------------------------------------------------------
#Method const SkImageInfo& info() const
-
+#In Property
#Line # returns Image_Info ##
Returns width, height, Alpha_Type, Color_Type, and Color_Space.
@@ -446,7 +450,7 @@ width: 56 height: 56 color: BGRA_8888 alpha: Opaque
# ------------------------------------------------------------------------------
#Method int width() const
-
+#In Property
#Line # returns pixel column count ##
Returns pixel count in each row. Should be equal or less than:
@@ -477,7 +481,7 @@ bitmap width: 16 info width: 16
# ------------------------------------------------------------------------------
#Method int height() const
-
+#In Property
#Line # returns pixel row count ##
Returns pixel row count.
@@ -503,7 +507,7 @@ bitmap height: 32 info height: 32
# ------------------------------------------------------------------------------
#Method SkColorType colorType() const
-
+#In Property
#Line # returns Image_Info Color_Type ##
Returns Color_Type, one of: kUnknown_SkColorType, kAlpha_8_SkColorType,
kRGB_565_SkColorType, kARGB_4444_SkColorType, kRGBA_8888_SkColorType,
@@ -529,7 +533,7 @@ color type: kAlpha_8_SkColorType
# ------------------------------------------------------------------------------
#Method SkAlphaType alphaType() const
-
+#In Property
#Line # returns Image_Info Alpha_Type ##
Returns Alpha_Type, one of: kUnknown_SkAlphaType, kOpaque_SkAlphaType,
kPremul_SkAlphaType, kUnpremul_SkAlphaType.
@@ -552,7 +556,7 @@ alpha type: kPremul_SkAlphaType
# ------------------------------------------------------------------------------
#Method SkColorSpace* colorSpace() const
-
+#In Property
#Line # returns Image_Info Color_Space ##
Returns Color_Space, the range of colors, associated with Image_Info. The
reference count of Color_Space is unchanged. The returned Color_Space is
@@ -585,7 +589,7 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false
# ------------------------------------------------------------------------------
#Method sk_sp<SkColorSpace> refColorSpace() const
-
+#In Property
#Line # returns Image_Info Color_Space ##
Returns a smart pointer to Color_Space, the range of colors, associated with
Image_Info. The smart pointer tracks the number of objects sharing this
@@ -618,7 +622,7 @@ gammaCloseToSRGB: false gammaIsLinear: true isSRGB: false
# ------------------------------------------------------------------------------
#Method int bytesPerPixel() const
-
+#In Property
#Line # returns number of bytes in pixel based on Color_Type ##
Returns number of bytes per pixel required by Color_Type.
Returns zero if colorType( is kUnknown_SkColorType.
@@ -659,7 +663,7 @@ color: kRGBA_F16_SkColorType bytesPerPixel: 8
# ------------------------------------------------------------------------------
#Method int rowBytesAsPixels() const
-
+#In Property
#Line # returns interval between rows in pixels ##
Returns number of pixels that fit on row. Should be greater than or equal to
width().
@@ -688,7 +692,7 @@ rowBytes: 8 rowBytesAsPixels: 2
# ------------------------------------------------------------------------------
#Method int shiftPerPixel() const
-
+#In Property
#Line # returns bit shift from pixels to bytes ##
Returns bit shift converting row bytes to row pixels.
Returns zero for kUnknown_SkColorType.
@@ -728,7 +732,7 @@ color: kRGBA_F16_SkColorType shiftPerPixel: 3
# ------------------------------------------------------------------------------
#Method bool empty() const
-
+#In Property
#Line # returns true if Image_Info has zero width() or height() ##
Returns true if either width() or height() are zero.
@@ -761,7 +765,7 @@ width: 2 height: 2 empty: false
# ------------------------------------------------------------------------------
#Method bool isNull() const
-
+#In Property
#Line # returns true if Pixel_Ref is nullptr ##
Return true if Pixel_Ref is nullptr.
@@ -791,7 +795,7 @@ allocated bitmap does have pixels
# ------------------------------------------------------------------------------
#Method bool drawsNothing() const
-
+#In Property
#Line # returns true if no width(), no height(), or no Pixel_Ref ##
Return true if width() or height() are zero, or if Pixel_Ref is nullptr.
If true, Bitmap has no effect when drawn or drawn into.
@@ -823,7 +827,7 @@ empty:false isNull:false drawsNothing:false
# ------------------------------------------------------------------------------
#Method size_t rowBytes() const
-
+#In Property
#Line # returns interval between rows in bytes ##
Returns row bytes, the interval from one pixel row to the next. Row bytes
is at least as large as
@@ -856,7 +860,7 @@ setInfo returned:true rowBytes:8
# ------------------------------------------------------------------------------
#Method bool setAlphaType(SkAlphaType alphaType)
-
+#In Set
#Line # sets Alpha_Type of shared pixels ##
Sets Alpha_Type, if alphaType is compatible with Color_Type.
Returns true unless alphaType is kUnknown_SkAlphaType and current Alpha_Type
@@ -920,7 +924,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void* getPixels() const
-
+#In Property
#Line # returns address of pixels ##
Returns pixel address, the base address corresponding to the pixel origin.
@@ -950,7 +954,7 @@ bitmap.getColor(0, 0) == 0xFFFFFFFF
# ------------------------------------------------------------------------------
#Method size_t computeByteSize() const
-
+#In Utility
#Line # returns size required for pixels ##
Returns minimum memory required for pixel storage.
Does not include unused memory on last row when rowBytesAsPixels exceeds width().
@@ -990,7 +994,7 @@ width: 1000000 height: 1000000 computeByteSize: 4999999000000
# ------------------------------------------------------------------------------
#Method bool isImmutable() const
-
+#In Property
#Line # returns true if pixels will not change ##
Returns true if pixels can not change.
@@ -1021,7 +1025,7 @@ copy is immutable
# ------------------------------------------------------------------------------
#Method void setImmutable()
-
+#In Set
#Line # marks that pixels will not change ##
Sets internal flag to mark Bitmap as immutable. Once set, pixels can not change.
Any other bitmap sharing the same Pixel_Ref are also marked as immutable.
@@ -1051,7 +1055,7 @@ Triggers assert if SK_DEBUG is true, runs fine otherwise.
# ------------------------------------------------------------------------------
#Method bool isOpaque() const
-
+#In Property
#Line # returns true if Image_Info describes opaque pixels ##
Returns true if Alpha_Type is kOpaque_SkAlphaType.
Does not check if Color_Type allows Alpha, or if any pixel value has
@@ -1090,7 +1094,7 @@ isOpaque: true
# ------------------------------------------------------------------------------
#Method bool isVolatile() const
-
+#In Property
#Line # returns true if pixels should not be cached ##
If true, provides a hint to caller that pixels should not
be cached. Only true if setIsVolatile has been called to mark as volatile.
@@ -1122,7 +1126,7 @@ copy is not volatile
# ------------------------------------------------------------------------------
#Method void setIsVolatile(bool isVolatile)
-
+#In Set
#Line # marks if pixels should not be cached ##
Sets if pixels should be read from Pixel_Ref on every access. Bitmaps are not
volatile by default; a GPU back end may upload pixel values expecting them to be
@@ -1155,7 +1159,7 @@ consumption on Device.
# ------------------------------------------------------------------------------
#Method void reset()
-
+#In Constructor
#Line # sets to default values, releases pixel ownership ##
Resets to its initial state; all fields are set to zero, as if Bitmap had
been initialized by SkBitmap().
@@ -1188,7 +1192,7 @@ width:0 height:0 isNull:true
# ------------------------------------------------------------------------------
#Method static bool ComputeIsOpaque(const SkBitmap& bm)
-
+#In Utility
#Line # returns true if all pixels are opaque ##
Returns true if all pixels are opaque. Color_Type determines how pixels
are encoded, and whether pixel describes Alpha. Returns true for Color_Types
@@ -1234,7 +1238,7 @@ computeIsOpaque: true
# ------------------------------------------------------------------------------
#Method void getBounds(SkRect* bounds) const
-
+#In Property
#Line # returns width() and height() as Rectangle ##
Returns Rect { 0, 0, width(), height() }.
@@ -1283,7 +1287,7 @@ Returns IRect { 0, 0, width(), height() }.
# ------------------------------------------------------------------------------
#Method SkIRect bounds() const
-
+#In Property
#Line # returns width() and height() as Rectangle ##
Returns IRect { 0, 0, width(), height() }.
@@ -1308,7 +1312,7 @@ Returns IRect { 0, 0, width(), height() }.
# ------------------------------------------------------------------------------
#Method SkISize dimensions() const
-
+#In Property
#Line # returns width() and height() ##
Returns ISize { width(), height() }.
@@ -1331,7 +1335,7 @@ Returns ISize { width(), height() }.
# ------------------------------------------------------------------------------
#Method SkIRect getSubset() const
-
+#In Property
#Line # returns bounds offset by origin ##
Returns the bounds of this bitmap, offset by its Pixel_Ref origin.
@@ -1361,7 +1365,7 @@ subset: 100, 100, 412, 412
# ------------------------------------------------------------------------------
#Method bool setInfo(const SkImageInfo& imageInfo, size_t rowBytes = 0)
-
+#In Set
#Line # sets height, width, Color_Type, and so on, releasing pixels ##
Sets width, height, Alpha_Type, Color_Type, Color_Space, and optional
rowBytes. Frees pixels, and returns true if successful.
@@ -1437,9 +1441,13 @@ AllocFlags provides the option to zero pixel memory when allocated.
##
# ------------------------------------------------------------------------------
+#Subtopic Allocate
+#Populate
+#Line # allocates storage for pixels ##
+##
#Method bool SK_WARN_UNUSED_RESULT tryAllocPixelsFlags(const SkImageInfo& info, uint32_t flags)
-
+#In Allocate
#Line # allocates pixels from Image_Info with options if possible ##
Sets Image_Info to info following the rules in setInfo and allocates pixel
memory. If flags is kZeroPixels_AllocFlag, memory is zeroed.
@@ -1481,7 +1489,7 @@ bitmap allocation succeeded!
# ------------------------------------------------------------------------------
#Method void allocPixelsFlags(const SkImageInfo& info, uint32_t flags)
-
+#In Allocate
#Line # allocates pixels from Image_Info with options, or aborts ##
Sets Image_Info to info following the rules in setInfo and allocates pixel
memory. If flags is kZeroPixels_AllocFlag, memory is zeroed.
@@ -1529,7 +1537,7 @@ canvas->drawBitmap(bitmap, 8, 8);
# ------------------------------------------------------------------------------
#Method bool SK_WARN_UNUSED_RESULT tryAllocPixels(const SkImageInfo& info, size_t rowBytes)
-
+#In Allocate
#Line # allocates pixels from Image_Info if possible ##
#ToDo am I ever conflicted about setInfo rules. It needs to be able to be replicated
if, for instance, I generate one-page-per-method HTML-style documentation
@@ -1577,7 +1585,7 @@ if (bitmap.tryAllocPixels(info, 0)) {
# ------------------------------------------------------------------------------
#Method void allocPixels(const SkImageInfo& info, size_t rowBytes)
-
+#In Allocate
#Line # allocates pixels from Image_Info, or aborts ##
Sets Image_Info to info following the rules in setInfo and allocates pixel
memory. rowBytes must equal or exceed info.width() times info.bytesPerPixel(),
@@ -1685,7 +1693,7 @@ for (int y : { 0, 64, 128, 192 } ) {
# ------------------------------------------------------------------------------
#Method bool SK_WARN_UNUSED_RESULT tryAllocN32Pixels(int width, int height, bool isOpaque = false)
-
+#In Allocate
#Line # allocates compatible Color_ARGB pixels if possible ##
Sets Image_Info to width, height, and Native_Color_Type; and allocates
pixel memory. If isOpaque is true, sets Image_Info to kOpaque_SkAlphaType;
@@ -1727,7 +1735,7 @@ the platform. Bitmap drawn to output device skips converting its pixel format.
# ------------------------------------------------------------------------------
#Method void allocN32Pixels(int width, int height, bool isOpaque = false)
-
+#In Allocate
#Line # allocates compatible Color_ARGB pixels, or aborts ##
Sets Image_Info to width, height, and the Native_Color_Type; and allocates
pixel memory. If isOpaque is true, sets Image_Info to kPremul_SkAlphaType;
@@ -1770,6 +1778,7 @@ the platform. Bitmap drawn to output device skips converting its pixel format.
#Method bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
void (*releaseProc)(void* addr, void* context), void* context)
+#In Allocate
#Line # creates Pixel_Ref, with optional release function ##
Sets Image_Info to info following the rules in setInfo, and creates Pixel_Ref
@@ -1922,9 +1931,13 @@ Draw a five by five bitmap, and draw it again with a center white pixel.
##
# ------------------------------------------------------------------------------
+#Subtopic Pixels
+#Populate
+#Line # read and write pixel values ##
+##
#Method void setPixels(void* pixels)
-
+#In Pixels
#Line # sets Pixel_Ref without an offset ##
Replaces Pixel_Ref with pixels, preserving Image_Info and rowBytes.
Sets Pixel_Ref origin to (0, 0).
@@ -1956,7 +1969,7 @@ of Bitmap and Pixel_Ref.
# ------------------------------------------------------------------------------
#Method bool SK_WARN_UNUSED_RESULT tryAllocPixels()
-
+#In Allocate
Allocates pixel memory with HeapAllocator, and replaces existing Pixel_Ref.
The allocation size is determined by Image_Info width, height, and Color_Type.
@@ -1992,7 +2005,7 @@ Pixel_Ref with set1.
# ------------------------------------------------------------------------------
#Method void allocPixels()
-
+#In Allocate
Allocates pixel memory with HeapAllocator, and replaces existing Pixel_Ref.
The allocation size is determined by Image_Info width, height, and Color_Type.
@@ -2032,7 +2045,7 @@ Allocates pixel memory with allocator, and replaces existing Pixel_Ref.
The allocation size is determined by Image_Info width, height, and Color_Type.
If allocator is nullptr, use HeapAllocator instead.
-Returns false if allocator allocPixelRef return false.
+Returns false if Allocator::allocPixelRef return false.
#Param allocator instance of SkBitmap::Allocator instantiation ##
@@ -2106,7 +2119,7 @@ Allocates pixel memory with allocator, and replaces existing Pixel_Ref.
The allocation size is determined by Image_Info width, height, and Color_Type.
If allocator is nullptr, use HeapAllocator instead.
-Aborts if allocator allocPixelRef return false. Abort steps may be provided by
+Aborts if Allocator::allocPixelRef return false. Abort steps may be provided by
the user at compile time by defining SK_ABORT.
#Param allocator instance of SkBitmap::Allocator instantiation ##
@@ -2152,7 +2165,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method SkPixelRef* pixelRef() const
-
+#In Property
#Line # returns Pixel_Ref, or nullptr ##
Returns Pixel_Ref, which contains: pixel base address; its dimensions; and
rowBytes, the interval from one row to the next. Does not change Pixel_Ref
@@ -2177,7 +2190,7 @@ If Pixel_Ref has not been set, returns nullptr.
# ------------------------------------------------------------------------------
#Method SkIPoint pixelRefOrigin() const
-
+#In Property
#Line # returns offset within Pixel_Ref ##
Returns origin of pixels within Pixel_Ref. Bitmap bounds is always contained
by Pixel_Ref bounds, which may be the same size or larger. Multiple Bitmaps
@@ -2209,9 +2222,13 @@ subset origin: 32, 64
##
# ------------------------------------------------------------------------------
+#Subtopic Set
+#Line # updates values and attributes ##
+#Populate
+##
#Method void setPixelRef(sk_sp<SkPixelRef> pixelRef, int dx, int dy)
-
+#In Set
#Line # sets Pixel_Ref and offset ##
Replaces pixelRef and origin in Bitmap. dx and dy specify the offset
within the Pixel_Ref pixels for the top-left corner of the bitmap.
@@ -2246,7 +2263,7 @@ Treating 32 bit data as 8 bit data is unlikely to produce useful results.
# ------------------------------------------------------------------------------
#Method bool readyToDraw() const
-
+#In Utility
#Line # returns true if address of pixels is not nullptr ##
Returns true if Bitmap is can be drawn.
@@ -2267,7 +2284,7 @@ Returns true if Bitmap is can be drawn.
# ------------------------------------------------------------------------------
#Method uint32_t getGenerationID() const
-
+#In Utility
#Line # returns unique ID ##
Returns a unique value corresponding to the pixels in Pixel_Ref.
Returns a different value after notifyPixelsChanged has been called.
@@ -2299,7 +2316,7 @@ erase id 6
# ------------------------------------------------------------------------------
#Method void notifyPixelsChanged() const
-
+#In Pixels
#Line # marks pixels as changed, altering the unique ID ##
Marks that pixels in Pixel_Ref have changed. Subsequent calls to
getGenerationID() return a different value.
@@ -2324,9 +2341,13 @@ getGenerationID() return a different value.
##
# ------------------------------------------------------------------------------
+#Subtopic Draw
+#Populate
+#Line # set pixels to Color ##
+##
#Method void eraseColor(SkColor c) const
-
+#In Draw
#Line # writes Color to pixels ##
Replaces pixel values with c. All pixels contained by bounds() are affected.
If the colorType is kGray_8_SkColorType or k565_SkColorType, then Color_Alpha
@@ -2351,7 +2372,7 @@ then Color_RGB is ignored.
# ------------------------------------------------------------------------------
#Method void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) const
-
+#In Draw
#Line # writes Color to pixels ##
Replaces pixel values with Unpremultiplied Color built from a, r, g, and b.
All pixels contained by bounds() are affected.
@@ -2381,7 +2402,7 @@ then r, g, and b are ignored.
# ------------------------------------------------------------------------------
#Method void eraseRGB(U8CPU r, U8CPU g, U8CPU b) const
-
+#In Draw
#Line # deprecated ##
Deprecated. Use eraseARGB or eraseColor.
@@ -2399,7 +2420,7 @@ Deprecated. Use eraseARGB or eraseColor.
# ------------------------------------------------------------------------------
#Method void erase(SkColor c, const SkIRect& area) const
-
+#In Draw
#Line # writes Color to rectangle of pixels ##
Replaces pixel values inside area with c. If area does not intersect bounds(),
call has no effect.
@@ -2438,7 +2459,8 @@ then Color_RGB is ignored.
# ------------------------------------------------------------------------------
#Method SkColor getColor(int x, int y) const
-
+#In Property
+#In Pixels
#Line # returns one pixel as Unpremultiplied Color ##
Returns pixel at (x, y) as Unpremultiplied Color.
Returns black with Alpha if Color_Type is kAlpha_8_SkColorType.
@@ -2504,7 +2526,7 @@ Unpremultiplied:
# ------------------------------------------------------------------------------
#Method void* getAddr(int x, int y) const
-
+#In Property
#Line # returns readable pixel address as void pointer ##
Returns pixel address at (x, y).
@@ -2537,7 +2559,7 @@ addr interval == rowBytes
# ------------------------------------------------------------------------------
#Method inline uint32_t* getAddr32(int x, int y) const
-
+#In Property
#Line # returns readable pixel address as 32-bit pointer ##
Returns address at (x, y).
@@ -2572,7 +2594,7 @@ addr interval == rowBytes
# ------------------------------------------------------------------------------
#Method inline uint16_t* getAddr16(int x, int y) const
-
+#In Property
#Line # returns readable pixel address as 16-bit pointer ##
Returns address at (x, y).
@@ -2613,7 +2635,7 @@ addr interval == rowBytes
# ------------------------------------------------------------------------------
#Method inline uint8_t* getAddr8(int x, int y) const
-
+#In Property
#Line # returns readable pixel address as 8-bit pointer ##
Returns address at (x, y).
@@ -2652,7 +2674,7 @@ Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
# ------------------------------------------------------------------------------
#Method bool extractSubset(SkBitmap* dst, const SkIRect& subset) const
-
+#In Constructor
#Line # creates Bitmap, sharing pixels if possible ##
Shares Pixel_Ref with dst. Pixels are not copied; Bitmap and dst point
to the same pixels; dst bounds() are set to the intersection of subset
@@ -2721,6 +2743,7 @@ subset: 1000, 100, 1000, 200 success; false
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
int srcX, int srcY, SkTransferFunctionBehavior behavior) const
+#In Pixels
#Line # copies and converts pixels ##
Copies Rect of pixels from Bitmap pixels to dstPixels. Copy starts at (srcX, srcY),
@@ -2995,7 +3018,7 @@ false if pixel conversion is not possible.
# ------------------------------------------------------------------------------
#Method bool writePixels(const SkPixmap& src, int dstX, int dstY)
-
+#In Pixels
#Line # copies and converts pixels ##
Copies a Rect of pixels from src. Copy starts at (dstX, dstY), and does not exceed
(src.width(), src.height()).
@@ -3174,7 +3197,7 @@ pixels are treated as if they are linear, regardless of how they are encoded.
# ------------------------------------------------------------------------------
#Method bool hasHardwareMipMap() const
-
+#In Property
#Line # returns Mip_Map support present; Android only ##
#Private
Android framework only.
@@ -3192,7 +3215,7 @@ Android framework only.
# ------------------------------------------------------------------------------
#Method void setHasHardwareMipMap(bool hasHardwareMipMap)
-
+#In Set
#Line # sets Mip_Map support present; Android only ##
#Private
Android framework only.
@@ -3210,7 +3233,7 @@ Android framework only.
# ------------------------------------------------------------------------------
#Method bool extractAlpha(SkBitmap* dst) const
-
+#In Constructor
#Line # creates Bitmap containing Alpha of pixels ##
Sets dst to Alpha described by pixels. Returns false if dst cannot be written to
or dst pixels cannot be allocated.
@@ -3341,7 +3364,7 @@ mask.
# ------------------------------------------------------------------------------
#Method bool peekPixels(SkPixmap* pixmap) const
-
+#In Pixels
#Line # returns Pixmap if possible ##
Copies Bitmap pixel address, row bytes, and Image_Info to pixmap, if address
is available, and returns true. If pixel address is not available, return
@@ -3391,9 +3414,13 @@ x---x-
##
# ------------------------------------------------------------------------------
+#Subtopic Utility
+#Populate
+#Line # rarely called management functions ##
+##
#Method void validate() const;
-
+#In Utility
#Line # asserts if Bitmap is invalid (debug only) ##
Asserts if internal values are illegal or inconsistent. Only available if
SK_DEBUG is defined at compile time.
@@ -3408,7 +3435,7 @@ SK_DEBUG is defined at compile time.
# ------------------------------------------------------------------------------
#Method void toString(SkString* str) const;
-
+#In Utility
#Line # converts Bitmap to machine readable form ##
#DefinedBy SK_TO_STRING_NONVIRT() ##
diff --git a/docs/SkCanvas_Reference.bmh b/docs/SkCanvas_Reference.bmh
index 67445d4464..6e6d6a7456 100644
--- a/docs/SkCanvas_Reference.bmh
+++ b/docs/SkCanvas_Reference.bmh
@@ -59,6 +59,7 @@ when no Surface is required, and some helpers implicitly create Raster_Surface.
#Method static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo& info, void* pixels,
size_t rowBytes,
const SkSurfaceProps* props = nullptr)
+#In Constructor
#Line # creates from SkImageInfo and Pixel_Storage ##
Allocates raster Canvas that will draw directly into pixels.
@@ -133,6 +134,7 @@ void draw(SkCanvas* ) {
#Method static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, SkPMColor* pixels,
size_t rowBytes)
+#In Constructor
#Line # creates from image data and Pixel_Storage ##
Allocates raster Canvas specified by inline image specification. Subsequent Canvas
@@ -493,9 +495,14 @@ void draw(SkCanvas* canvas) {
##
# ------------------------------------------------------------------------------
+#Subtopic Property
+#Populate
+#Line # metrics and attributes ##
+##
#Method SkMetaData& getMetaData()
-
+#In Property
+#In Utility
#Line # associates additional data with the canvas ##
Returns storage to associate additional data with the canvas.
The storage is freed when Canvas is deleted.
@@ -526,7 +533,7 @@ The storage is freed when Canvas is deleted.
# ------------------------------------------------------------------------------
#Method SkImageInfo imageInfo() const
-
+#In Property
#Line # returns Image_Info for Canvas ##
Returns Image_Info for Canvas. If Canvas is not associated with Raster_Surface or
GPU_Surface, returned Color_Type is set to kUnknown_SkColorType.
@@ -551,7 +558,7 @@ GPU_Surface, returned Color_Type is set to kUnknown_SkColorType.
# ------------------------------------------------------------------------------
#Method bool getProps(SkSurfaceProps* props) const
-
+#In Property
#Line # copies Surface_Properties if available ##
If Canvas is associated with Raster_Surface or
GPU_Surface, copies Surface_Properties and returns true. Otherwise,
@@ -584,9 +591,13 @@ return false and leave props unchanged.
##
# ------------------------------------------------------------------------------
+#Subtopic Utility
+#Populate
+#Line # rarely called management functions ##
+##
#Method void flush()
-
+#In Utility
#Line # triggers execution of all pending draw operations ##
Triggers the immediate execution of all pending draw operations.
If Canvas is associated with GPU_Surface, resolves all pending GPU operations.
@@ -621,7 +632,7 @@ for posterity: this doesn't show a difference: fiddle.skia.org/c/@flushfail
# ------------------------------------------------------------------------------
#Method virtual SkISize getBaseLayerSize() const
-
+#In Property
#Line # returns size of base Layer in global coordinates ##
Gets the size of the base or root Layer in global canvas coordinates. The
origin of the base Layer is always (0,0). The area available for drawing may be
@@ -691,7 +702,7 @@ does not have Surface_Properties, creates Surface with default Surface_Propertie
# ------------------------------------------------------------------------------
#Method virtual GrContext* getGrContext()
-
+#In Property
#Line # returns GPU_Context of the GPU_Surface ##
Returns GPU_Context of the GPU_Surface associated with Canvas.
@@ -716,7 +727,8 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void* accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, SkIPoint* origin = nullptr)
-
+#In Utility
+#In Property
#Line # returns writable pixel access if available ##
Returns the pixel base address, Image_Info, rowBytes, and origin if the pixels
can be read directly. The returned address is only valid
@@ -799,7 +811,8 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method SkRasterHandleAllocator::Handle accessTopRasterHandle() const
-
+#In Utility
+#In Property
#Line # returns context that tracks Clip and Matrix ##
Returns custom context that tracks the Matrix and Clip.
@@ -857,9 +870,13 @@ the drawing destination.
##
# ------------------------------------------------------------------------------
+#Subtopic Pixels
+#Populate
+#Line # read and write pixel values ##
+##
#Method bool peekPixels(SkPixmap* pixmap)
-
+#In Pixels
#Line # returns if Canvas has direct access to its pixels ##
Returns true if Canvas has direct access to its pixels.
@@ -893,6 +910,7 @@ Canvas or Surface call may invalidate the pixmap values.
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
int srcX, int srcY)
+#In Pixels
#Line # copies and converts rectangle of pixels from Canvas ##
Copies Rect of pixels from Canvas into dstPixels. Matrix and Clip are
@@ -1112,7 +1130,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method bool writePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes, int x, int y)
-
+#In Pixels
#Line # copies and converts rectangle of pixels to Canvas ##
Copies Rect from pixels to Canvas. Matrix and Clip are ignored.
Source Rect corners are (0, 0) and (info.width(), info.height()).
@@ -2972,9 +2990,13 @@ Unlike getLocalClipBounds, bounds is not outset.
#Subtopic Clip ##
# ------------------------------------------------------------------------------
+#Subtopic Draw
+#Populate
+#Line # draws into Canvas ##
+##
#Method void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver)
-
+#In Draw
#Line # fills Clip with Color and Blend_Mode ##
Fill Clip with Color color.
mode determines how Color_ARGB is combined with destination.
@@ -2997,7 +3019,7 @@ mode determines how Color_ARGB is combined with destination.
# ------------------------------------------------------------------------------
#Method void clear(SkColor color)
-
+#In Draw
#Line # fills Clip with Color ##
Fill Clip with Color color using SkBlendMode::kSrc.
This has the effect of replacing all pixels contained by Clip with color.
@@ -3026,7 +3048,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void discard()
-
+#In Utility
#Line # makes Canvas contents undefined ##
Make Canvas contents undefined. Subsequent calls that read Canvas pixels,
such as drawing with SkBlendMode, return undefined results. discard() does
@@ -3051,7 +3073,7 @@ any cached data is deleted when owning Surface or Device is deleted.
# ------------------------------------------------------------------------------
#Method void drawPaint(const SkPaint& paint)
-
+#In Draw
#Line # fills Clip with Paint ##
Fill Clip with Paint paint. Paint components Mask_Filter, Shader,
Color_Filter, Image_Filter, and Blend_Mode affect drawing;
@@ -3134,7 +3156,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint)
-
+#In Draw
#Line # draws array as points, lines, polygon ##
Draw pts using Clip, Matrix and Paint paint.
count is the number of points; if count is less than one, has no effect.
@@ -3215,7 +3237,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint)
-
+#In Draw
#Line # draws point at (x, y) position ##
Draw point at (x, y) using Clip, Matrix and Paint paint.
@@ -3285,7 +3307,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint& paint)
-
+#In Draw
#Line # draws line segment between two points ##
Draws line segment from (x0, y0) to (x1, y1) using Clip, Matrix, and Paint paint.
In paint: Paint_Stroke_Width describes the line thickness;
@@ -3342,7 +3364,7 @@ Paint_Style is ignored, as if were set to SkPaint::kStroke_Style.
# ------------------------------------------------------------------------------
#Method void drawRect(const SkRect& rect, const SkPaint& paint)
-
+#In Draw
#Line # draws Rect using Clip, Matrix, and Paint ##
Draw Rect rect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
@@ -3379,7 +3401,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawIRect(const SkIRect& rect, const SkPaint& paint)
-
+#In Draw
#Line # draws IRect using Clip, Matrix, and Paint ##
Draw IRect rect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
@@ -3410,7 +3432,7 @@ Paint_Stroke_Join draws the corners rounded or square.
# ------------------------------------------------------------------------------
#Method void drawRegion(const SkRegion& region, const SkPaint& paint)
-
+#In Draw
#Line # draws Region using Clip, Matrix, and Paint ##
Draw Region region using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rectangle is stroked or filled;
@@ -3441,7 +3463,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawOval(const SkRect& oval, const SkPaint& paint)
-
+#In Draw
#Line # draws Oval using Clip, Matrix, and Paint ##
Draw Oval oval using Clip, Matrix, and Paint.
In paint: Paint_Style determines if Oval is stroked or filled;
@@ -3473,7 +3495,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawRRect(const SkRRect& rrect, const SkPaint& paint)
-
+#In Draw
#Line # draws Round_Rect using Clip, Matrix, and Paint ##
Draw Round_Rect rrect using Clip, Matrix, and Paint paint.
In paint: Paint_Style determines if rrect is stroked or filled;
@@ -3513,7 +3535,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint)
-
+#In Draw
#Line # draws double Round_Rect stroked or filled ##
Draw Round_Rect outer and inner
using Clip, Matrix, and Paint paint.
@@ -3568,7 +3590,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint)
-
+#In Draw
#Line # draws Circle using Clip, Matrix, and Paint ##
Draw Circle at (cx, cy) with radius using Clip, Matrix, and Paint paint.
If radius is zero or less, nothing is drawn.
@@ -3627,6 +3649,7 @@ if stroked, Paint_Stroke_Width describes the line thickness.
#Method void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle,
bool useCenter, const SkPaint& paint)
+#In Draw
#Line # draws Arc using Clip, Matrix, and Paint ##
Draw Arc using Clip, Matrix, and Paint paint.
@@ -3691,7 +3714,7 @@ If Rect oval is empty or sweepAngle is zero, nothing is drawn.
# ------------------------------------------------------------------------------
#Method void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint)
-
+#In Draw
#Line # draws Round_Rect using Clip, Matrix, and Paint ##
Draw Round_Rect bounded by Rect rect, with corner radii (rx, ry) using Clip,
Matrix, and Paint paint.
@@ -3739,7 +3762,7 @@ Paint_Stroke_Join.
# ------------------------------------------------------------------------------
#Method void drawPath(const SkPath& path, const SkPaint& paint)
-
+#In Draw
#Line # draws Path using Clip, Matrix, and Paint ##
Draw Path path using Clip, Matrix, and Paint paint.
Path contains an array of Path_Contour, each of which may be open or closed.
@@ -3808,8 +3831,8 @@ drawImage, drawImageRect, and drawImageNine can be called with a bare pointer or
a smart pointer as a convenience. The pairs of calls are otherwise identical.
#Method void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint = nullptr)
-
#In Draw_Image
+#In Draw
#Line # draws Image at (x, y) position ##
Draw Image image, with its top-left corner at (left, top),
using Clip, Matrix, and optional Paint paint.
@@ -3850,7 +3873,6 @@ void draw(SkCanvas* canvas) {
#Method void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr)
-#In Draw_Image
Draw Image image, with its top-left corner at (left, top),
using Clip, Matrix, and optional Paint paint.
@@ -3961,6 +3983,7 @@ void draw(SkCanvas* canvas) {
const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
+#In Draw
#Line # draws Image, source Rect to destination Rect ##
Draw Rect src of Image image, scaled and translated to fill Rect dst.
@@ -4027,6 +4050,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
+#In Draw
Draw IRect isrc of Image image, scaled and translated to fill Rect dst.
Note that isrc is on integer pixel boundaries; dst may include fractional
@@ -4073,6 +4097,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
+#In Draw
Draw Image image, scaled and translated to fill Rect dst, using Clip, Matrix,
and optional Paint paint.
@@ -4116,7 +4141,7 @@ void draw(SkCanvas* canvas) {
const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
-
+#In Draw
Draw Rect src of Image image, scaled and translated to fill Rect dst.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4172,7 +4197,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageRect(const sk_sp<SkImage>& image, const SkIRect& isrc, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
-
+#In Draw
Draw IRect isrc of Image image, scaled and translated to fill Rect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4225,7 +4250,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageRect(const sk_sp<SkImage>& image, const SkRect& dst, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
-
+#In Draw
Draw Image image, scaled and translated to fill Rect dst,
using Clip, Matrix, and optional Paint paint.
@@ -4276,6 +4301,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst,
const SkPaint* paint = nullptr)
#In Draw_Image
+#In Draw
#Line # draws Nine_Patch Image ##
Draw Image image stretched proportionally to fit into Rect dst.
@@ -4344,7 +4370,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageNine(const sk_sp<SkImage>& image, const SkIRect& center, const SkRect& dst,
const SkPaint* paint = nullptr)
#In Draw_Image
-
+#In Draw
Draw Image image stretched proportionally to fit into Rect dst.
IRect center divides the image into nine sections: four sides, four corners, and
the center. Corners are not scaled, or scaled down proportionately if their sides
@@ -4412,6 +4438,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr)
#In Draw_Image
+#In Draw
#Line # draws Bitmap at (x, y) position ##
Draw Bitmap bitmap, with its top-left corner at (left, top),
@@ -4466,6 +4493,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmapRect(const SkBitmap& bitmap, const SkRect& src, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
+#In Draw
#Line # draws Bitmap, source Rect to destination Rect ##
Draw Rect src of Bitmap bitmap, scaled and translated to fill Rect dst.
@@ -4525,7 +4553,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmapRect(const SkBitmap& bitmap, const SkIRect& isrc, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
-
+#In Draw
Draw IRect isrc of Bitmap bitmap, scaled and translated to fill Rect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4584,7 +4612,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
#In Draw_Image
-
+#In Draw
Draw Bitmap bitmap, scaled and translated to fill Rect dst.
bitmap bounds is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using Clip, Matrix, and optional Paint paint.
@@ -4636,6 +4664,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst,
const SkPaint* paint = nullptr)
#In Draw_Image
+#In Draw
#Line # draws Nine_Patch Bitmap ##
Draw Bitmap bitmap stretched proportionally to fit into Rect dst.
@@ -4813,6 +4842,7 @@ void draw(SkCanvas* canvas) {
#Method void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkRect& dst,
const SkPaint* paint = nullptr)
#In Draw_Image
+#In Draw
#Line # draws proportionally stretched Bitmap ##
Draw Bitmap bitmap stretched proportionally to fit into Rect dst.
@@ -4893,6 +4923,7 @@ void draw(SkCanvas* canvas) {
#Method void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst,
const SkPaint* paint = nullptr)
#In Draw_Image
+#In Draw
#Line # draws proportionally stretched Image ##
Draw Image image stretched proportionally to fit into Rect dst.
@@ -4971,9 +5002,15 @@ void draw(SkCanvas* canvas) {
#Subtopic Draw_Image ##
# ------------------------------------------------------------------------------
+#Subtopic Draw_Text
+#Populate
+#Line # draws text into Canvas ##
+##
#Method void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text at (x, y), using font advance ##
Draw text, with origin at (x, y), using Clip, Matrix, and Paint paint.
@@ -5029,7 +5066,8 @@ void draw(SkCanvas* canvas) {
##
#Method void drawString(const char* string, SkScalar x, SkScalar y, const SkPaint& paint)
-
+#In Draw_Text
+#In Draw
#Line # draws null terminated string at (x, y) using font advance ##
Draw null terminated string, with origin at (x, y), using Clip, Matrix, and
Paint paint.
@@ -5100,6 +5138,8 @@ filled 12 point black Glyphs.
#Method void drawPosText(const void* text, size_t byteLength, const SkPoint pos[],
const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text at array of (x, y) positions ##
Draw each glyph in text with the origin in pos array, using Clip, Matrix, and
@@ -5144,6 +5184,8 @@ void draw(SkCanvas* canvas) {
#Method void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY,
const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text at x positions with common baseline ##
Draw each glyph in text with its (x, y) origin composed from xpos array and
@@ -5187,6 +5229,8 @@ baseline.
#Method void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, SkScalar hOffset,
SkScalar vOffset, const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text following Path with offsets ##
Draw text on Path path, using Clip, Matrix, and Paint paint.
@@ -5236,6 +5280,8 @@ filled 12 point black Glyphs.
#Method void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
const SkMatrix* matrix, const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text following Path contour ##
Draw text on Path path, using Clip, Matrix, and Paint paint.
@@ -5291,6 +5337,8 @@ filled 12 point black Glyphs.
#Method void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[],
const SkRect* cullRect, const SkPaint& paint)
+#In Draw_Text
+#In Draw
#Line # draws text with array of RSXform ##
Draw text, transforming each glyph by the corresponding SkRSXform,
@@ -5341,7 +5389,8 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint)
-
+#In Draw_Text
+#In Draw
#Line # draws text with arrays of positions and Paint ##
Draw Text_Blob blob at (x, y), using Clip, Matrix, and Paint paint.
@@ -5443,7 +5492,7 @@ Paint attributes related to text, like text size, have no effect on paint passed
# ------------------------------------------------------------------------------
#Method void drawPicture(const SkPicture* picture)
-
+#In Draw
#Line # draws Picture using Clip and Matrix ##
Draw Picture picture, using Clip and Matrix.
Clip and Matrix are unchanged by picture contents, as if
@@ -5598,7 +5647,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint)
-
+#In Draw
#Line # draws Vertices, a triangle mesh ##
Draw Vertices vertices, a triangle mesh, using Clip and Matrix.
If Vertices_Texs and Vertices_Colors are defined in vertices, and Paint paint
@@ -5657,6 +5706,7 @@ void draw(SkCanvas* canvas) {
#Method void drawPatch(const SkPoint cubics[12], const SkColor colors[4],
const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint)
+#In Draw
#Line # draws Coons_Patch ##
Draws a Coons_Patch: the interpolation of four cubics with shared corners,
@@ -5800,6 +5850,7 @@ void draw(SkCanvas* canvas) {
#Method void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[],
const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect,
const SkPaint* paint)
+#In Draw
#Line # draws sprites using Clip, Matrix, and Paint ##
Draw a set of sprites from atlas, using Clip, Matrix, and optional Paint paint.
@@ -5955,7 +6006,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr)
-
+#In Draw
#Line # draws Drawable, encapsulated drawing commands ##
Draw Drawable drawable using Clip and Matrix, concatenated with
optional matrix.
@@ -6046,9 +6097,10 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method void drawAnnotation(const SkRect& rect, const char key[], SkData* value)
-
+#In Draw
+#In Utility
#Line # associates a Rect with a key-value pair ##
-Associate Rect on Canvas when an annotation; a key-value pair, where the key is
+Associate Rect on Canvas with an annotation; a key-value pair, where the key is
a null-terminated utf8 string, and optional value is stored as Data.
Only some canvas implementations, such as recording to Picture, or drawing to
@@ -6115,7 +6167,7 @@ Document_PDF, use annotations.
# ------------------------------------------------------------------------------
#Method virtual bool isClipEmpty() const
-
+#In Property
#Line # returns if Clip is empty ##
Returns true if Clip is empty; that is, nothing will draw.
@@ -6145,7 +6197,7 @@ work until Clip changes.
# ------------------------------------------------------------------------------
#Method virtual bool isClipRect() const
-
+#In Property
#Line # returns if Clip is Rect and not empty ##
Returns true if Clip is Rect and not empty.
Returns false if the clip is empty, or if it is not Rect.
diff --git a/docs/SkIRect_Reference.bmh b/docs/SkIRect_Reference.bmh
index 9106715e96..bdaa4a69d4 100644
--- a/docs/SkIRect_Reference.bmh
+++ b/docs/SkIRect_Reference.bmh
@@ -734,6 +734,10 @@ equal to or larger than -32768 and equal to or smaller than 32767.
##
# ------------------------------------------------------------------------------
+#Subtopic Set
+#Line # replaces all values ##
+#Populate
+##
#Method void setEmpty()
diff --git a/docs/SkImageInfo_Reference.bmh b/docs/SkImageInfo_Reference.bmh
index 856725a512..6ea97440b9 100644
--- a/docs/SkImageInfo_Reference.bmh
+++ b/docs/SkImageInfo_Reference.bmh
@@ -193,19 +193,19 @@ range. See http://en.wikipedia.org/wiki/Rec._709 for details.
Describes Image dimensions and pixel type.
Used for both source images and render-targets (surfaces).
-#Subtopic Operator
+#Subtopic Member_Function
#Populate
##
-#Subtopic Member_Function
+#Subtopic Related_Function
#Populate
##
+# ------------------------------------------------------------------------------
#Subtopic Constructor
#Populate
##
-# ------------------------------------------------------------------------------
#Method SkImageInfo()
@@ -384,9 +384,13 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
+#Subtopic Property
+#Populate
+#Line # metrics and attributes ##
+##
#Method int width() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -401,7 +405,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method int height() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -416,7 +420,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkColorType colorType() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -431,7 +435,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkAlphaType alphaType() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -446,7 +450,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkColorSpace* colorSpace() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -461,7 +465,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method sk_sp<SkColorSpace> refColorSpace() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -476,7 +480,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method bool isEmpty() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -491,7 +495,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method bool isOpaque() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -506,7 +510,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkISize dimensions() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -521,7 +525,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkIRect bounds() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -536,7 +540,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method bool gammaCloseToSRGB() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -551,7 +555,7 @@ Sets Color_Type to kN32_SkColorType, and the Alpha_Type to kPremul_SkAlphaType.
# ------------------------------------------------------------------------------
#Method SkImageInfo makeWH(int newWidth, int newHeight) const
-
+#In Constructor
#Line # creates Image_Info with changed dimensions ##
Creates Image_Info with the same Color_Type and Alpha_Type as this info,
but with the specified width and height.
@@ -572,7 +576,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method SkImageInfo makeAlphaType(SkAlphaType newAlphaType) const
-
+#In Constructor
#Line # creates Image_Info with changed Alpha_Type ##
#Param newAlphaType incomplete ##
@@ -589,7 +593,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method SkImageInfo makeColorType(SkColorType newColorType) const
-
+#In Constructor
#Line # creates Image_Info with changed Color_Type ##
#Param newColorType incomplete ##
@@ -606,7 +610,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method SkImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const
-
+#In Constructor
#Line # creates Image_Info with changed Color_Space ##
#Param cs incomplete ##
@@ -623,7 +627,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method int bytesPerPixel() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -638,7 +642,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method int shiftPerPixel() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -653,7 +657,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method uint64_t minRowBytes64() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -668,7 +672,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method size_t minRowBytes() const
-
+#In Property
#Line # incomplete ##
#Return incomplete ##
@@ -683,7 +687,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method size_t computeOffset(int x, int y, size_t rowBytes) const
-
+#In Utility
#Line # incomplete ##
#Param x incomplete ##
#Param y incomplete ##
@@ -700,6 +704,9 @@ but with the specified width and height.
#Method ##
# ------------------------------------------------------------------------------
+#Subtopic Operator
+#Populate
+##
#Method bool operator==(const SkImageInfo& other)_const
@@ -736,7 +743,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method void unflatten(SkReadBuffer& buffer)
-
+#In Utility
#Line # incomplete ##
#Param buffer incomplete ##
@@ -751,7 +758,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method void flatten(SkWriteBuffer& buffer) const
-
+#In Utility
#Line # incomplete ##
#Param buffer incomplete ##
@@ -766,7 +773,7 @@ but with the specified width and height.
# ------------------------------------------------------------------------------
#Method size_t computeByteSize(size_t rowBytes) const
-
+#In Utility
#Line # incomplete ##
Returns the size (in bytes) of the image buffer that this info needs, given the specified
rowBytes. The rowBytes must be >= this->minRowBytes().
@@ -792,7 +799,7 @@ If the calculation overflows this returns SK_MaxSizeT.
# ------------------------------------------------------------------------------
#Method size_t computeMinByteSize() const
-
+#In Utility
#Line # incomplete ##
Returns the minimum size (in bytes) of the image buffer that this info needs.
If the calculation overflows, or if the height is 0, this returns 0.
@@ -810,7 +817,7 @@ If the calculation overflows, or if the height is 0, this returns 0.
# ------------------------------------------------------------------------------
#Method static bool ByteSizeOverflowed(size_t byteSize)
-
+#In Utility
#Line # incomplete ##
Returns true if the result of computeByteSize (or computeMinByteSize) overflowed
@@ -829,7 +836,7 @@ Returns true if the result of computeByteSize (or computeMinByteSize) overflowed
# ------------------------------------------------------------------------------
#Method bool validRowBytes(size_t rowBytes) const
-
+#In Utility
#Line # incomplete ##
#Param rowBytes incomplete ##
@@ -846,7 +853,7 @@ Returns true if the result of computeByteSize (or computeMinByteSize) overflowed
# ------------------------------------------------------------------------------
#Method void reset()
-
+#In Constructor
#Line # incomplete ##
#Example
// incomplete
@@ -857,9 +864,13 @@ Returns true if the result of computeByteSize (or computeMinByteSize) overflowed
#Method ##
# ------------------------------------------------------------------------------
+#Subtopic Utility
+#Populate
+#Line # rarely called management functions ##
+##
#Method void validate() const
-
+#In Utility
#Line # incomplete ##
#Example
// incomplete
diff --git a/docs/SkImage_Reference.bmh b/docs/SkImage_Reference.bmh
index 0280b317fb..d933a072ee 100644
--- a/docs/SkImage_Reference.bmh
+++ b/docs/SkImage_Reference.bmh
@@ -1273,9 +1273,13 @@ canvas->drawPaint(paint);
#Method ##
# ------------------------------------------------------------------------------
+#Subtopic Pixels
+#Populate
+#Line # read and write pixel values ##
+##
#Method bool peekPixels(SkPixmap* pixmap) const
-
+#In Pixels
#Line # returns Pixmap if possible ##
Copies Image pixel address, row bytes, and Image_Info to pixmap, if address
is available, and returns true. If pixel address is not available, return
@@ -1332,7 +1336,7 @@ false and leave pixmap unchanged.
# ------------------------------------------------------------------------------
#Method bool isTextureBacked() const
-#In Property
+#In Property
#Line # returns if Image was created from GPU_Texture ##
Returns true the contents of Image was created on or uploaded to GPU memory,
and is available as a GPU_Texture.
@@ -1422,6 +1426,7 @@ drawImage(textureImage, "backEndTexture");
#Method GrBackendObject getTextureHandle(bool flushPendingGrContextIO,
GrSurfaceOrigin* origin = nullptr) const
+#In Property
#Line # returns GPU reference to Image as texture ##
Retrieves the back-end API handle of texture. If flushPendingGrContextIO is true,
@@ -1528,6 +1533,7 @@ Disallows Skia from internally caching decoded and copied pixels.
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
int srcX, int srcY, CachingHint cachingHint = kAllow_CachingHint) const
+#In Pixels
#Line # copies and converts pixels ##
Copies Rect of pixels from Image to dstPixels. Copy starts at offset (srcX, srcY),
@@ -1675,6 +1681,7 @@ If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache
#Method bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality,
CachingHint cachingHint = kAllow_CachingHint) const
+#In Pixels
#Line # scales and converts one Image to another ##
Copies Image to dst, scaling pixels to fit dst.width() and dst.height(), and
@@ -1734,7 +1741,7 @@ If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache
# ------------------------------------------------------------------------------
#Method sk_sp<SkData> encodeToData(SkEncodedImageFormat encodedImageFormat, int quality) const
-
+#In Utility
#Line # returns encoded Image as SkData ##
Encodes Image pixels, returning result as SkData.
@@ -1805,7 +1812,7 @@ encoding fails.
# ------------------------------------------------------------------------------
#Method sk_sp<SkData> refEncodedData() const
-
+#In Utility
#Line # returns Image encoded in SkData if present ##
Returns encoded Image pixels as SkData, if Image was created from supported
encoded stream format. Platform support for formats vary and may require building
diff --git a/docs/SkMatrix_Reference.bmh b/docs/SkMatrix_Reference.bmh
index 433466a90c..57648ad805 100644
--- a/docs/SkMatrix_Reference.bmh
+++ b/docs/SkMatrix_Reference.bmh
@@ -22,20 +22,19 @@ initializes all Matrix elements with the corresponding mapping.
Matrix includes a hidden variable that classifies the type of matrix to
improve performance. Matrix is not thread safe unless getType is called first.
-#Subtopic Constructor
+#Subtopic Member_Function
#Populate
##
-#Subtopic Operator
+#Subtopic Related_Function
#Populate
##
-#Subtopic Member_Function
+# ------------------------------------------------------------------------------
+#Subtopic Constructor
#Populate
##
-# ------------------------------------------------------------------------------
-
#Method static SkMatrix SK_WARN_UNUSED_RESULT MakeScale(SkScalar sx, SkScalar sy)
#In Constructor
#Line # constructs from scale in x and y ##
@@ -737,6 +736,9 @@ vertical translation
##
# ------------------------------------------------------------------------------
+#Subtopic Operator
+#Populate
+##
#Method SkScalar operator[](int index)_const
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 60c74d19ab..94e9798343 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -765,7 +765,7 @@ at compile time.
##
#Method bool isAntiAlias() const
-#In Anti-alias
+#In Anti_alias
#Line # returns true if Anti-alias is set ##
If true, pixels on the active edges of Path may be drawn with partial transparency.
@@ -791,7 +791,7 @@ at compile time.
#Method void setAntiAlias(bool aa)
-#In Anti-alias
+#In Anti_alias
#Line # sets or clears Anti-alias ##
Requests, but does not require, that Path edge pixels draw opaque or with
partial transparency.
@@ -4376,6 +4376,7 @@ FontMetrics::fTop, FontMetrics::fXMax, FontMetrics::fBottom }.
#Method int textToGlyphs(const void* text, size_t byteLength,
SkGlyphID glyphs[]) const
+#In Utility
#Line # converts text into glyph indices ##
Converts text into glyph indices.
@@ -4415,7 +4416,7 @@ text contains an invalid UTF-8 sequence, zero is returned.
##
#Method int countText(const void* text, size_t byteLength) const
-
+#In Utility
#Line # returns number of Glyphs in text ##
Returns the number of Glyphs in text.
Uses Text_Encoding to count the Glyphs.
@@ -4440,7 +4441,7 @@ text contains an invalid UTF-8 sequence, zero is returned.
# ------------------------------------------------------------------------------
#Method bool containsText(const void* text, size_t byteLength) const
-
+#In Utility
#Line # returns if all text corresponds to Glyphs ##
Returns true if all text corresponds to a non-zero glyph index.
Returns false if any characters in text are not supported in
@@ -4509,6 +4510,7 @@ text contains an invalid UTF-8 sequence, zero is returned.
#Method void glyphsToUnichars(const SkGlyphID glyphs[],
int count, SkUnichar text[]) const
+#In Utility
#Line # converts Glyphs into text ##
Converts glyphs into text if possible.
@@ -5047,7 +5049,7 @@ void draw(SkCanvas* canvas) {
# ------------------------------------------------------------------------------
#Method bool nothingToDraw() const
-
+#In Utility
#Line # returns true if Paint prevents all drawing ##
Returns true if Paint prevents all drawing;
otherwise, the Paint may or may not allow drawing.
@@ -5179,8 +5181,13 @@ Paint may draw to.
#Subtopic Fast_Bounds Fast_Bounds ##
# ------------------------------------------------------------------------------
-#Method void toString(SkString* str) const
+#Subtopic Utility
+#Populate
+#Line # rarely called management functions ##
+##
+#Method void toString(SkString* str) const
+#In Utility
#Line # converts Paint to machine readable form ##
#DefinedBy SK_TO_STRING_NONVIRT() ##
diff --git a/docs/SkPath_Reference.bmh b/docs/SkPath_Reference.bmh
index 5091d3af99..8659e055ea 100644
--- a/docs/SkPath_Reference.bmh
+++ b/docs/SkPath_Reference.bmh
@@ -2357,7 +2357,7 @@ void draw(SkCanvas* canvas) {
##
# ------------------------------------------------------------------------------
-#Topic Quad
+#Subtopic Quad
#Alias Quad
#Alias Quads
#Alias Quadratic_Bezier
@@ -2527,11 +2527,11 @@ void draw(SkCanvas* canvas) {
##
-#Topic Quad ##
+#Subtopic Quad ##
# ------------------------------------------------------------------------------
-#Topic Conic
+#Subtopic Conic
#Line # conic section defined by three points and a weight ##
#Alias Conics
@@ -2823,10 +2823,10 @@ void draw(SkCanvas* canvas) {
##
-#Topic Conic ##
+#Subtopic Conic ##
# ------------------------------------------------------------------------------
-#Topic Cubic
+#Subtopic Cubic
#Alias Cubic
#Alias Cubics
#Alias Cubic_Bezier
@@ -2988,7 +2988,7 @@ to Point_Array.
##
-#Topic Cubic ##
+#Subtopic Cubic ##
# ------------------------------------------------------------------------------
@@ -3643,7 +3643,7 @@ void draw(SkCanvas* canvas) {
##
-#Topic Arc ##
+#Subtopic Arc ##
# ------------------------------------------------------------------------------
@@ -5295,7 +5295,7 @@ length = 68; returned by readFromMemory = 64
##
# ------------------------------------------------------------------------------
-#Topic Generation_ID
+#Subtopic Generation_ID
#Alias Generation_IDs
#Line # value reflecting contents change ##
Generation_ID provides a quick way to check if Verb_Array, Point_Array, or
@@ -5341,7 +5341,7 @@ empty genID = 1
##
-#Topic ##
+#Subtopic ##
# ------------------------------------------------------------------------------
diff --git a/docs/SkPixmap_Reference.bmh b/docs/SkPixmap_Reference.bmh
index fc4d8dc51d..7c4326b919 100644
--- a/docs/SkPixmap_Reference.bmh
+++ b/docs/SkPixmap_Reference.bmh
@@ -1493,14 +1493,16 @@ is drawn after overwriting bottom half float color with top half float color.
#Subtopic Writable_Address ##
-#Subtopic Writer
-#Line # copy to pixel values ##
+#Subtopic Pixels
+#Populate
+#Line # read and write pixel values ##
+##
# ------------------------------------------------------------------------------
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
int srcX, int srcY, SkTransferFunctionBehavior behavior) const
-#In Writer
+#In Pixels
#Line # copies and converts pixels ##
Copies a Rect of pixels to dstPixels. Copy starts at (srcX, srcY), and does not
@@ -1581,7 +1583,7 @@ void draw(SkCanvas* canvas) {
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes) const
-#In Writer
+#In Pixels
Copies a Rect of pixels to dstPixels. Copy starts at (0, 0), and does not
exceed Pixmap (width(), height()).
@@ -1644,7 +1646,6 @@ creates visible banding.
#Method bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX,
int srcY) const
-#In Writer
Copies a Rect of pixels to dstPixels. Copy starts at (srcX, srcY), and does not
exceed Pixmap (width(), height()).
@@ -1711,7 +1712,6 @@ void draw(SkCanvas* canvas) {
#Method bool readPixels(const SkPixmap& dst, int srcX, int srcY) const
-#In Writer
Copies a Rect of pixels to dst. Copy starts at (srcX, srcY), and does not
exceed Pixmap (width(), height()). dst specifies width, height, Color_Type,
Alpha_Type, and Color_Space of destination. Returns true if pixels are copied.
@@ -1773,7 +1773,6 @@ void draw(SkCanvas* canvas) {
#Method bool readPixels(const SkPixmap& dst) const
-#In Writer
Copies pixels inside bounds() to dst. dst specifies width, height, Color_Type,
Alpha_Type, and Color_Space of destination. Returns true if pixels are copied.
Returns false if dst.addr() equals nullptr, or dst.rowBytes is less than
@@ -1822,7 +1821,7 @@ void draw(SkCanvas* canvas) {
#Method bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality) const
-#In Writer
+#In Pixels
#Line # scales and converts pixels ##
Copies Bitmap to dst, scaling pixels to fit dst.width() and dst.height(), and
converting pixels to match dst.colorType and dst.alphaType. Returns true if
@@ -1884,7 +1883,7 @@ void draw(SkCanvas* canvas) {
#Method bool erase(SkColor color, const SkIRect& subset) const
-#In Writer
+#In Pixels
#Line # writes Color to pixels ##
Writes color to pixels bounded by subset; returns true on success.
Returns false if colorType is kUnknown_SkColorType, or if subset does
@@ -1916,7 +1915,6 @@ not intersect bounds().
#Method bool erase(SkColor color) const
-#In Writer
Writes color to pixels inside bounds(); returns true on success.
Returns false if colorType is kUnknown_SkColorType, or if bounds()
is empty.
@@ -1945,7 +1943,6 @@ is empty.
#Method bool erase(const SkColor4f& color, const SkIRect* subset = nullptr) const
-#In Writer
Writes color to pixels bounded by subset; returns true on success.
if subset is nullptr, writes colors pixels inside bounds(). Returns false if
colorType is kUnknown_SkColorType, if subset is not nullptr and does
@@ -1975,9 +1972,6 @@ not intersect bounds(), or if subset is nullptr and bounds() is empty.
##
-
-#Subtopic Writer ##
-
#Class SkPixmap ##
#Topic Pixmap ##
diff --git a/docs/SkRect_Reference.bmh b/docs/SkRect_Reference.bmh
index 5807f0a281..a363de2497 100644
--- a/docs/SkRect_Reference.bmh
+++ b/docs/SkRect_Reference.bmh
@@ -899,7 +899,6 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 success: false
#Subtopic Set
#Line # replaces all values ##
-
#Populate
# ------------------------------------------------------------------------------
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md
index edef11b2ec..f53ecaacc9 100644
--- a/site/user/api/SkBitmap_Reference.md
+++ b/site/user/api/SkBitmap_Reference.md
@@ -49,7 +49,13 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared
| name | description |
| --- | --- |
+| <a href="#Allocate">Allocate</a> | allocates storage for pixels |
+| <a href="#Draw">Draw</a> | set pixels to <a href="undocumented#Color">Color</a> |
+| <a href="#Pixels">Pixels</a> | read and write pixel values |
+| <a href="#Property">Property</a> | metrics and attributes |
| <a href="#Row_Bytes">Row Bytes</a> | interval from one row to the next |
+| <a href="#Set">Set</a> | updates values and attributes |
+| <a href="#Utility">Utility</a> | rarely called management functions |
## <a name="Constant"></a> Constant
@@ -71,6 +77,12 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared
| <a href="#SkBitmap_empty_constructor">SkBitmap()</a> | constructs with default values |
| <a href="#SkBitmap_move_SkBitmap">SkBitmap(SkBitmap&& src)</a> | takes ownership of pixels |
| <a href="#SkBitmap_copy_const_SkBitmap">SkBitmap(const SkBitmap& src)</a> | shares ownership of pixels |
+| <a href="#SkBitmap_extractAlpha">extractAlpha</a> | creates <a href="#Bitmap">Bitmap</a> containing <a href="#Alpha">Alpha</a> of pixels |
+| | <a href="#SkBitmap_extractAlpha">extractAlpha(SkBitmap* dst)</a> const |
+| | <a href="#SkBitmap_extractAlpha_2">extractAlpha(SkBitmap* dst, const SkPaint* paint, SkIPoint* offset)</a> const |
+| | <a href="#SkBitmap_extractAlpha_3">extractAlpha(SkBitmap* dst, const SkPaint* paint, Allocator* allocator, SkIPoint* offset)</a> const |
+| <a href="#SkBitmap_extractSubset">extractSubset</a> | creates <a href="#Bitmap">Bitmap</a>, sharing pixels if possible |
+| <a href="#SkBitmap_reset">reset</a> | sets to default values, releases pixel ownership |
| <a href="#SkBitmap_destructor">~SkBitmap()</a> | releases ownership of pixels |
## <a name="Operator"></a> Operator
@@ -493,6 +505,44 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT
---
+## <a name="Property"></a> Property
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_alphaType">alphaType</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> |
+| <a href="#SkBitmap_bounds">bounds</a> | returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> as Rectangle |
+| <a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a> | returns number of bytes in pixel based on <a href="SkImageInfo_Reference#Color_Type">Color Type</a> |
+| <a href="#SkBitmap_colorSpace">colorSpace</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a> |
+| <a href="#SkBitmap_colorType">colorType</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> |
+| <a href="#SkBitmap_dimensions">dimensions</a> | returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> |
+| <a href="#SkBitmap_drawsNothing">drawsNothing</a> | returns true if no <a href="#SkBitmap_width">width</a>, no <a href="#SkBitmap_height">height</a>, or no <a href="undocumented#Pixel_Ref">Pixel Ref</a> |
+| <a href="#SkBitmap_empty">empty</a> | returns true if <a href="SkImageInfo_Reference#Image_Info">Image Info</a> has zero <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> |
+| <a href="#SkBitmap_getAddr">getAddr</a> | returns readable pixel address as void pointer |
+| <a href="#SkBitmap_getAddr16">getAddr16</a> | returns readable pixel address as 16-bit pointer |
+| <a href="#SkBitmap_getAddr32">getAddr32</a> | returns readable pixel address as 32-bit pointer |
+| <a href="#SkBitmap_getAddr8">getAddr8</a> | returns readable pixel address as 8-bit pointer |
+| <a href="#SkBitmap_getBounds">getBounds</a> | returns <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> as Rectangle |
+| | <a href="#SkBitmap_getBounds">getBounds(SkRect* bounds)</a> const |
+| | <a href="#SkBitmap_getBounds_2">getBounds(SkIRect* bounds)</a> const |
+| <a href="#SkBitmap_getColor">getColor</a> | returns one pixel as <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a> |
+| <a href="#SkBitmap_getPixels">getPixels</a> | returns address of pixels |
+| <a href="#SkBitmap_getSubset">getSubset</a> | returns bounds offset by origin |
+| <a href="#SkBitmap_hasHardwareMipMap">hasHardwareMipMap</a> | returns Mip_Map support present; Android only |
+| <a href="#SkBitmap_height">height</a> | returns pixel row count |
+| <a href="#SkBitmap_info">info</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> |
+| <a href="#SkBitmap_isImmutable">isImmutable</a> | returns true if pixels will not change |
+| <a href="#SkBitmap_isNull">isNull</a> | returns true if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr |
+| <a href="#SkBitmap_isOpaque">isOpaque</a> | returns true if <a href="SkImageInfo_Reference#Image_Info">Image Info</a> describes opaque pixels |
+| <a href="#SkBitmap_isVolatile">isVolatile</a> | returns true if pixels should not be cached |
+| <a href="#SkBitmap_pixelRef">pixelRef</a> | returns <a href="undocumented#Pixel_Ref">Pixel Ref</a>, or nullptr |
+| <a href="#SkBitmap_pixelRefOrigin">pixelRefOrigin</a> | returns offset within <a href="undocumented#Pixel_Ref">Pixel Ref</a> |
+| <a href="#SkBitmap_pixmap">pixmap</a> | returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> |
+| <a href="#SkBitmap_refColorSpace">refColorSpace</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a> |
+| <a href="#SkBitmap_rowBytes">rowBytes</a> | returns interval between rows in bytes |
+| <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> | returns interval between rows in pixels |
+| <a href="#SkBitmap_shiftPerPixel">shiftPerPixel</a> | returns bit shift from pixels to bytes |
+| <a href="#SkBitmap_width">width</a> | returns pixel column count |
+
<a name="SkBitmap_pixmap"></a>
## pixmap
@@ -1611,6 +1661,29 @@ enum <a href="#SkBitmap_AllocFlags">AllocFlags</a> {
+## <a name="Allocate"></a> Allocate
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_allocN32Pixels">allocN32Pixels</a> | allocates compatible <a href="#ARGB">Color ARGB</a> pixels, or aborts |
+| <a href="#SkBitmap_allocPixels">allocPixels</a> | allocates pixels from <a href="SkImageInfo_Reference#Image_Info">Image Info</a>, or aborts |
+| | <a href="#SkBitmap_allocPixels">allocPixels(const SkImageInfo& info, size t rowBytes)</a> |
+| | <a href="#SkBitmap_allocPixels_2">allocPixels(const SkImageInfo& info)</a> |
+| | <a href="#SkBitmap_allocPixels_3">allocPixels</a> |
+| | <a href="#SkBitmap_allocPixels_4">allocPixels(Allocator* allocator)</a> |
+| <a href="#SkBitmap_allocPixelsFlags">allocPixelsFlags</a> | allocates pixels from <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with options, or aborts |
+| <a href="#SkBitmap_installPixels">installPixels</a> | creates <a href="undocumented#Pixel_Ref">Pixel Ref</a>, with optional release function |
+| | <a href="#SkBitmap_installPixels">installPixels(const SkImageInfo& info, void* pixels, size t rowBytes, void (*releaseProc)</a> (void* addr, void* context) , void* context) |
+| | <a href="#SkBitmap_installPixels_2">installPixels(const SkImageInfo& info, void* pixels, size t rowBytes)</a> |
+| | <a href="#SkBitmap_installPixels_3">installPixels(const SkPixmap& pixmap)</a> |
+| <a href="#SkBitmap_tryAllocN32Pixels">tryAllocN32Pixels</a> | allocates compatible <a href="#ARGB">Color ARGB</a> pixels if possible |
+| <a href="#SkBitmap_tryAllocPixels">tryAllocPixels</a> | allocates pixels from <a href="SkImageInfo_Reference#Image_Info">Image Info</a> if possible |
+| | <a href="#SkBitmap_tryAllocPixels">tryAllocPixels(const SkImageInfo& info, size t rowBytes)</a> |
+| | <a href="#SkBitmap_tryAllocPixels_2">tryAllocPixels(const SkImageInfo& info)</a> |
+| | <a href="#SkBitmap_tryAllocPixels_3">tryAllocPixels</a> |
+| | <a href="#SkBitmap_tryAllocPixels_4">tryAllocPixels(Allocator* allocator)</a> |
+| <a href="#SkBitmap_tryAllocPixelsFlags">tryAllocPixelsFlags</a> | allocates pixels from <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with options if possible |
+
<a name="SkBitmap_tryAllocPixelsFlags"></a>
## tryAllocPixelsFlags
@@ -2075,7 +2148,7 @@ true if <a href="SkImageInfo_Reference#Image_Info">Image Info</a> was set to pix
### Example
-<div><fiddle-embed name="6e2a8c9358b34aebd2ec586815fe9d3a"><div>Draw a five by five bitmap, and draw it again with a center white pixel.</div></fiddle-embed></div>
+<div><fiddle-embed name="6e2a8c9358b34aebd2ec586815fe9d3a"><div><a href="#Draw">Draw</a> a five by five bitmap, and draw it again with a center white pixel.</div></fiddle-embed></div>
### See Also
@@ -2094,6 +2167,23 @@ soon
---
+## <a name="Pixels"></a> Pixels
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_notifyPixelsChanged">notifyPixelsChanged</a> | marks pixels as changed, altering the unique ID |
+| <a href="#SkBitmap_peekPixels">peekPixels</a> | returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> if possible |
+| <a href="#SkBitmap_readPixels">readPixels</a> | copies and converts pixels |
+| | <a href="#SkBitmap_readPixels">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY, SkTransferFunctionBehavior behavior)</a> const |
+| | <a href="#SkBitmap_readPixels_2">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY)</a> const |
+| | <a href="#SkBitmap_readPixels_3">readPixels(const SkPixmap& dst, int srcX, int srcY)</a> const |
+| | <a href="#SkBitmap_readPixels_4">readPixels(const SkPixmap& dst)</a> const |
+| <a href="#SkBitmap_setPixels">setPixels</a> | sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> without an offset |
+| <a href="#SkBitmap_writePixels">writePixels</a> | copies and converts pixels |
+| | <a href="#SkBitmap_writePixels">writePixels(const SkPixmap& src, int dstX, int dstY)</a> |
+| | <a href="#SkBitmap_writePixels_2">writePixels(const SkPixmap& src)</a> |
+| | <a href="#SkBitmap_writePixels_3">writePixels(const SkPixmap& src, int x, int y, SkTransferFunctionBehavior behavior)</a> |
+
<a name="SkBitmap_setPixels"></a>
## setPixels
@@ -2189,7 +2279,7 @@ Allocates pixel memory with <a href="#SkBitmap_tryAllocPixels_4_allocator">alloc
The allocation size is determined by <a href="SkImageInfo_Reference#Image_Info">Image Info</a> width, height, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a>.
If <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a> is nullptr, use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> instead.
-Returns false if <a href="#SkBitmap_tryAllocPixels_4_allocator">allocator</a> <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef</a> return false.
+Returns false if <a href="#SkBitmap_Allocator_allocPixelRef">Allocator::allocPixelRef</a> return false.
### Parameters
@@ -2225,7 +2315,7 @@ Allocates pixel memory with <a href="#SkBitmap_allocPixels_4_allocator">allocato
The allocation size is determined by <a href="SkImageInfo_Reference#Image_Info">Image Info</a> width, height, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a>.
If <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> is nullptr, use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> instead.
-Aborts if <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef</a> return false. Abort steps may be provided by
+Aborts if <a href="#SkBitmap_Allocator_allocPixelRef">Allocator::allocPixelRef</a> return false. Abort steps may be provided by
the user at compile time by defining SK_ABORT.
### Parameters
@@ -2310,6 +2400,17 @@ subset origin: 32, 64
---
+## <a name="Set"></a> Set
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_setAlphaType">setAlphaType</a> | sets <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> of shared pixels |
+| <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> | sets Mip_Map support present; Android only |
+| <a href="#SkBitmap_setImmutable">setImmutable</a> | marks that pixels will not change |
+| <a href="#SkBitmap_setInfo">setInfo</a> | sets height, width, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, and so on, releasing pixels |
+| <a href="#SkBitmap_setIsVolatile">setIsVolatile</a> | marks if pixels should not be cached |
+| <a href="#SkBitmap_setPixelRef">setPixelRef</a> | sets <a href="undocumented#Pixel_Ref">Pixel Ref</a> and offset |
+
<a name="SkBitmap_setPixelRef"></a>
## setPixelRef
@@ -2428,6 +2529,15 @@ Marks that pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> have changed
---
+## <a name="Draw"></a> Draw
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_erase">erase</a> | writes <a href="undocumented#Color">Color</a> to rectangle of pixels |
+| <a href="#SkBitmap_eraseARGB">eraseARGB</a> | writes <a href="undocumented#Color">Color</a> to pixels |
+| <a href="#SkBitmap_eraseColor">eraseColor</a> | writes <a href="undocumented#Color">Color</a> to pixels |
+| <a href="#SkBitmap_eraseRGB">eraseRGB</a> | deprecated |
+
<a name="SkBitmap_eraseColor"></a>
## eraseColor
@@ -2821,7 +2931,7 @@ unsigned 8-bit pointer to pixel at (<a href="#SkBitmap_getAddr8_x">x</a>, <a hre
bool extractSubset(SkBitmap* dst, const SkIRect& subset) const
</pre>
-Shares <a href="undocumented#Pixel_Ref">Pixel Ref</a> with <a href="#SkBitmap_extractSubset_dst">dst</a>. Pixels are not copied; <a href="#Bitmap">Bitmap</a> and <a href="#SkBitmap_extractSubset_dst">dst</a> point
+Shares <a href="undocumented#Pixel_Ref">Pixel Ref</a> with <a href="#SkBitmap_extractSubset_dst">dst</a>. <a href="#Pixels">Pixels</a> are not copied; <a href="#Bitmap">Bitmap</a> and <a href="#SkBitmap_extractSubset_dst">dst</a> point
to the same pixels; <a href="#SkBitmap_extractSubset_dst">dst</a> <a href="#SkBitmap_bounds">bounds</a> are set to the intersection of <a href="#SkBitmap_extractSubset_subset">subset</a>
and the original <a href="#SkBitmap_bounds">bounds</a>.
@@ -2902,7 +3012,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorType">colorType</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> must
@@ -2969,7 +3079,7 @@ Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorType">colorType</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> must
@@ -3029,7 +3139,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -3084,7 +3194,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_readPixels_4_dst">dst</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -3132,7 +3242,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_src">src</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_src">src</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -3187,7 +3297,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_2_src">src</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_2_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_2_src">src</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -3234,7 +3344,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkBitmap_writePixels_3_src">src</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkBitmap_writePixels_3_src">src</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Bitmap">Bitmap</a> <a href="#SkBitmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkBitmap_writePixels_3_src">src</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -3478,6 +3588,18 @@ x---x-
---
+## <a name="Utility"></a> Utility
+
+| name | description |
+| --- | --- |
+| <a href="#SkBitmap_ComputeIsOpaque">ComputeIsOpaque</a> | returns true if all pixels are opaque |
+| <a href="#SkBitmap_computeByteSize">computeByteSize</a> | returns size required for pixels |
+| <a href="#SkBitmap_getGenerationID">getGenerationID</a> | returns unique ID |
+| <a href="#SkBitmap_readyToDraw">readyToDraw</a> | returns true if address of pixels is not nullptr |
+| <a href="#SkBitmap_swap">swap</a> | exchanges <a href="#Bitmap">Bitmap</a> pair |
+| <a href="#SkBitmap_toString">toString</a> | converts <a href="#Bitmap">Bitmap</a> to machine readable form |
+| <a href="#SkBitmap_validate">validate</a> | asserts if <a href="#Bitmap">Bitmap</a> is invalid (debug only) |
+
<a name="SkBitmap_validate"></a>
## validate
diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md
index ebd746356f..6228d3ade4 100644
--- a/site/user/api/SkCanvas_Reference.md
+++ b/site/user/api/SkCanvas_Reference.md
@@ -42,10 +42,15 @@ This approach may be deprecated in the future.
| name | description |
| --- | --- |
| <a href="#Clip">Clip</a> | stack of clipping <a href="#Path">Paths</a> |
+| <a href="#Draw">Draw</a> | draws into <a href="#Canvas">Canvas</a> |
| <a href="#Draw_Image">Draw Image</a> | draws <a href="SkImage_Reference#Image">Image</a> to <a href="#Canvas">Canvas</a> |
+| <a href="#Draw_Text">Draw Text</a> | draws text into <a href="#Canvas">Canvas</a> |
| <a href="#Layer">Layer</a> | temporary <a href="SkBitmap_Reference#Bitmap">Bitmap</a> to draw into |
| <a href="#Matrix">Matrix</a> | coordinate transformation |
+| <a href="#Pixels">Pixels</a> | read and write pixel values |
+| <a href="#Property">Property</a> | metrics and attributes |
| <a href="#State_Stack">State Stack</a> | stack of state for hierarchical drawing |
+| <a href="#Utility">Utility</a> | rarely called management functions |
## <a name="Constant"></a> Constant
@@ -187,7 +192,7 @@ If <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is greater than ze
<a href="#SkCanvas_MakeRasterDirect_info">info</a> width times bytes required for <a href="SkImageInfo_Reference#Color_Type">Color Type</a>.
<a href="undocumented#Pixel">Pixel</a> buffer size should be <a href="#SkCanvas_MakeRasterDirect_info">info</a> height times computed <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a>.
-Pixels are not initialized.
+<a href="#Pixels">Pixels</a> are not initialized.
To access <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> after drawing, call <a href="#SkCanvas_flush">flush</a> or <a href="#SkCanvas_peekPixels">peekPixels</a>.
### Parameters
@@ -562,6 +567,18 @@ transparent letters.</div></fiddle-embed></div>
---
+## <a name="Property"></a> Property
+
+| name | description |
+| --- | --- |
+| <a href="#SkCanvas_getBaseLayerSize">getBaseLayerSize</a> | returns size of base <a href="#Layer">Layer</a> in global coordinates |
+| <a href="#SkCanvas_getGrContext">getGrContext</a> | returns <a href="undocumented#GPU_Context">GPU Context</a> of the <a href="undocumented#GPU_Surface">GPU Surface</a> |
+| <a href="#SkCanvas_getMetaData">getMetaData</a> | associates additional data with the canvas |
+| <a href="#SkCanvas_getProps">getProps</a> | copies <a href="undocumented#Surface_Properties">Surface Properties</a> if available |
+| <a href="#SkCanvas_imageInfo">imageInfo</a> | returns <a href="SkImageInfo_Reference#Image_Info">Image Info</a> for <a href="#Canvas">Canvas</a> |
+| <a href="#SkCanvas_isClipEmpty">isClipEmpty</a> | returns if <a href="#Clip">Clip</a> is empty |
+| <a href="#SkCanvas_isClipRect">isClipRect</a> | returns if <a href="#Clip">Clip</a> is <a href="SkRect_Reference#Rect">Rect</a> and not empty |
+
<a name="SkCanvas_getMetaData"></a>
## getMetaData
@@ -669,6 +686,15 @@ isRGB:1
---
+## <a name="Utility"></a> Utility
+
+| name | description |
+| --- | --- |
+| <a href="#SkCanvas_accessTopLayerPixels">accessTopLayerPixels</a> | returns writable pixel access if available |
+| <a href="#SkCanvas_accessTopRasterHandle">accessTopRasterHandle</a> | returns context that tracks <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> |
+| <a href="#SkCanvas_discard">discard</a> | makes <a href="#Canvas">Canvas</a> contents undefined |
+| <a href="#SkCanvas_flush">flush</a> | triggers execution of all pending draw operations |
+
<a name="SkCanvas_flush"></a>
## flush
@@ -874,6 +900,19 @@ context = skia
---
+## <a name="Pixels"></a> Pixels
+
+| name | description |
+| --- | --- |
+| <a href="#SkCanvas_peekPixels">peekPixels</a> | returns if <a href="#Canvas">Canvas</a> has direct access to its pixels |
+| <a href="#SkCanvas_readPixels">readPixels</a> | copies and converts rectangle of pixels from <a href="#Canvas">Canvas</a> |
+| | <a href="#SkCanvas_readPixels">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY)</a> |
+| | <a href="#SkCanvas_readPixels_2">readPixels(const SkPixmap& pixmap, int srcX, int srcY)</a> |
+| | <a href="#SkCanvas_readPixels_3">readPixels(const SkBitmap& bitmap, int srcX, int srcY)</a> |
+| <a href="#SkCanvas_writePixels">writePixels</a> | copies and converts rectangle of pixels to <a href="#Canvas">Canvas</a> |
+| | <a href="#SkCanvas_writePixels">writePixels(const SkImageInfo& info, const void* pixels, size t rowBytes, int x, int y)</a> |
+| | <a href="#SkCanvas_writePixels_2">writePixels(const SkBitmap& bitmap, int x, int y)</a> |
+
<a name="SkCanvas_peekPixels"></a>
## peekPixels
@@ -883,7 +922,7 @@ bool peekPixels(SkPixmap* pixmap)
Returns true if <a href="#Canvas">Canvas</a> has direct access to its pixels.
-Pixels are readable when <a href="undocumented#Device">Device</a> is raster. Pixels are not readable when <a href="#Canvas">Canvas</a>
+<a href="#Pixels">Pixels</a> are readable when <a href="undocumented#Device">Device</a> is raster. <a href="#Pixels">Pixels</a> are not readable when <a href="#Canvas">Canvas</a>
is returned from <a href="undocumented#GPU_Surface">GPU Surface</a>, returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>, returned by
<a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility class
like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -935,8 +974,8 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
Copies each readable pixel intersecting both rectangles, without scaling,
converting to <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.colorType() and <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.alphaType() if required.
-Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
-Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
+<a href="#Pixels">Pixels</a> are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
+<a href="#Pixels">Pixels</a> are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility
class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -1019,8 +1058,8 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
Copies each readable pixel intersecting both rectangles, without scaling,
converting to <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.colorType() and <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.alphaType() if required.
-Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
-Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
+<a href="#Pixels">Pixels</a> are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
+<a href="#Pixels">Pixels</a> are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility
class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -1091,8 +1130,8 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
Copies each readable pixel intersecting both rectangles, without scaling,
converting to <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.colorType() and <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.alphaType() if required.
-Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
-Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
+<a href="#Pixels">Pixels</a> are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
+<a href="#Pixels">Pixels</a> are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility
class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -1164,8 +1203,8 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCa
Copies each readable pixel intersecting both rectangles, without scaling,
converting to <a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() and <a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType() if required.
-Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
-Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
+<a href="#Pixels">Pixels</a> are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
+<a href="#Pixels">Pixels</a> are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility
class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -1230,8 +1269,8 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCa
Copies each readable pixel intersecting both rectangles, without scaling,
converting to <a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() and <a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType() if required.
-Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
-Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
+<a href="#Pixels">Pixels</a> are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
+<a href="#Pixels">Pixels</a> are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
returned by <a href="#SkPictureRecorder_beginRecording">SkPictureRecorder::beginRecording</a>, or <a href="#Canvas">Canvas</a> is the base of a utility
class like <a href="undocumented#SkDumpCanvas">SkDumpCanvas</a>.
@@ -1297,7 +1336,7 @@ save state and return the depth of the stack.
### Example
-<div><fiddle-embed name="a4548baa133302e933b4d3442c06f5b3"><div>Draw to ever smaller clips; then restore drawing to full canvas.
+<div><fiddle-embed name="a4548baa133302e933b4d3442c06f5b3"><div><a href="#Draw">Draw</a> to ever smaller clips; then restore drawing to full canvas.
Note that the second <a href="#SkCanvas_clipRect">clipRect</a> is not permitted to enlarge <a href="#Clip">Clip</a>.</div></fiddle-embed></div>
Each <a href="#Clip">Clip</a> uses the current <a href="#Matrix">Matrix</a> for its coordinates.
@@ -1576,7 +1615,7 @@ Optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_saveLaye
Call <a href="#SkCanvas_restoreToCount">restoreToCount</a> with returned value to restore this and subsequent saves.
-Draw text on an opaque background so that <a href="SkPaint_Reference#LCD_Text">LCD Text</a> blends correctly with the
+<a href="#Draw">Draw</a> text on an opaque background so that <a href="SkPaint_Reference#LCD_Text">LCD Text</a> blends correctly with the
prior <a href="#Layer">Layer</a>. <a href="SkPaint_Reference#LCD_Text">LCD Text</a> drawn on a background with transparency may result in
incorrect blending.
@@ -2052,7 +2091,7 @@ amount to rotate, in <a href="#SkCanvas_rotate_degrees">degrees</a></td>
### Example
-<div><fiddle-embed name="caafb205771b714948e00dcd58ccaf1f"><div>Draw clock hands at time 5:10. The hour hand and minute hand point up and
+<div><fiddle-embed name="caafb205771b714948e00dcd58ccaf1f"><div><a href="#Draw">Draw</a> clock hands at time 5:10. The hour hand and minute hand point up and
are rotated clockwise.</div></fiddle-embed></div>
### See Also
@@ -2276,7 +2315,7 @@ and is unaffected by <a href="#Matrix">Matrix</a>.
### Example
-<div><fiddle-embed name="d2e60e5171f26ff9ddefae48387f889b"><div>Draw a red circle with an <a href="#Alias">Aliased</a> clip and an Anti-aliased clip.
+<div><fiddle-embed name="d2e60e5171f26ff9ddefae48387f889b"><div><a href="#Draw">Draw</a> a red circle with an <a href="#Alias">Aliased</a> clip and an Anti-aliased clip.
Use an image filter to zoom into the pixels drawn.
The edge of the <a href="#Alias">Aliased</a> clip fully draws pixels in the red circle.
The edge of the Anti-aliased clip partially draws pixels in the red circle.</div></fiddle-embed></div>
@@ -2883,6 +2922,55 @@ device bounds empty = true
---
+## <a name="Draw"></a> Draw
+
+| name | description |
+| --- | --- |
+| <a href="#SkCanvas_clear">clear</a> | fills <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> |
+| <a href="#SkCanvas_drawAnnotation">drawAnnotation</a> | associates a <a href="SkRect_Reference#Rect">Rect</a> with a key-value pair |
+| | <a href="#SkCanvas_drawAnnotation">drawAnnotation(const SkRect& rect, const char key[], SkData* value)</a> |
+| | <a href="#SkCanvas_drawAnnotation_2">drawAnnotation(const SkRect& rect, const char key[], const sk sp&lt;SkData&gt;& value)</a> |
+| <a href="#SkCanvas_drawArc">drawArc</a> | draws <a href="undocumented#Arc">Arc</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawAtlas">drawAtlas</a> | draws sprites using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| | <a href="#SkCanvas_drawAtlas">drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[], const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect, const SkPaint* paint)</a> |
+| | <a href="#SkCanvas_drawAtlas_2">drawAtlas(const sk sp&lt;SkImage&gt;& atlas, const SkRSXform xform[], const SkRect tex[], const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect, const SkPaint* paint)</a> |
+| | <a href="#SkCanvas_drawAtlas_3">drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[], int count, const SkRect* cullRect, const SkPaint* paint)</a> |
+| | <a href="#SkCanvas_drawAtlas_4">drawAtlas(const sk sp&lt;SkImage&gt;& atlas, const SkRSXform xform[], const SkRect tex[], int count, const SkRect* cullRect, const SkPaint* paint)</a> |
+| <a href="#SkCanvas_drawCircle">drawCircle</a> | draws <a href="undocumented#Circle">Circle</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| | <a href="#SkCanvas_drawCircle">drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawCircle_2">drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawColor">drawColor</a> | fills <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> and <a href="undocumented#Blend_Mode">Blend Mode</a> |
+| <a href="#SkCanvas_drawDRRect">drawDRRect</a> | draws double <a href="undocumented#Round_Rect">Round Rect</a> stroked or filled |
+| <a href="#SkCanvas_drawDrawable">drawDrawable</a> | draws <a href="undocumented#Drawable">Drawable</a>, encapsulated drawing commands |
+| | <a href="#SkCanvas_drawDrawable">drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr)</a> |
+| | <a href="#SkCanvas_drawDrawable_2">drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y)</a> |
+| <a href="#SkCanvas_drawIRect">drawIRect</a> | draws <a href="SkIRect_Reference#IRect">IRect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawLine">drawLine</a> | draws line segment between two points |
+| | <a href="#SkCanvas_drawLine">drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawLine_2">drawLine(SkPoint p0, SkPoint p1, const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawOval">drawOval</a> | draws <a href="undocumented#Oval">Oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawPaint">drawPaint</a> | fills <a href="#Clip">Clip</a> with <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawPatch">drawPatch</a> | draws Coons_Patch |
+| | <a href="#SkCanvas_drawPatch">drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawPatch_2">drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawPath">drawPath</a> | draws <a href="SkPath_Reference#Path">Path</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawPicture">drawPicture</a> | draws <a href="undocumented#Picture">Picture</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> |
+| | <a href="#SkCanvas_drawPicture">drawPicture(const SkPicture* picture)</a> |
+| | <a href="#SkCanvas_drawPicture_2">drawPicture(const sk sp&lt;SkPicture&gt;& picture)</a> |
+| | <a href="#SkCanvas_drawPicture_3">drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint)</a> |
+| | <a href="#SkCanvas_drawPicture_4">drawPicture(const sk sp&lt;SkPicture&gt;& picture, const SkMatrix* matrix, const SkPaint* paint)</a> |
+| <a href="#SkCanvas_drawPoint">drawPoint</a> | draws point at (x, y) position |
+| | <a href="#SkCanvas_drawPoint">drawPoint(SkScalar x, SkScalar y, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawPoint_2">drawPoint(SkPoint p, const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawPoints">drawPoints</a> | draws array as points, lines, polygon |
+| <a href="#SkCanvas_drawRRect">drawRRect</a> | draws <a href="undocumented#Round_Rect">Round Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawRect">drawRect</a> | draws <a href="SkRect_Reference#Rect">Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawRegion">drawRegion</a> | draws <a href="undocumented#Region">Region</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawRoundRect">drawRoundRect</a> | draws <a href="undocumented#Round_Rect">Round Rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> |
+| <a href="#SkCanvas_drawVertices">drawVertices</a> | draws <a href="undocumented#Vertices">Vertices</a>, a triangle mesh |
+| | <a href="#SkCanvas_drawVertices">drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawVertices_2">drawVertices(const sk sp&lt;SkVertices&gt;& vertices, SkBlendMode mode, const SkPaint& paint)</a> |
+
<a name="SkCanvas_drawColor"></a>
## drawColor
@@ -3008,13 +3096,13 @@ an open polygon.
<table>
<tr>
- <td><a name="SkCanvas_kPoints_PointMode"> <code><strong>SkCanvas::kPoints_PointMode </strong></code> </a></td><td>0</td><td>Draw each point separately.</td>
+ <td><a name="SkCanvas_kPoints_PointMode"> <code><strong>SkCanvas::kPoints_PointMode </strong></code> </a></td><td>0</td><td><a href="#Draw">Draw</a> each point separately.</td>
</tr>
<tr>
- <td><a name="SkCanvas_kLines_PointMode"> <code><strong>SkCanvas::kLines_PointMode </strong></code> </a></td><td>1</td><td>Draw each pair of points as a line segment.</td>
+ <td><a name="SkCanvas_kLines_PointMode"> <code><strong>SkCanvas::kLines_PointMode </strong></code> </a></td><td>1</td><td><a href="#Draw">Draw</a> each pair of points as a line segment.</td>
</tr>
<tr>
- <td><a name="SkCanvas_kPolygon_PointMode"> <code><strong>SkCanvas::kPolygon_PointMode </strong></code> </a></td><td>2</td><td>Draw the array of points as a open polygon.</td>
+ <td><a name="SkCanvas_kPolygon_PointMode"> <code><strong>SkCanvas::kPolygon_PointMode </strong></code> </a></td><td>2</td><td><a href="#Draw">Draw</a> the array of points as a open polygon.</td>
</tr>
</table>
@@ -3038,7 +3126,7 @@ The lower left corner shows two lines with a miter when path contains polygon.</
void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint)
</pre>
-Draw <a href="#SkCanvas_drawPoints_pts">pts</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoints_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="#SkCanvas_drawPoints_pts">pts</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoints_paint">paint</a>.
<a href="#SkCanvas_drawPoints_count">count</a> is the number of points; if <a href="#SkCanvas_drawPoints_count">count</a> is less than one, has no effect.
<a href="#SkCanvas_drawPoints_mode">mode</a> may be one of: <a href="#SkCanvas_kPoints_PointMode">kPoints PointMode</a>, <a href="#SkCanvas_kLines_PointMode">kLines PointMode</a>, or <a href="#SkCanvas_kPolygon_PointMode">kPolygon PointMode</a>.
@@ -3105,7 +3193,7 @@ the path is drawn all at once.</div></fiddle-embed></div>
void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw point at (<a href="#SkCanvas_drawPoint_x">x</a>, <a href="#SkCanvas_drawPoint_y">y</a>) using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoint_paint">paint</a>.
+<a href="#Draw">Draw</a> point at (<a href="#SkCanvas_drawPoint_x">x</a>, <a href="#SkCanvas_drawPoint_y">y</a>) using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoint_paint">paint</a>.
The shape of point drawn depends on <a href="#SkCanvas_drawPoint_paint">paint</a> <a href="#Stroke_Cap">Paint Stroke Cap</a>.
If <a href="#SkCanvas_drawPoint_paint">paint</a> is set to <a href="#SkPaint_kRound_Cap">SkPaint::kRound Cap</a>, draw a circle of diameter
@@ -3140,7 +3228,7 @@ stroke, blend, color, and so on, used to draw</td>
void drawPoint(SkPoint p, const SkPaint& paint)
</pre>
-Draw point <a href="#SkCanvas_drawPoint_2_p">p</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoint_2_paint">paint</a>.
+<a href="#Draw">Draw</a> point <a href="#SkCanvas_drawPoint_2_p">p</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a> and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPoint_2_paint">paint</a>.
The shape of point drawn depends on <a href="#SkCanvas_drawPoint_2_paint">paint</a> <a href="#Stroke_Cap">Paint Stroke Cap</a>.
If <a href="#SkCanvas_drawPoint_2_paint">paint</a> is set to <a href="#SkPaint_kRound_Cap">SkPaint::kRound Cap</a>, draw a circle of diameter
@@ -3243,7 +3331,7 @@ stroke, blend, color, and so on, used to draw</td>
void drawRect(const SkRect& rect, const SkPaint& paint)
</pre>
-Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRect_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRect_paint">paint</a>.
In <a href="#SkCanvas_drawRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
@@ -3274,7 +3362,7 @@ stroke or fill, blend, color, and so on, used to draw</td>
void drawIRect(const SkIRect& rect, const SkPaint& paint)
</pre>
-Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawIRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawIRect_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawIRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawIRect_paint">paint</a>.
In <a href="#SkCanvas_drawIRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
@@ -3305,7 +3393,7 @@ stroke or fill, blend, color, and so on, used to draw</td>
void drawRegion(const SkRegion& region, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Region">Region</a> <a href="#SkCanvas_drawRegion_region">region</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRegion_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Region">Region</a> <a href="#SkCanvas_drawRegion_region">region</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRegion_paint">paint</a>.
In <a href="#SkCanvas_drawRegion_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
@@ -3336,7 +3424,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th
void drawOval(const SkRect& oval, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Oval">Oval</a> <a href="#SkCanvas_drawOval_oval">oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Oval">Oval</a> <a href="#SkCanvas_drawOval_oval">oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>.
In <a href="#SkCanvas_drawOval_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Oval">Oval</a> is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
@@ -3366,7 +3454,7 @@ if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line th
void drawRRect(const SkRRect& rrect, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawRRect_rrect">rrect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRRect_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawRRect_rrect">rrect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRRect_paint">paint</a>.
In <a href="#SkCanvas_drawRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="#SkCanvas_drawRRect_rrect">rrect</a> is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
@@ -3399,7 +3487,7 @@ may have any combination of positive non-square radii for the four corners.
void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a>
+<a href="#Draw">Draw</a> <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a>
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawDRRect_paint">paint</a>.
<a href="#SkCanvas_drawDRRect_outer">outer</a> must contain <a href="#SkCanvas_drawDRRect_inner">inner</a> or the drawing is undefined.
In <a href="#SkCanvas_drawDRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
@@ -3445,7 +3533,7 @@ Stroke join does not affect <a href="#SkCanvas_drawDRRect_inner">inner</a> <a hr
void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Circle">Circle</a> at (<a href="#SkCanvas_drawCircle_cx">cx</a>, <a href="#SkCanvas_drawCircle_cy">cy</a>) with <a href="#SkCanvas_drawCircle_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Circle">Circle</a> at (<a href="#SkCanvas_drawCircle_cx">cx</a>, <a href="#SkCanvas_drawCircle_cy">cy</a>) with <a href="#SkCanvas_drawCircle_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_paint">paint</a>.
If <a href="#SkCanvas_drawCircle_radius">radius</a> is zero or less, nothing is drawn.
In <a href="#SkCanvas_drawCircle_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
@@ -3479,7 +3567,7 @@ half the diameter of <a href="undocumented#Circle">Circle</a></td>
void drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Circle">Circle</a> at <a href="#SkCanvas_drawCircle_2_center">center</a> with <a href="#SkCanvas_drawCircle_2_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_2_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Circle">Circle</a> at <a href="#SkCanvas_drawCircle_2_center">center</a> with <a href="#SkCanvas_drawCircle_2_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_2_paint">paint</a>.
If <a href="#SkCanvas_drawCircle_2_radius">radius</a> is zero or less, nothing is drawn.
In <a href="#SkCanvas_drawCircle_2_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
@@ -3513,7 +3601,7 @@ void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool
const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Arc">Arc</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawArc_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Arc">Arc</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawArc_paint">paint</a>.
<a href="undocumented#Arc">Arc</a> is part of <a href="undocumented#Oval">Oval</a> bounded by <a href="#SkCanvas_drawArc_oval">oval</a>, sweeping from <a href="#SkCanvas_drawArc_startAngle">startAngle</a> to <a href="#SkCanvas_drawArc_startAngle">startAngle</a> plus
<a href="#SkCanvas_drawArc_sweepAngle">sweepAngle</a>. <a href="#SkCanvas_drawArc_startAngle">startAngle</a> and <a href="#SkCanvas_drawArc_sweepAngle">sweepAngle</a> are in degrees.
@@ -3563,7 +3651,7 @@ if true, include the center of the <a href="#SkCanvas_drawArc_oval">oval</a></td
void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Round_Rect">Round Rect</a> bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRoundRect_rect">rect</a>, with corner radii (<a href="#SkCanvas_drawRoundRect_rx">rx</a>, <a href="#SkCanvas_drawRoundRect_ry">ry</a>) using <a href="#Clip">Clip</a>,
+<a href="#Draw">Draw</a> <a href="undocumented#Round_Rect">Round Rect</a> bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRoundRect_rect">rect</a>, with corner radii (<a href="#SkCanvas_drawRoundRect_rx">rx</a>, <a href="#SkCanvas_drawRoundRect_ry">ry</a>) using <a href="#Clip">Clip</a>,
<a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRoundRect_paint">paint</a>.
In <a href="#SkCanvas_drawRoundRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
@@ -3606,7 +3694,7 @@ DrawRRect <a href="#SkCanvas_drawRect">drawRect</a> <a href="#SkCanvas_drawDRRec
void drawPath(const SkPath& path, const SkPaint& paint)
</pre>
-Draw <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawPath_path">path</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPath_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawPath_path">path</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPath_paint">paint</a>.
<a href="SkPath_Reference#Path">Path</a> contains an array of <a href="#Contour">Path Contour</a>, each of which may be open or closed.
In <a href="#SkCanvas_drawPath_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled:
@@ -3651,7 +3739,7 @@ a smart pointer as a convenience. The pairs of calls are otherwise identical.
void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_image">image</a>, with its <a href="#SkCanvas_drawImage_top">top</a>-<a href="#SkCanvas_drawImage_left">left</a> corner at (<a href="#SkCanvas_drawImage_left">left</a>, <a href="#SkCanvas_drawImage_top">top</a>),
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_image">image</a>, with its <a href="#SkCanvas_drawImage_top">top</a>-<a href="#SkCanvas_drawImage_left">left</a> corner at (<a href="#SkCanvas_drawImage_left">left</a>, <a href="#SkCanvas_drawImage_top">top</a>),
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_paint">paint</a>.
If <a href="#SkCanvas_drawImage_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>,
@@ -3692,7 +3780,7 @@ void drawImage(const sk_sp&lt;SkImage&gt;& image, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_2_image">image</a>, with its <a href="#SkCanvas_drawImage_2_top">top</a>-<a href="#SkCanvas_drawImage_2_left">left</a> corner at (<a href="#SkCanvas_drawImage_2_left">left</a>, <a href="#SkCanvas_drawImage_2_top">top</a>),
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImage_2_image">image</a>, with its <a href="#SkCanvas_drawImage_2_top">top</a>-<a href="#SkCanvas_drawImage_2_left">left</a> corner at (<a href="#SkCanvas_drawImage_2_left">left</a>, <a href="#SkCanvas_drawImage_2_top">top</a>),
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_2_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_2_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -3777,7 +3865,7 @@ void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& dst, c
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_src">src</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_src">src</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_dst">dst</a>.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -3829,7 +3917,7 @@ void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst,
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_2_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_2_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_2_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_2_dst">dst</a>.
Note that <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawImageRect_2_dst">dst</a> may include fractional
boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a>
<a href="#SkCanvas_drawImageRect_2_paint">paint</a>.
@@ -3879,7 +3967,7 @@ void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_3_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_3_dst">dst</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>,
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_3_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_3_dst">dst</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>,
and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_3_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_3_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -3925,7 +4013,7 @@ void drawImageRect(const sk_sp&lt;SkImage&gt;& image, const SkRect& src, const S
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_src">src</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_4_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_src">src</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_4_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_4_dst">dst</a>.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_4_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_4_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -3974,7 +4062,7 @@ void drawImageRect(const sk_sp&lt;SkImage&gt;& image, const SkIRect& isrc, const
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_5_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_5_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_5_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_5_dst">dst</a>.
<a href="#SkCanvas_drawImageRect_5_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawImageRect_5_dst">dst</a> may include fractional boundaries.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_5_paint">paint</a>.
@@ -4023,7 +4111,7 @@ void drawImageRect(const sk_sp&lt;SkImage&gt;& image, const SkRect& dst, const S
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_6_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_6_dst">dst</a>,
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_6_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_6_dst">dst</a>,
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_6_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_6_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -4070,7 +4158,7 @@ void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& ds
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageNine_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageNine_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_dst">dst</a>.
<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_center">center</a> divides the <a href="#SkCanvas_drawImageNine_image">image</a> into nine sections: four sides, four corners, and
the <a href="#SkCanvas_drawImageNine_center">center</a>. Corners are unmodified or scaled down proportionately if their sides
are larger than <a href="#SkCanvas_drawImageNine_dst">dst</a>; <a href="#SkCanvas_drawImageNine_center">center</a> and four sides are scaled to fit remaining space, if any.
@@ -4119,7 +4207,7 @@ void drawImageNine(const sk_sp&lt;SkImage&gt;& image, const SkIRect& center, con
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageNine_2_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_2_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageNine_2_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageNine_2_dst">dst</a>.
<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageNine_2_center">center</a> divides the <a href="#SkCanvas_drawImageNine_2_image">image</a> into nine sections: four sides, four corners, and
the <a href="#SkCanvas_drawImageNine_2_center">center</a>. Corners are not scaled, or scaled down proportionately if their sides
are larger than <a href="#SkCanvas_drawImageNine_2_dst">dst</a>; <a href="#SkCanvas_drawImageNine_2_center">center</a> and four sides are scaled to fit remaining space, if any.
@@ -4170,7 +4258,7 @@ and below <a href="#SkCanvas_drawImageNine_2_center">center</a> to fill the rema
void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>, with its <a href="#SkCanvas_drawBitmap_top">top</a>-<a href="#SkCanvas_drawBitmap_left">left</a> corner at (<a href="#SkCanvas_drawBitmap_left">left</a>, <a href="#SkCanvas_drawBitmap_top">top</a>),
+<a href="#Draw">Draw</a> <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a>, with its <a href="#SkCanvas_drawBitmap_top">top</a>-<a href="#SkCanvas_drawBitmap_left">left</a> corner at (<a href="#SkCanvas_drawBitmap_left">left</a>, <a href="#SkCanvas_drawBitmap_top">top</a>),
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmap_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmap_paint">paint</a> is not nullptr, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -4214,7 +4302,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkRect& src, const SkRect& dst
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_src">src</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_src">src</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_dst">dst</a>.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_paint">paint</a>.
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
@@ -4263,7 +4351,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkIRect& isrc, const SkRect& d
const SkPaint* paint, SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> of <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_2_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a>.
<a href="#SkCanvas_drawBitmapRect_2_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawBitmapRect_2_dst">dst</a> may include fractional boundaries.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_2_paint">paint</a>.
@@ -4313,7 +4401,7 @@ void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, const SkPaint* pa
SrcRectConstraint constraint = kStrict_SrcRectConstraint)
</pre>
-Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a>.
<a href="#SkCanvas_drawBitmapRect_3_bitmap">bitmap</a> bounds is on integer pixel boundaries; <a href="#SkCanvas_drawBitmapRect_3_dst">dst</a> may include fractional boundaries.
Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawBitmapRect_3_paint">paint</a>.
@@ -4362,7 +4450,7 @@ void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect&
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapNine_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapNine_dst">dst</a>.
<a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawBitmapNine_center">center</a> divides the <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> into nine sections: four sides, four corners,
and the <a href="#SkCanvas_drawBitmapNine_center">center</a>. Corners are not scaled, or scaled down proportionately if their
sides are larger than <a href="#SkCanvas_drawBitmapNine_dst">dst</a>; <a href="#SkCanvas_drawBitmapNine_center">center</a> and four sides are scaled to fit remaining
@@ -4515,7 +4603,7 @@ void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkR
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapLattice_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkBitmap_Reference#Bitmap">Bitmap</a> <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawBitmapLattice_dst">dst</a>.
<a href="#SkCanvas_Lattice">Lattice</a> <a href="#SkCanvas_drawBitmapLattice_lattice">lattice</a> divides <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -4571,7 +4659,7 @@ void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect
const SkPaint* paint = nullptr)
</pre>
-Draw <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageLattice_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageLattice_dst">dst</a>.
+<a href="#Draw">Draw</a> <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageLattice_image">image</a> stretched proportionally to fit into <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageLattice_dst">dst</a>.
<a href="#SkCanvas_Lattice">Lattice</a> <a href="#SkCanvas_drawImageLattice_lattice">lattice</a> divides <a href="#SkCanvas_drawImageLattice_image">image</a> into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners
@@ -4617,6 +4705,23 @@ are scaled if needed to take up the remaining space; the center is transparent.<
---
+## <a name="Draw_Text"></a> Draw Text
+
+| name | description |
+| --- | --- |
+| <a href="#SkCanvas_drawPosText">drawPosText</a> | draws text at array of (x, y) positions |
+| <a href="#SkCanvas_drawPosTextH">drawPosTextH</a> | draws text at x positions with common baseline |
+| <a href="#SkCanvas_drawString">drawString</a> | draws null terminated string at (x, y) using font advance |
+| | <a href="#SkCanvas_drawString">drawString(const char* string, SkScalar x, SkScalar y, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawString_2">drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawText">drawText</a> | draws text at (x, y), using font advance |
+| <a href="#SkCanvas_drawTextBlob">drawTextBlob</a> | draws text with arrays of positions and <a href="SkPaint_Reference#Paint">Paint</a> |
+| | <a href="#SkCanvas_drawTextBlob">drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint)</a> |
+| | <a href="#SkCanvas_drawTextBlob_2">drawTextBlob(const sk sp&lt;SkTextBlob&gt;& blob, SkScalar x, SkScalar y, const SkPaint& paint)</a> |
+| <a href="#SkCanvas_drawTextOnPath">drawTextOnPath</a> | draws text following <a href="SkPath_Reference#Path">Path</a> contour |
+| <a href="#SkCanvas_drawTextOnPathHV">drawTextOnPathHV</a> | draws text following <a href="SkPath_Reference#Path">Path</a> with offsets |
+| <a href="#SkCanvas_drawTextRSXform">drawTextRSXform</a> | draws text with array of <a href="undocumented#RSXform">RSXform</a> |
+
<a name="SkCanvas_drawText"></a>
## drawText
@@ -4624,7 +4729,7 @@ are scaled if needed to take up the remaining space; the center is transparent.<
void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw <a href="#SkCanvas_drawText_text">text</a>, with origin at (<a href="#SkCanvas_drawText_x">x</a>, <a href="#SkCanvas_drawText_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawText_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="#SkCanvas_drawText_text">text</a>, with origin at (<a href="#SkCanvas_drawText_x">x</a>, <a href="#SkCanvas_drawText_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawText_paint">paint</a>.
<a href="#SkCanvas_drawText_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawText_text">text</a> is encoded as
UTF-8.
@@ -4670,7 +4775,7 @@ start of <a href="#SkCanvas_drawText_text">text</a> on <a href="#SkCanvas_drawTe
void drawString(const char* string, SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw null terminated <a href="#SkCanvas_drawString_string">string</a>, with origin at (<a href="#SkCanvas_drawString_x">x</a>, <a href="#SkCanvas_drawString_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
+<a href="#Draw">Draw</a> null terminated <a href="#SkCanvas_drawString_string">string</a>, with origin at (<a href="#SkCanvas_drawString_x">x</a>, <a href="#SkCanvas_drawString_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
<a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawString_paint">paint</a>.
<a href="#SkCanvas_drawString_string">string</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, strings are encoded
@@ -4715,7 +4820,7 @@ text size, blend, color, and so on, used to draw</td>
void drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw null terminated <a href="#SkCanvas_drawString_2_string">string</a>, with origin at (<a href="#SkCanvas_drawString_2_x">x</a>, <a href="#SkCanvas_drawString_2_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
+<a href="#Draw">Draw</a> null terminated <a href="#SkCanvas_drawString_2_string">string</a>, with origin at (<a href="#SkCanvas_drawString_2_x">x</a>, <a href="#SkCanvas_drawString_2_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
<a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawString_2_paint">paint</a>.
<a href="#SkCanvas_drawString_2_string">string</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, strings are encoded
@@ -4761,7 +4866,7 @@ text size, blend, color, and so on, used to draw</td>
void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint& paint)
</pre>
-Draw each glyph in <a href="#SkCanvas_drawPosText_text">text</a> with the origin in <a href="#SkCanvas_drawPosText_pos">pos</a> array, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
+<a href="#Draw">Draw</a> each glyph in <a href="#SkCanvas_drawPosText_text">text</a> with the origin in <a href="#SkCanvas_drawPosText_pos">pos</a> array, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and
<a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPosText_paint">paint</a>. The number of entries in <a href="#SkCanvas_drawPosText_pos">pos</a> array must match the number of <a href="#Glyph">Glyphs</a>
described by <a href="#SkCanvas_drawPosText_byteLength">byteLength</a> of <a href="#SkCanvas_drawPosText_text">text</a>.
@@ -4809,7 +4914,7 @@ void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], Sk
const SkPaint& paint)
</pre>
-Draw each glyph in <a href="#SkCanvas_drawPosTextH_text">text</a> with its (x, y) origin composed from <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> array and
+<a href="#Draw">Draw</a> each glyph in <a href="#SkCanvas_drawPosTextH_text">text</a> with its (x, y) origin composed from <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> array and
<a href="#SkCanvas_drawPosTextH_constY">constY</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPosTextH_paint">paint</a>. The number of entries in <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> array
must match the number of <a href="#Glyph">Glyphs</a> described by <a href="#SkCanvas_drawPosTextH_byteLength">byteLength</a> of <a href="#SkCanvas_drawPosTextH_text">text</a>.
@@ -4860,7 +4965,7 @@ void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, S
SkScalar vOffset, const SkPaint& paint)
</pre>
-Draw <a href="#SkCanvas_drawTextOnPathHV_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPathHV_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPathHV_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="#SkCanvas_drawTextOnPathHV_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPathHV_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPathHV_paint">paint</a>.
Origin of <a href="#SkCanvas_drawTextOnPathHV_text">text</a> is at distance <a href="#SkCanvas_drawTextOnPathHV_hOffset">hOffset</a> along the <a href="#SkCanvas_drawTextOnPathHV_path">path</a>, offset by a perpendicular
vector of length <a href="#SkCanvas_drawTextOnPathHV_vOffset">vOffset</a>. If the <a href="#SkCanvas_drawTextOnPathHV_path">path</a> section corresponding the glyph advance is
@@ -4912,7 +5017,7 @@ void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, con
const SkPaint& paint)
</pre>
-Draw <a href="#SkCanvas_drawTextOnPath_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPath_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPath_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="#SkCanvas_drawTextOnPath_text">text</a> on <a href="SkPath_Reference#Path">Path</a> <a href="#SkCanvas_drawTextOnPath_path">path</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextOnPath_paint">paint</a>.
Origin of <a href="#SkCanvas_drawTextOnPath_text">text</a> is at beginning of <a href="#SkCanvas_drawTextOnPath_path">path</a> offset by <a href="#SkCanvas_drawTextOnPath_matrix">matrix</a>, if provided, before it
is mapped to <a href="#SkCanvas_drawTextOnPath_path">path</a>. If the <a href="#SkCanvas_drawTextOnPath_path">path</a> section corresponding the glyph advance is
@@ -4963,7 +5068,7 @@ void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[
const SkRect* cullRect, const SkPaint& paint)
</pre>
-Draw <a href="#SkCanvas_drawTextRSXform_text">text</a>, transforming each glyph by the corresponding <a href="undocumented#SkRSXform">SkRSXform</a>,
+<a href="#Draw">Draw</a> <a href="#SkCanvas_drawTextRSXform_text">text</a>, transforming each glyph by the corresponding <a href="undocumented#SkRSXform">SkRSXform</a>,
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextRSXform_paint">paint</a>.
<a href="undocumented#RSXform">RSXform</a> array specifies a separate square scale, rotation, and translation for
@@ -5008,7 +5113,7 @@ byte length of <a href="#SkCanvas_drawTextRSXform_text">text</a> array</td>
void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_x">x</a>, <a href="#SkCanvas_drawTextBlob_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextBlob_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_x">x</a>, <a href="#SkCanvas_drawTextBlob_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextBlob_paint">paint</a>.
<a href="#SkCanvas_drawTextBlob_blob">blob</a> contains <a href="#Glyph">Glyphs</a>, their positions, and <a href="#SkCanvas_drawTextBlob_paint">paint</a> attributes specific to text:
<a href="undocumented#Typeface">Typeface</a>, <a href="#Text_Size">Paint Text Size</a>, <a href="#Text_Scale_X">Paint Text Scale X</a>, <a href="#Text_Skew_X">Paint Text Skew X</a>,
@@ -5050,7 +5155,7 @@ blend, color, stroking, and so on, used to draw</td>
void drawTextBlob(const sk_sp&lt;SkTextBlob&gt;& blob, SkScalar x, SkScalar y, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_2_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_2_x">x</a>, <a href="#SkCanvas_drawTextBlob_2_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextBlob_2_paint">paint</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextBlob_2_blob">blob</a> at (<a href="#SkCanvas_drawTextBlob_2_x">x</a>, <a href="#SkCanvas_drawTextBlob_2_y">y</a>), using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextBlob_2_paint">paint</a>.
<a href="#SkCanvas_drawTextBlob_2_blob">blob</a> contains <a href="#Glyph">Glyphs</a>, their positions, and <a href="#SkCanvas_drawTextBlob_2_paint">paint</a> attributes specific to text:
<a href="undocumented#Typeface">Typeface</a>, <a href="#Text_Size">Paint Text Size</a>, <a href="#Text_Scale_X">Paint Text Scale X</a>, <a href="#Text_Skew_X">Paint Text Skew X</a>,
@@ -5094,7 +5199,7 @@ blend, color, stroking, and so on, used to draw</td>
void drawPicture(const SkPicture* picture)
</pre>
-Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
<a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> are unchanged by <a href="#SkCanvas_drawPicture_picture">picture</a> contents, as if
<a href="#SkCanvas_save">save</a> was called before and <a href="#SkCanvas_restore">restore</a> was called after <a href="#SkCanvas_drawPicture">drawPicture</a>.
@@ -5123,7 +5228,7 @@ recorded drawing commands to play</td>
void drawPicture(const sk_sp&lt;SkPicture&gt;& picture)
</pre>
-Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_2_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_2_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
<a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> are unchanged by <a href="#SkCanvas_drawPicture_2_picture">picture</a> contents, as if
<a href="#SkCanvas_save">save</a> was called before and <a href="#SkCanvas_restore">restore</a> was called after <a href="#SkCanvas_drawPicture">drawPicture</a>.
@@ -5152,7 +5257,7 @@ recorded drawing commands to play</td>
void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint)
</pre>
-Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_3_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_3_picture">picture</a> with
+<a href="#Draw">Draw</a> <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_3_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_3_picture">picture</a> with
<a href="#Matrix">Matrix</a> <a href="#SkCanvas_drawPicture_3_matrix">matrix</a>, if provided; and use <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPicture_3_paint">paint</a> <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
<a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>, if provided.
@@ -5186,7 +5291,7 @@ recorded drawing commands to play</td>
void drawPicture(const sk_sp&lt;SkPicture&gt;& picture, const SkMatrix* matrix, const SkPaint* paint)
</pre>
-Draw <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_4_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_4_picture">picture</a> with
+<a href="#Draw">Draw</a> <a href="undocumented#Picture">Picture</a> <a href="#SkCanvas_drawPicture_4_picture">picture</a>, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>; transforming <a href="#SkCanvas_drawPicture_4_picture">picture</a> with
<a href="#Matrix">Matrix</a> <a href="#SkCanvas_drawPicture_4_matrix">matrix</a>, if provided; and use <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawPicture_4_paint">paint</a> <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
<a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>, if provided.
@@ -5221,7 +5326,7 @@ recorded drawing commands to play</td>
void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
If <a href="#Texs">Vertices Texs</a> and <a href="#Colors">Vertices Colors</a> are defined in <a href="#SkCanvas_drawVertices_vertices">vertices</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawVertices_paint">paint</a>
contains <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Blend_Mode">Blend Mode</a> <a href="#SkCanvas_drawVertices_mode">mode</a> combines <a href="#Colors">Vertices Colors</a> with <a href="undocumented#Shader">Shader</a>.
@@ -5252,7 +5357,7 @@ specifies the <a href="undocumented#Shader">Shader</a>, used as <a href="undocum
void drawVertices(const sk_sp&lt;SkVertices&gt;& vertices, SkBlendMode mode, const SkPaint& paint)
</pre>
-Draw <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_2_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
+<a href="#Draw">Draw</a> <a href="undocumented#Vertices">Vertices</a> <a href="#SkCanvas_drawVertices_2_vertices">vertices</a>, a triangle mesh, using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>.
If <a href="#Texs">Vertices Texs</a> and <a href="#Colors">Vertices Colors</a> are defined in <a href="#SkCanvas_drawVertices_2_vertices">vertices</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawVertices_2_paint">paint</a>
contains <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Blend_Mode">Blend Mode</a> <a href="#SkCanvas_drawVertices_2_mode">mode</a> combines <a href="#Colors">Vertices Colors</a> with <a href="undocumented#Shader">Shader</a>.
@@ -5393,7 +5498,7 @@ void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[]
const SkPaint* paint)
</pre>
-Draw a set of sprites from <a href="#SkCanvas_drawAtlas_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_paint">paint</a>.
+<a href="#Draw">Draw</a> a set of sprites from <a href="#SkCanvas_drawAtlas_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_paint">paint</a>.
<a href="#SkCanvas_drawAtlas_paint">paint</a> uses Anti-alias, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>
to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_tex">tex</a> locates sprite in
<a href="#SkCanvas_drawAtlas_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_xform">xform</a> transforms it into destination space.
@@ -5442,7 +5547,7 @@ void drawAtlas(const sk_sp&lt;SkImage&gt;& atlas, const SkRSXform xform[], const
const SkPaint* paint)
</pre>
-Draw a set of sprites from <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_2_paint">paint</a>.
+<a href="#Draw">Draw</a> a set of sprites from <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_2_paint">paint</a>.
<a href="#SkCanvas_drawAtlas_2_paint">paint</a> uses Anti-alias, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>
to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_2_tex">tex</a> locates sprite in
<a href="#SkCanvas_drawAtlas_2_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_2_xform">xform</a> transforms it into destination space.
@@ -5490,7 +5595,7 @@ void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[]
const SkRect* cullRect, const SkPaint* paint)
</pre>
-Draw a set of sprites from <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_3_paint">paint</a>.
+<a href="#Draw">Draw</a> a set of sprites from <a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_3_paint">paint</a>.
<a href="#SkCanvas_drawAtlas_3_paint">paint</a> uses Anti-alias, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>
to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_3_tex">tex</a> locates sprite in
<a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_3_xform">xform</a> transforms it into destination space.
@@ -5533,7 +5638,7 @@ void drawAtlas(const sk_sp&lt;SkImage&gt;& atlas, const SkRSXform xform[], const
const SkRect* cullRect, const SkPaint* paint)
</pre>
-Draw a set of sprites from <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_4_paint">paint</a>.
+<a href="#Draw">Draw</a> a set of sprites from <a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawAtlas_4_paint">paint</a>.
<a href="#SkCanvas_drawAtlas_4_paint">paint</a> uses Anti-alias, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>
to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawAtlas_4_tex">tex</a> locates sprite in
<a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_4_xform">xform</a> transforms it into destination space.
@@ -5576,7 +5681,7 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr)
</pre>
-Draw <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, concatenated with
+<a href="#Draw">Draw</a> <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, concatenated with
optional <a href="#SkCanvas_drawDrawable_matrix">matrix</a>.
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
@@ -5609,7 +5714,7 @@ transformation applied to drawing; may be nullptr</td>
void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y)
</pre>
-Draw <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_2_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, offset by (<a href="#SkCanvas_drawDrawable_2_x">x</a>, <a href="#SkCanvas_drawDrawable_2_y">y</a>).
+<a href="#Draw">Draw</a> <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_2_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, offset by (<a href="#SkCanvas_drawDrawable_2_x">x</a>, <a href="#SkCanvas_drawDrawable_2_y">y</a>).
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
when it is recording into <a href="undocumented#Picture">Picture</a>, then <a href="#SkCanvas_drawDrawable_2_drawable">drawable</a> will be referenced,
@@ -5644,7 +5749,7 @@ offset into <a href="#Canvas">Canvas</a> writable pixels in <a href="#SkCanvas_d
void drawAnnotation(const SkRect& rect, const char key[], SkData* value)
</pre>
-Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a <a href="#SkCanvas_drawAnnotation_key">key</a>-<a href="#SkCanvas_drawAnnotation_value">value</a> pair, where the <a href="#SkCanvas_drawAnnotation_key">key</a> is
+Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> with an annotation; a <a href="#SkCanvas_drawAnnotation_key">key</a>-<a href="#SkCanvas_drawAnnotation_value">value</a> pair, where the <a href="#SkCanvas_drawAnnotation_key">key</a> is
a null-terminated utf8 string, and optional <a href="#SkCanvas_drawAnnotation_value">value</a> is stored as <a href="undocumented#Data">Data</a>.
Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to
diff --git a/site/user/api/SkIPoint16_Reference.md b/site/user/api/SkIPoint16_Reference.md
index 468a0b72f1..fdc2672d06 100644
--- a/site/user/api/SkIPoint16_Reference.md
+++ b/site/user/api/SkIPoint16_Reference.md
@@ -21,6 +21,7 @@ SkIPoint16 Reference
| name | description |
| --- | --- |
+| <a href="#Property">Property</a> | member values |
| <a href="#Set">Set</a> | replaces all values |
## <a name="Member_Function"></a> Member Function
diff --git a/site/user/api/SkIPoint_Reference.md b/site/user/api/SkIPoint_Reference.md
index cae7fb38ca..9d0435f604 100644
--- a/site/user/api/SkIPoint_Reference.md
+++ b/site/user/api/SkIPoint_Reference.md
@@ -13,6 +13,7 @@ SkIPoint Reference
| <a href="#Member_Function">Member Function</a> | static functions and member methods |
| <a href="#Member">Member</a> | member values |
| <a href="#Operator">Operator</a> | operator overloading methods |
+| <a href="#Related_Function">Related Function</a> | similar methods grouped together |
# <a name="SkIPoint"></a> Struct SkIPoint
<a href="#SkIPoint">SkIPoint</a> holds two 32 bit integer coordinates.
@@ -21,6 +22,8 @@ SkIPoint Reference
| name | description |
| --- | --- |
+| <a href="#Property">Property</a> | member values |
+| <a href="#Set">Set</a> | replaces all values |
## <a name="Member_Function"></a> Member Function
diff --git a/site/user/api/SkIRect_Reference.md b/site/user/api/SkIRect_Reference.md
index 87568a29ff..64ca6b0491 100644
--- a/site/user/api/SkIRect_Reference.md
+++ b/site/user/api/SkIRect_Reference.md
@@ -13,6 +13,7 @@ SkIRect Reference
| <a href="#Member_Function">Member Function</a> | static functions and member methods |
| <a href="#Member">Member</a> | member values |
| <a href="#Operator">Operator</a> | operator overloading methods |
+| <a href="#Related_Function">Related Function</a> | similar methods grouped together |
# <a name="SkIRect"></a> Struct SkIRect
<a href="#SkIRect">SkIRect</a> holds four 32 bit integer coordinates describing the upper and
@@ -25,6 +26,12 @@ its top, it is considered empty.
| name | description |
| --- | --- |
+| <a href="#Inset_Outset_Offset">Inset Outset Offset</a> | moves sides |
+| <a href="#Intersection">Intersection</a> | set to shared bounds |
+| <a href="#Join">Join</a> | set to union of bounds |
+| <a href="#Property">Property</a> | member values, center, validity |
+| <a href="#Set">Set</a> | replaces all values |
+| <a href="#Sorting">Sorting</a> | orders sides |
## <a name="Member_Function"></a> Member Function
@@ -966,6 +973,15 @@ true if members fit in 16-bit word
---
+## <a name="Set"></a> Set
+
+| name | description |
+| --- | --- |
+| <a href="#SkIRect_set">set</a> | sets to (left, top, right, bottom) |
+| <a href="#SkIRect_setEmpty">setEmpty</a> | sets to (0, 0, 0, 0) |
+| <a href="#SkIRect_setLTRB">setLTRB</a> | sets to <a href="undocumented#SkScalar">SkScalar</a> input (left, top, right, bottom) |
+| <a href="#SkIRect_setXYWH">setXYWH</a> | sets to (x, y, width, height) |
+
<a name="SkIRect_setEmpty"></a>
## setEmpty
@@ -1134,6 +1150,7 @@ rect: -10, 35, 5, 60 isEmpty: false
| --- | --- |
| <a href="#SkIRect_inset">inset</a> | moves the sides symmetrically about the center |
| <a href="#SkIRect_offset">offset</a> | translates sides without changing width and height |
+| | <a href="#SkIRect_offset">offset(int32 t dx, int32 t dy)</a> |
| <a href="#SkIRect_offsetTo">offsetTo</a> | translates to (x, y) without changing width and height |
| <a href="#SkIRect_outset">outset</a> | moves the sides symmetrically about the center |
@@ -1491,8 +1508,11 @@ describes an area: <a href="#SkIRect_fLeft">fLeft</a> is less than <a href="#SkI
| <a href="#SkIRect_Intersects">Intersects</a> | returns true if areas overlap |
| <a href="#SkIRect_IntersectsNoEmptyCheck">IntersectsNoEmptyCheck</a> | returns true if areas overlap skips empty check |
| <a href="#SkIRect_contains">contains</a> | returns true if points are equal or inside |
+| | <a href="#SkIRect_contains">contains(int32 t x, int32 t y)</a> const |
| <a href="#SkIRect_containsNoEmptyCheck">containsNoEmptyCheck</a> | returns true if points are equal or inside skips empty check |
+| | <a href="#SkIRect_containsNoEmptyCheck">containsNoEmptyCheck(int32 t left, int32 t top, int32 t right, int32 t bottom)</a> const |
| <a href="#SkIRect_intersect">intersect</a> | sets to shared area; returns true if not empty |
+| | <a href="#SkIRect_intersect">intersect(const SkIRect& r)</a> |
| <a href="#SkIRect_intersectNoEmptyCheck">intersectNoEmptyCheck</a> | sets to shared area; returns true if not empty skips empty check |
| <a href="#SkIRect_quickReject">quickReject</a> | returns true if rectangles do not intersect |
@@ -2088,7 +2108,8 @@ intersection
| name | description |
| --- | --- |
| <a href="#SkIRect_join">join</a> | sets to union of bounds |
-| | join |
+| | <a href="#SkIRect_join">join(int32 t left, int32 t top, int32 t right, int32 t bottom)</a> |
+| | <a href="#SkIRect_join_2">join(const SkIRect& r)</a> |
<a name="SkIRect_join"></a>
## join
diff --git a/site/user/api/SkImageInfo_Reference.md b/site/user/api/SkImageInfo_Reference.md
index 0ad21b609a..4bfb26b244 100644
--- a/site/user/api/SkImageInfo_Reference.md
+++ b/site/user/api/SkImageInfo_Reference.md
@@ -12,6 +12,7 @@ SkImageInfo Reference
| <a href="SkImageInfo_Reference#Image_Info_Constructor">Constructor</a> | functions that construct <a href="SkImageInfo_Reference#SkImageInfo">SkImageInfo</a> |
| <a href="SkImageInfo_Reference#Image_Info_Member_Function">Member Function</a> | static functions and member methods |
| <a href="SkImageInfo_Reference#Image_Info_Operator">Operator</a> | operator overloading methods |
+| <a href="SkImageInfo_Reference#Image_Info_Related_Function">Related Function</a> | similar methods grouped together |
## <a name="Constant"></a> Constant
@@ -220,13 +221,6 @@ incomplete
Describes <a href="SkImage_Reference#Image">Image</a> dimensions and pixel type.
Used for both source images and render-targets (surfaces).
-## <a name="Operator"></a> Operator
-
-| name | description |
-| --- | --- |
-| <a href="#SkImageInfo_notequal1_operator">operator!=(const SkImageInfo& other) const</a> | incomplete |
-| <a href="#SkImageInfo_equal1_operator">operator==(const SkImageInfo& other) const</a> | incomplete |
-
## <a name="Member_Function"></a> Member Function
| name | description |
@@ -266,6 +260,13 @@ Used for both source images and render-targets (surfaces).
| <a href="#SkImageInfo_validate">validate</a> | incomplete |
| <a href="#SkImageInfo_width">width</a> | incomplete |
+## <a name="Related_Function"></a> Related Function
+
+| name | description |
+| --- | --- |
+| <a href="SkImageInfo_Reference#Image_Info_Property">Property</a> | metrics and attributes |
+| <a href="SkImageInfo_Reference#Image_Info_Utility">Utility</a> | rarely called management functions |
+
## <a name="Constructor"></a> Constructor
| name | description |
@@ -274,15 +275,18 @@ Used for both source images and render-targets (surfaces).
| <a href="#SkImageInfo_MakeA8">MakeA8</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a> |
| <a href="#SkImageInfo_MakeN32">MakeN32</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with <a href="SkImageInfo_Reference#Color_Type">Native Color Type</a> |
| <a href="#SkImageInfo_MakeN32Premul">MakeN32Premul</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with <a href="SkImageInfo_Reference#Color_Type">Native Color Type</a>, <a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a> |
-| | <a href="#SkImageInfo_MakeN32Premul">MakeN32Premul</a> |
+| | <a href="#SkImageInfo_MakeN32Premul">MakeN32Premul(int width, int height, sk sp&lt;SkColorSpace&gt; cs = nullptr)</a> |
+| | <a href="#SkImageInfo_MakeN32Premul_2">MakeN32Premul(const SkISize& size)</a> |
| <a href="#SkImageInfo_MakeS32">MakeS32</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with <a href="SkImageInfo_Reference#Color_Type">Native Color Type</a>, sRGB <a href="undocumented#Color_Space">Color Space</a> |
| <a href="#SkImageInfo_MakeUnknown">MakeUnknown</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a> |
-| | <a href="#SkImageInfo_MakeUnknown">MakeUnknown</a> |
+| | <a href="#SkImageInfo_MakeUnknown">MakeUnknown(int width, int height)</a> |
+| | <a href="#SkImageInfo_MakeUnknown_2">MakeUnknown()</a> |
| <a href="#SkImageInfo_empty_constructor">SkImageInfo()</a> | creates with zero dimensions, <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a> |
| <a href="#SkImageInfo_makeAlphaType">makeAlphaType</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with changed <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> |
| <a href="#SkImageInfo_makeColorSpace">makeColorSpace</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with changed <a href="undocumented#Color_Space">Color Space</a> |
| <a href="#SkImageInfo_makeColorType">makeColorType</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with changed <a href="SkImageInfo_Reference#Color_Type">Color Type</a> |
| <a href="#SkImageInfo_makeWH">makeWH</a> | creates <a href="SkImageInfo_Reference#Image_Info">Image Info</a> with changed dimensions |
+| <a href="#SkImageInfo_reset">reset</a> | incomplete |
<a name="SkImageInfo_empty_constructor"></a>
## SkImageInfo
@@ -553,6 +557,26 @@ incomplete
---
+## <a name="Property"></a> Property
+
+| name | description |
+| --- | --- |
+| <a href="#SkImageInfo_alphaType">alphaType</a> | incomplete |
+| <a href="#SkImageInfo_bounds">bounds</a> | incomplete |
+| <a href="#SkImageInfo_bytesPerPixel">bytesPerPixel</a> | incomplete |
+| <a href="#SkImageInfo_colorSpace">colorSpace</a> | incomplete |
+| <a href="#SkImageInfo_colorType">colorType</a> | incomplete |
+| <a href="#SkImageInfo_dimensions">dimensions</a> | incomplete |
+| <a href="#SkImageInfo_gammaCloseToSRGB">gammaCloseToSRGB</a> | incomplete |
+| <a href="#SkImageInfo_height">height</a> | incomplete |
+| <a href="#SkImageInfo_isEmpty">isEmpty</a> | incomplete |
+| <a href="#SkImageInfo_isOpaque">isOpaque</a> | incomplete |
+| <a href="#SkImageInfo_minRowBytes">minRowBytes</a> | incomplete |
+| <a href="#SkImageInfo_minRowBytes64">minRowBytes64</a> | incomplete |
+| <a href="#SkImageInfo_refColorSpace">refColorSpace</a> | incomplete |
+| <a href="#SkImageInfo_shiftPerPixel">shiftPerPixel</a> | incomplete |
+| <a href="#SkImageInfo_width">width</a> | incomplete |
+
<a name="SkImageInfo_width"></a>
## width
@@ -1017,6 +1041,13 @@ incomplete
---
+## <a name="Operator"></a> Operator
+
+| name | description |
+| --- | --- |
+| <a href="#SkImageInfo_notequal1_operator">operator!=(const SkImageInfo& other) const</a> | incomplete |
+| <a href="#SkImageInfo_equal1_operator">operator==(const SkImageInfo& other) const</a> | incomplete |
+
<a name="SkImageInfo_equal1_operator"></a>
## operator==
@@ -1257,6 +1288,19 @@ incomplete
---
+## <a name="Utility"></a> Utility
+
+| name | description |
+| --- | --- |
+| <a href="#SkImageInfo_ByteSizeOverflowed">ByteSizeOverflowed</a> | incomplete |
+| <a href="#SkImageInfo_computeByteSize">computeByteSize</a> | incomplete |
+| <a href="#SkImageInfo_computeMinByteSize">computeMinByteSize</a> | incomplete |
+| <a href="#SkImageInfo_computeOffset">computeOffset</a> | incomplete |
+| <a href="#SkImageInfo_flatten">flatten</a> | incomplete |
+| <a href="#SkImageInfo_unflatten">unflatten</a> | incomplete |
+| <a href="#SkImageInfo_validRowBytes">validRowBytes</a> | incomplete |
+| <a href="#SkImageInfo_validate">validate</a> | incomplete |
+
<a name="SkImageInfo_validate"></a>
## validate
diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md
index a04ae955be..cedb1c24cb 100644
--- a/site/user/api/SkImage_Reference.md
+++ b/site/user/api/SkImage_Reference.md
@@ -55,8 +55,11 @@ drawing.
| name | description |
| --- | --- |
| <a href="#Lazy_Image">Lazy Image</a> | deferred pixel buffer |
+| <a href="#Pixels">Pixels</a> | read and write pixel values |
+| <a href="#Property">Property</a> | values and attributes |
| <a href="SkImage_Reference#Raster_Image">Raster Image</a> | pixels decoded in <a href="undocumented#Raster_Bitmap">Raster Bitmap</a> |
| <a href="#Texture_Image">Texture Image</a> | pixels located on GPU |
+| <a href="#Utility">Utility</a> | rarely called management functions |
## <a name="Class_or_Struct"></a> Class or Struct
@@ -75,11 +78,13 @@ drawing.
| <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | creates <a href="#Image">Image</a> from encoded data |
| <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | creates <a href="#Image">Image</a> from a stream of data |
| <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in two planes |
-| | <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> |
+| | <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, const GrBackendObject nv12TextureHandles[2], const SkISize nv12Sizes[2], GrSurfaceOrigin surfaceOrigin, sk sp&lt;SkColorSpace&gt; colorSpace = nullptr)</a> |
+| | <a href="#SkImage_MakeFromNV12TexturesCopy_2">MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, const GrBackendTexture nv12TextureHandles[2], const SkISize nv12Sizes[2], GrSurfaceOrigin surfaceOrigin, sk sp&lt;SkColorSpace&gt; colorSpace = nullptr)</a> |
| <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | creates <a href="#Image">Image</a> from <a href="undocumented#Picture">Picture</a> |
| <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, with release |
| <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in three planes |
-| | <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> |
+| | <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, const GrBackendObject yuvTextureHandles[3], const SkISize yuvSizes[3], GrSurfaceOrigin surfaceOrigin, sk sp&lt;SkColorSpace&gt; colorSpace = nullptr)</a> |
+| | <a href="#SkImage_MakeFromYUVTexturesCopy_2">MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, const GrBackendTexture yuvTextureHandles[3], const SkISize yuvSizes[3], GrSurfaceOrigin surfaceOrigin, sk sp&lt;SkColorSpace&gt; colorSpace = nullptr)</a> |
| <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copied pixels |
| <a href="#SkImage_MakeRasterData">MakeRasterData</a> | creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a> and shared pixels |
| <a href="#SkImage_asLegacyBitmap">asLegacyBitmap</a> | returns as <a href="undocumented#Raster_Bitmap">Raster Bitmap</a> |
@@ -87,7 +92,8 @@ drawing.
| <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | creates <a href="#Image">Image</a> without dependency on <a href="undocumented#GPU_Texture">GPU Texture</a> |
| <a href="#SkImage_makeRasterImage">makeRasterImage</a> | creates <a href="#Image">Image</a> compatible with <a href="undocumented#Raster_Surface">Raster Surface</a> if possible |
| <a href="#SkImage_makeShader">makeShader</a> | creates <a href="undocumented#Shader">Shader</a>, <a href="SkPaint_Reference#Paint">Paint</a> element that can tile <a href="#Image">Image</a> |
-| | <a href="#SkImage_makeShader">makeShader</a> |
+| | <a href="#SkImage_makeShader">makeShader(SkShader::TileMode tileMode1, SkShader::TileMode tileMode2, const SkMatrix* localMatrix = nullptr)</a> const |
+| | <a href="#SkImage_makeShader_2">makeShader(const SkMatrix* localMatrix = nullptr)</a> const |
| <a href="#SkImage_makeSubset">makeSubset</a> | creates <a href="#Image">Image</a> containing part of original |
| <a href="#SkImage_makeTextureImage">makeTextureImage</a> | creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible |
| <a href="#SkImage_makeWithFilter">makeWithFilter</a> | creates filtered, clipped <a href="#Image">Image</a> |
@@ -240,7 +246,7 @@ static sk_sp&lt;SkImage&gt; MakeFromRaster(const SkPixmap& pixmap, RasterRelease
ReleaseContext releaseContext)
</pre>
-Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a>, sharing <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels. Pixels must remain valid and
+Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a>, sharing <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels. <a href="#Pixels">Pixels</a> must remain valid and
unchanged until <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is called. <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is passed
<a href="#SkImage_MakeFromRaster_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> pixels.
@@ -730,8 +736,8 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
<table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td>
<a href="undocumented#GPU_Context">GPU Context</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td>
-one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
-<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
+one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>,
+<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td>
array of YUV textures on GPU</td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td>
@@ -774,8 +780,8 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
<table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td>
<a href="undocumented#GPU_Context">GPU Context</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td>
-one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
-<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
+one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>,
+<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td>
array of YUV textures on GPU</td>
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td>
@@ -821,8 +827,8 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
<table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td>
<a href="undocumented#GPU_Context">GPU Context</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td>
-one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
-<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
+one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>,
+<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td>
array of YUV textures on GPU</td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td>
@@ -867,8 +873,8 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
<table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td>
<a href="undocumented#GPU_Context">GPU Context</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td>
-one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
-<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
+one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>,
+<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td>
array of YUV textures on GPU</td>
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td>
@@ -1005,6 +1011,7 @@ created <a href="#Image">Image</a>, or nullptr
| <a href="#SkImage_bounds">bounds</a> | returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> as Rectangle |
| <a href="#SkImage_colorSpace">colorSpace</a> | returns <a href="undocumented#Color_Space">Color Space</a> |
| <a href="#SkImage_dimensions">dimensions</a> | returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> |
+| <a href="#SkImage_getTextureHandle">getTextureHandle</a> | returns GPU reference to <a href="#Image">Image</a> as texture |
| <a href="#SkImage_height">height</a> | returns pixel row count |
| <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> | returns if pixels represent a transparency mask |
| <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> | returns if <a href="#Image">Image</a> is created as needed |
@@ -1353,6 +1360,16 @@ transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</
---
+## <a name="Pixels"></a> Pixels
+
+| name | description |
+| --- | --- |
+| <a href="#SkImage_peekPixels">peekPixels</a> | returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> if possible |
+| <a href="#SkImage_readPixels">readPixels</a> | copies and converts pixels |
+| | <a href="#SkImage_readPixels">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY, CachingHint cachingHint = kAllow CachingHint)</a> const |
+| | <a href="#SkImage_readPixels_2">readPixels(const SkPixmap& dst, int srcX, int srcY, CachingHint cachingHint = kAllow CachingHint)</a> const |
+| <a href="#SkImage_scalePixels">scalePixels</a> | scales and converts one <a href="#Image">Image</a> to another |
+
<a name="SkImage_peekPixels"></a>
## peekPixels
@@ -1569,7 +1586,7 @@ Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">colorType</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_alphaType">alphaType</a> must
@@ -1634,7 +1651,7 @@ row to the next. Returns true if pixels are copied. Returns false if:
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr>
</table>
-Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must
@@ -1688,7 +1705,7 @@ converting pixels to match <a href="#SkImage_scalePixels_dst">dst</a>.<a href="S
pixels are copied. Returns false if <a href="#SkImage_scalePixels_dst">dst</a>.addr() is nullptr, or <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> is
less than <a href="#SkImage_scalePixels_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match.
If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must
@@ -1836,6 +1853,10 @@ encoded <a href="#Image">Image</a>, or nullptr
| name | description |
| --- | --- |
+| <a href="#SkImage_encodeToData">encodeToData</a> | returns encoded <a href="#Image">Image</a> as <a href="undocumented#SkData">SkData</a> |
+| | <a href="#SkImage_encodeToData">encodeToData(SkEncodedImageFormat encodedImageFormat, int quality)</a> const |
+| | <a href="#SkImage_encodeToData_2">encodeToData</a> const |
+| <a href="#SkImage_refEncodedData">refEncodedData</a> | returns <a href="#Image">Image</a> encoded in <a href="undocumented#SkData">SkData</a> if present |
| <a href="#SkImage_toString">toString</a> | converts <a href="#Image">Image</a> to machine readable form |
<a name="SkImage_toString"></a>
diff --git a/site/user/api/SkMatrix_Reference.md b/site/user/api/SkMatrix_Reference.md
index 9563cc568f..b1da7d7722 100644
--- a/site/user/api/SkMatrix_Reference.md
+++ b/site/user/api/SkMatrix_Reference.md
@@ -13,6 +13,7 @@ SkMatrix Reference
| <a href="#Constructor">Constructor</a> | functions that construct <a href="SkMatrix_Reference#SkMatrix">SkMatrix</a> |
| <a href="#Member_Function">Member Function</a> | static functions and member methods |
| <a href="#Operator">Operator</a> | operator overloading methods |
+| <a href="#Related_Function">Related Function</a> | similar methods grouped together |
# <a name="SkMatrix"></a> Class SkMatrix
<a href="#Matrix">Matrix</a> holds a 3x3 matrix for transforming coordinates. This allows mapping
@@ -27,48 +28,6 @@ initializes all <a href="#Matrix">Matrix</a> elements with the corresponding map
<a href="#Matrix">Matrix</a> includes a hidden variable that classifies the type of matrix to
improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a href="#SkMatrix_getType">getType</a> is called first.
-## <a name="Constructor"></a> Constructor
-
-| name | description |
-| --- | --- |
-| I | returns a reference to a const identity <a href="#Matrix">Matrix</a> |
-| <a href="#SkMatrix_InvalidMatrix">InvalidMatrix</a> | returns a reference to a const invalid <a href="#Matrix">Matrix</a> |
-| <a href="#SkMatrix_MakeAll">MakeAll</a> | constructs all nine values |
-| <a href="#SkMatrix_MakeRectToRect">MakeRectToRect</a> | constructs from source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a> |
-| <a href="#SkMatrix_MakeScale">MakeScale</a> | constructs from scale in x and y |
-| | <a href="#SkMatrix_MakeScale">MakeScale</a> |
-| <a href="#SkMatrix_MakeTrans">MakeTrans</a> | constructs from translate in x and y |
-| <a href="#SkMatrix_SetAffineIdentity">SetAffineIdentity</a> | sets 3x2 array to identity |
-| <a href="#SkMatrix_asAffine">asAffine</a> | copies to 3x2 array |
-| <a href="#SkMatrix_reset">reset</a> | sets <a href="#Matrix">Matrix</a> to identity |
-| <a href="#SkMatrix_setAffine">setAffine</a> | sets left two columns |
-| <a href="#SkMatrix_setConcat">setConcat</a> | sets to <a href="#Matrix">Matrix</a> parameter multiplied by <a href="#Matrix">Matrix</a> parameter |
-| <a href="#SkMatrix_setIdentity">setIdentity</a> | sets <a href="#Matrix">Matrix</a> to identity |
-| <a href="#SkMatrix_setRSXform">setRSXform</a> | sets to rotate, scale, and translate |
-| <a href="#SkMatrix_setRotate">setRotate</a> | sets to rotate about a point |
-| | <a href="#SkMatrix_setRotate">setRotate</a> |
-| <a href="#SkMatrix_setScale">setScale</a> | sets to scale about a point |
-| | <a href="#SkMatrix_setScale">setScale</a> |
-| <a href="#SkMatrix_setScaleTranslate">setScaleTranslate</a> | sets to scale and translate |
-| <a href="#SkMatrix_setSinCos">setSinCos</a> | sets to rotate and scale about a point |
-| | <a href="#SkMatrix_setSinCos">setSinCos</a> |
-| <a href="#SkMatrix_setSkew">setSkew</a> | sets to skew about a point |
-| | <a href="#SkMatrix_setSkew">setSkew</a> |
-| <a href="#SkMatrix_setTranslate">setTranslate</a> | sets to translate in x and y |
-| | <a href="#SkMatrix_setTranslate">setTranslate</a> |
-
-## <a name="Operator"></a> Operator
-
-| name | description |
-| --- | --- |
-| <a href="#SkMatrix_Concat">Concat</a> | returns the concatenation of <a href="#Matrix">Matrix</a> pair |
-| <a href="#SkMatrix_cheapEqualTo">cheapEqualTo</a> | compares <a href="#Matrix">Matrix</a> pair using memcmp() |
-| <a href="#SkMatrix_invert">invert</a> | returns inverse, if possible |
-| <a href="#SkMatrix_notequal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> | returns true if members are unequal |
-| <a href="#SkMatrix_equal_operator">operator==(const SkMatrix& a, const SkMatrix& b)</a> | returns true if members are equal |
-| <a href="#SkMatrix_array1_operator">operator[](int index)</a> | returns writable reference to <a href="#Matrix">Matrix</a> value |
-| <a href="#SkMatrix_array_operator">operator[](int index) const</a> | returns <a href="#Matrix">Matrix</a> value |
-
## <a name="Member_Function"></a> Member Function
| name | description |
@@ -158,6 +117,51 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h
| <a href="#SkMatrix_setTranslateY">setTranslateY</a> | sets vertical translation |
| <a href="#SkMatrix_toString">toString</a> | converts <a href="#Matrix">Matrix</a> to machine readable form |
+## <a name="Related_Function"></a> Related Function
+
+| name | description |
+| --- | --- |
+| <a href="#Property">Property</a> | values and attributes |
+| <a href="#Set">Set</a> | set one or more matrix values |
+| <a href="#Transform">Transform</a> | map points with <a href="#Matrix">Matrix</a> |
+| <a href="#Utility">Utility</a> | rarely called management functions |
+
+## <a name="Constructor"></a> Constructor
+
+| name | description |
+| --- | --- |
+| I | returns a reference to a const identity <a href="#Matrix">Matrix</a> |
+| <a href="#SkMatrix_InvalidMatrix">InvalidMatrix</a> | returns a reference to a const invalid <a href="#Matrix">Matrix</a> |
+| <a href="#SkMatrix_MakeAll">MakeAll</a> | constructs all nine values |
+| <a href="#SkMatrix_MakeRectToRect">MakeRectToRect</a> | constructs from source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a> |
+| <a href="#SkMatrix_MakeScale">MakeScale</a> | constructs from scale in x and y |
+| | <a href="#SkMatrix_MakeScale">MakeScale(SkScalar sx, SkScalar sy)</a> |
+| | <a href="#SkMatrix_MakeScale_2">MakeScale(SkScalar scale)</a> |
+| <a href="#SkMatrix_MakeTrans">MakeTrans</a> | constructs from translate in x and y |
+| <a href="#SkMatrix_SetAffineIdentity">SetAffineIdentity</a> | sets 3x2 array to identity |
+| <a href="#SkMatrix_asAffine">asAffine</a> | copies to 3x2 array |
+| <a href="#SkMatrix_reset">reset</a> | sets <a href="#Matrix">Matrix</a> to identity |
+| <a href="#SkMatrix_setAffine">setAffine</a> | sets left two columns |
+| <a href="#SkMatrix_setConcat">setConcat</a> | sets to <a href="#Matrix">Matrix</a> parameter multiplied by <a href="#Matrix">Matrix</a> parameter |
+| <a href="#SkMatrix_setIdentity">setIdentity</a> | sets <a href="#Matrix">Matrix</a> to identity |
+| <a href="#SkMatrix_setRSXform">setRSXform</a> | sets to rotate, scale, and translate |
+| <a href="#SkMatrix_setRotate">setRotate</a> | sets to rotate about a point |
+| | <a href="#SkMatrix_setRotate">setRotate(SkScalar degrees, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_setRotate_2">setRotate(SkScalar degrees)</a> |
+| <a href="#SkMatrix_setScale">setScale</a> | sets to scale about a point |
+| | <a href="#SkMatrix_setScale">setScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_setScale_2">setScale(SkScalar sx, SkScalar sy)</a> |
+| <a href="#SkMatrix_setScaleTranslate">setScaleTranslate</a> | sets to scale and translate |
+| <a href="#SkMatrix_setSinCos">setSinCos</a> | sets to rotate and scale about a point |
+| | <a href="#SkMatrix_setSinCos">setSinCos(SkScalar sinValue, SkScalar cosValue, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_setSinCos_2">setSinCos(SkScalar sinValue, SkScalar cosValue)</a> |
+| <a href="#SkMatrix_setSkew">setSkew</a> | sets to skew about a point |
+| | <a href="#SkMatrix_setSkew">setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_setSkew_2">setSkew(SkScalar kx, SkScalar ky)</a> |
+| <a href="#SkMatrix_setTranslate">setTranslate</a> | sets to translate in x and y |
+| | <a href="#SkMatrix_setTranslate">setTranslate(SkScalar dx, SkScalar dy)</a> |
+| | <a href="#SkMatrix_setTranslate_2">setTranslate(const SkVector& v)</a> |
+
<a name="SkMatrix_MakeScale"></a>
## MakeScale
@@ -877,6 +881,18 @@ PDF and XPS.
+## <a name="Operator"></a> Operator
+
+| name | description |
+| --- | --- |
+| <a href="#SkMatrix_Concat">Concat</a> | returns the concatenation of <a href="#Matrix">Matrix</a> pair |
+| <a href="#SkMatrix_cheapEqualTo">cheapEqualTo</a> | compares <a href="#Matrix">Matrix</a> pair using memcmp() |
+| <a href="#SkMatrix_invert">invert</a> | returns inverse, if possible |
+| <a href="#SkMatrix_notequal_operator">operator!=(const SkMatrix& a, const SkMatrix& b)</a> | returns true if members are unequal |
+| <a href="#SkMatrix_equal_operator">operator==(const SkMatrix& a, const SkMatrix& b)</a> | returns true if members are equal |
+| <a href="#SkMatrix_array1_operator">operator[](int index)</a> | returns writable reference to <a href="#Matrix">Matrix</a> value |
+| <a href="#SkMatrix_array_operator">operator[](int index) const</a> | returns <a href="#Matrix">Matrix</a> value |
+
<a name="SkMatrix_array_operator"></a>
## operator[]
@@ -1252,19 +1268,25 @@ after dirty cache: x = 66
| <a href="#SkMatrix_postConcat">postConcat</a> | post-multiplies <a href="#Matrix">Matrix</a> by <a href="#Matrix">Matrix</a> parameter |
| <a href="#SkMatrix_postIDiv">postIDiv</a> | post-multiplies <a href="#Matrix">Matrix</a> by inverse scale |
| <a href="#SkMatrix_postRotate">postRotate</a> | post-multiplies <a href="#Matrix">Matrix</a> by rotation |
-| | <a href="#SkMatrix_postRotate">postRotate</a> |
+| | <a href="#SkMatrix_postRotate">postRotate(SkScalar degrees, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_postRotate_2">postRotate(SkScalar degrees)</a> |
| <a href="#SkMatrix_postScale">postScale</a> | post-multiplies <a href="#Matrix">Matrix</a> by scale |
-| | <a href="#SkMatrix_postScale">postScale</a> |
+| | <a href="#SkMatrix_postScale">postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_postScale_2">postScale(SkScalar sx, SkScalar sy)</a> |
| <a href="#SkMatrix_postSkew">postSkew</a> | post-multiplies <a href="#Matrix">Matrix</a> by skew |
-| | <a href="#SkMatrix_postSkew">postSkew</a> |
+| | <a href="#SkMatrix_postSkew">postSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_postSkew_2">postSkew(SkScalar kx, SkScalar ky)</a> |
| <a href="#SkMatrix_postTranslate">postTranslate</a> | post-multiplies <a href="#Matrix">Matrix</a> by translation |
| <a href="#SkMatrix_preConcat">preConcat</a> | pre-multiplies <a href="#Matrix">Matrix</a> by <a href="#Matrix">Matrix</a> parameter |
| <a href="#SkMatrix_preRotate">preRotate</a> | pre-multiplies <a href="#Matrix">Matrix</a> by rotation |
-| | <a href="#SkMatrix_preRotate">preRotate</a> |
+| | <a href="#SkMatrix_preRotate">preRotate(SkScalar degrees, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_preRotate_2">preRotate(SkScalar degrees)</a> |
| <a href="#SkMatrix_preScale">preScale</a> | pre-multiplies <a href="#Matrix">Matrix</a> by scale |
-| | <a href="#SkMatrix_preScale">preScale</a> |
+| | <a href="#SkMatrix_preScale">preScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_preScale_2">preScale(SkScalar sx, SkScalar sy)</a> |
| <a href="#SkMatrix_preSkew">preSkew</a> | pre-multiplies <a href="#Matrix">Matrix</a> by skew |
-| | <a href="#SkMatrix_preSkew">preSkew</a> |
+| | <a href="#SkMatrix_preSkew">preSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)</a> |
+| | <a href="#SkMatrix_preSkew_2">preSkew(SkScalar kx, SkScalar ky)</a> |
| <a href="#SkMatrix_preTranslate">preTranslate</a> | pre-multiplies <a href="#Matrix">Matrix</a> by translation |
| <a href="#SkMatrix_set">set</a> | sets one value |
| <a href="#SkMatrix_set9">set9</a> | sets all values from <a href="#Scalar">Scalar</a> array |
@@ -3298,18 +3320,23 @@ ScaleX: 2 SkewY: 5 SkewX: 3 ScaleY: 6 TransX: 4 TransY: 7
| --- | --- |
| <a href="#SkMatrix_mapHomogeneousPoints">mapHomogeneousPoints</a> | maps <a href="undocumented#Point3">Point3</a> array |
| <a href="#SkMatrix_mapPoints">mapPoints</a> | maps <a href="SkPoint_Reference#Point">Point</a> array |
-| | <a href="#SkMatrix_mapPoints">mapPoints</a> |
+| | <a href="#SkMatrix_mapPoints">mapPoints(SkPoint dst[], const SkPoint src[], int count)</a> const |
+| | <a href="#SkMatrix_mapPoints_2">mapPoints(SkPoint pts[], int count)</a> const |
| <a href="#SkMatrix_mapRadius">mapRadius</a> | returns mean radius of mapped <a href="undocumented#Circle">Circle</a> |
| <a href="#SkMatrix_mapRect">mapRect</a> | returns bounds of mapped <a href="SkRect_Reference#Rect">Rect</a> |
-| | <a href="#SkMatrix_mapRect">mapRect</a> |
+| | <a href="#SkMatrix_mapRect">mapRect(SkRect* dst, const SkRect& src)</a> const |
+| | <a href="#SkMatrix_mapRect_2">mapRect(SkRect* rect)</a> const |
| <a href="#SkMatrix_mapRectScaleTranslate">mapRectScaleTranslate</a> | returns bounds of mapped <a href="SkRect_Reference#Rect">Rect</a> |
| <a href="#SkMatrix_mapRectToQuad">mapRectToQuad</a> | maps <a href="SkRect_Reference#Rect">Rect</a> to <a href="SkPoint_Reference#Point">Point</a> array |
| <a href="#SkMatrix_mapVector">mapVector</a> | maps <a href="SkPoint_Reference#Vector">Vector</a> |
-| | <a href="#SkMatrix_mapVector">mapVector</a> |
+| | <a href="#SkMatrix_mapVector">mapVector(SkScalar dx, SkScalar dy, SkVector* result)</a> const |
+| | <a href="#SkMatrix_mapVector_2">mapVector(SkScalar dx, SkScalar dy)</a> const |
| <a href="#SkMatrix_mapVectors">mapVectors</a> | maps <a href="SkPoint_Reference#Vector">Vector</a> array |
-| | <a href="#SkMatrix_mapVectors">mapVectors</a> |
+| | <a href="#SkMatrix_mapVectors">mapVectors(SkVector dst[], const SkVector src[], int count)</a> const |
+| | <a href="#SkMatrix_mapVectors_2">mapVectors(SkVector vecs[], int count)</a> const |
| <a href="#SkMatrix_mapXY">mapXY</a> | maps <a href="SkPoint_Reference#Point">Point</a> |
-| | <a href="#SkMatrix_mapXY">mapXY</a> |
+| | <a href="#SkMatrix_mapXY">mapXY(SkScalar x, SkScalar y, SkPoint* result)</a> const |
+| | <a href="#SkMatrix_mapXY_2">mapXY(SkScalar x, SkScalar y)</a> const |
<a name="SkMatrix_mapPoints"></a>
## mapPoints
diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md
index 635142d06a..b9df684bef 100644
--- a/site/user/api/SkPaint_Reference.md
+++ b/site/user/api/SkPaint_Reference.md
@@ -91,6 +91,7 @@ Multiple colors are drawn either by using multiple paints or with objects like
| <a href="#Text_Size">Text Size</a> | overall height in points |
| <a href="#Text_Skew_X">Text Skew X</a> | text horizontal slant |
| <a href="#Typeface_Methods">Typeface Methods</a> | get and set <a href="undocumented#Typeface">Typeface</a> |
+| <a href="#Utility">Utility</a> | rarely called management functions |
| <a href="#Vertical_Text">Vertical Text</a> | orient text from top to bottom |
## <a name="Constant"></a> Constant
@@ -5109,6 +5110,17 @@ fast computed bounds
---
+## <a name="Utility"></a> Utility
+
+| name | description |
+| --- | --- |
+| <a href="#SkPaint_containsText">containsText</a> | returns if all text corresponds to <a href="#Glyph">Glyphs</a> |
+| <a href="#SkPaint_countText">countText</a> | returns number of <a href="#Glyph">Glyphs</a> in text |
+| <a href="#SkPaint_glyphsToUnichars">glyphsToUnichars</a> | converts <a href="#Glyph">Glyphs</a> into text |
+| <a href="#SkPaint_nothingToDraw">nothingToDraw</a> | returns true if <a href="#Paint">Paint</a> prevents all drawing |
+| <a href="#SkPaint_textToGlyphs">textToGlyphs</a> | converts text into glyph indices |
+| <a href="#SkPaint_toString">toString</a> | converts <a href="#Paint">Paint</a> to machine readable form |
+
<a name="SkPaint_toString"></a>
## toString
diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md
index 37871ba3f1..9de370b4d1 100644
--- a/site/user/api/SkPath_Reference.md
+++ b/site/user/api/SkPath_Reference.md
@@ -118,7 +118,10 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co
| <a href="#Interpolate">Interpolate</a> | weighted average of <a href="#Path">Path</a> pair |
| <a href="#Last_Point">Last Point</a> | final <a href="SkPoint_Reference#Point">Point</a> in <a href="#Contour">Contour</a> |
| <a href="#Point_Array">Point Array</a> | end points and control points for lines and curves |
+| <a href="#Property">Property</a> | metrics and attributes |
| <a href="#Quad">Quad</a> | Bezier_Curve described by second-order polynomial |
+| <a href="#Transform">Transform</a> | modify all points |
+| <a href="#Utility">Utility</a> | rarely called management functions |
| <a href="#SkPath_Verb">Verb</a> | line and curve type |
| <a href="#Verb_Array">Verb Array</a> | line and curve type for points |
| <a href="#Volatile">Volatile</a> | caching attribute |
@@ -1884,13 +1887,15 @@ rotated circle bounds = 14.6447, 9.64466, 85.3553, 80.3553
| <a href="#SkPath_ConvertConicToQuads">ConvertConicToQuads</a> | approximates <a href="#Conic">Conic</a> with <a href="#Quad">Quad</a> array |
| <a href="#SkPath_ConvertToNonInverseFillType">ConvertToNonInverseFillType</a> | returns <a href="#Fill_Type">Fill Type</a> representing inside geometry |
| <a href="#SkPath_dump_2">dump</a> | sends text representation using floats to standard output |
-| | dump |
+| | <a href="#SkPath_dump">dump(SkWStream* stream, bool forceClose, bool dumpAsHex)</a> const |
+| | <a href="#SkPath_dump_2">dump</a> const |
| <a href="#SkPath_dumpHex">dumpHex</a> | sends text representation using hexadecimal to standard output |
| <a href="#SkPath_getSegmentMasks">getSegmentMasks</a> | returns types in <a href="#Verb_Array">Verb Array</a> |
| <a href="#SkPath_incReserve">incReserve</a> | reserves space for additional data |
| <a href="#SkPath_readFromMemory">readFromMemory</a> | Initializes from buffer |
| <a href="#SkPath_serialize">serialize</a> | copies data to buffer |
| <a href="#SkPath_setLastPt">setLastPt</a> | replaces <a href="#Last_Point">Last Point</a> |
+| | <a href="#SkPath_setLastPt">setLastPt(SkScalar x, SkScalar y)</a> |
| <a href="#SkPath_updateBoundsCache">updateBoundsCache</a> | refreshes result of <a href="#SkPath_getBounds">getBounds</a> |
| <a href="#SkPath_writeToMemory">writeToMemory</a> | copies data to buffer |
@@ -2044,25 +2049,34 @@ number of additional <a href="#Point">Points</a> to allocate</td>
| <a href="#SkPath_addArc">addArc</a> | adds one <a href="#Contour">Contour</a> containing <a href="#Arc">Arc</a> |
| <a href="#SkPath_addCircle">addCircle</a> | adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Circle">Circle</a> |
| <a href="#SkPath_addOval">addOval</a> | adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Oval">Oval</a> |
-| | <a href="#SkPath_addOval">addOval</a> |
+| | <a href="#SkPath_addOval">addOval(const SkRect& oval, Direction dir = kCW Direction)</a> |
+| | <a href="#SkPath_addOval_2">addOval(const SkRect& oval, Direction dir, unsigned start)</a> |
| <a href="#SkPath_addPath">addPath</a> | adds contents of <a href="#Path">Path</a> |
-| | <a href="#SkPath_addPath">addPath</a> |
-| | <a href="#SkPath_addPath">addPath</a> |
+| | <a href="#SkPath_addPath">addPath(const SkPath& src, SkScalar dx, SkScalar dy, AddPathMode mode = kAppend AddPathMode)</a> |
+| | <a href="#SkPath_addPath_2">addPath(const SkPath& src, AddPathMode mode = kAppend AddPathMode)</a> |
+| | <a href="#SkPath_addPath_3">addPath(const SkPath& src, const SkMatrix& matrix, AddPathMode mode = kAppend AddPathMode)</a> |
| <a href="#SkPath_addPoly">addPoly</a> | adds one <a href="#Contour">Contour</a> containing connected lines |
| <a href="#SkPath_addRRect">addRRect</a> | adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Round_Rect">Round Rect</a> |
-| | <a href="#SkPath_addRRect">addRRect</a> |
+| | <a href="#SkPath_addRRect">addRRect(const SkRRect& rrect, Direction dir = kCW Direction)</a> |
+| | <a href="#SkPath_addRRect_2">addRRect(const SkRRect& rrect, Direction dir, unsigned start)</a> |
| <a href="#SkPath_addRect">addRect</a> | adds one <a href="#Contour">Contour</a> containing <a href="SkRect_Reference#Rect">Rect</a> |
-| | <a href="#SkPath_addRect">addRect</a> |
-| | <a href="#SkPath_addRect">addRect</a> |
+| | <a href="#SkPath_addRect">addRect(const SkRect& rect, Direction dir = kCW Direction)</a> |
+| | <a href="#SkPath_addRect_2">addRect(const SkRect& rect, Direction dir, unsigned start)</a> |
+| | <a href="#SkPath_addRect_3">addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom, Direction dir = kCW Direction)</a> |
| <a href="#SkPath_addRoundRect">addRoundRect</a> | adds one <a href="#Contour">Contour</a> containing <a href="undocumented#Round_Rect">Round Rect</a> with common corner radii |
-| | <a href="#SkPath_addRoundRect">addRoundRect</a> |
+| | <a href="#SkPath_addRoundRect">addRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, Direction dir = kCW Direction)</a> |
+| | <a href="#SkPath_addRoundRect_2">addRoundRect(const SkRect& rect, const SkScalar radii[], Direction dir = kCW Direction)</a> |
| <a href="#SkPath_arcTo">arcTo</a> | appends <a href="#Arc">Arc</a> |
+| | <a href="#SkPath_arcTo">arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool forceMoveTo)</a> |
| <a href="#SkPath_close">close</a> | makes last <a href="#Contour">Contour</a> a loop |
| <a href="#SkPath_cubicTo">cubicTo</a> | appends <a href="#Cubic">Cubic</a> |
+| | <a href="#SkPath_cubicTo">cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)</a> |
| <a href="#SkPath_lineTo">lineTo</a> | appends <a href="undocumented#Line">Line</a> |
-| | <a href="#SkPath_lineTo">lineTo</a> |
+| | <a href="#SkPath_lineTo">lineTo(SkScalar x, SkScalar y)</a> |
+| | <a href="#SkPath_lineTo_2">lineTo(const SkPoint& p)</a> |
| <a href="#SkPath_moveTo">moveTo</a> | starts <a href="#Contour">Contour</a> |
-| | <a href="#SkPath_moveTo">moveTo</a> |
+| | <a href="#SkPath_moveTo">moveTo(SkScalar x, SkScalar y)</a> |
+| | <a href="#SkPath_moveTo_2">moveTo(const SkPoint& p)</a> |
| <a href="#SkPath_rArcTo">rArcTo</a> | appends <a href="#Arc">Arc</a> relative to <a href="#Last_Point">Last Point</a> |
| <a href="#SkPath_rConicTo">rConicTo</a> | appends <a href="#Conic">Conic</a> relative to <a href="#Last_Point">Last Point</a> |
| <a href="#SkPath_rCubicTo">rCubicTo</a> | appends <a href="#Cubic">Cubic</a> relative to <a href="#Last_Point">Last Point</a> |
@@ -2250,7 +2264,8 @@ offset from <a href="#Last_Point">Last Point</a> y to <a href="undocumented#Line
---
-# <a name="Quad"></a> Quad
+## <a name="Quad"></a> Quad
+
<a href="#Quad">Quad</a> describes a quadratic Bezier, a second-order curve identical to a section
of a parabola. <a href="#Quad">Quad</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, curves towards a control <a href="SkPoint_Reference#Point">Point</a>,
and then curves to an end <a href="SkPoint_Reference#Point">Point</a>.
@@ -2381,7 +2396,8 @@ offset from <a href="#Last_Point">Last Point</a> x to <a href="#Quad">Quad</a> e
---
-# <a name="Conic"></a> Conic
+## <a name="Conic"></a> Conic
+
<a href="#Conic">Conic</a> describes a conical section: a piece of an ellipse, or a piece of a
parabola, or a piece of a hyperbola. <a href="#Conic">Conic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>,
curves towards a control <a href="SkPoint_Reference#Point">Point</a>, and then curves to an end <a href="SkPoint_Reference#Point">Point</a>. The influence
@@ -2586,7 +2602,8 @@ weight of added <a href="#Conic">Conic</a></td>
---
-# <a name="Cubic"></a> Cubic
+## <a name="Cubic"></a> Cubic
+
<a href="#Cubic">Cubic</a> describes a Bezier_Curve segment described by a third-order polynomial.
<a href="#Cubic">Cubic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, curving towards the first control <a href="SkPoint_Reference#Point">Point</a>;
and curves from the end <a href="SkPoint_Reference#Point">Point</a> towards the second control <a href="SkPoint_Reference#Point">Point</a>.
@@ -4063,9 +4080,11 @@ overwritten, translated copy of <a href="#Path">Path</a>; may be nullptr</td>
| name | description |
| --- | --- |
| <a href="#SkPath_offset">offset</a> | translates <a href="#Point_Array">Point Array</a> |
-| | offset |
+| | <a href="#SkPath_offset">offset(SkScalar dx, SkScalar dy, SkPath* dst)</a> const |
+| | <a href="#SkPath_offset_2">offset(SkScalar dx, SkScalar dy)</a> |
| <a href="#SkPath_transform">transform</a> | applies <a href="SkMatrix_Reference#Matrix">Matrix</a> to <a href="#Point_Array">Point Array</a> and <a href="#Weight">Weights</a> |
-| | transform |
+| | <a href="#SkPath_transform">transform(const SkMatrix& matrix, SkPath* dst)</a> const |
+| | <a href="#SkPath_transform_2">transform(const SkMatrix& matrix)</a> |
<a name="SkPath_offset_2"></a>
@@ -4628,7 +4647,8 @@ length = 68; returned by readFromMemory = 64
---
-# <a name="Generation_ID"></a> Generation ID
+## <a name="Generation_ID"></a> Generation ID
+
<a href="#Generation_ID">Generation ID</a> provides a quick way to check if <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, or
<a href="#Conic_Weight">Conic Weight</a> has changed. <a href="#Generation_ID">Generation ID</a> is not a hash; identical <a href="#Path">Paths</a> will
not necessarily have matching <a href="SkPath_Reference#Generation_ID">Generation IDs</a>.
diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md
index 97753c3bbd..454f6fadef 100644
--- a/site/user/api/SkPixmap_Reference.md
+++ b/site/user/api/SkPixmap_Reference.md
@@ -31,10 +31,10 @@ to manage pixel memory; <a href="undocumented#Pixel_Ref">Pixel Ref</a> is safe a
| --- | --- |
| <a href="#Image_Info_Access">Image Info Access</a> | returns all or part of <a href="SkImageInfo_Reference#Image_Info">Image Info</a> |
| <a href="#Initialization">Initialization</a> | sets fields for use |
+| <a href="#Pixels">Pixels</a> | read and write pixel values |
| <a href="#Readable_Address">Readable Address</a> | returns read only pixels |
| <a href="#Reader">Reader</a> | examine pixel value |
| <a href="#Writable_Address">Writable Address</a> | returns writable pixels |
-| <a href="#Writer">Writer</a> | copy to pixel values |
## <a name="Constructor"></a> Constructor
@@ -1605,7 +1605,21 @@ is drawn after overwriting bottom half float color with top half float color.</d
---
-## <a name="Writer"></a> Writer
+## <a name="Pixels"></a> Pixels
+
+| name | description |
+| --- | --- |
+| <a href="#SkPixmap_erase">erase</a> | writes <a href="undocumented#Color">Color</a> to pixels |
+| | <a href="#SkPixmap_erase">erase(SkColor color, const SkIRect& subset)</a> const |
+| | <a href="#SkPixmap_erase_2">erase(SkColor color)</a> const |
+| | <a href="#SkPixmap_erase_3">erase(const SkColor4f& color, const SkIRect* subset = nullptr)</a> const |
+| <a href="#SkPixmap_readPixels">readPixels</a> | copies and converts pixels |
+| | <a href="#SkPixmap_readPixels">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY, SkTransferFunctionBehavior behavior)</a> const |
+| | <a href="#SkPixmap_readPixels_2">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes)</a> const |
+| | <a href="#SkPixmap_readPixels_3">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY)</a> const |
+| | <a href="#SkPixmap_readPixels_4">readPixels(const SkPixmap& dst, int srcX, int srcY)</a> const |
+| | <a href="#SkPixmap_readPixels_5">readPixels(const SkPixmap& dst)</a> const |
+| <a href="#SkPixmap_scalePixels">scalePixels</a> | scales and converts pixels |
<a name="SkPixmap_readPixels"></a>
## readPixels
@@ -1623,7 +1637,7 @@ exceed <a href="#Pixmap">Pixmap</a> (<a href="#SkPixmap_width">width</a>, <a hre
row to the next. Returns true if pixels are copied. Returns false if
<a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorType">colorType</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_alphaType">alphaType</a> must
@@ -1686,7 +1700,7 @@ exceed <a href="#Pixmap">Pixmap</a> (<a href="#SkPixmap_width">width</a>, <a hre
row to the next. Returns true if pixels are copied. Returns false if
<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_2_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorType">colorType</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_alphaType">alphaType</a> must
@@ -1735,7 +1749,7 @@ exceed <a href="#Pixmap">Pixmap</a> (<a href="#SkPixmap_width">width</a>, <a hre
row to the next. Returns true if pixels are copied. Returns false if
<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_3_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorType">colorType</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_alphaType">alphaType</a> must
@@ -1788,7 +1802,7 @@ exceed <a href="#Pixmap">Pixmap</a> (<a href="#SkPixmap_width">width</a>, <a hre
Returns false if <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_rowBytes">rowBytes</a> is less than
<a href="#SkPixmap_readPixels_4_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_colorType">colorType</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_alphaType">alphaType</a> must
@@ -1836,7 +1850,7 @@ Copies pixels inside <a href="#SkPixmap_bounds">bounds</a> to <a href="#SkPixmap
Returns false if <a href="#SkPixmap_readPixels_5_dst">dst</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_5_dst">dst</a>.<a href="#SkPixmap_rowBytes">rowBytes</a> is less than
<a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_readPixels_5_dst">dst</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
@@ -1877,7 +1891,7 @@ converting pixels to match <a href="#SkPixmap_scalePixels_dst">dst</a>.<a href="
pixels are copied. Returns false if <a href="#SkPixmap_scalePixels_dst">dst</a>.<a href="#SkPixmap_addr">addr</a> is nullptr, or <a href="#SkPixmap_scalePixels_dst">dst</a>.<a href="#SkPixmap_rowBytes">rowBytes</a> is
less than <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>.
-Pixels are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
+<a href="#Pixels">Pixels</a> are copied only if pixel conversion is possible. If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is
<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_colorType">colorType</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match.
If <a href="#Pixmap">Pixmap</a> <a href="#SkPixmap_alphaType">alphaType</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkPixmap_scalePixels_dst">dst</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> must
diff --git a/site/user/api/SkPoint_Reference.md b/site/user/api/SkPoint_Reference.md
index a7f759a206..bf387f1036 100644
--- a/site/user/api/SkPoint_Reference.md
+++ b/site/user/api/SkPoint_Reference.md
@@ -23,6 +23,8 @@ SkPoint Reference
| name | description |
| --- | --- |
| <a href="#SkPoint_Offset">Offset</a> | moves sides |
+| <a href="#Property">Property</a> | member values |
+| <a href="#Set">Set</a> | replaces all values |
## <a name="Member_Function"></a> Member Function
@@ -229,12 +231,14 @@ pt.isZero() == true
| name | description |
| --- | --- |
| <a href="#SkPoint_iset">iset</a> | sets to integer input |
-| | iset |
+| | <a href="#SkPoint_iset">iset(int32 t x, int32 t y)</a> |
+| | <a href="#SkPoint_iset_2">iset(const SkIPoint& p)</a> |
| <a href="#SkPoint_normalize">normalize</a> | sets length to one, preserving direction |
| <a href="#SkPoint_set">set</a> | sets to <a href="undocumented#SkScalar">SkScalar</a> input |
| <a href="#SkPoint_setAbs">setAbs</a> | sets sign of both members to positive |
| <a href="#SkPoint_setLength">setLength</a> | sets straight-line distance to origin |
-| | <a href="#SkPoint_setLength">setLength</a> |
+| | <a href="#SkPoint_setLength">setLength(SkScalar length)</a> |
+| | <a href="#SkPoint_setLength_2">setLength(SkScalar x, SkScalar y, SkScalar length)</a> |
| <a href="#SkPoint_setNormalize">setNormalize</a> | sets length to one, in direction of (x, y) |
<a name="SkPoint_set"></a>
@@ -386,10 +390,12 @@ pt: nan, -nan abs: nan, nan
| --- | --- |
| <a href="#SkPoint_Normalize">Normalize</a> | sets length to one, and returns prior length |
| <a href="#SkPoint_Offset">Offset</a> | translates <a href="#Point">Point</a> array |
-| | <a href="#SkPoint_Offset">Offset</a> |
+| | <a href="#SkPoint_Offset">Offset(SkPoint points[], int count, const SkVector& offset)</a> |
+| | <a href="#SkPoint_Offset_2">Offset(SkPoint points[], int count, SkScalar dx, SkScalar dy)</a> |
| <a href="#SkPoint_offset">offset</a> | translates <a href="#Point">Point</a> |
| <a href="#SkPoint_scale">scale</a> | multiplies <a href="#Point">Point</a> by scale factor |
-| | scale |
+| | <a href="#SkPoint_scale">scale(SkScalar scale, SkPoint* dst)</a> const |
+| | <a href="#SkPoint_scale_2">scale(SkScalar value)</a> |
<a name="SkPoint_Offset"></a>
## Offset
diff --git a/site/user/api/SkRect_Reference.md b/site/user/api/SkRect_Reference.md
index f807e96e5d..61cb9a2cc8 100644
--- a/site/user/api/SkRect_Reference.md
+++ b/site/user/api/SkRect_Reference.md
@@ -34,7 +34,9 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit
| <a href="#Inset_Outset_Offset">Inset Outset Offset</a> | moves sides |
| <a href="#Intersection">Intersection</a> | set to shared bounds |
| <a href="#Join">Join</a> | set to union of bounds |
+| <a href="#Property">Property</a> | member values, center, validity |
| <a href="#Rounding">Rounding</a> | adjust to integer bounds |
+| <a href="#Set">Set</a> | replaces all values |
| <a href="#Sorting">Sorting</a> | orders sides |
## <a name="Member_Function"></a> Member Function
@@ -486,7 +488,8 @@ integer unsorted bounds</td>
| <a href="#SkRect_centerX">centerX</a> | returns midpoint in x |
| <a href="#SkRect_centerY">centerY</a> | returns midpoint in y |
| <a href="#SkRect_dump_2">dump</a> | sends text representation to standard output using floats |
-| | dump |
+| | <a href="#SkRect_dump">dump(bool asHex)</a> const |
+| | <a href="#SkRect_dump_2">dump</a> const |
| <a href="#SkRect_dumpHex">dumpHex</a> | sends text representation to standard output using hexadecimal |
| <a href="#SkRect_height">height</a> | returns span in y |
| <a href="#SkRect_isEmpty">isEmpty</a> | returns true if width or height are zero or negative |
@@ -1176,6 +1179,7 @@ added: nan, 8 count: 4 rect: 0, 0, 0, 0 success: false
| name | description |
| --- | --- |
| <a href="#SkRect_set">set</a> | sets to <a href="undocumented#SkScalar">SkScalar</a> input (left, top, right, bottom) and others |
+| | <a href="#SkRect_set">set(const SkIRect& src)</a> |
| <a href="#SkRect_setEmpty">setEmpty</a> | sets to (0, 0, 0, 0) |
| <a href="#SkRect_setLTRB">setLTRB</a> | sets to <a href="undocumented#SkScalar">SkScalar</a> input (left, top, right, bottom) |
| <a href="#SkRect_setWH">setWH</a> | sets to <a href="undocumented#SkScalar">SkScalar</a> input (0, 0, width, height) |
@@ -1582,6 +1586,7 @@ rect2: {0, 0, 1, 2}
| --- | --- |
| <a href="#SkRect_inset">inset</a> | moves the sides symmetrically about the center |
| <a href="#SkRect_offset">offset</a> | translates sides without changing width and height |
+| | <a href="#SkRect_offset">offset(SkScalar dx, SkScalar dy)</a> |
| <a href="#SkRect_offsetTo">offsetTo</a> | translates to (x, y) without changing width and height |
| <a href="#SkRect_outset">outset</a> | moves the sides symmetrically about the center |
@@ -1938,8 +1943,11 @@ describes an area: <a href="#SkRect_fLeft">fLeft</a> is less than <a href="#SkRe
| --- | --- |
| <a href="#SkRect_Intersects">Intersects</a> | returns true if areas overlap |
| <a href="#SkRect_contains">contains</a> | returns true if points are equal or inside |
+| | <a href="#SkRect_contains">contains(const SkRect& r)</a> const |
| <a href="#SkRect_intersect">intersect</a> | sets to shared area; returns true if not empty |
+| | <a href="#SkRect_intersect">intersect(const SkRect& r)</a> |
| <a href="#SkRect_intersects">intersects</a> | returns true if areas overlap |
+| | <a href="#SkRect_intersects">intersects(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom)</a> const |
<a name="SkRect_contains"></a>
## contains
@@ -2294,6 +2302,7 @@ intersection
| name | description |
| --- | --- |
| <a href="#SkRect_join">join</a> | sets to union of bounds |
+| | <a href="#SkRect_join">join(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom)</a> |
| <a href="#SkRect_joinNonEmptyArg">joinNonEmptyArg</a> | sets to union of bounds, asserting that argument is not empty |
| <a href="#SkRect_joinPossiblyEmptyRect">joinPossiblyEmptyRect</a> | sets to union of bounds. Skips empty check for both |
@@ -2461,8 +2470,10 @@ sorted: 10, 0, 55, 100
| name | description |
| --- | --- |
| <a href="#SkRect_round_2">round</a> | sets members to nearest integer value |
+| | <a href="#SkRect_round">round(SkIRect* dst)</a> const |
| <a href="#SkRect_roundIn">roundIn</a> | sets members to nearest integer value towards opposite |
| <a href="#SkRect_roundOut">roundOut</a> | sets members to nearest integer value away from opposite |
+| | <a href="#SkRect_roundOut">roundOut(SkIRect* dst)</a> const |
<a name="SkRect_round"></a>
## round
diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md
index 901eeb9f35..a3b675e180 100644
--- a/site/user/api/SkSurface_Reference.md
+++ b/site/user/api/SkSurface_Reference.md
@@ -1389,11 +1389,13 @@ are not captured. <a href="SkImage_Reference#Image">Image</a> allocation is acco
| name | description |
| --- | --- |
| <a href="#SkSurface_draw">draw</a> | draws <a href="#Surface">Surface</a> contents to canvas |
-| | draw |
+| | <a href="#SkSurface_draw">draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint)</a> |
+| | <a href="#SkSurface_draw_2">draw(SkDeferredDisplayList* deferredDisplayList)</a> |
| <a href="#SkSurface_peekPixels">peekPixels</a> | copies <a href="#Surface">Surface</a> parameters to <a href="SkPixmap_Reference#Pixmap">Pixmap</a> |
| <a href="#SkSurface_readPixels">readPixels</a> | copies <a href="SkRect_Reference#Rect">Rect</a> of pixels |
-| | <a href="#SkSurface_readPixels">readPixels</a> |
-| | <a href="#SkSurface_readPixels">readPixels</a> |
+| | <a href="#SkSurface_readPixels">readPixels(const SkPixmap& dst, int srcX, int srcY)</a> |
+| | <a href="#SkSurface_readPixels_2">readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY)</a> |
+| | <a href="#SkSurface_readPixels_3">readPixels(const SkBitmap& dst, int srcX, int srcY)</a> |
<a name="SkSurface_draw"></a>
## draw
diff --git a/tools/bookmaker/bookmaker.h b/tools/bookmaker/bookmaker.h
index 96372756a1..d1b6382320 100644
--- a/tools/bookmaker/bookmaker.h
+++ b/tools/bookmaker/bookmaker.h
@@ -767,6 +767,11 @@ public:
kSubtractFrom,
};
+ enum class Format {
+ kIncludeReturn,
+ kOmitReturn,
+ };
+
Definition() {}
Definition(const char* start, const char* end, int line, Definition* parent)
@@ -843,7 +848,7 @@ public:
string extractText(TrimExtract trimExtract) const;
string fiddleName() const;
const Definition* findClone(string match) const;
- string formatFunction() const;
+ string formatFunction(Format format) const;
const Definition* hasChild(MarkType markType) const;
bool hasMatch(const string& name) const;
const Definition* hasParam(const string& ref) const;
@@ -1181,11 +1186,11 @@ public:
};
enum class Resolvable {
- kNo, // neither resolved nor output
- kYes, // resolved, output
- kOut, // not resolved, but output
+ kNo, // neither resolved nor output
+ kYes, // resolved, output
+ kOut, // not resolved, but output
kLiteral, // output untouched (FIXME: is this really different from kOut?)
- kClone, // resolved, output, with references to clones as well
+ kClone, // resolved, output, with references to clones as well
};
enum class Exemplary {
diff --git a/tools/bookmaker/definition.cpp b/tools/bookmaker/definition.cpp
index 757169b1a9..25d154386d 100644
--- a/tools/bookmaker/definition.cpp
+++ b/tools/bookmaker/definition.cpp
@@ -897,7 +897,7 @@ bool Definition::crossCheckInside(const char* start, const char* end,
return false;
}
-string Definition::formatFunction() const {
+string Definition::formatFunction(Format format) const {
const char* end = fContentStart;
while (end > fStart && ' ' >= end[-1]) {
--end;
@@ -913,6 +913,9 @@ string Definition::formatFunction() const {
const char* nameInParser = methodParser.strnstr(name.c_str(), methodParser.fEnd);
methodParser.skipTo(nameInParser);
const char* lastEnd = methodParser.fChar;
+ if (Format::kOmitReturn == format) {
+ lastStart = lastEnd;
+ }
const char* paren = methodParser.strnchr('(', methodParser.fEnd);
size_t indent;
if (paren) {
@@ -983,8 +986,10 @@ string Definition::formatFunction() const {
if (delimiter) {
if (nextEnd - nextStart >= (ptrdiff_t) (limit - written)) {
written = indent;
- methodStr += '\n';
- methodStr += string(indent, ' ');
+ if (Format::kIncludeReturn == format) {
+ methodStr += '\n';
+ methodStr += string(indent, ' ');
+ }
}
methodParser.skipTo(delimiter);
}
@@ -1214,7 +1219,76 @@ string Definition::NormalizedName(string name) {
return normalizedName;
}
-bool Definition::paramsMatch(const string& match, const string& name) const {
+static string unpreformat(const string& orig) {
+ string result;
+ int amp = 0;
+ for (auto c : orig) {
+ switch (amp) {
+ case 0:
+ if ('&' == c) {
+ amp = 1;
+ } else {
+ amp = 0;
+ result += c;
+ }
+ break;
+ case 1:
+ if ('l' == c) {
+ amp = 2;
+ } else if ('g' == c) {
+ amp = 3;
+ } else {
+ amp = 0;
+ result += "&";
+ result += c;
+ }
+ break;
+ case 2:
+ if ('t' == c) {
+ amp = 4;
+ } else {
+ amp = 0;
+ result += "&l";
+ result += c;
+ }
+ break;
+ case 3:
+ if ('t' == c) {
+ amp = 5;
+ } else {
+ amp = 0;
+ result += "&g";
+ result += c;
+ }
+ break;
+ case 4:
+ if (';' == c) {
+ result += '<';
+ } else {
+ result += "&lt";
+ result += c;
+ }
+ amp = 0;
+ break;
+ case 5:
+ if (';' == c) {
+ result += '>';
+ } else {
+ result += "&gt";
+ result += c;
+ }
+ amp = 0;
+ break;
+ }
+ }
+ return result;
+}
+
+bool Definition::paramsMatch(const string& matchFormatted, const string& name) const {
+ if (string::npos != matchFormatted.find("readPixels")) {
+ SkDebugf("");
+ }
+ string match = unpreformat(matchFormatted);
TextParser def(fFileName, fStart, fContentStart, fLineCount);
const char* dName = def.strnstr(name.c_str(), fContentStart);
if (!dName) {
diff --git a/tools/bookmaker/mdOut.cpp b/tools/bookmaker/mdOut.cpp
index 7bc70af669..31f8ef4f6f 100644
--- a/tools/bookmaker/mdOut.cpp
+++ b/tools/bookmaker/mdOut.cpp
@@ -357,6 +357,7 @@ bool MdOut::buildRefFromFile(const char* name, const char* outDir) {
this->lfAlways(1);
FPRINTF("===");
}
+ fPopulators.clear();
fPopulators[kClassesAndStructs].fDescription = "embedded struct and class members";
fPopulators[kConstants].fDescription = "enum and enum class, const values";
fPopulators[kConstructors].fDescription = "functions that construct";
@@ -907,7 +908,7 @@ void MdOut::markTypeOut(Definition* def) {
} break;
case MarkType::kMethod: {
string method_name = def->methodName();
- string formattedStr = def->formatFunction();
+ string formattedStr = def->formatFunction(Definition::Format::kIncludeReturn);
this->lfAlways(2);
FPRINTF("<a name=\"%s\"></a>", def->fFiddle.c_str());
@@ -972,6 +973,9 @@ void MdOut::markTypeOut(Definition* def) {
case MarkType::kPopulate: {
SkASSERT(MarkType::kSubtopic == def->fParent->fMarkType);
string name = def->fParent->fName;
+ if ("Bitmap_Related_Function" == def->fParent->fFiddle) {
+ SkDebugf("");
+ }
if (kSubtopics == name) {
this->subtopicsOut();
} else {
@@ -1183,13 +1187,20 @@ void MdOut::mdHeaderOutLF(int depth, int lf) {
void MdOut::populateTables(const Definition* def) {
const Definition* csParent = this->csParent();
+ if (!csParent) {
+ return;
+ }
for (auto child : def->fChildren) {
- if (string::npos != child->fName.find("Rect_Set")) {
+ if (string::npos != child->fFiddle.find("Bitmap_Set")) {
SkDebugf("");
}
if (MarkType::kTopic == child->fMarkType || MarkType::kSubtopic == child->fMarkType) {
- bool legacyTopic = fPopulators.end() != fPopulators.find(child->fName);
- if (!legacyTopic && child->fName != kOverview) {
+ string name = child->fName;
+ bool builtInTopic = name == kClassesAndStructs || name == kConstants
+ || name == kConstructors || name == kMemberFunctions || name == kMembers
+ || name == kOperators || name == kOverview || name == kRelatedFunctions
+ || name == kSubtopics;
+ if (!builtInTopic && child->fName != kOverview) {
this->populator(kRelatedFunctions).fMembers.push_back(child);
}
this->populateTables(child);
@@ -1370,6 +1381,9 @@ void MdOut::subtopicOut(const TableContents& tableContents) {
items[name] = entry;
}
for (auto entry : items) {
+ if (string::npos != entry.second->fName.find("SkRect::set")) {
+ SkDebugf("");
+ }
if (entry.second->fDeprecated) {
continue;
}
@@ -1380,15 +1394,9 @@ void MdOut::subtopicOut(const TableContents& tableContents) {
break;
}
}
- if (!oneLiner) {
- SkDebugf("");
- }
SkASSERT(oneLiner);
this->rowOut(entry.first.c_str(), string(oneLiner->fContentStart,
oneLiner->fContentEnd - oneLiner->fContentStart));
- if (string::npos != entry.second->fName.find("SkRect::set")) {
- SkDebugf("");
- }
if (tableContents.fShowClones && entry.second->fCloned) {
int cloneNo = 2;
string builder = entry.second->fName;
@@ -1396,13 +1404,15 @@ void MdOut::subtopicOut(const TableContents& tableContents) {
builder = builder.substr(0, builder.length() - 2);
}
builder += '_';
+ this->rowOut("",
+ preformat(entry.second->formatFunction(Definition::Format::kOmitReturn)));
do {
string match = builder + to_string(cloneNo);
auto child = csParent->findClone(match);
if (!child) {
break;
}
- this->rowOut("", child->methodName());
+ this->rowOut("", preformat(child->formatFunction(Definition::Format::kOmitReturn)));
} while (++cloneNo);
}
}
diff --git a/tools/bookmaker/selfCheck.cpp b/tools/bookmaker/selfCheck.cpp
index 3392945a9f..5f1eb38ece 100644
--- a/tools/bookmaker/selfCheck.cpp
+++ b/tools/bookmaker/selfCheck.cpp
@@ -11,6 +11,27 @@
#include <windows.h>
#endif
+
+ /* SkDebugf works in both visual studio and git shell, but
+ in git shell output is not piped to grep.
+ printf does not generate output in visual studio, but
+ does in git shell and can be piped.
+ */
+#ifdef SK_BUILD_FOR_WIN
+#define PRINTF(...) \
+do { \
+ if (IsDebuggerPresent()) { \
+ SkDebugf(__VA_ARGS__); \
+ } else { \
+ printf(__VA_ARGS__); \
+ } \
+} while (false)
+#else
+#define PRINTF(...) \
+ printf(__VA_ARGS__)
+#endif
+
+
// Check that mutiple like-named methods are under one Subtopic
// Check that SeeAlso reference each other
@@ -47,52 +68,62 @@ public:
protected:
- bool checkRelatedFunctions() {
- const Definition* cs = this->classOrStruct();
- vector<string> methodNames;
- if (cs) {
- string prefix = cs->fName + "::";
- for (auto& csChild : cs->fChildren) {
- if (MarkType::kMethod != csChild->fMarkType) {
- // only check methods for now
- continue;
- }
- if (Definition::MethodType::kConstructor == csChild->fMethodType) {
- continue;
- }
- if (Definition::MethodType::kDestructor == csChild->fMethodType) {
- continue;
- }
- if (Definition::MethodType::kOperator == csChild->fMethodType) {
- continue;
- }
- if (csChild->fClone) {
- // FIXME: check to see if all cloned methods are in table
- // since format of clones is in flux, defer this check for now
- continue;
- }
- bool containsMarkTypeIn = csChild->fDeprecated; // no markup for deprecated
- for (auto child : csChild->fChildren) {
- if (MarkType::kIn == child->fMarkType) {
- containsMarkTypeIn = true;
- break;
+ void checkMethod(string topic, const Definition* csChild, vector<string>* reported) {
+ if (MarkType::kSubtopic == csChild->fMarkType) {
+ for (auto child : csChild->fChildren) {
+ checkMethod(topic, child, reported);
+ }
+ return;
+ } else if (MarkType::kMethod != csChild->fMarkType) {
+ // only check methods for now
+ return;
+ }
+ bool containsMarkTypeIn = csChild->fDeprecated // no markup for deprecated
+ || Definition::MethodType::kConstructor == csChild->fMethodType
+ || Definition::MethodType::kDestructor == csChild->fMethodType
+ || Definition::MethodType::kOperator == csChild->fMethodType
+ || csChild->fClone;
+ for (auto child : csChild->fChildren) {
+ if (MarkType::kIn == child->fMarkType) {
+ containsMarkTypeIn = true;
+ string subtopic(child->fContentStart,
+ child->fContentEnd - child->fContentStart);
+ string fullname = topic + '_' + subtopic;
+ auto topEnd = fBmhParser.fTopicMap.end();
+ auto topFind = fBmhParser.fTopicMap.find(fullname);
+ auto reportEnd = reported->end();
+ auto reportFind = std::find(reported->begin(), reported->end(), subtopic);
+ if (topEnd == topFind) {
+ if (reportEnd == reportFind) {
+ reported->push_back(subtopic);
}
}
- if (!containsMarkTypeIn) {
-#ifdef SK_BUILD_FOR_WIN
- /* SkDebugf works in both visual studio and git shell, but
- in git shell output is not piped to grep.
- printf does not generate output in visual studio, but
- does in git shell and can be piped.
- */
- if (IsDebuggerPresent()) {
- SkDebugf("No #In: %s\n", csChild->fName.c_str());
- } else
-#endif
- printf("No #In: %s\n", csChild->fName.c_str());
- }
- }
+ }
+ }
+ if (!containsMarkTypeIn) {
+ PRINTF("No #In: %s\n", csChild->fName.c_str());
+ }
+ }
+
+ bool checkRelatedFunctions() {
+ const Definition* cs = this->classOrStruct();
+ if (!cs) {
+ return true;
+ }
+ const Definition* topic = cs->fParent;
+ SkASSERT(topic);
+ SkASSERT(MarkType::kTopic == topic->fMarkType);
+ string topicName = topic->fName;
+ vector<string> methodNames;
+ vector<string> reported;
+ string prefix = cs->fName + "::";
+ for (auto& csChild : cs->fChildren) {
+ checkMethod(topicName, csChild, &reported);
}
+ for (auto missing : reported) {
+ string fullname = topicName + '_' + missing;
+ PRINTF("No #Subtopic: %s\n", fullname.c_str());
+ }
return true;
}
diff --git a/tools/bookmaker/spellCheck.cpp b/tools/bookmaker/spellCheck.cpp
index efc79ca528..bafc969ef4 100644
--- a/tools/bookmaker/spellCheck.cpp
+++ b/tools/bookmaker/spellCheck.cpp
@@ -214,7 +214,6 @@ bool SpellCheck::check(Definition* def) {
if (all_lower(method_name)) {
method_name += "()";
}
- string formattedStr = def->formatFunction();
if (!def->isClone() && Definition::MethodType::kOperator != def->fMethodType) {
this->wordCheck(method_name);
}