feedback
feedback from include review Docs-Preview: https://skia.org/?cl=49260 Bug: skia: 6898 Change-Id: Ic60980dfe53d14fd8c6973ef2f4dabb6b650cdd8 Reviewed-on: https://skia-review.googlesource.com/49260 Commit-Queue: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
This commit is contained in:
parent
8a02b0bca0
commit
6fc5041adb
@ -982,11 +982,10 @@ ignored. Source rectangle corners are (srcX, srcY) and
|
||||
#Formula
|
||||
(this->imageInfo.width(), this->imageInfo.height())
|
||||
##
|
||||
. Destination rectangle corners are (0, 0) and
|
||||
#Formula
|
||||
(dstInfo.width(), dstInfo.height())
|
||||
##
|
||||
. Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
.
|
||||
|
||||
Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to dstInfo.colorType() and dstInfo.alphaType() if required.
|
||||
|
||||
Pixels are readable when Device is raster, or backed by a GPU.
|
||||
@ -1078,11 +1077,10 @@ ignored. Source rectangle corners are (srcX, srcY) and
|
||||
#Formula
|
||||
(this->imageInfo.width(), this->imageInfo.height())
|
||||
##
|
||||
. Destination rectangle are (0, 0) and
|
||||
#Formula
|
||||
(pixmap.width(), pixmap.height())
|
||||
##
|
||||
. Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
.
|
||||
|
||||
Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to pixmap.colorType() and pixmap.alphaType() if required.
|
||||
|
||||
Pixels are readable when Device is raster, or backed by a GPU.
|
||||
@ -1090,7 +1088,7 @@ Pixels are not readable when SkCanvas is returned by SkDocument::beginPage,
|
||||
returned by SkPictureRecorder::beginRecording, or Canvas is the base of a utility
|
||||
class like SkDumpCanvas.
|
||||
|
||||
Allocates pixel storage in pixmap if needed.
|
||||
Caller must allocate pixel storage in pixmap if needed.
|
||||
|
||||
Pixel values are converted only if Image_Color_Type and Image_Alpha_Type
|
||||
do not match. Only pixels within both source and destination rectangles
|
||||
@ -1145,7 +1143,9 @@ ignored. Source rectangle corners are (srcX, srcY) and
|
||||
#Formula
|
||||
(this->imageInfo.width(), this->imageInfo.height())
|
||||
##
|
||||
. Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
.
|
||||
|
||||
Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to bitmap.colorType() and bitmap.alphaType() if required.
|
||||
|
||||
@ -1154,7 +1154,7 @@ Pixels are not readable when SkCanvas is returned by SkDocument::beginPage,
|
||||
returned by SkPictureRecorder::beginRecording, or Canvas is the base of a utility
|
||||
class like SkDumpCanvas.
|
||||
|
||||
Allocates pixel storage in bitmap if needed.
|
||||
Caller must allocate pixel storage in bitmap if needed.
|
||||
|
||||
Bitmap values are converted only if Image_Color_Type and Image_Alpha_Type
|
||||
do not match. Only pixels within both source and destination rectangles
|
||||
@ -1210,8 +1210,10 @@ Destination rectangle corners are (x, y) and
|
||||
#Formula
|
||||
(this->imageInfo.width(), this->imageInfo.height())
|
||||
##
|
||||
. Copies each readable pixel
|
||||
intersecting both rectangles, without scaling, converting to
|
||||
.
|
||||
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to
|
||||
#Formula
|
||||
this->imageInfo.colorType()
|
||||
##
|
||||
@ -1237,15 +1239,8 @@ Does not copy, and returns false if:
|
||||
|
||||
#List
|
||||
# Source and destination rectangles do not intersect. ##
|
||||
# pixels could not be converted to
|
||||
#Formula
|
||||
this->imageInfo.colorType()
|
||||
##
|
||||
or
|
||||
#Formula
|
||||
this->imageInfo.alphaType()
|
||||
##
|
||||
. ##
|
||||
# pixels could not be converted to this->imageInfo.colorType() or
|
||||
this->imageInfo.alphaType(). ##
|
||||
# Canvas pixels are not writable; for instance, Canvas is document-based. ##
|
||||
# rowBytes is too small to contain one row of pixels. ##
|
||||
##
|
||||
@ -1278,17 +1273,16 @@ this->imageInfo.alphaType()
|
||||
#Method bool writePixels(const SkBitmap& bitmap, int x, int y)
|
||||
|
||||
Copies rectangle from pixels to Canvas. Matrix and Clip are ignored.
|
||||
Source rectangle corners are (0, 0) and
|
||||
#Formula
|
||||
(bitmap.width(), bitmap.height())
|
||||
##
|
||||
.
|
||||
Source rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
|
||||
Destination rectangle corners are (x, y) and
|
||||
#Formula
|
||||
(this->imageInfo.width(), this->imageInfo.height())
|
||||
##
|
||||
. Copies each readable pixel
|
||||
intersecting both rectangles, without scaling, converting to
|
||||
.
|
||||
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to
|
||||
#Formula
|
||||
this->imageInfo.colorType()
|
||||
##
|
||||
@ -1315,15 +1309,8 @@ Does not copy, and returns false if:
|
||||
#List
|
||||
# Source and destination rectangles do not intersect. ##
|
||||
# bitmap does not have allocated pixels. ##
|
||||
# bitmap pixels could not be converted to
|
||||
#Formula
|
||||
this->imageInfo.colorType()
|
||||
##
|
||||
or
|
||||
#Formula
|
||||
this->imageInfo.alphaType()
|
||||
##
|
||||
. ##
|
||||
# bitmap pixels could not be converted to this->imageInfo.colorType() or
|
||||
this->imageInfo.alphaType(). ##
|
||||
# Canvas pixels are not writable; for instance, Canvas is document based. ##
|
||||
# bitmap pixels are inaccessible; for instance, bitmap wraps a texture. ##
|
||||
##
|
||||
@ -1682,7 +1669,7 @@ Call restoreToCount with returned value to restore this and subsequent saves.
|
||||
|
||||
Draw text on an opaque background so that LCD_Text blends correctly with the
|
||||
prior Layer. LCD_Text drawn on a background with transparency may result in
|
||||
incorrect banding.
|
||||
incorrect blending.
|
||||
|
||||
#Param bounds hint to limit the size of Layer; may be nullptr ##
|
||||
#Param paint graphics state for Layer; may be nullptr ##
|
||||
@ -4760,6 +4747,7 @@ void draw(SkCanvas* canvas) {
|
||||
(fXCount + 1) * (fYCount + 1)
|
||||
##
|
||||
.
|
||||
|
||||
Array entries correspond to the rectangular grid entries, ascending
|
||||
left to right and then top to bottom.
|
||||
##
|
||||
@ -5760,11 +5748,11 @@ If cullRect is outside of Clip, canvas can skip drawing.
|
||||
#Param atlas Image containing sprites ##
|
||||
#Param xform RSXform mappings for sprites in atlas ##
|
||||
#Param tex Rect locations of sprites in atlas ##
|
||||
#Param colors Color, one per sprite, blended with sprite using Blend_Mode; may be nullptr ##
|
||||
#Param colors one per sprite, blended with sprite using Blend_Mode; may be nullptr ##
|
||||
#Param count number of sprites to draw ##
|
||||
#Param mode Blend_Mode combining colors and sprites ##
|
||||
#Param cullRect Rect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
#Param cullRect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
|
||||
#Example
|
||||
#Image 3
|
||||
@ -5801,11 +5789,11 @@ If cullRect is outside of Clip, canvas can skip drawing.
|
||||
#Param atlas Image containing sprites ##
|
||||
#Param xform RSXform mappings for sprites in atlas ##
|
||||
#Param tex Rect locations of sprites in atlas ##
|
||||
#Param colors Color, one per sprite, blended with sprite using Blend_Mode; may be nullptr ##
|
||||
#Param colors one per sprite, blended with sprite using Blend_Mode; may be nullptr ##
|
||||
#Param count number of sprites to draw ##
|
||||
#Param mode Blend_Mode combining colors and sprites ##
|
||||
#Param cullRect Rect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
#Param cullRect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
|
||||
#Example
|
||||
#Image 3
|
||||
@ -5842,8 +5830,8 @@ If cullRect is outside of Clip, canvas can skip drawing.
|
||||
#Param xform RSXform mappings for sprites in atlas ##
|
||||
#Param tex Rect locations of sprites in atlas ##
|
||||
#Param count number of sprites to draw ##
|
||||
#Param cullRect Rect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
#Param cullRect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
|
||||
#Example
|
||||
#Image 3
|
||||
@ -5878,8 +5866,8 @@ If cullRect is outside of Clip, canvas can skip drawing.
|
||||
#Param xform RSXform mappings for sprites in atlas ##
|
||||
#Param tex Rect locations of sprites in atlas ##
|
||||
#Param count number of sprites to draw ##
|
||||
#Param cullRect Rect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
#Param cullRect bounds of transformed sprites for efficient clipping; may be nullptr ##
|
||||
#Param paint Color_Filter, Image_Filter, Blend_Mode, and so on; may be nullptr ##
|
||||
|
||||
#Example
|
||||
#Image 3
|
||||
|
@ -673,15 +673,15 @@ as the Font_Engine.
|
||||
##
|
||||
#Const kNormal_Hinting 2
|
||||
Modifies glyph outlines to improve constrast. This is the default.
|
||||
With FreeType, this supplies FT_LOAD_TARGET_NORMAL to FT_Load_Glyph,
|
||||
With FreeType, this supplies FT_LOAD_TARGET_NORMAL to FT_Load_Glyph,
|
||||
choosing the default hinting algorithm, which is optimized for standard
|
||||
gray-level rendering.
|
||||
##
|
||||
#Const kFull_Hinting 3
|
||||
Modifies glyph outlines for maxiumum constrast. With FreeType, this selects
|
||||
FT_LOAD_TARGET_LCD or FT_LOAD_TARGET_LCD_V if kLCDRenderText_Flag is set.
|
||||
FT_LOAD_TARGET_LCD is a variant of FT_LOAD_TARGET_NORMAL optimized for
|
||||
horizontally decimated LCD displays; FT_LOAD_TARGET_LCD_V is a
|
||||
Modifies glyph outlines for maxiumum constrast. With FreeType, this selects
|
||||
FT_LOAD_TARGET_LCD or FT_LOAD_TARGET_LCD_V if kLCDRenderText_Flag is set.
|
||||
FT_LOAD_TARGET_LCD is a variant of FT_LOAD_TARGET_NORMAL optimized for
|
||||
horizontally decimated LCD displays; FT_LOAD_TARGET_LCD_V is a
|
||||
variant of FT_LOAD_TARGET_NORMAL optimized for vertically decimated LCD displays.
|
||||
##
|
||||
|
||||
@ -1544,7 +1544,9 @@ Glyphs to position below the preceding glyph.
|
||||
Skia can translate text character codes as a series of Glyphs, but does not implement
|
||||
font substitution,
|
||||
textual substitution, line layout, or contextual spacing like Kerning pairs. Use
|
||||
a text shaping engine like #A HarfBuzz # http://harfbuzz.org/ ## to translate text runs
|
||||
a text shaping engine like
|
||||
#A HarfBuzz # http://harfbuzz.org/ ##
|
||||
to translate text runs
|
||||
into glyph series.
|
||||
|
||||
Vertical_Text is clear if text is drawn left to right or set if drawn from top to bottom.
|
||||
@ -2380,6 +2382,7 @@ Here are some miter limits and the angles that triggers them.
|
||||
kLast_Cap = kSquare_Cap,
|
||||
kDefault_Cap = kButt_Cap,
|
||||
};
|
||||
|
||||
static constexpr int kCapCount = kLast_Cap + 1;
|
||||
##
|
||||
|
||||
@ -2523,6 +2526,7 @@ the following curve, the pair of curves meet at Stroke_Join.
|
||||
kLast_Join = kBevel_Join,
|
||||
kDefault_Join = kMiter_Join,
|
||||
};
|
||||
|
||||
static constexpr int kJoinCount = kLast_Join + 1;
|
||||
##
|
||||
|
||||
@ -2839,7 +2843,7 @@ void draw(SkCanvas* canvas) {
|
||||
Optional colors used when filling a path, such as a gradient.
|
||||
|
||||
Sets Shader to shader, decreasing Reference_Count of the previous Shader.
|
||||
Does not alter shader Reference_Count.
|
||||
Increments shader Reference_Count by one.
|
||||
|
||||
#Param shader how geometry is filled with color; if nullptr, Color is used instead ##
|
||||
|
||||
@ -2930,9 +2934,10 @@ void draw(SkCanvas* canvas) {
|
||||
|
||||
#Method void setColorFilter(sk_sp<SkColorFilter> colorFilter)
|
||||
|
||||
Sets Color_Filter to filter, decreasing Reference_Count of the previous Color_Filter.
|
||||
Pass nullptr to clear Color_Filter.
|
||||
Does not alter filter Reference_Count.
|
||||
Sets Color_Filter to filter, decreasing Reference_Count of the previous
|
||||
Color_Filter. Pass nullptr to clear Color_Filter.
|
||||
|
||||
Increments filter Reference_Count by one.
|
||||
|
||||
#Param colorFilter Color_Filter to apply to subsequent draw ##
|
||||
|
||||
@ -3119,10 +3124,10 @@ If Paint has no Path_Effect, the path geometry is unaltered when filled or strok
|
||||
|
||||
#Method void setPathEffect(sk_sp<SkPathEffect> pathEffect)
|
||||
|
||||
Sets Path_Effect to pathEffect,
|
||||
decreasing Reference_Count of the previous Path_Effect.
|
||||
Pass nullptr to leave the path geometry unaltered.
|
||||
Does not alter pathEffect Reference_Count.
|
||||
Sets Path_Effect to pathEffect, decreasing Reference_Count of the previous
|
||||
Path_Effect. Pass nullptr to leave the path geometry unaltered.
|
||||
|
||||
Increments pathEffect Reference_Count by one.
|
||||
|
||||
#Param pathEffect replace Path with a modification when drawn ##
|
||||
|
||||
@ -3143,8 +3148,10 @@ If Paint has no Path_Effect, the path geometry is unaltered when filled or strok
|
||||
Mask_Filter uses coverage of the shape drawn to create Mask_Alpha.
|
||||
Mask_Filter operates at a lower level than Rasterizer; Mask_Filter takes a Mask,
|
||||
and returns a Mask.
|
||||
Mask_Filter may change the geometry and transparency of the shape, such as creating a blur effect.
|
||||
Set Mask_Filter to nullptr to prevent Mask_Filter from modifying the draw.
|
||||
|
||||
Mask_Filter may change the geometry and transparency of the shape, such as
|
||||
creating a blur effect. Set Mask_Filter to nullptr to prevent Mask_Filter from
|
||||
modifying the draw.
|
||||
|
||||
#Example
|
||||
void draw(SkCanvas* canvas) {
|
||||
@ -3180,6 +3187,7 @@ Set Mask_Filter to nullptr to prevent Mask_Filter from modifying the draw.
|
||||
#Method sk_sp<SkMaskFilter> refMaskFilter() const
|
||||
|
||||
Returns Mask_Filter if set, or nullptr.
|
||||
|
||||
Increases Mask_Filter Reference_Count by one.
|
||||
|
||||
#Return Mask_Filter if previously set, nullptr otherwise ##
|
||||
@ -3203,11 +3211,12 @@ Set Mask_Filter to nullptr to prevent Mask_Filter from modifying the draw.
|
||||
|
||||
#Method void setMaskFilter(sk_sp<SkMaskFilter> maskFilter)
|
||||
|
||||
Sets Mask_Filter to maskFilter,
|
||||
decreasing Reference_Count of the previous Mask_Filter.
|
||||
Pass nullptr to clear Mask_Filter and leave Mask_Filter effect on Mask_Alpha unaltered.
|
||||
Does not affect Rasterizer.
|
||||
Does not alter maskFilter Reference_Count.
|
||||
Sets Mask_Filter to maskFilter, decreasing Reference_Count of the previous
|
||||
Mask_Filter. Pass nullptr to clear Mask_Filter and leave Mask_Filter effect on
|
||||
Mask_Alpha unaltered.
|
||||
|
||||
Does not affect Rasterizer.
|
||||
Increments maskFilter Reference_Count by one.
|
||||
|
||||
#Param maskFilter modifies clipping mask generated from drawn geometry ##
|
||||
|
||||
@ -3249,7 +3258,7 @@ implementation.
|
||||
#Method SkTypeface* getTypeface() const
|
||||
|
||||
Returns Typeface if set, or nullptr.
|
||||
Does not alter Typeface Reference_Count.
|
||||
Increments Typeface Reference_Count by one.
|
||||
|
||||
#Return Typeface if previously set, nullptr otherwise ##
|
||||
|
||||
@ -3298,10 +3307,9 @@ implementation.
|
||||
|
||||
#Method void setTypeface(sk_sp<SkTypeface> typeface)
|
||||
|
||||
Sets Typeface to typeface,
|
||||
decreasing Reference_Count of the previous Typeface.
|
||||
Pass nullptr to clear Typeface and use the default typeface.
|
||||
Does not alter typeface Reference_Count.
|
||||
Sets Typeface to typeface, decreasing Reference_Count of the previous Typeface.
|
||||
Pass nullptr to clear Typeface and use the default typeface. Increments
|
||||
typeface Reference_Count by one.
|
||||
|
||||
#Param typeface font and style used to draw text ##
|
||||
|
||||
@ -3325,9 +3333,11 @@ implementation.
|
||||
Rasterizer controls how shapes are converted to Mask_Alpha.
|
||||
Rasterizer operates at a higher level than Mask_Filter; Rasterizer takes a Path,
|
||||
and returns a Mask.
|
||||
|
||||
Rasterizer may change the geometry and transparency of the shape, such as
|
||||
creating a shadow effect. Rasterizer forms the base of Rasterizer_Layer, which
|
||||
creates effects like embossing and outlining.
|
||||
|
||||
Rasterizer applies to Rect, Region, Round_Rect, Arcs, Circles, Ovals,
|
||||
Path, and Text.
|
||||
|
||||
@ -3415,11 +3425,12 @@ Path, and Text.
|
||||
|
||||
#Method void setRasterizer(sk_sp<SkRasterizer> rasterizer)
|
||||
|
||||
Sets Rasterizer to rasterizer,
|
||||
decreasing Reference_Count of the previous Rasterizer.
|
||||
Pass nullptr to clear Rasterizer and leave Rasterizer effect on Mask_Alpha unaltered.
|
||||
Does not affect Mask_Filter.
|
||||
Does not alter rasterizer Reference_Count.
|
||||
Sets Rasterizer to rasterizer, decreasing Reference_Count of the previous
|
||||
Rasterizer. Pass nullptr to clear Rasterizer and leave Rasterizer effect on
|
||||
Mask_Alpha unaltered.
|
||||
|
||||
Does not affect Mask_Filter.
|
||||
Increments rasterizer Reference_Count by one.
|
||||
|
||||
#Param rasterizer how geometry is converted to Mask_Alpha ##
|
||||
|
||||
@ -3448,6 +3459,7 @@ Path, and Text.
|
||||
Image_Filter operates on the pixel representation of the shape, as modified by Paint
|
||||
with Blend_Mode set to SkBlendMode::kSrcOver. Image_Filter creates a new bitmap,
|
||||
which is drawn to the device using the set Blend_Mode.
|
||||
|
||||
Image_Filter is higher level than Mask_Filter; for instance, an Image_Filter
|
||||
can operate on all channels of Color, while Mask_Filter generates Alpha only.
|
||||
Image_Filter operates independently of and can be used in combination with
|
||||
@ -3520,12 +3532,12 @@ Mask_Filter and Rasterizer.
|
||||
|
||||
#Method void setImageFilter(sk_sp<SkImageFilter> imageFilter)
|
||||
|
||||
Sets Image_Filter to imageFilter,
|
||||
decreasing Reference_Count of the previous Image_Filter.
|
||||
Pass nullptr to clear Image_Filter, and remove Image_Filter effect
|
||||
on drawing.
|
||||
Does not affect Rasterizer or Mask_Filter.
|
||||
Does not alter imageFilter Reference_Count.
|
||||
Sets Image_Filter to imageFilter, decreasing Reference_Count of the previous
|
||||
Image_Filter. Pass nullptr to clear Image_Filter, and remove Image_Filter effect
|
||||
on drawing.
|
||||
|
||||
Does not affect Rasterizer or Mask_Filter.
|
||||
Increments imageFilter Reference_Count by one.
|
||||
|
||||
#Param imageFilter how Image is sampled when transformed ##
|
||||
|
||||
@ -3556,6 +3568,7 @@ Mask_Filter and Rasterizer.
|
||||
|
||||
Draw_Looper sets a modifier that communicates state from one Draw_Layer
|
||||
to another to construct the draw.
|
||||
|
||||
Draw_Looper draws one or more times, modifying the canvas and paint each time.
|
||||
Draw_Looper may be used to draw multiple colors or create a colored shadow.
|
||||
Set Draw_Looper to nullptr to prevent Draw_Looper from modifying the draw.
|
||||
@ -3641,10 +3654,11 @@ Deprecated.
|
||||
|
||||
#Method void setDrawLooper(sk_sp<SkDrawLooper> drawLooper)
|
||||
|
||||
Sets Draw_Looper to drawLooper,
|
||||
decreasing Reference_Count of the previous drawLooper.
|
||||
Pass nullptr to clear Draw_Looper and leave Draw_Looper effect on drawing unaltered.
|
||||
Does not alter drawLooper Reference_Count.
|
||||
Sets Draw_Looper to drawLooper, decreasing Reference_Count of the previous
|
||||
drawLooper. Pass nullptr to clear Draw_Looper and leave Draw_Looper effect on
|
||||
drawing unaltered.
|
||||
|
||||
Increments drawLooper Reference_Count by one.
|
||||
|
||||
#Param drawLooper iterates through drawing one or more time, altering Paint ##
|
||||
|
||||
@ -3992,19 +4006,23 @@ Text_Skew_X defaults to 0.
|
||||
};
|
||||
##
|
||||
|
||||
TextEncoding determines whether text specifies character codes and their encoded size,
|
||||
or glyph indices. Character codes use the encoding specified by the
|
||||
#A Unicode standard # http://unicode.org/standard/standard.html ##.
|
||||
TextEncoding determines whether text specifies character codes and their encoded
|
||||
size, or glyph indices. Character codes use the encoding specified by the
|
||||
#A Unicode standard # http://unicode.org/standard/standard.html ##
|
||||
.
|
||||
|
||||
Character codes encoded size are specified by UTF-8, UTF-16, or UTF-32.
|
||||
All character encoding are able to represent all of Unicode, differing only
|
||||
All character encodings are able to represent all of Unicode, differing only
|
||||
in the total storage required.
|
||||
|
||||
#A UTF-8 (RFC 3629) # https://tools.ietf.org/html/rfc3629 ## is made up of 8-bit bytes,
|
||||
and encodes ASCII in one byte, and all valid code points in Unicode in multiple
|
||||
bytes. #A UTF-16 (RFC 2781) # https://tools.ietf.org/html/rfc2781 ## uses one or two 16-bit words,
|
||||
and encodes Unicode ranges 0x0000 to 0xD7FF and 0xE000 to 0xFFFF in one
|
||||
word. #A UTF-32 # http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf ## describes
|
||||
a 32-bit word, which encodes all code points in Unicode.
|
||||
#A UTF-8 (RFC 3629) # https://tools.ietf.org/html/rfc3629 ##
|
||||
encodes each character as one or more 8-bit bytes.
|
||||
|
||||
#A UTF-16 (RFC 2781) # https://tools.ietf.org/html/rfc2781 ##
|
||||
encodes each character as one or two 16-bit words.
|
||||
|
||||
#A UTF-32 # http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf ##
|
||||
encodes each character as one 32-bit word.
|
||||
|
||||
Font_Manager uses font data to convert character code points into glyph indices.
|
||||
A glyph index is a 16-bit word.
|
||||
|
@ -2626,7 +2626,7 @@ A 90 degree circular arc has the weight
|
||||
#Formula
|
||||
1 / sqrt(2)
|
||||
##
|
||||
.
|
||||
.
|
||||
##
|
||||
void draw(SkCanvas* canvas) {
|
||||
const char* verbNames[] = { "move", "line", "quad", "conic", "cubic", "close", "done" };
|
||||
@ -3812,6 +3812,7 @@ next Quad. Maximum pts storage size is given by:
|
||||
#Formula
|
||||
(1 + 2 * (1 << pow2)) * sizeof(SkPoint)
|
||||
##
|
||||
|
||||
ConvertConicToQuads returns Quad count used the approximation, which may be smaller
|
||||
than the number requested.
|
||||
|
||||
@ -4203,10 +4204,10 @@ four kConic_Verb, and kClose_Verb. Circle begins at
|
||||
#Formula
|
||||
(x + radius, y)
|
||||
##
|
||||
and continues clockwise if dir is kCW_Direction, counterclockwise if dir is
|
||||
, continuing clockwise if dir is kCW_Direction, and counterclockwise if dir is
|
||||
kCCW_Direction.
|
||||
|
||||
addCircle has no effect if radius is zero or negative.
|
||||
Has no effect if radius is zero or negative.
|
||||
|
||||
#Param x center of Circle ##
|
||||
#Param y center of Circle ##
|
||||
@ -4469,13 +4470,10 @@ void draw(SkCanvas* canvas) {
|
||||
|
||||
#Method void addPoly(const SkPoint pts[], int count, bool close)
|
||||
|
||||
Add Contour created from Line array, adding
|
||||
#Formula
|
||||
count - 1
|
||||
##
|
||||
Line segments. Contour added starts at pts[0], then adds a line
|
||||
for every additional Point in pts array. If close is true,
|
||||
appends kClose_Verb to Path, connecting pts[count - 1] and pts[0].
|
||||
Add Contour created from Line array, adding (count - 1) Line segments.
|
||||
Contour added starts at pts[0], then adds a line for every additional Point
|
||||
in pts array. If close is true,appends kClose_Verb to Path, connecting
|
||||
pts[count - 1] and pts[0].
|
||||
|
||||
If count is zero, append kMove_Verb to path.
|
||||
Has no effect if count is less than one.
|
||||
@ -5125,7 +5123,9 @@ directly compiled as C++ code. Floating point values are written
|
||||
in hexadecimal to preserve their exact bit pattern. The output reconstructs the
|
||||
original Path.
|
||||
|
||||
Use instead of dump() when submitting #A bug reports against Skia # http://bug.skia.org ##.
|
||||
Use instead of dump() when submitting
|
||||
#A bug reports against Skia # http://bug.skia.org ##
|
||||
.
|
||||
Slight value changes in Point_Array may cause the bug to disappear.
|
||||
|
||||
#Example
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,9 @@ Visual_Studio
|
||||
|
||||
How to use the Bookmaker utility.
|
||||
|
||||
Install #A Go # https://golang.org/doc/install ## if needed.
|
||||
Install
|
||||
#A Go # https://golang.org/doc/install ##
|
||||
if needed.
|
||||
Get the fiddle command line interface tool.
|
||||
By default this will appear in your home directory.
|
||||
|
||||
@ -132,7 +134,9 @@ to write the updated SkXXX.h to the current directory.
|
||||
|
||||
#Subtopic Bugs
|
||||
|
||||
Bookmaker bugs are tracked #A here # bug.skia.org/6898 ##.
|
||||
Bookmaker bugs are tracked
|
||||
#A here # bug.skia.org/6898 ##
|
||||
.
|
||||
|
||||
##
|
||||
|
||||
|
@ -877,8 +877,9 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies rectangle of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_dstPixels">dstPixels</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are
|
||||
ignored. Source rectangle corners are (<a href="#SkCanvas_readPixels_srcX">srcX</a>, <a href="#SkCanvas_readPixels_srcY">srcY</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
Destination rectangle corners are (0, 0) and(<a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.width(), <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.height()).
|
||||
ignored. Source rectangle corners are (<a href="#SkCanvas_readPixels_srcX">srcX</a>, <a href="#SkCanvas_readPixels_srcY">srcY</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
|
||||
Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
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.
|
||||
|
||||
@ -958,7 +959,8 @@ bool readPixels(const SkPixmap& pixmap, int srcX, int srcY)
|
||||
|
||||
Copies rectangle of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are
|
||||
ignored. Source rectangle corners are (<a href="#SkCanvas_readPixels_2_srcX">srcX</a>, <a href="#SkCanvas_readPixels_2_srcY">srcY</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
Destination rectangle are (0, 0) and(<a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.width(), <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.height()).
|
||||
|
||||
Destination rectangle corners are (0, 0) and (bitmap.width(), bitmap.height()).
|
||||
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.
|
||||
|
||||
@ -967,7 +969,7 @@ Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <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>.
|
||||
|
||||
Allocates pixel storage in <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a> if needed.
|
||||
Caller must allocate pixel storage in <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a> if needed.
|
||||
|
||||
<a href="undocumented#Pixel">Pixel</a> values are converted only if <a href="#Color_Type">Image Color Type</a> and <a href="#Alpha_Type">Image Alpha Type</a>
|
||||
do not match. Only pixels within both source and destination rectangles
|
||||
@ -1026,6 +1028,7 @@ bool readPixels(const SkBitmap& bitmap, int srcX, int srcY)
|
||||
|
||||
Copies rectangle of pixels from <a href="#Canvas">Canvas</a> into <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are
|
||||
ignored. Source rectangle corners are (<a href="#SkCanvas_readPixels_3_srcX">srcX</a>, <a href="#SkCanvas_readPixels_3_srcY">srcY</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
|
||||
Destination rectangle corners are (0, 0) and (<a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.width(), <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.height()).
|
||||
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.
|
||||
@ -1035,7 +1038,7 @@ Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <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>.
|
||||
|
||||
Allocates pixel storage in <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a> if needed.
|
||||
Caller must allocate pixel storage in <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a> if needed.
|
||||
|
||||
<a href="undocumented#Bitmap">Bitmap</a> values are converted only if <a href="#Color_Type">Image Color Type</a> and <a href="#Alpha_Type">Image Alpha Type</a>
|
||||
do not match. Only pixels within both source and destination rectangles
|
||||
@ -1098,9 +1101,10 @@ bool writePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes,
|
||||
|
||||
Copies rectangle from <a href="#SkCanvas_writePixels_pixels">pixels</a> to <a href="#Canvas">Canvas</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are ignored.
|
||||
Source rectangle corners are (0, 0) and (<a href="#SkCanvas_writePixels_info">info</a>.width(), <a href="#SkCanvas_writePixels_info">info</a>.height()).
|
||||
Destination rectangle corners are (<a href="#SkCanvas_writePixels_x">x</a>, <a href="#SkCanvas_writePixels_y">y</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
Copies each readable pixel
|
||||
intersecting both rectangles, without scaling, converting tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()andthis-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType()if required.
|
||||
Destination rectangle corners are (<a href="#SkCanvas_writePixels_x">x</a>, <a href="#SkCanvas_writePixels_y">y</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()andthis-><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 <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
@ -1118,7 +1122,8 @@ Does not copy, and returns false if:
|
||||
|
||||
<table> <tr>
|
||||
<td>Source and destination rectangles do not intersect.</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_pixels">pixels</a> could not be converted tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()orthis-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType().</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_pixels">pixels</a> could not be converted to this-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() or
|
||||
this-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType().</td> </tr> <tr>
|
||||
<td><a href="#Canvas">Canvas</a> <a href="#SkCanvas_writePixels_pixels">pixels</a> are not writable; for instance, <a href="#Canvas">Canvas</a> is document-based.</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_rowBytes">rowBytes</a> is too small to contain one row of <a href="#SkCanvas_writePixels_pixels">pixels</a>.</td> </tr>
|
||||
</table>
|
||||
@ -1157,11 +1162,12 @@ bool writePixels(const SkBitmap& bitmap, int x, int y)
|
||||
</pre>
|
||||
|
||||
Copies rectangle from pixels to <a href="#Canvas">Canvas</a>. <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a> are ignored.
|
||||
Source rectangle corners are (0, 0) and(<a href="#SkCanvas_writePixels_2_bitmap">bitmap</a>.width(), <a href="#SkCanvas_writePixels_2_bitmap">bitmap</a>.height()).
|
||||
Source rectangle corners are (0, 0) and (<a href="#SkCanvas_writePixels_2_bitmap">bitmap</a>.width(), <a href="#SkCanvas_writePixels_2_bitmap">bitmap</a>.height()).
|
||||
|
||||
Destination rectangle corners are (<a href="#SkCanvas_writePixels_2_x">x</a>, <a href="#SkCanvas_writePixels_2_y">y</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
Copies each readable pixel
|
||||
intersecting both rectangles, without scaling, converting tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()andthis-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType()if required.
|
||||
Destination rectangle corners are (<a href="#SkCanvas_writePixels_2_x">x</a>, <a href="#SkCanvas_writePixels_2_y">y</a>) and(this-><a href="#SkCanvas_imageInfo">imageInfo</a>.width(), this-><a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()andthis-><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 <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
@ -1180,7 +1186,8 @@ Does not copy, and returns false if:
|
||||
<table> <tr>
|
||||
<td>Source and destination rectangles do not intersect.</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_2_bitmap">bitmap</a> does not have allocated pixels.</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_2_bitmap">bitmap</a> pixels could not be converted tothis-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType()orthis-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType().</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_2_bitmap">bitmap</a> pixels could not be converted to this-><a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() or
|
||||
this-><a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType().</td> </tr> <tr>
|
||||
<td><a href="#Canvas">Canvas</a> pixels are not writable; for instance, <a href="#Canvas">Canvas</a> is document based.</td> </tr> <tr>
|
||||
<td><a href="#SkCanvas_writePixels_2_bitmap">bitmap</a> pixels are inaccessible; for instance, <a href="#SkCanvas_writePixels_2_bitmap">bitmap</a> wraps a texture.</td> </tr>
|
||||
</table>
|
||||
@ -1482,7 +1489,7 @@ Call <a href="#SkCanvas_restoreToCount">restoreToCount</a> with returned value t
|
||||
|
||||
Draw 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 banding.
|
||||
incorrect blending.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4059,6 +4066,7 @@ grid entries.
|
||||
|
||||
Optional array of <a href="#SkCanvas_Lattice_Flags">Flags</a>, one per rectangular grid entry:
|
||||
array length must be( <a href="#SkCanvas_Lattice_fXCount">fXCount</a> + 1) * (<a href="#SkCanvas_Lattice_fYCount">fYCount</a> + 1).
|
||||
|
||||
Array entries correspond to the rectangular grid entries, ascending
|
||||
left to right and then top to bottom.
|
||||
|
||||
@ -4903,15 +4911,15 @@ If <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is outside of <a href="#C
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_tex"> <code><strong>tex </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_atlas">atlas</a></td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_colors"> <code><strong>colors </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Color">Color</a>, one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td>
|
||||
one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_count"> <code><strong>count </strong></code> </a></td> <td>
|
||||
number of sprites to draw</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_mode"> <code><strong>mode </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Blend_Mode">Blend Mode</a> combining <a href="#SkCanvas_drawAtlas_colors">colors</a> and sprites</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_paint"> <code><strong>paint </strong></code> </a></td> <td>
|
||||
<a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -4946,15 +4954,15 @@ If <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is outside of <a href="
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_tex"> <code><strong>tex </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> locations of sprites in <a href="#SkCanvas_drawAtlas_2_atlas">atlas</a></td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_colors"> <code><strong>colors </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Color">Color</a>, one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td>
|
||||
one per sprite, blended with sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_count"> <code><strong>count </strong></code> </a></td> <td>
|
||||
number of sprites to draw</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_mode"> <code><strong>mode </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Blend_Mode">Blend Mode</a> combining <a href="#SkCanvas_drawAtlas_2_colors">colors</a> and sprites</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_2_paint"> <code><strong>paint </strong></code> </a></td> <td>
|
||||
<a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -4989,9 +4997,9 @@ If <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is outside of <a href="
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_3_count"> <code><strong>count </strong></code> </a></td> <td>
|
||||
number of sprites to draw</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_3_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_3_paint"> <code><strong>paint </strong></code> </a></td> <td>
|
||||
<a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -5027,9 +5035,9 @@ If <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is outside of <a href="
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_4_count"> <code><strong>count </strong></code> </a></td> <td>
|
||||
number of sprites to draw</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_4_cullRect"> <code><strong>cullRect </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Rect">Rect</a> bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_drawAtlas_4_paint"> <code><strong>paint </strong></code> </a></td> <td>
|
||||
<a href="SkPaint_Reference#Paint">Paint</a> <a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, <a href="undocumented#Blend_Mode">Blend Mode</a>, and so on; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -2384,6 +2384,7 @@ enum <a href="#SkPaint_Cap">Cap</a> {
|
||||
<a href="#SkPaint_kLast_Cap">kLast Cap</a> = <a href="#SkPaint_kSquare_Cap">kSquare Cap</a>,
|
||||
<a href="#SkPaint_kDefault_Cap">kDefault Cap</a> = <a href="#SkPaint_kButt_Cap">kButt Cap</a>,
|
||||
};
|
||||
|
||||
static constexpr int <a href="#SkPaint_kCapCount">kCapCount</a> = <a href="#SkPaint_kLast_Cap">kLast Cap</a> + 1;</pre>
|
||||
|
||||
<a href="#Stroke_Cap">Stroke Cap</a> draws at the beginning and end of an open <a href="#Contour">Path Contour</a>.
|
||||
@ -2528,6 +2529,7 @@ enum <a href="#SkPaint_Join">Join</a> {
|
||||
<a href="#SkPaint_kLast_Join">kLast Join</a> = <a href="#SkPaint_kBevel_Join">kBevel Join</a>,
|
||||
<a href="#SkPaint_kDefault_Join">kDefault Join</a> = <a href="#SkPaint_kMiter_Join">kMiter Join</a>,
|
||||
};
|
||||
|
||||
static constexpr int <a href="#SkPaint_kJoinCount">kJoinCount</a> = <a href="#SkPaint_kLast_Join">kLast Join</a> + 1;</pre>
|
||||
|
||||
<a href="#SkPaint_Join">Join</a> specifies how corners are drawn when a shape is stroked. <a href="#SkPaint_Join">Join</a>
|
||||
@ -2826,7 +2828,7 @@ void setShader(sk_sp<SkShader> shader)
|
||||
Optional colors used when filling a path, such as a gradient.
|
||||
|
||||
Sets <a href="undocumented#Shader">Shader</a> to <a href="#SkPaint_setShader_shader">shader</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Shader">Shader</a>.
|
||||
Does not alter <a href="#SkPaint_setShader_shader">shader</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Increments <a href="#SkPaint_setShader_shader">shader</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2917,9 +2919,10 @@ color filter unique: false
|
||||
void setColorFilter(sk_sp<SkColorFilter> colorFilter)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Color_Filter">Color Filter</a> to filter, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Color_Filter">Color Filter</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Color_Filter">Color Filter</a>.
|
||||
Does not alter filter <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Sets <a href="undocumented#Color_Filter">Color Filter</a> to filter, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>. Pass nullptr to clear <a href="undocumented#Color_Filter">Color Filter</a>.
|
||||
|
||||
Increments filter <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3114,10 +3117,10 @@ path effect unique: false
|
||||
void setPathEffect(sk_sp<SkPathEffect> pathEffect)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Path_Effect">Path Effect</a> to <a href="#SkPaint_setPathEffect_pathEffect">pathEffect</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Path_Effect">Path Effect</a>.
|
||||
Pass nullptr to leave the path geometry unaltered.
|
||||
Does not alter <a href="#SkPaint_setPathEffect_pathEffect">pathEffect</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Sets <a href="undocumented#Path_Effect">Path Effect</a> to <a href="#SkPaint_setPathEffect_pathEffect">pathEffect</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="undocumented#Path_Effect">Path Effect</a>. Pass nullptr to leave the path geometry unaltered.
|
||||
|
||||
Increments <a href="#SkPaint_setPathEffect_pathEffect">pathEffect</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3136,8 +3139,10 @@ replace <a href="SkPath_Reference#Path">Path</a> with a modification when drawn<
|
||||
<a href="undocumented#Mask_Filter">Mask Filter</a> uses coverage of the shape drawn to create <a href="undocumented#Mask_Alpha">Mask Alpha</a>.
|
||||
<a href="undocumented#Mask_Filter">Mask Filter</a> operates at a lower level than <a href="undocumented#Rasterizer">Rasterizer</a>; <a href="undocumented#Mask_Filter">Mask Filter</a> takes a <a href="undocumented#Mask">Mask</a>,
|
||||
and returns a <a href="undocumented#Mask">Mask</a>.
|
||||
<a href="undocumented#Mask_Filter">Mask Filter</a> may change the geometry and transparency of the shape, such as creating a blur effect.
|
||||
Set <a href="undocumented#Mask_Filter">Mask Filter</a> to nullptr to prevent <a href="undocumented#Mask_Filter">Mask Filter</a> from modifying the draw.
|
||||
|
||||
<a href="undocumented#Mask_Filter">Mask Filter</a> may change the geometry and transparency of the shape, such as
|
||||
creating a blur effect. Set <a href="undocumented#Mask_Filter">Mask Filter</a> to nullptr to prevent <a href="undocumented#Mask_Filter">Mask Filter</a> from
|
||||
modifying the draw.
|
||||
|
||||
### Example
|
||||
|
||||
@ -3180,6 +3185,7 @@ sk_sp<SkMaskFilter> refMaskFilter() const
|
||||
</pre>
|
||||
|
||||
Returns <a href="undocumented#Mask_Filter">Mask Filter</a> if set, or nullptr.
|
||||
|
||||
Increases <a href="undocumented#Mask_Filter">Mask Filter</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Return Value
|
||||
@ -3208,11 +3214,12 @@ mask filter unique: false
|
||||
void setMaskFilter(sk_sp<SkMaskFilter> maskFilter)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Mask_Filter">Mask Filter</a> to <a href="#SkPaint_setMaskFilter_maskFilter">maskFilter</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Mask_Filter">Mask Filter</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Mask_Filter">Mask Filter</a> and leave <a href="undocumented#Mask_Filter">Mask Filter</a> effect on <a href="undocumented#Mask_Alpha">Mask Alpha</a> unaltered.
|
||||
Sets <a href="undocumented#Mask_Filter">Mask Filter</a> to <a href="#SkPaint_setMaskFilter_maskFilter">maskFilter</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="undocumented#Mask_Filter">Mask Filter</a>. Pass nullptr to clear <a href="undocumented#Mask_Filter">Mask Filter</a> and leave <a href="undocumented#Mask_Filter">Mask Filter</a> effect on
|
||||
<a href="undocumented#Mask_Alpha">Mask Alpha</a> unaltered.
|
||||
|
||||
Does not affect <a href="undocumented#Rasterizer">Rasterizer</a>.
|
||||
Does not alter <a href="#SkPaint_setMaskFilter_maskFilter">maskFilter</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Increments <a href="#SkPaint_setMaskFilter_maskFilter">maskFilter</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3245,7 +3252,7 @@ SkTypeface* getTypeface() const
|
||||
</pre>
|
||||
|
||||
Returns <a href="undocumented#Typeface">Typeface</a> if set, or nullptr.
|
||||
Does not alter <a href="undocumented#Typeface">Typeface</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Increments <a href="undocumented#Typeface">Typeface</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -3301,10 +3308,9 @@ typeface1 == typeface2
|
||||
void setTypeface(sk_sp<SkTypeface> typeface)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Typeface">Typeface</a> to <a href="#SkPaint_setTypeface_typeface">typeface</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Typeface">Typeface</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Typeface">Typeface</a> and use the default <a href="#SkPaint_setTypeface_typeface">typeface</a>.
|
||||
Does not alter <a href="#SkPaint_setTypeface_typeface">typeface</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Sets <a href="undocumented#Typeface">Typeface</a> to <a href="#SkPaint_setTypeface_typeface">typeface</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Typeface">Typeface</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Typeface">Typeface</a> and use the default <a href="#SkPaint_setTypeface_typeface">typeface</a>. Increments
|
||||
<a href="#SkPaint_setTypeface_typeface">typeface</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3323,9 +3329,11 @@ font and style used to draw text</td>
|
||||
<a href="undocumented#Rasterizer">Rasterizer</a> controls how shapes are converted to <a href="undocumented#Mask_Alpha">Mask Alpha</a>.
|
||||
<a href="undocumented#Rasterizer">Rasterizer</a> operates at a higher level than <a href="undocumented#Mask_Filter">Mask Filter</a>; <a href="undocumented#Rasterizer">Rasterizer</a> takes a <a href="SkPath_Reference#Path">Path</a>,
|
||||
and returns a <a href="undocumented#Mask">Mask</a>.
|
||||
|
||||
<a href="undocumented#Rasterizer">Rasterizer</a> may change the geometry and transparency of the shape, such as
|
||||
creating a shadow effect. <a href="undocumented#Rasterizer">Rasterizer</a> forms the base of <a href="#Layer">Rasterizer Layer</a>, which
|
||||
creates effects like embossing and outlining.
|
||||
|
||||
<a href="undocumented#Rasterizer">Rasterizer</a> applies to <a href="undocumented#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="#Arc">Arcs</a>, <a href="#Circle">Circles</a>, <a href="#Oval">Ovals</a>,
|
||||
<a href="SkPath_Reference#Path">Path</a>, and <a href="undocumented#Text">Text</a>.
|
||||
|
||||
@ -3398,11 +3406,12 @@ rasterizer unique: false
|
||||
void setRasterizer(sk_sp<SkRasterizer> rasterizer)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Rasterizer">Rasterizer</a> to <a href="#SkPaint_setRasterizer_rasterizer">rasterizer</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Rasterizer">Rasterizer</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Rasterizer">Rasterizer</a> and leave <a href="undocumented#Rasterizer">Rasterizer</a> effect on <a href="undocumented#Mask_Alpha">Mask Alpha</a> unaltered.
|
||||
Sets <a href="undocumented#Rasterizer">Rasterizer</a> to <a href="#SkPaint_setRasterizer_rasterizer">rasterizer</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="undocumented#Rasterizer">Rasterizer</a>. Pass nullptr to clear <a href="undocumented#Rasterizer">Rasterizer</a> and leave <a href="undocumented#Rasterizer">Rasterizer</a> effect on
|
||||
<a href="undocumented#Mask_Alpha">Mask Alpha</a> unaltered.
|
||||
|
||||
Does not affect <a href="undocumented#Mask_Filter">Mask Filter</a>.
|
||||
Does not alter <a href="#SkPaint_setRasterizer_rasterizer">rasterizer</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Increments <a href="#SkPaint_setRasterizer_rasterizer">rasterizer</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3421,6 +3430,7 @@ how geometry is converted to <a href="undocumented#Mask_Alpha">Mask Alpha</a></t
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> operates on the pixel representation of the shape, as modified by <a href="#Paint">Paint</a>
|
||||
with <a href="undocumented#Blend_Mode">Blend Mode</a> set to <a href="#SkBlendMode_kSrcOver">SkBlendMode::kSrcOver</a>. <a href="undocumented#Image_Filter">Image Filter</a> creates a new bitmap,
|
||||
which is drawn to the device using the set <a href="undocumented#Blend_Mode">Blend Mode</a>.
|
||||
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> is higher level than <a href="undocumented#Mask_Filter">Mask Filter</a>; for instance, an <a href="undocumented#Image_Filter">Image Filter</a>
|
||||
can operate on all channels of <a href="undocumented#Color">Color</a>, while <a href="undocumented#Mask_Filter">Mask Filter</a> generates <a href="#Alpha">Alpha</a> only.
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> operates independently of and can be used in combination with
|
||||
@ -3495,12 +3505,12 @@ image filter unique: false
|
||||
void setImageFilter(sk_sp<SkImageFilter> imageFilter)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Filter">Image Filter</a> to <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="undocumented#Image_Filter">Image Filter</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Image_Filter">Image Filter</a>, and remove <a href="undocumented#Image_Filter">Image Filter</a> effect
|
||||
Sets <a href="undocumented#Image_Filter">Image Filter</a> to <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="undocumented#Image_Filter">Image Filter</a>. Pass nullptr to clear <a href="undocumented#Image_Filter">Image Filter</a>, and remove <a href="undocumented#Image_Filter">Image Filter</a> effect
|
||||
on drawing.
|
||||
|
||||
Does not affect <a href="undocumented#Rasterizer">Rasterizer</a> or <a href="undocumented#Mask_Filter">Mask Filter</a>.
|
||||
Does not alter <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Increments <a href="#SkPaint_setImageFilter_imageFilter">imageFilter</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3518,6 +3528,7 @@ how <a href="undocumented#Image">Image</a> is sampled when transformed</td>
|
||||
# <a name="Draw_Looper_Methods"></a> Draw Looper Methods
|
||||
<a href="undocumented#Draw_Looper">Draw Looper</a> sets a modifier that communicates state from one <a href="undocumented#Draw_Layer">Draw Layer</a>
|
||||
to another to construct the draw.
|
||||
|
||||
<a href="undocumented#Draw_Looper">Draw Looper</a> draws one or more times, modifying the canvas and paint each time.
|
||||
<a href="undocumented#Draw_Looper">Draw Looper</a> may be used to draw multiple colors or create a colored shadow.
|
||||
Set <a href="undocumented#Draw_Looper">Draw Looper</a> to nullptr to prevent <a href="undocumented#Draw_Looper">Draw Looper</a> from modifying the draw.
|
||||
@ -3608,10 +3619,11 @@ Deprecated.
|
||||
void setDrawLooper(sk_sp<SkDrawLooper> drawLooper)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Draw_Looper">Draw Looper</a> to <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a>,
|
||||
decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a>.
|
||||
Pass nullptr to clear <a href="undocumented#Draw_Looper">Draw Looper</a> and leave <a href="undocumented#Draw_Looper">Draw Looper</a> effect on drawing unaltered.
|
||||
Does not alter <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a> <a href="undocumented#Reference_Count">Reference Count</a>.
|
||||
Sets <a href="undocumented#Draw_Looper">Draw Looper</a> to <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a>, decreasing <a href="undocumented#Reference_Count">Reference Count</a> of the previous
|
||||
<a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a>. Pass nullptr to clear <a href="undocumented#Draw_Looper">Draw Looper</a> and leave <a href="undocumented#Draw_Looper">Draw Looper</a> effect on
|
||||
drawing unaltered.
|
||||
|
||||
Increments <a href="#SkPaint_setDrawLooper_drawLooper">drawLooper</a> <a href="undocumented#Reference_Count">Reference Count</a> by one.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3940,18 +3952,18 @@ enum <a href="#SkPaint_TextEncoding">TextEncoding</a> {
|
||||
<a href="#SkPaint_kGlyphID_TextEncoding">kGlyphID TextEncoding</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#SkPaint_TextEncoding">TextEncoding</a> determines whether text specifies character codes and their encoded size,
|
||||
or glyph indices. Character codes use the encoding specified by the<a href="undocumented#Unicode">Unicode</a> standard.
|
||||
<a href="#SkPaint_TextEncoding">TextEncoding</a> determines whether text specifies character codes and their encoded
|
||||
size, or glyph indices. Character codes use the encoding specified by the<a href="undocumented#Unicode">Unicode</a> standard.
|
||||
|
||||
Character codes encoded size are specified by <a href="undocumented#UTF_8">UTF-8</a>, <a href="undocumented#UTF_16">UTF-16</a>, or <a href="undocumented#UTF_32">UTF-32</a>.
|
||||
All character encoding are able to represent all of <a href="undocumented#Unicode">Unicode</a>, differing only
|
||||
All character encodings are able to represent all of <a href="undocumented#Unicode">Unicode</a>, differing only
|
||||
in the total storage required.
|
||||
|
||||
<a href="undocumented#UTF_8">UTF-8</a> (<a href="undocumented#RFC">RFC</a> 3629)is made up of 8-bit bytes,
|
||||
and encodes <a href="undocumented#ASCII">ASCII</a> in one byte, and all valid code points in <a href="undocumented#Unicode">Unicode</a> in multiple
|
||||
bytes.<a href="undocumented#UTF_16">UTF-16</a> (<a href="undocumented#RFC">RFC</a> 2781)uses one or two 16-bit words,
|
||||
and encodes <a href="undocumented#Unicode">Unicode</a> ranges 0x0000 to 0xD7FF and 0xE000 to 0xFFFF in one
|
||||
word.<a href="undocumented#UTF_32">UTF-32</a>describes
|
||||
a 32-bit word, which encodes all code points in <a href="undocumented#Unicode">Unicode</a>.
|
||||
<a href="undocumented#UTF_8">UTF-8</a> (<a href="undocumented#RFC">RFC</a> 3629)encodes each character as one or more 8-bit bytes.
|
||||
|
||||
<a href="undocumented#UTF_16">UTF-16</a> (<a href="undocumented#RFC">RFC</a> 2781)encodes each character as one or two 16-bit words.
|
||||
|
||||
<a href="undocumented#UTF_32">UTF-32</a>encodes each character as one 32-bit word.
|
||||
|
||||
<a href="undocumented#Font_Manager">Font Manager</a> uses font data to convert character code points into glyph indices.
|
||||
A glyph index is a 16-bit word.
|
||||
|
@ -3446,10 +3446,11 @@ void addCircle(SkScalar x, SkScalar y, SkScalar radius,
|
||||
</pre>
|
||||
|
||||
Add <a href="undocumented#Circle">Circle</a> centered at (<a href="#SkPath_addCircle_x">x</a>, <a href="#SkPath_addCircle_y">y</a>) of size <a href="#SkPath_addCircle_radius">radius</a> to <a href="#Path">Path</a>, appending <a href="#SkPath_kMove_Verb">kMove Verb</a>,
|
||||
four <a href="#SkPath_kConic_Verb">kConic Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. <a href="undocumented#Circle">Circle</a> begins at(<a href="#SkPath_addCircle_x">x</a> + <a href="#SkPath_addCircle_radius">radius</a>, <a href="#SkPath_addCircle_y">y</a>)and continues clockwise if <a href="#SkPath_addCircle_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, counterclockwise if <a href="#SkPath_addCircle_dir">dir</a> is
|
||||
four <a href="#SkPath_kConic_Verb">kConic Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>. <a href="undocumented#Circle">Circle</a> begins at(<a href="#SkPath_addCircle_x">x</a> + <a href="#SkPath_addCircle_radius">radius</a>, <a href="#SkPath_addCircle_y">y</a>),
|
||||
continuing clockwise if <a href="#SkPath_addCircle_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, and counterclockwise if <a href="#SkPath_addCircle_dir">dir</a> is
|
||||
<a href="#SkPath_kCCW_Direction">kCCW Direction</a>.
|
||||
|
||||
<a href="#SkPath_addCircle">addCircle</a> has no effect if <a href="#SkPath_addCircle_radius">radius</a> is zero or negative.
|
||||
Has no effect if <a href="#SkPath_addCircle_radius">radius</a> is zero or negative.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3693,9 +3694,10 @@ index of initial point of <a href="undocumented#Round_Rect">Round Rect</a></td>
|
||||
void addPoly(const SkPoint pts[], int count, bool close)
|
||||
</pre>
|
||||
|
||||
Add <a href="#Contour">Contour</a> created from <a href="undocumented#Line">Line</a> array, adding<a href="#SkPath_addPoly_count">count</a> - 1<a href="undocumented#Line">Line</a> segments. <a href="#Contour">Contour</a> added starts at <a href="#SkPath_addPoly_pts">pts</a>[0], then adds a line
|
||||
for every additional <a href="undocumented#Point">Point</a> in <a href="#SkPath_addPoly_pts">pts</a> array. If <a href="#SkPath_close">close</a> is true,
|
||||
appends <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>, connecting <a href="#SkPath_addPoly_pts">pts</a>[<a href="#SkPath_addPoly_count">count</a> - 1] and <a href="#SkPath_addPoly_pts">pts</a>[0].
|
||||
Add <a href="#Contour">Contour</a> created from <a href="undocumented#Line">Line</a> array, adding (<a href="#SkPath_addPoly_count">count</a> - 1) <a href="undocumented#Line">Line</a> segments.
|
||||
<a href="#Contour">Contour</a> added starts at <a href="#SkPath_addPoly_pts">pts</a>[0], then adds a line for every additional <a href="undocumented#Point">Point</a>
|
||||
in <a href="#SkPath_addPoly_pts">pts</a> array. If <a href="#SkPath_close">close</a> is true,appends <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>, connecting
|
||||
<a href="#SkPath_addPoly_pts">pts</a>[<a href="#SkPath_addPoly_count">count</a> - 1] and <a href="#SkPath_addPoly_pts">pts</a>[0].
|
||||
|
||||
If <a href="#SkPath_addPoly_count">count</a> is zero, append <a href="#SkPath_kMove_Verb">kMove Verb</a> to path.
|
||||
Has no effect if <a href="#SkPath_addPoly_count">count</a> is less than one.
|
||||
@ -4315,6 +4317,7 @@ in hexadecimal to preserve their exact bit pattern. The output reconstructs the
|
||||
original <a href="#Path">Path</a>.
|
||||
|
||||
Use instead of <a href="#SkPath_dump_2">dump</a> when submittingbug reports against <a href="undocumented#Skia">Skia</a>.
|
||||
|
||||
Slight value changes in <a href="#Point_Array">Point Array</a> may cause the bug to disappear.
|
||||
|
||||
### Example
|
||||
|
@ -119,12 +119,13 @@ SkPixmap(const SkImageInfo& info, const void* addr, size_t rowBytes)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Pixmap">Pixmap</a> from <a href="#SkPixmap_info">info</a> <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and <a href="undocumented#SkColorType">SkColorType</a>.
|
||||
<a href="#SkPixmap_addr">addr</a> points to pixels, or nullptr. <a href="#SkPixmap_rowBytes">rowBytes</a> should be<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_width">width</a> * <a href="#SkPixmap_info">info</a>.bytesPerPixel()or larger.
|
||||
<a href="#SkPixmap_addr">addr</a> points to pixels, or nullptr. <a href="#SkPixmap_rowBytes">rowBytes</a> should be <a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_width">width</a> times
|
||||
<a href="#SkPixmap_info">info</a>.bytesPerPixel(), or larger.
|
||||
|
||||
No parameter checking is performed; it is up to the caller to ensure that
|
||||
<a href="#SkPixmap_addr">addr</a> and <a href="#SkPixmap_rowBytes">rowBytes</a> agree with <a href="#SkPixmap_info">info</a>.
|
||||
|
||||
The memory lifetime pixels are managed by the caller. When <a href="#Pixmap">Pixmap</a> goes
|
||||
The memory lifetime of pixels is managed by the caller. When <a href="#Pixmap">Pixmap</a> goes
|
||||
out of scope, <a href="#SkPixmap_addr">addr</a> is unaffected.
|
||||
|
||||
<a href="#Pixmap">Pixmap</a> may be later modified by <a href="#SkPixmap_reset">reset</a> to change its size, pixel type, or
|
||||
@ -203,7 +204,8 @@ void reset(const SkImageInfo& info, const void* addr, size_t rowBytes)
|
||||
|
||||
Sets <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and <a href="undocumented#SkColorType">SkColorType</a> from <a href="#SkPixmap_info">info</a>.
|
||||
Sets pixel address from <a href="#SkPixmap_addr">addr</a>, which may be nullptr.
|
||||
Sets row bytes from <a href="#SkPixmap_rowBytes">rowBytes</a>, which should be<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_width">width</a> * <a href="#SkPixmap_info">info</a>.bytesPerPixel()or larger.
|
||||
Sets row bytes from <a href="#SkPixmap_rowBytes">rowBytes</a>, which should be <a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_width">width</a> times
|
||||
<a href="#SkPixmap_info">info</a>.bytesPerPixel(), or larger.
|
||||
|
||||
Does not check <a href="#SkPixmap_addr">addr</a>. Asserts if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and if <a href="#SkPixmap_rowBytes">rowBytes</a> is
|
||||
too small to hold one row of pixels.
|
||||
@ -241,7 +243,7 @@ void setColorSpace(sk_sp<SkColorSpace> colorSpace)
|
||||
|
||||
Changes <a href="undocumented#Color_Space">Color Space</a> in <a href="#Info">Image Info</a>; preserves <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and
|
||||
<a href="undocumented#SkColorType">SkColorType</a> in <a href="undocumented#Image">Image</a>, and leaves pixel address and row bytes unchanged.
|
||||
<a href="#SkPixmap_colorSpace">colorSpace</a> reference count is incremented.
|
||||
<a href="undocumented#Color_Space">Color Space</a> reference count is incremented.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -355,7 +357,7 @@ true if intersection of <a href="#Pixmap">Pixmap</a> and <a href="#SkPixmap_extr
|
||||
const SkImageInfo& info() const
|
||||
</pre>
|
||||
|
||||
Returns <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#SkAlphaType">SkAlphaType</a>, and <a href="undocumented#SkColorType">SkColorType</a>.
|
||||
Returns <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Type">Color Type</a>, and <a href="undocumented#Color_Space">Color Space</a>.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -421,7 +423,7 @@ rowBytes: 8 minRowBytes: 4
|
||||
const void* addr() const
|
||||
</pre>
|
||||
|
||||
Returns pixel address, the base corresponding the pixel origin.
|
||||
Returns pixel address, the base address corresponding to the pixel origin.
|
||||
|
||||
It is up to the <a href="#Pixmap">Pixmap</a> creator to ensure that pixel address is a useful value.
|
||||
|
||||
@ -886,7 +888,7 @@ bool computeIsOpaque() const
|
||||
|
||||
Returns true if all pixels are opaque. <a href="undocumented#Color_Type">Color Type</a> determines how pixels
|
||||
are encoded, and whether pixel describes <a href="#Alpha">Alpha</a>. Returns true for <a href="undocumented#Color_Type">Color Types</a>
|
||||
without alpha for each pixel; for other <a href="undocumented#Color_Type">Color Types</a>, returns true if all
|
||||
without alpha in each pixel; for other <a href="undocumented#Color_Type">Color Types</a>, returns true if all
|
||||
pixels have alpha values equivalent to 1.0 or greater.
|
||||
|
||||
For <a href="undocumented#Color_Type">Color Types</a> <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>: always
|
||||
@ -896,7 +898,7 @@ For <a href="undocumented#Color_Type">Color Type</a> <a href="undocumented#SkCol
|
||||
For <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a>: returns true if all pixel <a href="#Alpha">Alpha</a> values are 1.0 or
|
||||
greater.
|
||||
|
||||
Returns false for any other <a href="undocumented#Color_Type">Color Type</a>.
|
||||
Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -945,9 +947,9 @@ precision.
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_getColor_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_getColor_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -996,9 +998,9 @@ built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns zero if
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addr_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addr_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1215,9 +1217,9 @@ Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addr8_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addr8_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1258,9 +1260,9 @@ Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addr16_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addr16_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1301,9 +1303,9 @@ Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addr32_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addr32_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1340,9 +1342,9 @@ with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addr64_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addr64_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1386,9 +1388,9 @@ Four words correspond to one pixel.
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_addrF16_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_addrF16_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1461,9 +1463,9 @@ built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns zero if
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addr_2_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addr_2_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1498,18 +1500,18 @@ pixmap.getColor(1, 2) == 0xFFFFFFFF
|
||||
uint8_t* writable_addr8(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns writable base pixel address. Result is addressable as unsigned 8-bit bytes.
|
||||
Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> or
|
||||
<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
Returns writable pixel address at (<a href="#SkPixmap_writable_addr8_x">x</a>, <a href="#SkPixmap_writable_addr8_y">y</a>). Result is addressable as unsigned
|
||||
8-bit bytes. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>
|
||||
or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
|
||||
One byte corresponds to one pixel.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addr8_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addr8_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1536,18 +1538,18 @@ pixel memory is safer.</div></fiddle-embed></div>
|
||||
uint16_t* writable_addr16(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns <a href="#SkPixmap_writable_addr">writable addr</a> base pixel address. Result is addressable as unsigned 16-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> or
|
||||
<a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
Returns <a href="#SkPixmap_writable_addr">writable addr</a> pixel address at (<a href="#SkPixmap_writable_addr16_x">x</a>, <a href="#SkPixmap_writable_addr16_y">y</a>). Result is addressable as unsigned
|
||||
16-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGB 565 SkColorType</a>
|
||||
or <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addr16_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addr16_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1573,18 +1575,19 @@ The low nibble of the 16-bit word is <a href="#Alpha">Alpha</a>.</div></fiddle-e
|
||||
uint32_t* writable_addr32(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns writable base pixel address. Result is addressable as unsigned 32-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or
|
||||
<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
Returns writable pixel address at (<a href="#SkPixmap_writable_addr32_x">x</a>, <a href="#SkPixmap_writable_addr32_y">y</a>). Result is addressable as unsigned
|
||||
32-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not
|
||||
<a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a>
|
||||
defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addr32_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addr32_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1609,18 +1612,18 @@ writable unsigned 32-bit pointer to pixel
|
||||
uint64_t* writable_addr64(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns writable base pixel address. Result is addressable as unsigned 64-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built
|
||||
with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
Returns writable pixel address at (<a href="#SkPixmap_writable_addr64_x">x</a>, <a href="#SkPixmap_writable_addr64_y">y</a>). Result is addressable as unsigned
|
||||
64-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not
|
||||
<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addr64_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addr64_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1645,9 +1648,9 @@ writable unsigned 64-bit pointer to pixel
|
||||
uint16_t* writable_addrF16(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns writable base pixel address. Result is addressable as unsigned 16-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not <a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built
|
||||
with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
Returns writable pixel address at (<a href="#SkPixmap_writable_addrF16_x">x</a>, <a href="#SkPixmap_writable_addrF16_y">y</a>). Result is addressable as unsigned
|
||||
16-bit words. Will trigger an assert() if <a href="undocumented#Color_Type">Color Type</a> is not
|
||||
<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
|
||||
Each word represents one color component encoded as a half float.
|
||||
Four words correspond to one pixel.
|
||||
@ -1655,9 +1658,9 @@ Four words correspond to one pixel.
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPixmap_writable_addrF16_x"> <code><strong>x </strong></code> </a></td> <td>
|
||||
positive column index less than <a href="#SkPixmap_width">width</a></td>
|
||||
column index, zero or greater, and less than <a href="#SkPixmap_width">width</a></td>
|
||||
</tr> <tr> <td><a name="SkPixmap_writable_addrF16_y"> <code><strong>y </strong></code> </a></td> <td>
|
||||
positive row index less than <a href="#SkPixmap_height">height</a></td>
|
||||
row index, zero or greater, and less than <a href="#SkPixmap_height">height</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -1686,8 +1689,8 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
int srcX, int srcY, SkTransferFunctionBehavior behavior) const
|
||||
</pre>
|
||||
|
||||
Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_srcX">srcX</a>, <a href="#SkPixmap_readPixels_srcY">srcY</a>), and does not
|
||||
exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_srcX">srcX</a>, <a href="#SkPixmap_readPixels_srcY">srcY</a>), and does not exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
|
||||
<a href="#SkPixmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and
|
||||
<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination
|
||||
row to the next. Returns true if pixels are copied. Returns false if
|
||||
@ -1700,7 +1703,8 @@ If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#Sk
|
||||
match. If this-><a href="#SkPixmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match. Returns
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkPixmap_readPixels_srcX">srcX</a> and <a href="#SkPixmap_readPixels_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false if <a href="#SkPixmap_width">width</a> or <a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a> || abs(scrY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
false if <a href="#SkPixmap_width">width</a> or <a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
|
||||
If <a href="#SkPixmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts source
|
||||
pixels to a linear space before converting to <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.
|
||||
@ -1744,7 +1748,8 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes)
|
||||
</pre>
|
||||
|
||||
Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_2_dstPixels">dstPixels</a>. Copy starts at (0, 0), and does not
|
||||
exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
|
||||
<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and
|
||||
<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_2_dstRowBytes">dstRowBytes</a> specifics the gap from one destination
|
||||
row to the next. Returns true if pixels are copied. Returns false if
|
||||
@ -1791,7 +1796,8 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies a <a href="undocumented#Rect">Rect</a> of pixels to <a href="#SkPixmap_readPixels_3_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkPixmap_readPixels_3_srcX">srcX</a>, <a href="#SkPixmap_readPixels_3_srcY">srcY</a>), and does not
|
||||
exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
exceed(this-><a href="#SkPixmap_width">width</a>, this-><a href="#SkPixmap_height">height</a>).
|
||||
|
||||
<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Color_Type">Color Type</a>, <a href="undocumented#Alpha_Type">Alpha Type</a>, and
|
||||
<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkPixmap_readPixels_3_dstRowBytes">dstRowBytes</a> specifics the gap from one destination
|
||||
row to the next. Returns true if pixels are copied. Returns false if
|
||||
@ -1804,7 +1810,8 @@ If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#Sk
|
||||
match. If this-><a href="#SkPixmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match. Returns
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkPixmap_readPixels_3_srcX">srcX</a> and <a href="#SkPixmap_readPixels_3_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false if this-><a href="#SkPixmap_width">width</a> or this-><a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a> || abs(scrY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
false if this-><a href="#SkPixmap_width">width</a> or this-><a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1852,7 +1859,8 @@ If this-><a href="#SkPixmap_alphaType">alphaType</a> is <a href="undocumented#Sk
|
||||
match. If this-><a href="#SkPixmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkPixmap_readPixels_4_dst">dst</a>.<a href="#SkPixmap_info">info</a>.<a href="#SkPixmap_colorSpace">colorSpace</a> must match. Returns
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkPixmap_readPixels_4_srcX">srcX</a> and <a href="#SkPixmap_readPixels_4_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false this-><a href="#SkPixmap_width">width</a> or this-><a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a> || abs(scrY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
false this-><a href="#SkPixmap_width">width</a> or this-><a href="#SkPixmap_height">height</a> is zero or negative. Returns false ifabs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
@ -1119,8 +1119,10 @@ bool BmhParser::addDefinition(const char* defStart, bool hasEnd, MarkType markTy
|
||||
case MarkType::kTime:
|
||||
case MarkType::kVolatile:
|
||||
case MarkType::kWidth:
|
||||
if (hasEnd) {
|
||||
if (hasEnd && MarkType::kAnchor != markType) {
|
||||
return this->reportError<bool>("one liners omit end element");
|
||||
} else if (!hasEnd && MarkType::kAnchor == markType) {
|
||||
return this->reportError<bool>("anchor line must have end element last");
|
||||
}
|
||||
fMarkup.emplace_front(markType, defStart, fLineCount, fParent);
|
||||
definition = &fMarkup.front();
|
||||
|
@ -1841,12 +1841,13 @@ public:
|
||||
return 0 == size;
|
||||
}
|
||||
|
||||
void descriptionOut(const Definition* def);
|
||||
void enumHeaderOut(const RootDefinition* root, const Definition& child);
|
||||
void enumMembersOut(const RootDefinition* root, Definition& child);
|
||||
void enumSizeItems(const Definition& child);
|
||||
int lookupMethod(const PunctuationState punctuation, const Word word,
|
||||
const int start, const int run, int lastWrite,
|
||||
const char* data);
|
||||
const char* data, bool hasIndirection);
|
||||
int lookupReference(const PunctuationState punctuation, const Word word,
|
||||
const int start, const int run, int lastWrite, const char last,
|
||||
const char* data);
|
||||
|
@ -7,6 +7,108 @@
|
||||
|
||||
#include "bookmaker.h"
|
||||
|
||||
void IncludeWriter::descriptionOut(const Definition* def) {
|
||||
const char* commentStart = def->fContentStart;
|
||||
int commentLen = (int) (def->fContentEnd - commentStart);
|
||||
bool breakOut = false;
|
||||
for (auto prop : def->fChildren) {
|
||||
switch (prop->fMarkType) {
|
||||
case MarkType::kDefinedBy:
|
||||
commentStart = prop->fTerminator;
|
||||
break;
|
||||
case MarkType::kDeprecated:
|
||||
case MarkType::kPrivate:
|
||||
commentLen = (int) (prop->fStart - commentStart);
|
||||
if (commentLen > 0) {
|
||||
SkASSERT(commentLen < 1000);
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = prop->fContentStart;
|
||||
commentLen = (int) (prop->fContentEnd - commentStart);
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = prop->fTerminator;
|
||||
commentLen = (int) (def->fContentEnd - commentStart);
|
||||
break;
|
||||
case MarkType::kExperimental:
|
||||
this->writeString("EXPERIMENTAL:");
|
||||
this->writeSpace();
|
||||
commentStart = prop->fContentStart;
|
||||
commentLen = (int) (prop->fContentEnd - commentStart);
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = prop->fTerminator;
|
||||
commentLen = (int) (def->fContentEnd - commentStart);
|
||||
break;
|
||||
case MarkType::kFormula:
|
||||
commentLen = prop->fStart - commentStart;
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
this->writeBlock(prop->length(), prop->fContentStart);
|
||||
commentStart = prop->fTerminator;
|
||||
commentLen = (int) (def->fContentEnd - commentStart);
|
||||
if ('\n' == commentStart[0] && '\n' == commentStart[1]) {
|
||||
this->lf(2);
|
||||
}
|
||||
break;
|
||||
case MarkType::kToDo:
|
||||
commentLen = (int) (prop->fStart - commentStart);
|
||||
if (commentLen > 0) {
|
||||
SkASSERT(commentLen < 1000);
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = prop->fTerminator;
|
||||
commentLen = (int) (def->fContentEnd - commentStart);
|
||||
break;
|
||||
case MarkType::kList:
|
||||
commentLen = prop->fStart - commentStart;
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart,
|
||||
Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
for (auto row : prop->fChildren) {
|
||||
SkASSERT(MarkType::kRow == row->fMarkType);
|
||||
for (auto column : row->fChildren) {
|
||||
SkASSERT(MarkType::kColumn == column->fMarkType);
|
||||
this->writeString("-");
|
||||
this->writeSpace();
|
||||
this->descriptionOut(column);
|
||||
this->lf(1);
|
||||
}
|
||||
}
|
||||
commentStart = prop->fTerminator;
|
||||
commentLen = (int) (def->fContentEnd - commentStart);
|
||||
if ('\n' == commentStart[0] && '\n' == commentStart[1]) {
|
||||
this->lf(2);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
commentLen = (int) (prop->fStart - commentStart);
|
||||
breakOut = true;
|
||||
}
|
||||
if (breakOut) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
SkASSERT(commentLen > 0 && commentLen < 1500);
|
||||
this->rewriteBlock(commentLen, commentStart, Phrase::kNo);
|
||||
}
|
||||
|
||||
void IncludeWriter::enumHeaderOut(const RootDefinition* root,
|
||||
const Definition& child) {
|
||||
const Definition* enumDef = nullptr;
|
||||
@ -55,6 +157,7 @@ void IncludeWriter::enumHeaderOut(const RootDefinition* root,
|
||||
Definition* codeBlock = nullptr;
|
||||
const char* commentStart = nullptr;
|
||||
bool wroteHeader = false;
|
||||
bool lastAnchor = false;
|
||||
SkDEBUGCODE(bool foundConst = false);
|
||||
for (auto test : enumDef->fChildren) {
|
||||
if (MarkType::kCode == test->fMarkType) {
|
||||
@ -79,13 +182,22 @@ void IncludeWriter::enumHeaderOut(const RootDefinition* root,
|
||||
this->lfcr();
|
||||
wroteHeader = true;
|
||||
}
|
||||
if (lastAnchor) {
|
||||
if (commentEnd - commentStart > 1) {
|
||||
SkASSERT('\n' == commentStart[0]);
|
||||
if (' ' == commentStart[1]) {
|
||||
this->writeSpace();
|
||||
}
|
||||
}
|
||||
lastAnchor = false;
|
||||
}
|
||||
this->rewriteBlock((int) (commentEnd - commentStart), commentStart, Phrase::kNo);
|
||||
if (MarkType::kAnchor == test->fMarkType) {
|
||||
commentStart = test->fContentStart;
|
||||
commentEnd = test->fChildren[0]->fStart;
|
||||
this->writeSpace();
|
||||
this->rewriteBlock((int) (commentEnd - commentStart), commentStart, Phrase::kNo);
|
||||
this->writeSpace();
|
||||
lastAnchor = true; // this->writeSpace();
|
||||
}
|
||||
commentStart = test->fTerminator;
|
||||
if (MarkType::kConst == test->fMarkType) {
|
||||
@ -415,67 +527,7 @@ void IncludeWriter::methodOut(const Definition* method, const Definition& child)
|
||||
}
|
||||
this->writeCommentHeader();
|
||||
fIndent += 4;
|
||||
const char* commentStart = method->fContentStart;
|
||||
int commentLen = (int) (method->fContentEnd - commentStart);
|
||||
bool breakOut = false;
|
||||
for (auto methodProp : method->fChildren) {
|
||||
switch (methodProp->fMarkType) {
|
||||
case MarkType::kDefinedBy:
|
||||
commentStart = methodProp->fTerminator;
|
||||
break;
|
||||
case MarkType::kDeprecated:
|
||||
case MarkType::kPrivate:
|
||||
commentLen = (int) (methodProp->fStart - commentStart);
|
||||
if (commentLen > 0) {
|
||||
SkASSERT(commentLen < 1000);
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = methodProp->fContentStart;
|
||||
commentLen = (int) (methodProp->fContentEnd - commentStart);
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = methodProp->fTerminator;
|
||||
commentLen = (int) (method->fContentEnd - commentStart);
|
||||
break;
|
||||
case MarkType::kExperimental:
|
||||
this->writeString("EXPERIMENTAL:");
|
||||
this->writeSpace();
|
||||
commentStart = methodProp->fContentStart;
|
||||
commentLen = (int) (methodProp->fContentEnd - commentStart);
|
||||
if (commentLen > 0) {
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = methodProp->fTerminator;
|
||||
commentLen = (int) (method->fContentEnd - commentStart);
|
||||
break;
|
||||
case MarkType::kToDo:
|
||||
commentLen = (int) (methodProp->fStart - commentStart);
|
||||
if (commentLen > 0) {
|
||||
SkASSERT(commentLen < 1000);
|
||||
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
|
||||
this->lfcr();
|
||||
}
|
||||
}
|
||||
commentStart = methodProp->fTerminator;
|
||||
commentLen = (int) (method->fContentEnd - commentStart);
|
||||
break;
|
||||
default:
|
||||
commentLen = (int) (methodProp->fStart - commentStart);
|
||||
breakOut = true;
|
||||
}
|
||||
if (breakOut) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
SkASSERT(commentLen > 0 && commentLen < 1500);
|
||||
this->rewriteBlock(commentLen, commentStart, Phrase::kNo);
|
||||
this->descriptionOut(method);
|
||||
// compute indention column
|
||||
size_t column = 0;
|
||||
bool hasParmReturn = false;
|
||||
@ -595,7 +647,7 @@ Definition* IncludeWriter::structMemberOut(const Definition* memberStart, const
|
||||
memberStart->fContentStart);
|
||||
this->indentToColumn(fStructMemberTab);
|
||||
this->writeString(name.c_str());
|
||||
auto tokenIter = child.fParent->fTokens.begin();
|
||||
auto tokenIter = child.fParent->fTokens.begin();
|
||||
std::advance(tokenIter, child.fParentIndex + 1);
|
||||
Definition* valueStart = &*tokenIter;
|
||||
while (Definition::Type::kPunctuation != tokenIter->fType) {
|
||||
@ -828,7 +880,8 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
|
||||
}
|
||||
if (Definition::Type::kPunctuation == child.fType &&
|
||||
(Punctuation::kSemicolon == child.fPunctuation ||
|
||||
Punctuation::kLeftBrace == child.fPunctuation)) {
|
||||
Punctuation::kLeftBrace == child.fPunctuation ||
|
||||
(Punctuation::kColon == child.fPunctuation && inConstructor))) {
|
||||
SkASSERT(fContinuation[0] == '(');
|
||||
const char* continueEnd = child.fContentStart;
|
||||
while (continueEnd > fContinuation && isspace(continueEnd[-1])) {
|
||||
@ -838,7 +891,6 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
|
||||
method = root->find(methodName, RootDefinition::AllowParens::kNo);
|
||||
if (!method) {
|
||||
fLineCount = child.fLineCount;
|
||||
fclose(fOut); // so we can see what we've written so far
|
||||
return this->reportError<bool>("method not found");
|
||||
}
|
||||
this->methodOut(method, child);
|
||||
@ -852,17 +904,19 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
|
||||
if (inConstructor) {
|
||||
continue;
|
||||
}
|
||||
methodName += "()";
|
||||
method = root->find(methodName, RootDefinition::AllowParens::kNo);
|
||||
method = root->find(methodName + "()", RootDefinition::AllowParens::kNo);
|
||||
if (method && MarkType::kDefinedBy == method->fMarkType) {
|
||||
method = method->fParent;
|
||||
}
|
||||
if (method) {
|
||||
if (method->fCloned) {
|
||||
clonedMethod = method;
|
||||
continue;
|
||||
}
|
||||
this->methodOut(method, child);
|
||||
continue;
|
||||
}
|
||||
fLineCount = child.fLineCount;
|
||||
fclose(fOut); // so we can see what we've written so far
|
||||
return this->reportError<bool>("method not found");
|
||||
}
|
||||
if (Bracket::kSlashSlash == child.fBracket || Bracket::kSlashStar == child.fBracket) {
|
||||
@ -1196,6 +1250,16 @@ string IncludeWriter::resolveMethod(const char* start, const char* end, bool fir
|
||||
report.reportError("method should not include references to itself");
|
||||
return "";
|
||||
}
|
||||
if (fBmhMethod) {
|
||||
for (auto child : fBmhMethod->fChildren) {
|
||||
if (MarkType::kParam != child->fMarkType) {
|
||||
continue;
|
||||
}
|
||||
if (methodname == child->fName) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
return substitute;
|
||||
}
|
||||
|
||||
@ -1292,14 +1356,27 @@ string IncludeWriter::resolveRef(const char* start, const char* end, bool first,
|
||||
}
|
||||
|
||||
int IncludeWriter::lookupMethod(const PunctuationState punctuation, const Word word,
|
||||
const int lastSpace, const int run, int lastWrite, const char* data) {
|
||||
const int lastSpace, const int run, int lastWrite, const char* data,
|
||||
bool hasIndirection) {
|
||||
int wordStart = lastSpace;
|
||||
while (' ' >= data[wordStart]) {
|
||||
++wordStart;
|
||||
}
|
||||
const int wordEnd = PunctuationState::kDelimiter == punctuation ||
|
||||
PunctuationState::kPeriod == punctuation ? run - 1 : run;
|
||||
string temp = this->resolveMethod(&data[wordStart], &data[wordEnd], Word::kFirst == word);
|
||||
string temp;
|
||||
if (hasIndirection && '(' != data[wordEnd - 1] && ')' != data[wordEnd - 1]) {
|
||||
// FIXME: hard-coded to assume a.b or a->b is a.b() or a->b().
|
||||
// need to check class a for member b to see if this is so
|
||||
TextParser parser(fFileName, &data[wordStart], &data[wordEnd], fLineCount);
|
||||
const char* indirection = parser.anyOf(".>");
|
||||
if (&data[wordEnd] <= &indirection[2] || 'f' != indirection[1] ||
|
||||
!isupper(indirection[2])) {
|
||||
temp = string(&data[wordStart], wordEnd - wordStart) + "()";
|
||||
}
|
||||
} else {
|
||||
temp = this->resolveMethod(&data[wordStart], &data[wordEnd], Word::kFirst == word);
|
||||
}
|
||||
if (temp.length()) {
|
||||
if (wordStart > lastWrite) {
|
||||
SkASSERT(data[wordStart - 1] >= ' ');
|
||||
@ -1372,9 +1449,11 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
int lastSpace = -1;
|
||||
char c = 0;
|
||||
char last;
|
||||
bool embeddedIndirection = false;
|
||||
bool embeddedSymbol = false;
|
||||
bool hasLower = false;
|
||||
bool hasUpper = false;
|
||||
bool hasIndirection = false;
|
||||
bool hasSymbol = false;
|
||||
while (run < size) {
|
||||
last = c;
|
||||
@ -1417,7 +1496,7 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
case Word::kMixed:
|
||||
if (hasUpper && hasLower && !hasSymbol && lastSpace > 0) {
|
||||
lastWrite = this->lookupMethod(punctuation, word, lastSpace, run,
|
||||
lastWrite, data);
|
||||
lastWrite, data, hasIndirection && !hasSymbol);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -1427,9 +1506,11 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
(PunctuationState::kStart == punctuation && ' ' >= last) ?
|
||||
PunctuationState::kStart : PunctuationState::kSpace;
|
||||
word = Word::kStart;
|
||||
embeddedIndirection = false;
|
||||
embeddedSymbol = false;
|
||||
hasLower = false;
|
||||
hasUpper = false;
|
||||
hasIndirection = false;
|
||||
hasSymbol = false;
|
||||
lastSpace = run;
|
||||
break;
|
||||
@ -1450,7 +1531,7 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
default:
|
||||
SkASSERT(0);
|
||||
}
|
||||
embeddedSymbol = true;
|
||||
embeddedIndirection = true;
|
||||
break;
|
||||
case ',': case ';': case ':':
|
||||
switch (word) {
|
||||
@ -1471,11 +1552,16 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
}
|
||||
embeddedSymbol = true;
|
||||
break;
|
||||
case '>':
|
||||
if ('-' == last) {
|
||||
embeddedIndirection = true;
|
||||
break;
|
||||
}
|
||||
case '\'': // possessive apostrophe isn't treated as delimiting punctation
|
||||
case '\"': // quote is passed straight through
|
||||
case '=':
|
||||
case '!': // assumed not to be punctuation, but a programming symbol
|
||||
case '&': case '>': case '<': case '{': case '}': case '/': case '*': case '[': case ']':
|
||||
case '&': case '<': case '{': case '}': case '/': case '*': case '[': case ']':
|
||||
word = Word::kMixed;
|
||||
embeddedSymbol = true;
|
||||
break;
|
||||
@ -1545,6 +1631,7 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
PunctuationState::kDelimiter == punctuation) {
|
||||
word = Word::kMixed;
|
||||
}
|
||||
hasIndirection |= embeddedIndirection;
|
||||
hasSymbol |= embeddedSymbol;
|
||||
break;
|
||||
case 'a': case 'b': case 'c': case 'd': case 'e':
|
||||
@ -1570,6 +1657,7 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
}
|
||||
hasLower = true;
|
||||
punctuation = PunctuationState::kStart;
|
||||
hasIndirection |= embeddedIndirection;
|
||||
hasSymbol |= embeddedSymbol;
|
||||
break;
|
||||
default:
|
||||
@ -1580,7 +1668,8 @@ IncludeWriter::Wrote IncludeWriter::rewriteBlock(int size, const char* data, Phr
|
||||
if ((word == Word::kCap || word == Word::kFirst || word == Word::kUnderline) && hasLower) {
|
||||
lastWrite = this->lookupReference(punctuation, word, start, run, lastWrite, last, data);
|
||||
} else if (word == Word::kMixed && hasUpper && hasLower && !hasSymbol && lastSpace > 0) {
|
||||
lastWrite = this->lookupMethod(punctuation, word, lastSpace, run, lastWrite, data);
|
||||
lastWrite = this->lookupMethod(punctuation, word, lastSpace, run, lastWrite, data,
|
||||
hasIndirection && !hasSymbol);
|
||||
}
|
||||
if (run > lastWrite) {
|
||||
if (' ' == data[lastWrite]) {
|
||||
|
Loading…
Reference in New Issue
Block a user