limit bookmaker status output
streamline 'working as intended' output notify when output changed fix bug which appended output incorrectly to SkBitmap.h fix bug that hid bad SkSurface.h from detection Docs-Preview: https://skia.org/?cl=90162 Bug: skia:6898 Change-Id: I067cfe5bbad706345fb5cd540cdc3835ce22d822 Reviewed-on: https://skia-review.googlesource.com/90162 Commit-Queue: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
This commit is contained in:
parent
94b7e54256
commit
7cfcbca716
@ -450,9 +450,10 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT
|
||||
|
||||
#Method SkPixmap pixmap() const
|
||||
|
||||
Returns Pixmap with Bitmap pixel address, row bytes, and Image_Info, if address is available.
|
||||
If pixel address is not available, returns default constructed Pixmap: nullptr pixels,
|
||||
kUnknown_SkColorType, kUnknown_SkAlphaType, width and height of zero.
|
||||
Returns Pixmap with Bitmap pixel address, row bytes, and Image_Info, if address
|
||||
is available. If pixel address is not available, returns default constructed
|
||||
Pixmap: nullptr pixels, kUnknown_SkColorType, kUnknown_SkAlphaType, width and
|
||||
height of zero.
|
||||
|
||||
Returned Pixmap becomes invalid on any future change to Bitmap
|
||||
|
||||
|
@ -1066,6 +1066,13 @@ CAN WE DEPRECATE THIS?
|
||||
kFlushWrite_BackendHandleAccess,
|
||||
kDiscardWrite_BackendHandleAccess,
|
||||
};
|
||||
|
||||
static const BackendHandleAccess kFlushRead_TextureHandleAccess =
|
||||
kFlushRead_BackendHandleAccess;
|
||||
static const BackendHandleAccess kFlushWrite_TextureHandleAccess =
|
||||
kFlushWrite_BackendHandleAccess;
|
||||
static const BackendHandleAccess kDiscardWrite_TextureHandleAccess =
|
||||
kDiscardWrite_BackendHandleAccess;
|
||||
##
|
||||
|
||||
#Const kFlushRead_BackendHandleAccess 0
|
||||
@ -1078,6 +1085,22 @@ Caller may write to the back-end object.
|
||||
Caller must overwrite the entire back-end object.
|
||||
##
|
||||
|
||||
#Const kFlushRead_TextureHandleAccess 0
|
||||
Deprecated.
|
||||
#Deprecated
|
||||
##
|
||||
##
|
||||
#Const kFlushWrite_TextureHandleAccess 1
|
||||
Deprecated.
|
||||
#Deprecated
|
||||
##
|
||||
##
|
||||
#Const kDiscardWrite_TextureHandleAccess 2
|
||||
Deprecated.
|
||||
#Deprecated
|
||||
##
|
||||
##
|
||||
|
||||
#Example
|
||||
#Platform gpu
|
||||
SkPaint paint;
|
||||
|
@ -1,6 +1,8 @@
|
||||
#External
|
||||
SkXXX
|
||||
bmh_SkXXX
|
||||
SkIRect_Reference
|
||||
SkSurface_Reference
|
||||
SkSurface.h
|
||||
CL
|
||||
Go
|
||||
Visual_Studio
|
||||
@ -9,11 +11,73 @@ Completed InProgress
|
||||
|
||||
#Topic Bookmaker
|
||||
|
||||
#Subtopic Broken_Build
|
||||
|
||||
If the
|
||||
#A Housekeeper-PerCommit-Bookmaker # https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-PerCommit-Bookmaker ##
|
||||
bot is red, the bot has detected that the files in docs and include/core differ.
|
||||
|
||||
The bot output describes what changed.
|
||||
|
||||
To fix this, edit the docs file corresponding to the changed include file.
|
||||
|
||||
For instance, if the change was made to SkIRect, edit docs/SkIRect_Reference.bmh.
|
||||
Checking in the edited docs/SkIRect_Reference.bmh will fix the bot.
|
||||
|
||||
To regenerate the documentation, follow the Installing and Regenerate steps below.
|
||||
|
||||
If the
|
||||
#A Housekeeper-Nightly-Bookmaker # https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker ##
|
||||
bot is red, one of several things may have gone wrong:
|
||||
|
||||
#List
|
||||
# A change to include broke documentation examples. ##
|
||||
# Something changed the examples that output text. ##
|
||||
# Some interface was added, deleted, edited. ##
|
||||
# Documentation is malformed. ##
|
||||
##
|
||||
|
||||
The bot output describes what changed, and includes the file and line
|
||||
where the error occurred.
|
||||
|
||||
To regenerate the documentation, follow the Installing and Regenerate steps below.
|
||||
|
||||
#Subtopic Broken_Build ##
|
||||
|
||||
#Subtopic Editing_Comments
|
||||
|
||||
Edit docs instead of include/core files to update comments if possible.
|
||||
|
||||
The Bookmaker bots do not complain if the docs file does not match the
|
||||
corresponding include comments. Running Bookmaker include generation will
|
||||
report when docs and includes comments do not match.
|
||||
|
||||
For instance, if include/core/SkSurface.h comments do not match
|
||||
docs/SkSurface_Reference.bmh, running:
|
||||
|
||||
#Code
|
||||
$ ./out/dir/bookmaker -b docs -i include/core/SkSurface.h -p
|
||||
##
|
||||
|
||||
generates
|
||||
|
||||
#Code
|
||||
wrote updated SkSurface.h
|
||||
##
|
||||
|
||||
The updated SkSurface.h is written to the root to avoid subsequent runs of
|
||||
Bookmaker from recompiling. if SkSurface.h was not changed, it is not written,
|
||||
and Bookmaker will not generate any output.
|
||||
|
||||
#Subtopic Editing_Comments ##
|
||||
|
||||
How to use the Bookmaker utility.
|
||||
|
||||
#Subtopic Installing
|
||||
|
||||
Install
|
||||
#A Go # https://golang.org/doc/install ##
|
||||
if needed.
|
||||
if needed.
|
||||
Get the fiddle command line interface tool.
|
||||
By default this will appear in your home directory.
|
||||
|
||||
@ -27,6 +91,24 @@ Build Bookmaker.
|
||||
$ ninja -C out/dir bookmaker
|
||||
##
|
||||
|
||||
#Subtopic Installing ##
|
||||
|
||||
#Subtopic Regenerate
|
||||
|
||||
Complete rebuilding of all bookmaker output looks like:
|
||||
|
||||
#Code
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -e fiddle.json
|
||||
$ ~/go/bin/fiddlecli.exe --input fiddle.json --output fiddleout.json
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -f fiddleout.json -r site/user/api -c
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -x
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -p
|
||||
##
|
||||
|
||||
#Subtopic Regenerate ##
|
||||
|
||||
#Subtopic New_Documentation
|
||||
|
||||
Generate an starter Bookmaker file from an existing include.
|
||||
|
||||
#Code
|
||||
@ -58,6 +140,8 @@ docs/SkXXX_Reference.bmh
|
||||
##
|
||||
.
|
||||
|
||||
##
|
||||
|
||||
#Subtopic Style
|
||||
|
||||
Documentation consists of cross references, descriptions, and examples.
|
||||
@ -94,7 +178,7 @@ Descriptions may contain code and formulas, each bracketed by markup.
|
||||
Similar items may be grouped into topics. Topics may include subtopics.
|
||||
|
||||
Each document begins with one or more indices that include the contents of
|
||||
that file. A class reference includes an index listing contained topics,
|
||||
that file. A class reference includes an index listing contained topics,
|
||||
a separate listing for constructors, one for methods, and so on.
|
||||
|
||||
Class methods contain a description, any parameters, any return value,
|
||||
@ -107,7 +191,9 @@ After editing is complete, searching for "incomplete" should fail,
|
||||
assuming "incomplete" is not the perfect word to use in a description or
|
||||
example!
|
||||
|
||||
##
|
||||
#Subtopic Style ##
|
||||
|
||||
#Subtopic Adding_Documentation
|
||||
|
||||
Generate fiddle.json from all examples, including the ones you just wrote.
|
||||
Error checking is syntatic: starting keywords are closed, keywords have the
|
||||
@ -126,7 +212,7 @@ Errors are contained by the output but aren't reported yet.
|
||||
$ $GOPATH/bin/fiddlecli --input fiddle.json --output fiddleout.json
|
||||
##
|
||||
|
||||
Generate bmh_SkXXX.md from SkXXX.bmh and fiddleout.json.
|
||||
Generate SkXXX.md from SkXXX.bmh and fiddleout.json.
|
||||
Error checking includes: undefined references, fiddle compiler errors,
|
||||
missing or mismatched printf output.
|
||||
Again, you can click on any errors inside Visual_Studio.
|
||||
@ -159,15 +245,7 @@ If the new file has been added to status.json, you can run
|
||||
any of the above commands with -a docs/status.json in place of
|
||||
-b docs or -i includes.
|
||||
|
||||
Complete rebuilding of all bookmaker output looks like:
|
||||
|
||||
#Code
|
||||
./out/skia/bookmaker.exe -a docs/status.json -e fiddle.json
|
||||
~/go/bin/fiddlecli.exe --input fiddle.json --output fiddleout.json
|
||||
./out/skia/bookmaker.exe -a docs/status.json -f fiddleout.json -r site/user/api -c
|
||||
./out/skia/bookmaker.exe -a docs/status.json -x
|
||||
./out/skia/bookmaker.exe -a docs/status.json -p
|
||||
##
|
||||
#Subtopic Adding_Documentation ##
|
||||
|
||||
#Subtopic Bugs
|
||||
|
||||
|
@ -94,7 +94,7 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared
|
||||
| <a href="#SkBitmap_getGenerationID">getGenerationID</a> | Returns unique ID. |
|
||||
| <a href="#SkBitmap_getPixels">getPixels</a> | Returns address of pixels. |
|
||||
| <a href="#SkBitmap_getSubset">getSubset</a> | Returns <a href="#SkBitmap_bounds">bounds</a> offset by origin. |
|
||||
| <a href="#SkBitmap_hasHardwareMipMap">hasHardwareMipMap</a> | Returns <a href="undocumented#Mip_Map">Mip Map</a> support present; <a href="undocumented#Android">Android</a> only. |
|
||||
| <a href="#SkBitmap_hasHardwareMipMap">hasHardwareMipMap</a> | Returns <a href="undocumented#Mip_Map">Mip Map</a> support present; Android only. |
|
||||
| <a href="#SkBitmap_height">height</a> | Returns pixel row count. |
|
||||
| <a href="#SkBitmap_info">info</a> | Returns <a href="undocumented#Image_Info">Image Info</a>. |
|
||||
| <a href="#SkBitmap_installMaskPixels">installMaskPixels</a> | Creates <a href="undocumented#Pixel_Ref">Pixel Ref</a> from <a href="undocumented#Mask">Mask</a>. |
|
||||
@ -115,7 +115,7 @@ is useful to position one or more <a href="#Bitmap">Bitmaps</a> within a shared
|
||||
| <a href="#SkBitmap_rowBytes">rowBytes</a> | Returns interval between rows in bytes. |
|
||||
| <a href="#SkBitmap_rowBytesAsPixels">rowBytesAsPixels</a> | Returns interval between rows in pixels. |
|
||||
| <a href="#SkBitmap_setAlphaType">setAlphaType</a> | Sets <a href="undocumented#Image_Alpha_Type">Alpha Type</a> of shared pixels. |
|
||||
| <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> | Sets <a href="undocumented#Mip_Map">Mip Map</a> support present; <a href="undocumented#Android">Android</a> only. |
|
||||
| <a href="#SkBitmap_setHasHardwareMipMap">setHasHardwareMipMap</a> | Sets <a href="undocumented#Mip_Map">Mip Map</a> support present; Android only. |
|
||||
| <a href="#SkBitmap_setImmutable">setImmutable</a> | Marks that pixels will not change. |
|
||||
| <a href="#SkBitmap_setInfo">setInfo</a> | Sets <a href="#SkBitmap_height">height</a>, <a href="#SkBitmap_width">width</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, and so on, releasing pixels. |
|
||||
| <a href="#SkBitmap_setIsVolatile">setIsVolatile</a> | Marks if pixels should not be cached. |
|
||||
@ -230,7 +230,7 @@ pixel address = 0x560ddd0ac670
|
||||
SkBitmap()
|
||||
</pre>
|
||||
|
||||
Creates an <a href="#SkBitmap_empty">empty</a> <a href="#Bitmap">Bitmap</a> without pixels, with <a href="undocumented#SkColorType">kUnknown SkColorType</a>,
|
||||
Creates an <a href="#SkBitmap_empty">empty</a> <a href="#Bitmap">Bitmap</a> without pixels, with <a href="undocumented#SkColorType">kUnknown SkColorType</a>,
|
||||
<a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, and with a <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> of zero. <a href="undocumented#Pixel_Ref">Pixel Ref</a> origin is
|
||||
set to (0, 0). <a href="#Bitmap">Bitmap</a> is not volatile.
|
||||
|
||||
@ -483,9 +483,10 @@ two width:1 height:1 colorType:kRGBA_8888_SkColorType alphaType:kOpaque_SkAlphaT
|
||||
SkPixmap pixmap() const
|
||||
</pre>
|
||||
|
||||
Returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> with <a href="#Bitmap">Bitmap</a> pixel address, row bytes, and <a href="undocumented#Image_Info">Image Info</a>, if address is available.
|
||||
If pixel address is not available, returns default constructed <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: nullptr pixels,
|
||||
<a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="#SkBitmap_width">width</a> and <a href="#SkBitmap_height">height</a> of zero.
|
||||
Returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> with <a href="#Bitmap">Bitmap</a> pixel address, row bytes, and <a href="undocumented#Image_Info">Image Info</a>, if address
|
||||
is available. If pixel address is not available, returns default constructed
|
||||
<a href="SkPixmap_Reference#Pixmap">Pixmap</a>: nullptr pixels, <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="#SkBitmap_width">width</a> and
|
||||
<a href="#SkBitmap_height">height</a> of zero.
|
||||
|
||||
Returned <a href="SkPixmap_Reference#Pixmap">Pixmap</a> becomes invalid on any future change to <a href="#Bitmap">Bitmap</a>
|
||||
|
||||
@ -561,7 +562,7 @@ int width() const
|
||||
|
||||
Returns pixel count in each row. Should be equal or less than:
|
||||
|
||||
<a href="#SkBitmap_rowBytes">rowBytes</a> / <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>.
|
||||
<a href="#SkBitmap_rowBytes">rowBytes</a> / <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_bytesPerPixel">bytesPerPixel</a>.
|
||||
|
||||
Maybe be less than <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_width">width</a>. Will not exceed <a href="#SkBitmap_pixelRef">pixelRef</a>.<a href="#SkBitmap_width">width</a> less
|
||||
<a href="#SkBitmap_pixelRefOrigin">pixelRefOrigin</a>.fX.
|
||||
@ -705,7 +706,7 @@ immutable.
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="7ade8a1a21ea5197e565c86740b47b73"><div><a href="#SkColorSpace_MakeSRGBLinear">SkColorSpace::MakeSRGBLinear</a> creates <a href="undocumented#Color_Space">Color Space</a> with linear gamma
|
||||
and an <a href="undocumented#sRGB">sRGB</a> gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to <a href="undocumented#sRGB">sRGB</a> gamma.</div>
|
||||
and an sRGB gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to sRGB gamma.</div>
|
||||
|
||||
#### Example Output
|
||||
|
||||
@ -1039,7 +1040,7 @@ If <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is <a href="undocument
|
||||
If <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, returns true unless
|
||||
<a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a> and <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is not <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>.
|
||||
If <a href="undocumented#Image_Alpha_Type">Alpha Type</a> is <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="#SkBitmap_alphaType">alphaType</a> is ignored. If <a href="#SkBitmap_alphaType">alphaType</a> is
|
||||
<a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, it is treated as <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>.
|
||||
<a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, it is treated as <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>.
|
||||
|
||||
This changes <a href="undocumented#Image_Alpha_Type">Alpha Type</a> in <a href="undocumented#Pixel_Ref">Pixel Ref</a>; all bitmaps sharing <a href="undocumented#Pixel_Ref">Pixel Ref</a>
|
||||
are affected.
|
||||
@ -1183,14 +1184,14 @@ void setImmutable()
|
||||
</pre>
|
||||
|
||||
Sets internal flag to mark <a href="#Bitmap">Bitmap</a> as immutable. Once set, pixels can not change.
|
||||
Any other bitmap sharing the same <a href="undocumented#Pixel_Ref">Pixel Ref</a> are also marked as immutable.
|
||||
Any other bitmap sharing the same <a href="undocumented#Pixel_Ref">Pixel Ref</a> are also marked as immutable.
|
||||
Once <a href="undocumented#Pixel_Ref">Pixel Ref</a> is marked immutable, the setting cannot be cleared.
|
||||
|
||||
Writing to immutable <a href="#Bitmap">Bitmap</a> pixels triggers an assert on debug builds.
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="9210060d1f4ca46e1375496237902ef3"><div>Triggers assert if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is true, runs fine otherwise.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="9210060d1f4ca46e1375496237902ef3"><div>Triggers assert if SK_DEBUG is true, runs fine otherwise.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -1277,7 +1278,7 @@ void setIsVolatile(bool isVolatile)
|
||||
</pre>
|
||||
|
||||
Sets if pixels should be read from <a href="undocumented#Pixel_Ref">Pixel Ref</a> on every access. <a href="#Bitmap">Bitmaps</a> are not
|
||||
volatile by default; a <a href="undocumented#GPU">GPU</a> back end may upload pixel values expecting them to be
|
||||
volatile by default; a GPU back end may upload pixel values expecting them to be
|
||||
accessed repeatedly. Marking temporary <a href="#Bitmap">Bitmaps</a> as volatile provides a hint to
|
||||
<a href="undocumented#Device">Device</a> that the <a href="#Bitmap">Bitmap</a> pixels should not be cached. This can
|
||||
improve performance by avoiding overhead and reducing resource
|
||||
@ -1310,7 +1311,7 @@ void reset()
|
||||
Resets to its initial state; all fields are set to zero, as if <a href="#Bitmap">Bitmap</a> had
|
||||
been initialized by <a href="#SkBitmap_empty_constructor">SkBitmap()</a>.
|
||||
|
||||
Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, row bytes to zero; pixel address to nullptr; <a href="undocumented#SkColorType">SkColorType</a> to
|
||||
Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, row bytes to zero; pixel address to nullptr; <a href="undocumented#SkColorType">SkColorType</a> to
|
||||
<a href="undocumented#SkColorType">kUnknown SkColorType</a>; and <a href="undocumented#SkAlphaType">SkAlphaType</a> to <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>.
|
||||
|
||||
If <a href="undocumented#Pixel_Ref">Pixel Ref</a> is allocated, its reference count is decreased by one, releasing
|
||||
@ -1354,7 +1355,7 @@ For <a href="undocumented#Image_Color_Type">Color Type</a> <a href="undocumented
|
||||
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 <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1526,7 +1527,7 @@ Sets <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>,
|
||||
<a href="#SkBitmap_rowBytes">rowBytes</a>. Frees pixels, and returns true if successful.
|
||||
|
||||
<a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> may be altered to a value permitted by <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a>.
|
||||
If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is
|
||||
If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is
|
||||
set to <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>.
|
||||
If <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a> and <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is
|
||||
<a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, <a href="#SkBitmap_setInfo_imageInfo">imageInfo</a>.<a href="#SkBitmap_alphaType">alphaType</a> is replaced by <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>.
|
||||
@ -1603,7 +1604,7 @@ bool SK_WARN_UNUSED_RESULT tryAllocPixelsFlags(const SkImageInfo& info, uint32_t
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel
|
||||
memory. If <a href="#SkBitmap_tryAllocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed.
|
||||
memory. If <a href="#SkBitmap_tryAllocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed.
|
||||
|
||||
Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could
|
||||
not be allocated, or memory could not optionally be zeroed.
|
||||
@ -1655,12 +1656,12 @@ void allocPixelsFlags(const SkImageInfo& info, uint32_t flags)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel
|
||||
memory. If <a href="#SkBitmap_allocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed.
|
||||
memory. If <a href="#SkBitmap_allocPixelsFlags_flags">flags</a> is <a href="#SkBitmap_kZeroPixels_AllocFlag">kZeroPixels AllocFlag</a>, memory is zeroed.
|
||||
|
||||
Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could
|
||||
not be allocated, or memory could not optionally
|
||||
be zeroed. Abort steps may be provided by the user at compile time by defining
|
||||
<a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
SK_ABORT.
|
||||
|
||||
On most platforms, allocating pixel memory may succeed even though there is
|
||||
not sufficient memory to hold pixels; allocation does not take place
|
||||
@ -1745,7 +1746,7 @@ or equal zero. Pass in zero for <a href="#SkBitmap_rowBytes">rowBytes</a> to com
|
||||
|
||||
Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could
|
||||
not be allocated. Abort steps may be provided by
|
||||
the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
the user at compile time by defining SK_ABORT.
|
||||
|
||||
On most platforms, allocating pixel memory may succeed even though there is
|
||||
not sufficient memory to hold pixels; allocation does not take place
|
||||
@ -1776,7 +1777,7 @@ bool SK_WARN_UNUSED_RESULT tryAllocPixels(const SkImageInfo& info)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel
|
||||
memory.
|
||||
memory.
|
||||
|
||||
Returns false and calls <a href="#SkBitmap_reset">reset</a> if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could
|
||||
not be allocated.
|
||||
@ -1812,11 +1813,11 @@ void allocPixels(const SkImageInfo& info)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a> and allocates pixel
|
||||
memory.
|
||||
memory.
|
||||
|
||||
Aborts execution if <a href="undocumented#Image_Info">Image Info</a> could not be set, or memory could
|
||||
not be allocated. Abort steps may be provided by
|
||||
the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
the user at compile time by defining SK_ABORT.
|
||||
|
||||
On most platforms, allocating pixel memory may succeed even though there is
|
||||
not sufficient memory to hold pixels; allocation does not take place
|
||||
@ -1847,7 +1848,7 @@ contains <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height<
|
||||
bool SK_WARN_UNUSED_RESULT tryAllocN32Pixels(int width, int height, bool isOpaque = false)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates
|
||||
pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="undocumented#Image_Info">Image Info</a> to <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>;
|
||||
otherwise, sets to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>.
|
||||
|
||||
@ -1891,13 +1892,13 @@ true if pixel storage is allocated
|
||||
void allocN32Pixels(int width, int height, bool isOpaque = false)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and the <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, and the <a href="undocumented#Native_Color_Type">Native Color Type</a>; and allocates
|
||||
pixel memory. If <a href="#SkBitmap_isOpaque">isOpaque</a> is true, sets <a href="undocumented#Image_Info">Image Info</a> to <a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>;
|
||||
otherwise, sets to <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>.
|
||||
|
||||
Aborts if <a href="#SkBitmap_width">width</a> exceeds 29 bits or is negative, or <a href="#SkBitmap_height">height</a> is negative, or
|
||||
allocation fails. Abort steps may be provided by the user at compile time by
|
||||
defining <a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
defining SK_ABORT.
|
||||
|
||||
Use to create <a href="#Bitmap">Bitmap</a> that matches <a href="undocumented#SkPMColor">SkPMColor</a>, the native pixel arrangement on
|
||||
the platform. <a href="#Bitmap">Bitmap</a> drawn to output device skips converting its pixel format.
|
||||
@ -1932,7 +1933,7 @@ bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, void
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Image_Info">Image Info</a> to <a href="#SkBitmap_info">info</a> following the rules in <a href="#SkBitmap_setInfo">setInfo</a>, and creates <a href="undocumented#Pixel_Ref">Pixel Ref</a>
|
||||
containing <a href="#SkBitmap_installPixels_pixels">pixels</a> and <a href="#SkBitmap_rowBytes">rowBytes</a>. <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a>, if not nullptr, is called
|
||||
containing <a href="#SkBitmap_installPixels_pixels">pixels</a> and <a href="#SkBitmap_rowBytes">rowBytes</a>. <a href="#SkBitmap_installPixels_releaseProc">releaseProc</a>, if not nullptr, is called
|
||||
immediately on failure or when <a href="#SkBitmap_installPixels_pixels">pixels</a> are no longer referenced. <a href="#SkBitmap_installPixels_context">context</a> may be
|
||||
nullptr.
|
||||
|
||||
@ -2016,7 +2017,7 @@ true if <a href="undocumented#Image_Info">Image Info</a> is set to <a href="#SkB
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="a7e04447b2081010c50d7920e80a6bb2"><div><a href="undocumented#GPU">GPU</a> does not support <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, does not assert that it does not.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="a7e04447b2081010c50d7920e80a6bb2"><div>GPU does not support <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a>, does not assert that it does not.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -2163,7 +2164,7 @@ The allocation size is determined by <a href="undocumented#Image_Info">Image Inf
|
||||
|
||||
Aborts if <a href="#SkBitmap_info">info</a>.<a href="#SkBitmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or allocation fails.
|
||||
Abort steps may be provided by the user at compile
|
||||
time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
time by defining SK_ABORT.
|
||||
|
||||
### Example
|
||||
|
||||
@ -2220,7 +2221,7 @@ The allocation size is determined by <a href="undocumented#Image_Info">Image Inf
|
||||
If <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> is nullptr, use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> instead.
|
||||
|
||||
Aborts if <a href="#SkBitmap_allocPixels_4_allocator">allocator</a> <a href="#SkBitmap_HeapAllocator_allocPixelRef">allocPixelRef</a> return false. Abort steps may be provided by
|
||||
the user at compile time by defining <a href="undocumented#SK_ABORT">SK ABORT</a>.
|
||||
the user at compile time by defining SK_ABORT.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2371,7 +2372,7 @@ true if <a href="#SkBitmap_getPixels">getPixels</a> is not nullptr
|
||||
uint32_t getGenerationID() const
|
||||
</pre>
|
||||
|
||||
Returns a unique value corresponding to the pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a>.
|
||||
Returns a unique value corresponding to the pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a>.
|
||||
Returns a different value after <a href="#SkBitmap_notifyPixelsChanged">notifyPixelsChanged</a> has been called.
|
||||
Returns zero if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr.
|
||||
|
||||
@ -2409,7 +2410,7 @@ erase id 6
|
||||
void notifyPixelsChanged() const
|
||||
</pre>
|
||||
|
||||
Marks that pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> have changed. Subsequent calls to
|
||||
Marks that pixels in <a href="undocumented#Pixel_Ref">Pixel Ref</a> have changed. Subsequent calls to
|
||||
<a href="#SkBitmap_getGenerationID">getGenerationID</a> return a different value.
|
||||
|
||||
### Example
|
||||
@ -2568,12 +2569,12 @@ Returns pixel at (<a href="#SkBitmap_getColor_x">x</a>, <a href="#SkBitmap_getCo
|
||||
Returns black with <a href="#Alpha">Alpha</a> if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>.
|
||||
|
||||
Input is not validated: out of <a href="#SkBitmap_bounds">bounds</a> values of <a href="#SkBitmap_getColor_x">x</a> or <a href="#SkBitmap_getColor_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined; and returns undefined values or may crash if
|
||||
<a href="undocumented#SK_RELEASE">SK RELEASE</a> is defined. Fails if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a> or
|
||||
built with SK_DEBUG defined; and returns undefined values or may crash if
|
||||
SK_RELEASE is defined. Fails if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a> or
|
||||
pixel address is nullptr.
|
||||
|
||||
<a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_Info">Image Info</a> is ignored. Some <a href="undocumented#Color">Color</a> precision may be lost in the
|
||||
conversion to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>; original pixel data may have additional
|
||||
conversion to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>; original pixel data may have additional
|
||||
precision.
|
||||
|
||||
### Parameters
|
||||
@ -2626,10 +2627,10 @@ void* getAddr(int x, int y) const
|
||||
Returns pixel address at (<a href="#SkBitmap_getAddr_x">x</a>, <a href="#SkBitmap_getAddr_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkBitmap_bounds">bounds</a> values of <a href="#SkBitmap_getAddr_x">x</a> or <a href="#SkBitmap_getAddr_y">y</a>, or <a href="undocumented#SkColorType">kUnknown SkColorType</a>,
|
||||
trigger an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns nullptr if
|
||||
trigger an assert() if built with SK_DEBUG defined. Returns nullptr if
|
||||
<a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>, or <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr.
|
||||
|
||||
Performs a lookup of pixel size; for better performance, call
|
||||
Performs a lookup of pixel size; for better performance, call
|
||||
one of: <a href="#SkBitmap_getAddr8">getAddr8</a>, <a href="#SkBitmap_getAddr16">getAddr16</a>, or <a href="#SkBitmap_getAddr32">getAddr32</a>.
|
||||
|
||||
### Parameters
|
||||
@ -2670,9 +2671,9 @@ addr interval == rowBytes
|
||||
inline uint32_t* getAddr32(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns address at (<a href="#SkBitmap_getAddr32_x">x</a>, <a href="#SkBitmap_getAddr32_y">y</a>).
|
||||
Returns address at (<a href="#SkBitmap_getAddr32_x">x</a>, <a href="#SkBitmap_getAddr32_y">y</a>).
|
||||
|
||||
Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and:
|
||||
Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
|
||||
|
||||
<table> <tr>
|
||||
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr>
|
||||
@ -2719,9 +2720,9 @@ addr interval == rowBytes
|
||||
inline uint16_t* getAddr16(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns address at (<a href="#SkBitmap_getAddr16_x">x</a>, <a href="#SkBitmap_getAddr16_y">y</a>).
|
||||
Returns address at (<a href="#SkBitmap_getAddr16_x">x</a>, <a href="#SkBitmap_getAddr16_y">y</a>).
|
||||
|
||||
Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and:
|
||||
Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
|
||||
|
||||
<table> <tr>
|
||||
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr>
|
||||
@ -2768,9 +2769,9 @@ addr interval == rowBytes
|
||||
inline uint8_t* getAddr8(int x, int y) const
|
||||
</pre>
|
||||
|
||||
Returns address at (<a href="#SkBitmap_getAddr8_x">x</a>, <a href="#SkBitmap_getAddr8_y">y</a>).
|
||||
Returns address at (<a href="#SkBitmap_getAddr8_x">x</a>, <a href="#SkBitmap_getAddr8_y">y</a>).
|
||||
|
||||
Input is not validated. Triggers an assert() if built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined and:
|
||||
Input is not validated. Triggers an assert() if built with SK_DEBUG defined and:
|
||||
|
||||
<table> <tr>
|
||||
<td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> <tr>
|
||||
@ -2886,9 +2887,9 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkBitmap_readPixels_srcX">srcX</a>, <a href="#SkBitmap_readPixels_srcY">srcY</a>), and does not exceed
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="#SkBitmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkBitmap_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination
|
||||
row to the next. Returns true if pixels are copied. Returns false if:
|
||||
|
||||
@ -2905,8 +2906,8 @@ If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#Sk
|
||||
match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkBitmap_colorSpace">colorSpace</a> must match. Returns
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkBitmap_readPixels_srcX">srcX</a> and <a href="#SkBitmap_readPixels_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>.
|
||||
|
||||
If <a href="#SkBitmap_readPixels_behavior">behavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts source
|
||||
@ -2951,9 +2952,9 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_2_dstPixels">dstPixels</a>. Copy starts at (<a href="#SkBitmap_readPixels_2_srcX">srcX</a>, <a href="#SkBitmap_readPixels_2_srcY">srcY</a>), and does not exceed
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="#SkBitmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="undocumented#Color_Space">Color Space</a> of destination. <a href="#SkBitmap_readPixels_2_dstRowBytes">dstRowBytes</a> specifics the gap from one destination
|
||||
row to the next. Returns true if pixels are copied. Returns false if:
|
||||
|
||||
@ -2971,7 +2972,7 @@ match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a hre
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkBitmap_readPixels_2_srcX">srcX</a> and <a href="#SkBitmap_readPixels_2_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
@ -3009,7 +3010,7 @@ bool readPixels(const SkPixmap& dst, int srcX, int srcY) const
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_3_dst">dst</a>. Copy starts at (<a href="#SkBitmap_readPixels_3_srcX">srcX</a>, <a href="#SkBitmap_readPixels_3_srcY">srcY</a>), and does not exceed
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_readPixels_3_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage,
|
||||
and row bytes of destination. <a href="#SkBitmap_readPixels_3_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one destination
|
||||
@ -3028,8 +3029,8 @@ If this-><a href="#SkBitmap_alphaType">alphaType</a> is <a href="undocumented#Sk
|
||||
match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a href="#SkBitmap_readPixels_3_dst">dst</a> <a href="undocumented#Color_Space">Color Space</a> must match. Returns
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkBitmap_readPixels_3_srcX">srcX</a> and <a href="#SkBitmap_readPixels_3_srcY">srcY</a> may be negative to copy only top or left of source. Returns
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(srcX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkBitmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
@ -3062,7 +3063,7 @@ bool readPixels(const SkPixmap& dst) const
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels to <a href="#SkBitmap_readPixels_4_dst">dst</a>. Copy starts at (0, 0), and does not exceed
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
(this-><a href="#SkBitmap_width">width</a>, this-><a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_readPixels_4_dst">dst</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage,
|
||||
and row bytes of destination. <a href="#SkBitmap_readPixels_4_dst">dst</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one destination
|
||||
@ -3110,7 +3111,7 @@ bool writePixels(const SkPixmap& src, int dstX, int dstY)
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#SkBitmap_writePixels_src">src</a>. Copy starts at (<a href="#SkBitmap_writePixels_dstX">dstX</a>, <a href="#SkBitmap_writePixels_dstY">dstY</a>), and does not exceed
|
||||
(<a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
(<a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_writePixels_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage,
|
||||
and row bytes of source. <a href="#SkBitmap_writePixels_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source
|
||||
@ -3130,7 +3131,7 @@ match. If this-><a href="#SkBitmap_colorSpace">colorSpace</a> is nullptr, <a hre
|
||||
false if pixel conversion is not possible.
|
||||
<a href="#SkBitmap_writePixels_dstX">dstX</a> and <a href="#SkBitmap_writePixels_dstY">dstY</a> may be negative to copy only top or left of source. Returns
|
||||
false if <a href="#SkBitmap_width">width</a> or <a href="#SkBitmap_height">height</a> is zero or negative.
|
||||
Returns false ifabs(dstX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
Returns false ifabs(dstX) >= this-><a href="#SkBitmap_width">width</a>,
|
||||
or ifabs(dstY) >= this-><a href="#SkBitmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
@ -3163,7 +3164,7 @@ bool writePixels(const SkPixmap& src)
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#SkBitmap_writePixels_2_src">src</a>. Copy starts at (0, 0), and does not exceed
|
||||
(<a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
(<a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_writePixels_2_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage,
|
||||
and row bytes of source. <a href="#SkBitmap_writePixels_2_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source
|
||||
@ -3208,7 +3209,7 @@ bool writePixels(const SkPixmap& src, int x, int y, SkTransferFunctionBehavior b
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#SkBitmap_writePixels_3_src">src</a>. Copy starts at (0, 0), and does not exceed
|
||||
(<a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
(<a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_height">height</a>).
|
||||
|
||||
<a href="#SkBitmap_writePixels_3_src">src</a> specifies <a href="#SkBitmap_width">width</a>, <a href="#SkBitmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage,
|
||||
and row bytes of source. <a href="#SkBitmap_writePixels_3_src">src</a>.<a href="#SkBitmap_rowBytes">rowBytes</a> specifics the gap from one source
|
||||
@ -3338,7 +3339,7 @@ bool extractAlpha(SkBitmap* dst, const SkPaint* paint, SkIPoint* offset) const
|
||||
Sets <a href="#SkBitmap_extractAlpha_2_dst">dst</a> to <a href="#Alpha">Alpha</a> described by pixels. Returns false if <a href="#SkBitmap_extractAlpha_2_dst">dst</a> cannot be written to
|
||||
or <a href="#SkBitmap_extractAlpha_2_dst">dst</a> pixels cannot be allocated.
|
||||
|
||||
If <a href="#SkBitmap_extractAlpha_2_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a>
|
||||
If <a href="#SkBitmap_extractAlpha_2_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a>
|
||||
generates <a href="undocumented#Mask_Alpha">Mask Alpha</a> from <a href="#Bitmap">Bitmap</a>. Uses <a href="#SkBitmap_HeapAllocator">HeapAllocator</a> to reserve memory for <a href="#SkBitmap_extractAlpha_2_dst">dst</a>
|
||||
<a href="undocumented#Pixel_Ref">Pixel Ref</a>. Sets <a href="#SkBitmap_extractAlpha_2_offset">offset</a> to top-left position for <a href="#SkBitmap_extractAlpha_2_dst">dst</a> for alignment with <a href="#Bitmap">Bitmap</a>;
|
||||
(0, 0) unless <a href="undocumented#SkMaskFilter">SkMaskFilter</a> generates mask.
|
||||
@ -3375,9 +3376,9 @@ bool extractAlpha(SkBitmap* dst, const SkPaint* paint, Allocator* allocator, SkI
|
||||
Sets <a href="#SkBitmap_extractAlpha_3_dst">dst</a> to <a href="#Alpha">Alpha</a> described by pixels. Returns false if <a href="#SkBitmap_extractAlpha_3_dst">dst</a> cannot be written to
|
||||
or <a href="#SkBitmap_extractAlpha_3_dst">dst</a> pixels cannot be allocated.
|
||||
|
||||
If <a href="#SkBitmap_extractAlpha_3_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a>
|
||||
If <a href="#SkBitmap_extractAlpha_3_paint">paint</a> is not nullptr and contains <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="#SkMaskFilter_filterMask">SkMaskFilter::filterMask</a>
|
||||
generates <a href="undocumented#Mask_Alpha">Mask Alpha</a> from <a href="#Bitmap">Bitmap</a>. <a href="#SkBitmap_extractAlpha_3_allocator">allocator</a> may reference a custom allocation
|
||||
class or be set to nullptr to use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a>. Sets <a href="#SkBitmap_extractAlpha_3_offset">offset</a> to top-left
|
||||
class or be set to nullptr to use <a href="#SkBitmap_HeapAllocator">HeapAllocator</a>. Sets <a href="#SkBitmap_extractAlpha_3_offset">offset</a> to top-left
|
||||
position for <a href="#SkBitmap_extractAlpha_3_dst">dst</a> for alignment with <a href="#Bitmap">Bitmap</a>; (0, 0) unless <a href="undocumented#SkMaskFilter">SkMaskFilter</a> generates
|
||||
mask.
|
||||
|
||||
@ -3467,8 +3468,8 @@ x---x-
|
||||
void validate() const;
|
||||
</pre>
|
||||
|
||||
Asserts if internal values are illegal or inconsistent. Only available if
|
||||
<a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined at compile time.
|
||||
Asserts if internal values are illegal or inconsistent. Only available if
|
||||
SK_DEBUG is defined at compile time.
|
||||
|
||||
### See Also
|
||||
|
||||
@ -3485,7 +3486,7 @@ void toString(SkString* str) const;
|
||||
|
||||
Creates string representation. The representation is read by
|
||||
internal debugging tools. The interface and implementation may be
|
||||
suppressed by defining <a href="undocumented#SK_IGNORE_TO_STRING">SK IGNORE TO STRING</a>.
|
||||
suppressed by defining SK_IGNORE_TO_STRING.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
@ -13,17 +13,17 @@ Each <a href="#Canvas">Canvas</a> draw call transforms the geometry of the objec
|
||||
of all of <a href="#Clip">Clip</a> values in the stack. The <a href="#Canvas">Canvas</a> draw calls use <a href="SkPaint_Reference#Paint">Paint</a> to supply drawing
|
||||
state such as <a href="undocumented#Color">Color</a>, <a href="undocumented#Typeface">Typeface</a>, text size, stroke width, <a href="undocumented#Shader">Shader</a> and so on.
|
||||
|
||||
To draw to a pixel-based destination, create <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Surface">GPU Surface</a>.
|
||||
Request <a href="#Canvas">Canvas</a> from <a href="SkSurface_Reference#Surface">Surface</a> to obtain the interface to draw.
|
||||
<a href="#Canvas">Canvas</a> generated by <a href="undocumented#Raster_Surface">Raster Surface</a> draws to memory visible to the <a href="undocumented#CPU">CPU</a>.
|
||||
<a href="#Canvas">Canvas</a> generated by <a href="undocumented#GPU_Surface">GPU Surface</a> uses <a href="undocumented#Vulkan">Vulkan</a> or <a href="undocumented#OpenGL">OpenGL</a> to draw to the <a href="undocumented#GPU">GPU</a>.
|
||||
To draw to a pixel-based destination, create <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Surface">GPU Surface</a>.
|
||||
Request <a href="#Canvas">Canvas</a> from <a href="SkSurface_Reference#Surface">Surface</a> to obtain the interface to draw.
|
||||
<a href="#Canvas">Canvas</a> generated by <a href="undocumented#Raster_Surface">Raster Surface</a> draws to memory visible to the CPU.
|
||||
<a href="#Canvas">Canvas</a> generated by <a href="undocumented#GPU_Surface">GPU Surface</a> uses Vulkan or OpenGL to draw to the GPU.
|
||||
|
||||
To draw to a document, obtain <a href="#Canvas">Canvas</a> from <a href="#Canvas">SVG Canvas</a>, <a href="#PDF">Document PDF</a>, or <a href="#Recorder">Picture Recorder</a>.
|
||||
<a href="undocumented#Document">Document</a> based <a href="#Canvas">Canvas</a> and other <a href="#Canvas">Canvas</a> <a href="undocumented#Subclasses">Subclasses</a> reference <a href="undocumented#Device">Device</a> describing the
|
||||
<a href="undocumented#Document">Document</a> based <a href="#Canvas">Canvas</a> and other <a href="#Canvas">Canvas</a> Subclasses reference <a href="undocumented#Device">Device</a> describing the
|
||||
destination.
|
||||
|
||||
<a href="#Canvas">Canvas</a> can be constructed to draw to <a href="SkBitmap_Reference#Bitmap">Bitmap</a> without first creating <a href="undocumented#Raster_Surface">Raster Surface</a>.
|
||||
This approach may be deprecated in the future.
|
||||
This approach may be deprecated in the future.
|
||||
|
||||
# <a name="Overview"></a> Overview
|
||||
|
||||
@ -95,7 +95,7 @@ when no <a href="SkSurface_Reference#Surface">Surface</a> is required, and some
|
||||
| <a href="#SkCanvas_drawLine">drawLine</a> | Draws line segment between two points. |
|
||||
| <a href="#SkCanvas_drawOval">drawOval</a> | Draws <a href="undocumented#Oval">Oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. |
|
||||
| <a href="#SkCanvas_drawPaint">drawPaint</a> | Fills <a href="#Clip">Clip</a> with <a href="SkPaint_Reference#Paint">Paint</a>. |
|
||||
| <a href="#SkCanvas_drawPatch">drawPatch</a> | Draws <a href="undocumented#Coons_Patch">Coons Patch</a>. |
|
||||
| <a href="#SkCanvas_drawPatch">drawPatch</a> | Draws Coons_Patch. |
|
||||
| <a href="#SkCanvas_drawPath">drawPath</a> | Draws <a href="SkPath_Reference#Path">Path</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>. |
|
||||
| <a href="#SkCanvas_drawPicture">drawPicture</a> | Draws <a href="undocumented#Picture">Picture</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>. |
|
||||
| <a href="#SkCanvas_drawPoint">drawPoint</a> | Draws point at (x, y) position. |
|
||||
@ -139,7 +139,7 @@ when no <a href="SkSurface_Reference#Surface">Surface</a> is required, and some
|
||||
| <a href="#SkCanvas_save">save</a> | Saves <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> on stack. |
|
||||
| <a href="#SkCanvas_saveLayer">saveLayer</a> | Saves <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> on stack; creates <a href="#Layer">Layer</a>. |
|
||||
| <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> | Saves <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> on stack; creates <a href="#Layer">Layer</a>; sets opacity. |
|
||||
| <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> | Saves <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> on stack; creates <a href="#Layer">Layer</a> for <a href="undocumented#LCD">LCD</a> text. |
|
||||
| <a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a> | Saves <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a> on stack; creates <a href="#Layer">Layer</a> for LCD text. |
|
||||
| <a href="#SkCanvas_scale">scale</a> | Scales <a href="#Matrix">Matrix</a>. |
|
||||
| <a href="#SkCanvas_setAllowSimplifyClip">setAllowSimplifyClip</a> | Experimental. |
|
||||
| <a href="#SkCanvas_setDrawFilter">setDrawFilter</a> | Legacy; to be deprecated. |
|
||||
@ -165,7 +165,7 @@ Valid parameters include:
|
||||
<a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> is not nullptr;
|
||||
<a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is zero or large enough to contain <a href="#SkCanvas_MakeRasterDirect_info">info</a> width <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> of <a href="undocumented#Image_Color_Type">Image Color Type</a>.
|
||||
|
||||
Pass zero for <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirect_info">info</a> width and size of pixel.
|
||||
Pass zero for <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirect_info">info</a> width and size of pixel.
|
||||
If <a href="#SkCanvas_MakeRasterDirect_rowBytes">rowBytes</a> is greater than zero, it must be equal to or greater than
|
||||
<a href="#SkCanvas_MakeRasterDirect_info">info</a> width times bytes required for <a href="undocumented#Image_Color_Type">Image Color Type</a>.
|
||||
|
||||
@ -183,7 +183,7 @@ pointer to destination <a href="#SkCanvas_MakeRasterDirect_pixels">pixels</a> bu
|
||||
</tr> <tr> <td><a name="SkCanvas_MakeRasterDirect_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td>
|
||||
interval from one <a href="SkSurface_Reference#Surface">Surface</a> row to the next, or zero</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_MakeRasterDirect_props"> <code><strong>props </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -233,7 +233,7 @@ Valid parameters include:
|
||||
<a href="#SkCanvas_MakeRasterDirectN32_pixels">pixels</a> is not nullptr;
|
||||
<a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> is zero or large enough to contain <a href="#SkCanvas_MakeRasterDirectN32_width">width</a> <a href="#SkCanvas_MakeRasterDirectN32_pixels">pixels</a> of <a href="undocumented#SkColorType">kN32 SkColorType</a>.
|
||||
|
||||
Pass zero for <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirectN32_width">width</a> and size of pixel.
|
||||
Pass zero for <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> to compute <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> from <a href="#SkCanvas_MakeRasterDirectN32_width">width</a> and size of pixel.
|
||||
If <a href="#SkCanvas_MakeRasterDirectN32_rowBytes">rowBytes</a> is greater than zero, it must be equal to or greater than
|
||||
<a href="#SkCanvas_MakeRasterDirectN32_width">width</a> times bytes required for <a href="undocumented#Image_Color_Type">Image Color Type</a>.
|
||||
|
||||
@ -285,7 +285,7 @@ in the center.</div>
|
||||
SkCanvas()
|
||||
</pre>
|
||||
|
||||
Creates an empty <a href="#Canvas">Canvas</a> with no backing device or pixels, with
|
||||
Creates an empty <a href="#Canvas">Canvas</a> with no backing device or pixels, with
|
||||
a width and height of zero.
|
||||
|
||||
### Return Value
|
||||
@ -320,10 +320,10 @@ SkCanvas(int width, int height, const SkSurfaceProps* props = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Canvas">Canvas</a> of the specified dimensions without a <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
Used by <a href="undocumented#Subclasses">Subclasses</a> with custom implementations for draw methods.
|
||||
Used by Subclasses with custom implementations for draw methods.
|
||||
|
||||
If <a href="#SkCanvas_int_int_const_SkSurfaceProps_star_props">props</a> equals nullptr, <a href="undocumented#Surface_Properties">Surface Properties</a> are created with
|
||||
<a href="undocumented#Surface_Properties_Legacy_Font_Host">Surface Properties Legacy Font Host</a> settings, which choose the pixel striping
|
||||
<a href="undocumented#Surface_Properties_Legacy_Font_Host">Surface Properties Legacy Font Host</a> settings, which choose the pixel striping
|
||||
direction and order. Since a platform may dynamically change its direction when
|
||||
the device is rotated, and since a platform may have multiple monitors with
|
||||
different characteristics, it is best not to rely on this legacy behavior.
|
||||
@ -335,7 +335,7 @@ zero or greater</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_int_int_const_SkSurfaceProps_star_height"> <code><strong>height </strong></code> </a></td> <td>
|
||||
zero or greater</td>
|
||||
</tr> <tr> <td><a name="SkCanvas_int_int_const_SkSurfaceProps_star_props"> <code><strong>props </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -402,7 +402,7 @@ explicit SkCanvas(const SkBitmap& bitmap)
|
||||
</pre>
|
||||
|
||||
Construct a canvas that draws into <a href="#SkCanvas_copy_const_SkBitmap_bitmap">bitmap</a>.
|
||||
Sets <a href="#SkSurfaceProps_kLegacyFontHost_InitType">SkSurfaceProps::kLegacyFontHost InitType</a> in constructed <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
Sets <a href="#SkSurfaceProps_kLegacyFontHost_InitType">SkSurfaceProps::kLegacyFontHost InitType</a> in constructed <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
|
||||
<a href="SkBitmap_Reference#Bitmap">Bitmap</a> is copied so that subsequently editing <a href="#SkCanvas_copy_const_SkBitmap_bitmap">bitmap</a> will not affect
|
||||
constructed <a href="#Canvas">Canvas</a>.
|
||||
@ -495,7 +495,7 @@ SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)
|
||||
</pre>
|
||||
|
||||
Construct a canvas that draws into <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap">bitmap</a>.
|
||||
Use <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps_props">props</a> to match the device characteristics, like <a href="undocumented#LCD">LCD</a> striping.
|
||||
Use <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps_props">props</a> to match the device characteristics, like LCD striping.
|
||||
|
||||
<a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap">bitmap</a> is copied so that subsequently editing <a href="#SkCanvas_const_SkBitmap_const_SkSurfaceProps_bitmap">bitmap</a> will not affect
|
||||
constructed <a href="#Canvas">Canvas</a>.
|
||||
@ -506,7 +506,7 @@ constructed <a href="#Canvas">Canvas</a>.
|
||||
width, height, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>,
|
||||
and pixel storage of <a href="undocumented#Raster_Surface">Raster Surface</a></td>
|
||||
</tr> <tr> <td><a name="SkCanvas_const_SkBitmap_const_SkSurfaceProps_props"> <code><strong>props </strong></code> </a></td> <td>
|
||||
order and orientation of <a href="undocumented#RGB">RGB</a> striping; and whether to use
|
||||
order and orientation of RGB striping; and whether to use
|
||||
device independent fonts</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -557,7 +557,7 @@ Free up resources used by <a href="#Canvas">Canvas</a>.
|
||||
|
||||
<div><fiddle-embed name="b7bc91ff16c9b9351b2a127f35394b82"><div><a href="#Canvas">Canvas</a> <a href="#Layer">Layer</a> draws into bitmap. <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> sets up an additional
|
||||
drawing surface that blends with the bitmap. When <a href="#Layer">Layer</a> goes out of
|
||||
scope, <a href="#Layer">Layer</a> <a href="undocumented#Destructor">Destructor</a> is called. The saved <a href="#Layer">Layer</a> is restored, drawing
|
||||
scope, <a href="#Layer">Layer</a> Destructor is called. The saved <a href="#Layer">Layer</a> is restored, drawing
|
||||
transparent letters.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -680,8 +680,8 @@ isRGB:1
|
||||
void flush()
|
||||
</pre>
|
||||
|
||||
Triggers the immediate execution of all pending draw operations.
|
||||
If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#GPU_Surface">GPU Surface</a>, resolves all pending <a href="undocumented#GPU">GPU</a> operations.
|
||||
Triggers the immediate execution of all pending draw operations.
|
||||
If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#GPU_Surface">GPU Surface</a>, resolves all pending GPU operations.
|
||||
If <a href="#Canvas">Canvas</a> is associated with <a href="undocumented#Raster_Surface">Raster Surface</a>, has no effect; raster draw
|
||||
operations are never deferred.
|
||||
|
||||
@ -836,10 +836,10 @@ address of pixels, or nullptr if inaccessible
|
||||
|
||||
<div><fiddle-embed name="a7ac9c21bbabcdeeca00f72a61cd0f3e"><div>Draws "" on the device. Then draws "" in <a href="#Layer">Layer</a>, and reads
|
||||
<a href="#Layer">Layer</a> to add a large dotted "". Finally blends <a href="#Layer">Layer</a> with the
|
||||
device.
|
||||
device.
|
||||
|
||||
The <a href="#Layer">Layer</a> and blended result appear on the <a href="undocumented#CPU">CPU</a> and <a href="undocumented#GPU">GPU</a> but the large dotted
|
||||
"" appear only on the <a href="undocumented#CPU">CPU</a>.</div></fiddle-embed></div>
|
||||
The <a href="#Layer">Layer</a> and blended result appear on the CPU and GPU but the large dotted
|
||||
"" appear only on the CPU.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -856,7 +856,7 @@ SkRasterHandleAllocator::Handle accessTopRasterHandle() const
|
||||
|
||||
Returns custom context that tracks the <a href="#Matrix">Matrix</a> and <a href="#Clip">Clip</a>.
|
||||
|
||||
Use <a href="undocumented#Raster_Handle_Allocator">Raster Handle Allocator</a> to blend <a href="undocumented#Skia">Skia</a> drawing with custom drawing, typically performed
|
||||
Use <a href="undocumented#Raster_Handle_Allocator">Raster Handle Allocator</a> to blend Skia drawing with custom drawing, typically performed
|
||||
by the host platform user interface. The custom context returned is generated by
|
||||
<a href="#SkRasterHandleAllocator_MakeCanvas">SkRasterHandleAllocator::MakeCanvas</a>, which creates a custom canvas with raster storage for
|
||||
the drawing destination.
|
||||
@ -937,14 +937,14 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies <a href="SkRect_Reference#Rect">Rect</a> 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.
|
||||
ignored.
|
||||
|
||||
Source <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCanvas_readPixels_srcX">srcX</a>, <a href="#SkCanvas_readPixels_srcY">srcY</a>) and (<a href="#SkCanvas_imageInfo">imageInfo</a>.width(), <a href="#SkCanvas_imageInfo">imageInfo</a>.height()).
|
||||
Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.width(), <a href="#SkCanvas_readPixels_dstInfo">dstInfo</a>.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.
|
||||
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
|
||||
Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
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>.
|
||||
@ -1026,7 +1026,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.colorType() and <a href="#SkCanvas_readPixels_2_pixmap">pixmap</a>.alphaType() if required.
|
||||
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
|
||||
Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
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>.
|
||||
@ -1096,7 +1096,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.colorType() and <a href="#SkCanvas_readPixels_3_bitmap">bitmap</a>.alphaType() if required.
|
||||
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
|
||||
Pixels are not readable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
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>.
|
||||
@ -1169,7 +1169,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCa
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() and <a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType() if required.
|
||||
|
||||
Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
|
||||
Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
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>.
|
||||
@ -1233,7 +1233,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (<a href="#SkCa
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkCanvas_imageInfo">imageInfo</a>.colorType() and <a href="#SkCanvas_imageInfo">imageInfo</a>.alphaType() if required.
|
||||
|
||||
Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are writable when <a href="undocumented#Device">Device</a> is raster, or backed by a GPU.
|
||||
Pixels are not writable when <a href="#SkCanvas">SkCanvas</a> is returned by <a href="#SkDocument_beginPage">SkDocument::beginPage</a>,
|
||||
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>.
|
||||
@ -1356,9 +1356,9 @@ void restore()
|
||||
</pre>
|
||||
|
||||
Removes changes to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> since <a href="#Canvas">Canvas</a> state was
|
||||
last saved. The state is removed from the stack.
|
||||
last saved. The state is removed from the stack.
|
||||
|
||||
Does nothing if the stack is empty.
|
||||
Does nothing if the stack is empty.
|
||||
|
||||
### Example
|
||||
|
||||
@ -1378,7 +1378,7 @@ int getSaveCount() const
|
||||
</pre>
|
||||
|
||||
Returns the number of saved states, each containing: <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a>.
|
||||
Equals the number of <a href="#SkCanvas_save">save</a> calls less the number of <a href="#SkCanvas_restore">restore</a> calls plus one.
|
||||
Equals the number of <a href="#SkCanvas_save">save</a> calls less the number of <a href="#SkCanvas_restore">restore</a> calls plus one.
|
||||
The <a href="#SkCanvas_save">save</a> count of a new canvas is one.
|
||||
|
||||
### Return Value
|
||||
@ -1415,7 +1415,7 @@ void restoreToCount(int saveCount)
|
||||
Restores state to <a href="#Matrix">Matrix</a>, <a href="#Clip">Clip</a>, and <a href="undocumented#Draw_Filter">Draw Filter</a> values when <a href="#SkCanvas_save">save</a>, <a href="#SkCanvas_saveLayer">saveLayer</a>,
|
||||
<a href="#SkCanvas_saveLayerPreserveLCDTextRequests">saveLayerPreserveLCDTextRequests</a>, or <a href="#SkCanvas_saveLayerAlpha">saveLayerAlpha</a> returned <a href="#SkCanvas_restoreToCount_saveCount">saveCount</a>.
|
||||
|
||||
Does nothing if <a href="#SkCanvas_restoreToCount_saveCount">saveCount</a> is greater than state stack count.
|
||||
Does nothing if <a href="#SkCanvas_restoreToCount_saveCount">saveCount</a> is greater than state stack count.
|
||||
Restores state to initial values if <a href="#SkCanvas_restoreToCount_saveCount">saveCount</a> is less than or equal to one.
|
||||
|
||||
### Parameters
|
||||
@ -1447,7 +1447,7 @@ depth = 1
|
||||
|
||||
# <a name="Layer"></a> Layer
|
||||
<a href="#Layer">Layer</a> allocates a temporary <a href="SkBitmap_Reference#Bitmap">Bitmap</a> to draw into. When the drawing is
|
||||
complete, the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is drawn into the <a href="#Canvas">Canvas</a>.
|
||||
complete, the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is drawn into the <a href="#Canvas">Canvas</a>.
|
||||
|
||||
<a href="#Layer">Layer</a> is saved in a stack along with other saved state. When state with a <a href="#Layer">Layer</a>
|
||||
is restored, the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is drawn into the previous <a href="#Layer">Layer</a>.
|
||||
@ -1469,7 +1469,7 @@ Calling <a href="#SkCanvas_restore">restore</a> discards changes to <a href="#Ma
|
||||
and draws the <a href="SkBitmap_Reference#Bitmap">Bitmap</a>.
|
||||
|
||||
<a href="#Matrix">Matrix</a> may be changed by <a href="#SkCanvas_translate">translate</a>, <a href="#SkCanvas_scale">scale</a>, <a href="#SkCanvas_rotate">rotate</a>, <a href="#SkCanvas_skew">skew</a>, <a href="#SkCanvas_concat">concat</a>,
|
||||
<a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>,
|
||||
<a href="#SkCanvas_setMatrix">setMatrix</a>, and <a href="#SkCanvas_resetMatrix">resetMatrix</a>. <a href="#Clip">Clip</a> may be changed by <a href="#SkCanvas_clipRect">clipRect</a>, <a href="#SkCanvas_clipRRect">clipRRect</a>,
|
||||
<a href="#SkCanvas_clipPath">clipPath</a>, <a href="#SkCanvas_clipRegion">clipRegion</a>.
|
||||
|
||||
<a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_saveLayer_bounds">bounds</a> suggests but does not define the <a href="SkBitmap_Reference#Bitmap">Bitmap</a> size. To clip drawing to
|
||||
@ -1541,7 +1541,7 @@ depth of saved stack
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="5b59231feae0c09cb1ab6a292229d7a4"><div>Rectangles are blurred by <a href="undocumented#Image_Filter">Image Filter</a> when <a href="#SkCanvas_restore">restore</a> draws <a href="#Layer">Layer</a> to main <a href="#Canvas">Canvas</a>.
|
||||
The red rectangle is clipped; it does not fully fit on <a href="#Layer">Layer</a>.
|
||||
The red rectangle is clipped; it does not fully fit on <a href="#Layer">Layer</a>.
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> blurs past edge of <a href="#Layer">Layer</a> so red rectangle is blurred on all sides.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -1670,14 +1670,14 @@ defining how <a href="#Layer">Layer</a> allocated by <a href="#SkCanvas_saveLaye
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> or <a href="undocumented#Color_Filter">Color Filter</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkCanvas_kPreserveLCDText_SaveLayerFlag"> <code><strong>SkCanvas::kPreserveLCDText_SaveLayerFlag </strong></code> </a></td><td>2</td><td>Creates <a href="#Layer">Layer</a> for <a href="undocumented#LCD">LCD</a> text. Flag is ignored if <a href="#Layer">Layer</a> <a href="SkPaint_Reference#Paint">Paint</a> contains
|
||||
<td><a name="SkCanvas_kPreserveLCDText_SaveLayerFlag"> <code><strong>SkCanvas::kPreserveLCDText_SaveLayerFlag </strong></code> </a></td><td>2</td><td>Creates <a href="#Layer">Layer</a> for LCD text. Flag is ignored if <a href="#Layer">Layer</a> <a href="SkPaint_Reference#Paint">Paint</a> contains
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> or <a href="undocumented#Color_Filter">Color Filter</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkCanvas_kInitWithPrevious_SaveLayerFlag"> <code><strong>SkCanvas::kInitWithPrevious_SaveLayerFlag </strong></code> </a></td><td>4</td><td>Initializes <a href="#Layer">Layer</a> with the contents of the previous <a href="#Layer">Layer</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag"> <code><strong>SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag </strong></code> </a></td><td>0x80000000</td><td>Only present on <a href="undocumented#Android">Android</a>.
|
||||
<td><a name="SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag"> <code><strong>SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag </strong></code> </a></td><td>0x80000000</td><td>Only present on Android.
|
||||
Skips setting a clip to the <a href="#Layer">Layer</a> bounds.</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -1705,7 +1705,7 @@ const <a href="undocumented#SkImageFilter">SkImageFilter</a>* <a href="#SkCan
|
||||
<a href="#SkCanvas_SaveLayerFlags">SaveLayerFlags</a> <a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a>;
|
||||
};</pre>
|
||||
|
||||
<a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> contains the state used to create the <a href="#Layer">Layer</a>.
|
||||
<a href="#SkCanvas_SaveLayerRec_SaveLayerRec">SaveLayerRec</a> contains the state used to create the <a href="#Layer">Layer</a>.
|
||||
|
||||
<a name="SkCanvas_SaveLayerRec_fBounds"> <code><strong>const SkRect* fBounds</strong></code> </a>
|
||||
|
||||
@ -1732,14 +1732,14 @@ prior <a href="#Layer">Layer</a> without an <a href="undocumented#Image_Filter">
|
||||
|
||||
<a name="SkCanvas_SaveLayerRec_fClipMatrix"> <code><strong>const SkMatrix* fClipMatrix</strong></code> </a>
|
||||
|
||||
<a href="#SkCanvas_SaveLayerRec_fClipMatrix">fClipMatrix</a> transforms <a href="#SkCanvas_SaveLayerRec_fClipMask">fClipMask</a> before it clips <a href="#Layer">Layer</a>. If
|
||||
<a href="#SkCanvas_SaveLayerRec_fClipMatrix">fClipMatrix</a> transforms <a href="#SkCanvas_SaveLayerRec_fClipMask">fClipMask</a> before it clips <a href="#Layer">Layer</a>. If
|
||||
<a href="#SkCanvas_SaveLayerRec_fClipMask">fClipMask</a> describes a translucent gradient, it may be scaled and rotated
|
||||
without introducing artifacts. <a href="#SkCanvas_SaveLayerRec_fClipMatrix">fClipMatrix</a> may be nullptr.
|
||||
|
||||
<a name="SkCanvas_SaveLayerRec_fSaveLayerFlags"> <code><strong>SaveLayerFlags fSaveLayerFlags</strong></code> </a>
|
||||
|
||||
<a href="#SkCanvas_SaveLayerRec_fSaveLayerFlags">fSaveLayerFlags</a> are used to create <a href="#Layer">Layer</a> without transparency,
|
||||
create <a href="#Layer">Layer</a> for <a href="undocumented#LCD">LCD</a> text, and to create <a href="#Layer">Layer</a> with the
|
||||
create <a href="#Layer">Layer</a> for LCD text, and to create <a href="#Layer">Layer</a> with the
|
||||
contents of the previous <a href="#Layer">Layer</a>.
|
||||
|
||||
### Example
|
||||
@ -1870,7 +1870,7 @@ Not ready for general use.Sets <a href="#SkCanvas_SaveLayerRec_fBounds">fBounds<
|
||||
<a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a> uses <a href="#Alpha">Color Alpha</a> channel of image, transformed by <a href="#SkCanvas_SaveLayerRec_SaveLayerRec_4_clipMatrix">clipMatrix</a>, to clip
|
||||
<a href="#Layer">Layer</a> when drawn to <a href="#Canvas">Canvas</a>.
|
||||
|
||||
Implementation is not complete; has no effect if <a href="undocumented#Device">Device</a> is <a href="undocumented#GPU">GPU</a>-backed.
|
||||
Implementation is not complete; has no effect if <a href="undocumented#Device">Device</a> is GPU-backed.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1956,7 +1956,7 @@ void translate(SkScalar dx, SkScalar dy)
|
||||
Translate <a href="#Matrix">Matrix</a> by <a href="#SkCanvas_translate_dx">dx</a> along the x-axis and <a href="#SkCanvas_translate_dy">dy</a> along the y-axis.
|
||||
|
||||
Mathematically, replace <a href="#Matrix">Matrix</a> with a translation matrix
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
This has the effect of moving the drawing by (<a href="#SkCanvas_translate_dx">dx</a>, <a href="#SkCanvas_translate_dy">dy</a>) before transforming
|
||||
the result with <a href="#Matrix">Matrix</a>.
|
||||
@ -1973,10 +1973,10 @@ distance to <a href="#SkCanvas_translate">translate</a> in y</td>
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="eb93d5fa66a5f7a10f4f9210494d7222"><div><a href="#SkCanvas_scale">scale</a> followed by <a href="#SkCanvas_translate">translate</a> produces different results from <a href="#SkCanvas_translate">translate</a> followed
|
||||
by <a href="#SkCanvas_scale">scale</a>.
|
||||
by <a href="#SkCanvas_scale">scale</a>.
|
||||
|
||||
The blue stroke follows <a href="#SkCanvas_translate">translate</a> of (50, 50); a black
|
||||
fill follows <a href="#SkCanvas_scale">scale</a> of (2, 1/2.f). After restoring the clip, which resets
|
||||
fill follows <a href="#SkCanvas_scale">scale</a> of (2, 1/2.f). After restoring the clip, which resets
|
||||
<a href="#Matrix">Matrix</a>, a red frame follows the same <a href="#SkCanvas_scale">scale</a> of (2, 1/2.f); a gray fill
|
||||
follows <a href="#SkCanvas_translate">translate</a> of (50, 50).</div></fiddle-embed></div>
|
||||
|
||||
@ -1996,7 +1996,7 @@ void scale(SkScalar sx, SkScalar sy)
|
||||
Scale <a href="#Matrix">Matrix</a> by <a href="#SkCanvas_scale_sx">sx</a> on the x-axis and <a href="#SkCanvas_scale_sy">sy</a> on the y-axis.
|
||||
|
||||
Mathematically, replace <a href="#Matrix">Matrix</a> with a <a href="#SkCanvas_scale">scale</a> matrix
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
This has the effect of scaling the drawing by (<a href="#SkCanvas_scale_sx">sx</a>, <a href="#SkCanvas_scale_sy">sy</a>) before transforming
|
||||
the result with <a href="#Matrix">Matrix</a>.
|
||||
@ -2030,7 +2030,7 @@ void rotate(SkScalar degrees)
|
||||
Rotate <a href="#Matrix">Matrix</a> by <a href="#SkCanvas_rotate_degrees">degrees</a>. Positive <a href="#SkCanvas_rotate_degrees">degrees</a> rotates clockwise.
|
||||
|
||||
Mathematically, replace <a href="#Matrix">Matrix</a> with a rotation matrix
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
This has the effect of rotating the drawing by <a href="#SkCanvas_rotate_degrees">degrees</a> before transforming
|
||||
the result with <a href="#Matrix">Matrix</a>.
|
||||
@ -2062,7 +2062,7 @@ clockwise.
|
||||
|
||||
Mathematically, construct a rotation matrix. <a href="undocumented#Premultiply">Premultiply</a> the rotation matrix by
|
||||
a translation matrix, then replace <a href="#Matrix">Matrix</a> with the resulting matrix
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
<a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
This has the effect of rotating the drawing about a given point before
|
||||
transforming the result with <a href="#Matrix">Matrix</a>.
|
||||
@ -2099,7 +2099,7 @@ Skew <a href="#Matrix">Matrix</a> by <a href="#SkCanvas_skew_sx">sx</a> on the x
|
||||
skews the drawing right as y increases; a positive value of <a href="#SkCanvas_skew_sy">sy</a> skews the drawing
|
||||
down as x increases.
|
||||
|
||||
Mathematically, replace <a href="#Matrix">Matrix</a> with a <a href="#SkCanvas_skew">skew</a> matrix <a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
Mathematically, replace <a href="#Matrix">Matrix</a> with a <a href="#SkCanvas_skew">skew</a> matrix <a href="#Premultiply">Premultiplied</a> with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
This has the effect of skewing the drawing by (<a href="#SkCanvas_skew_sx">sx</a>, <a href="#SkCanvas_skew_sy">sy</a>) before transforming
|
||||
the result with <a href="#Matrix">Matrix</a>.
|
||||
@ -2237,13 +2237,13 @@ isIdentity true
|
||||
|
||||
# <a name="Clip"></a> Clip
|
||||
<a href="#Clip">Clip</a> is built from a stack of clipping paths. Each <a href="SkPath_Reference#Path">Path</a> in the
|
||||
stack can be constructed from one or more <a href="#Contour">Path Contour</a> elements. The
|
||||
stack can be constructed from one or more <a href="#Contour">Path Contour</a> elements. The
|
||||
<a href="#Contour">Path Contour</a> may be composed of any number of <a href="#Verb">Path Verb</a> segments. Each
|
||||
<a href="#Contour">Path Contour</a> forms a closed area; <a href="#Fill_Type">Path Fill Type</a> defines the area enclosed
|
||||
by <a href="#Contour">Path Contour</a>.
|
||||
|
||||
<a href="#Clip">Clip</a> stack of <a href="SkPath_Reference#Path">Path</a> elements successfully restrict the <a href="SkPath_Reference#Path">Path</a> area. Each
|
||||
<a href="SkPath_Reference#Path">Path</a> is transformed by <a href="#Matrix">Matrix</a>, then intersected with or subtracted from the
|
||||
<a href="SkPath_Reference#Path">Path</a> is transformed by <a href="#Matrix">Matrix</a>, then intersected with or subtracted from the
|
||||
prior <a href="#Clip">Clip</a> to form the replacement <a href="#Clip">Clip</a>. Use <a href="#SkClipOp_kDifference">SkClipOp::kDifference</a>
|
||||
to subtract <a href="SkPath_Reference#Path">Path</a> from <a href="#Clip">Clip</a>; use <a href="#SkClipOp_kIntersect">SkClipOp::kIntersect</a> to intersect <a href="SkPath_Reference#Path">Path</a>
|
||||
with <a href="#Clip">Clip</a>.
|
||||
@ -2254,7 +2254,7 @@ to either be inside or outside the clip. The fastest drawing has a <a href="#Ali
|
||||
rectangular clip.
|
||||
|
||||
If clipping <a href="SkPath_Reference#Path">Path</a> has Anti-alias set, clip may partially clip a pixel, requiring
|
||||
that drawing blend partially with the destination along the edge. A rotated
|
||||
that drawing blend partially with the destination along the edge. A rotated
|
||||
rectangular Anti-aliased clip looks smoother but draws slower.
|
||||
|
||||
<a href="#Clip">Clip</a> can combine with <a href="SkRect_Reference#Rect">Rect</a> and <a href="undocumented#Round_Rect">Round Rect</a> primitives; like
|
||||
@ -2371,7 +2371,7 @@ Sets the maximum clip rectangle, which can be set by <a href="#SkCanvas_clipRect
|
||||
The maximum clip affects only future clipping operations; it is not retroactive.
|
||||
The clip restriction is not recorded in pictures.
|
||||
|
||||
Pass an empty <a href="#SkCanvas_androidFramework_setDeviceClipRestriction_rect">rect</a> to disable maximum clip.
|
||||
Pass an empty <a href="#SkCanvas_androidFramework_setDeviceClipRestriction_rect">rect</a> to disable maximum clip.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2533,7 +2533,7 @@ before it is combined with <a href="#Clip">Clip</a>.
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="7856755c1bf8431c286c734b353345ad"><div>Overlapping <a href="#Rect">Rects</a> form a clip. When clip <a href="#Fill_Type">Path Fill Type</a> is set to
|
||||
<a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
|
||||
<a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
|
||||
<a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -2564,8 +2564,8 @@ true if <a href="#Clip">Clip</a> is to be Anti-aliased</td>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="187a7ae77a8176e417181411988534b6"><div><a href="#Clip">Clip</a> loops over itself covering its center twice. When clip <a href="#Fill_Type">Path Fill Type</a>
|
||||
is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
|
||||
<div><fiddle-embed name="187a7ae77a8176e417181411988534b6"><div><a href="#Clip">Clip</a> loops over itself covering its center twice. When clip <a href="#Fill_Type">Path Fill Type</a>
|
||||
is set to <a href="#SkPath_kWinding_FillType">SkPath::kWinding FillType</a>, the overlap is included. Set to
|
||||
<a href="#SkPath_kEvenOdd_FillType">SkPath::kEvenOdd FillType</a>, the overlap is excluded and forms a hole.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -2787,7 +2787,7 @@ SkIRect getDeviceClipBounds() const
|
||||
Return <a href="SkIRect_Reference#IRect">IRect</a> bounds of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty,
|
||||
return <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero.
|
||||
|
||||
Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, returned <a href="SkIRect_Reference#IRect">IRect</a> is not outset.
|
||||
Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, returned <a href="SkIRect_Reference#IRect">IRect</a> is not outset.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -2822,7 +2822,7 @@ bool getDeviceClipBounds(SkIRect* bounds) const
|
||||
Return <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> of <a href="#Clip">Clip</a>, unaffected by <a href="#Matrix">Matrix</a>. If <a href="#Clip">Clip</a> is empty,
|
||||
return false, and set <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> to <a href="#SkRect_MakeEmpty">SkRect::MakeEmpty</a>, where all <a href="SkRect_Reference#Rect">Rect</a> sides equal zero.
|
||||
|
||||
Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> is not outset.
|
||||
Unlike <a href="#SkCanvas_getLocalClipBounds">getLocalClipBounds</a>, <a href="#SkCanvas_getDeviceClipBounds_2_bounds">bounds</a> is not outset.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2890,7 +2890,7 @@ Fill <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> <a hre
|
||||
void clear(SkColor color)
|
||||
</pre>
|
||||
|
||||
Fill <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> <a href="#SkCanvas_clear_color">color</a> using <a href="#SkBlendMode_kSrc">SkBlendMode::kSrc</a>.
|
||||
Fill <a href="#Clip">Clip</a> with <a href="undocumented#Color">Color</a> <a href="#SkCanvas_clear_color">color</a> using <a href="#SkBlendMode_kSrc">SkBlendMode::kSrc</a>.
|
||||
This has the effect of replacing all pixels contained by <a href="#Clip">Clip</a> with <a href="#SkCanvas_clear_color">color</a>.
|
||||
|
||||
### Parameters
|
||||
@ -3021,7 +3021,7 @@ or <a href="#SkPaint_kButt_Cap">SkPaint::kButt Cap</a>, each point draws a squar
|
||||
|
||||
If <a href="#SkCanvas_drawPoints_mode">mode</a> is <a href="#SkCanvas_kLines_PointMode">kLines PointMode</a>, each pair of points draws a line segment.
|
||||
One line is drawn for every two points; each point is used once. If <a href="#SkCanvas_drawPoints_count">count</a> is odd,
|
||||
the final point is ignored.
|
||||
the final point is ignored.
|
||||
|
||||
If <a href="#SkCanvas_drawPoints_mode">mode</a> is <a href="#SkCanvas_kPolygon_PointMode">kPolygon PointMode</a>, each adjacent pair of points draws a line segment.
|
||||
<a href="#SkCanvas_drawPoints_count">count</a> minus one lines are drawn; the first and last point are used once.
|
||||
@ -3031,7 +3031,7 @@ Each line segment respects <a href="#SkCanvas_drawPoints_paint">paint</a> <a hre
|
||||
|
||||
Always draws each element one at a time; is not affected by
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a>, and unlike <a href="#SkCanvas_drawPath">drawPath</a>, does not create a mask from all points
|
||||
and lines before drawing.
|
||||
and lines before drawing.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3080,7 +3080,7 @@ Draw point at (<a href="#SkCanvas_drawPoint_x">x</a>, <a href="#SkCanvas_drawPoi
|
||||
|
||||
The shape of point drawn depends on <a href="#SkCanvas_drawPoint_paint">paint</a> <a href="#Stroke_Cap">Paint Stroke Cap</a>.
|
||||
If <a href="#SkCanvas_drawPoint_paint">paint</a> is set to <a href="#SkPaint_kRound_Cap">SkPaint::kRound Cap</a>, draw a circle of diameter
|
||||
<a href="#Stroke_Width">Paint Stroke Width</a>. If <a href="#SkCanvas_drawPoint_paint">paint</a> is set to <a href="#SkPaint_kSquare_Cap">SkPaint::kSquare Cap</a> or <a href="#SkPaint_kButt_Cap">SkPaint::kButt Cap</a>,
|
||||
<a href="#Stroke_Width">Paint Stroke Width</a>. If <a href="#SkCanvas_drawPoint_paint">paint</a> is set to <a href="#SkPaint_kSquare_Cap">SkPaint::kSquare Cap</a> or <a href="#SkPaint_kButt_Cap">SkPaint::kButt Cap</a>,
|
||||
draw a square of width and height <a href="#Stroke_Width">Paint Stroke Width</a>.
|
||||
<a href="#Style">Paint Style</a> is ignored, as if were set to <a href="#SkPaint_kStroke_Style">SkPaint::kStroke Style</a>.
|
||||
|
||||
@ -3113,7 +3113,7 @@ Draw point <a href="#SkCanvas_drawPoint_2_p">p</a> using <a href="#Clip">Clip</a
|
||||
|
||||
The shape of point drawn depends on <a href="#SkCanvas_drawPoint_2_paint">paint</a> <a href="#Stroke_Cap">Paint Stroke Cap</a>.
|
||||
If <a href="#SkCanvas_drawPoint_2_paint">paint</a> is set to <a href="#SkPaint_kRound_Cap">SkPaint::kRound Cap</a>, draw a circle of diameter
|
||||
<a href="#Stroke_Width">Paint Stroke Width</a>. If <a href="#SkCanvas_drawPoint_2_paint">paint</a> is set to <a href="#SkPaint_kSquare_Cap">SkPaint::kSquare Cap</a> or <a href="#SkPaint_kButt_Cap">SkPaint::kButt Cap</a>,
|
||||
<a href="#Stroke_Width">Paint Stroke Width</a>. If <a href="#SkCanvas_drawPoint_2_paint">paint</a> is set to <a href="#SkPaint_kSquare_Cap">SkPaint::kSquare Cap</a> or <a href="#SkPaint_kButt_Cap">SkPaint::kButt Cap</a>,
|
||||
draw a square of width and height <a href="#Stroke_Width">Paint Stroke Width</a>.
|
||||
<a href="#Style">Paint Style</a> is ignored, as if were set to <a href="#SkPaint_kStroke_Style">SkPaint::kStroke Style</a>.
|
||||
|
||||
@ -3211,7 +3211,7 @@ void drawRect(const SkRect& rect, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draw <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRect_paint">paint</a>.
|
||||
In <a href="#SkCanvas_drawRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
In <a href="#SkCanvas_drawRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
|
||||
|
||||
@ -3242,7 +3242,7 @@ void drawIRect(const SkIRect& rect, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawIRect_rect">rect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawIRect_paint">paint</a>.
|
||||
In <a href="#SkCanvas_drawIRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
In <a href="#SkCanvas_drawIRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
|
||||
|
||||
@ -3273,7 +3273,7 @@ void drawRegion(const SkRegion& region, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draw <a href="undocumented#Region">Region</a> <a href="#SkCanvas_drawRegion_region">region</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRegion_paint">paint</a>.
|
||||
In <a href="#SkCanvas_drawRegion_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
In <a href="#SkCanvas_drawRegion_paint">paint</a>: <a href="#Style">Paint Style</a> determines if rectangle is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness, and
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a> draws the corners rounded or square.
|
||||
|
||||
@ -3304,7 +3304,7 @@ void drawOval(const SkRect& oval, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draw <a href="undocumented#Oval">Oval</a> <a href="#SkCanvas_drawOval_oval">oval</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a>.
|
||||
In <a href="#SkCanvas_drawOval_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Oval">Oval</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawOval_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Oval">Oval</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
|
||||
### Parameters
|
||||
@ -3334,7 +3334,7 @@ void drawRRect(const SkRRect& rrect, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draw <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawRRect_rrect">rrect</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRRect_paint">paint</a>.
|
||||
In <a href="#SkCanvas_drawRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="#SkCanvas_drawRRect_rrect">rrect</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="#SkCanvas_drawRRect_rrect">rrect</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
|
||||
<a href="#SkCanvas_drawRRect_rrect">rrect</a> may represent a rectangle, circle, oval, uniformly rounded rectangle, or
|
||||
@ -3367,16 +3367,16 @@ void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint
|
||||
</pre>
|
||||
|
||||
Draw <a href="undocumented#Round_Rect">Round Rect</a> <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a>
|
||||
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawDRRect_paint">paint</a>.
|
||||
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawDRRect_paint">paint</a>.
|
||||
<a href="#SkCanvas_drawDRRect_outer">outer</a> must contain <a href="#SkCanvas_drawDRRect_inner">inner</a> or the drawing is undefined.
|
||||
In <a href="#SkCanvas_drawDRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawDRRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
If stroked and <a href="undocumented#Round_Rect">Round Rect</a> corner has zero length radii, <a href="#Stroke_Join">Paint Stroke Join</a> can
|
||||
draw corners rounded or square.
|
||||
draw corners rounded or square.
|
||||
|
||||
<a href="undocumented#GPU">GPU</a>-backed platforms optimize drawing when both <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a> are
|
||||
GPU-backed platforms optimize drawing when both <a href="#SkCanvas_drawDRRect_outer">outer</a> and <a href="#SkCanvas_drawDRRect_inner">inner</a> are
|
||||
concave and <a href="#SkCanvas_drawDRRect_outer">outer</a> contains <a href="#SkCanvas_drawDRRect_inner">inner</a>. These platforms may not be able to draw
|
||||
<a href="SkPath_Reference#Path">Path</a> built with identical data as fast.
|
||||
<a href="SkPath_Reference#Path">Path</a> built with identical data as fast.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3414,7 +3414,7 @@ void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint)
|
||||
|
||||
Draw <a href="undocumented#Circle">Circle</a> at (<a href="#SkCanvas_drawCircle_cx">cx</a>, <a href="#SkCanvas_drawCircle_cy">cy</a>) with <a href="#SkCanvas_drawCircle_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_paint">paint</a>.
|
||||
If <a href="#SkCanvas_drawCircle_radius">radius</a> is zero or less, nothing is drawn.
|
||||
In <a href="#SkCanvas_drawCircle_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawCircle_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
|
||||
### Parameters
|
||||
@ -3446,7 +3446,7 @@ void drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint)
|
||||
|
||||
Draw <a href="undocumented#Circle">Circle</a> at <a href="#SkCanvas_drawCircle_2_center">center</a> with <a href="#SkCanvas_drawCircle_2_radius">radius</a> using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawCircle_2_paint">paint</a>.
|
||||
If <a href="#SkCanvas_drawCircle_2_radius">radius</a> is zero or less, nothing is drawn.
|
||||
In <a href="#SkCanvas_drawCircle_2_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawCircle_2_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Circle">Circle</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
|
||||
### Parameters
|
||||
@ -3531,7 +3531,7 @@ void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint&
|
||||
Draw <a href="undocumented#Round_Rect">Round Rect</a> bounded by <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawRoundRect_rect">rect</a>, with corner radii (<a href="#SkCanvas_drawRoundRect_rx">rx</a>, <a href="#SkCanvas_drawRoundRect_ry">ry</a>) using <a href="#Clip">Clip</a>,
|
||||
<a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawRoundRect_paint">paint</a>.
|
||||
|
||||
In <a href="#SkCanvas_drawRoundRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
|
||||
In <a href="#SkCanvas_drawRoundRect_paint">paint</a>: <a href="#Style">Paint Style</a> determines if <a href="undocumented#Round_Rect">Round Rect</a> is stroked or filled;
|
||||
if stroked, <a href="#Stroke_Width">Paint Stroke Width</a> describes the line thickness.
|
||||
If <a href="#SkCanvas_drawRoundRect_rx">rx</a> or <a href="#SkCanvas_drawRoundRect_ry">ry</a> are less than zero, they are treated as if they are zero.
|
||||
If <a href="#SkCanvas_drawRoundRect_rx">rx</a> plus <a href="#SkCanvas_drawRoundRect_ry">ry</a> exceeds <a href="#SkCanvas_drawRoundRect_rect">rect</a> width or <a href="#SkCanvas_drawRoundRect_rect">rect</a> height, radii are scaled down to fit.
|
||||
@ -3593,7 +3593,7 @@ stroke, blend, color, and so on, used to draw</td>
|
||||
|
||||
<div><fiddle-embed name="d489555a878cb2ab08eea5faf516f54e"><div>Top rows draw stroked <a href="#SkCanvas_drawPath_path">path</a> with combinations of joins and caps. The open contour
|
||||
is affected by caps; the closed contour is affected by joins.
|
||||
Bottom row draws fill the same for open and closed contour.
|
||||
Bottom row draws fill the same for open and closed contour.
|
||||
First bottom column shows winding fills overlap.
|
||||
Second bottom column shows even odd fills exclude overlap.
|
||||
Third bottom column shows inverse winding fills area outside both contours.</div></fiddle-embed></div>
|
||||
@ -3623,7 +3623,7 @@ and <a href="undocumented#Draw_Looper">Draw Looper</a>. If <a href="#SkCanvas_dr
|
||||
If <a href="#SkCanvas_drawImage_paint">paint</a> contains <a href="undocumented#Mask_Filter">Mask Filter</a>, generate mask from <a href="#SkCanvas_drawImage_image">image</a> bounds. If generated
|
||||
mask extends beyond <a href="#SkCanvas_drawImage_image">image</a> bounds, replicate <a href="#SkCanvas_drawImage_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a>
|
||||
made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the
|
||||
<a href="#SkCanvas_drawImage_image">image</a> edge color when it samples outside of its bounds.
|
||||
<a href="#SkCanvas_drawImage_image">image</a> edge color when it samples outside of its bounds.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3662,7 +3662,7 @@ If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImage_2_pa
|
||||
If <a href="#SkCanvas_drawImage_2_paint">paint</a> contains <a href="undocumented#Mask_Filter">Mask Filter</a>, generate mask from <a href="#SkCanvas_drawImage_2_image">image</a> bounds. If generated
|
||||
mask extends beyond <a href="#SkCanvas_drawImage_2_image">image</a> bounds, replicate <a href="#SkCanvas_drawImage_2_image">image</a> edge colors, just as <a href="undocumented#Shader">Shader</a>
|
||||
made from <a href="#SkImage_makeShader">SkImage::makeShader</a> with <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the
|
||||
<a href="#SkCanvas_drawImage_2_image">image</a> edge color when it samples outside of its bounds.
|
||||
<a href="#SkCanvas_drawImage_2_image">image</a> edge color when it samples outside of its bounds.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3692,8 +3692,8 @@ and so on; or nullptr</td>
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> {
|
||||
<a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a>,
|
||||
<a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>,
|
||||
<a href="#SkCanvas_kStrict_SrcRectConstraint">kStrict SrcRectConstraint</a>,
|
||||
<a href="#SkCanvas_kFast_SrcRectConstraint">kFast SrcRectConstraint</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> controls the behavior at the edge of source <a href="SkRect_Reference#Rect">Rect</a>,
|
||||
@ -3701,7 +3701,7 @@ provided to <a href="#SkCanvas_drawImageRect">drawImageRect</a>, trading off spe
|
||||
|
||||
<a href="undocumented#Image_Filter">Image Filter</a> in <a href="SkPaint_Reference#Paint">Paint</a> may sample multiple pixels in the image. Source <a href="SkRect_Reference#Rect">Rect</a>
|
||||
restricts the bounds of pixels that may be read. <a href="undocumented#Image_Filter">Image Filter</a> may slow down if
|
||||
it cannot read outside the bounds, when sampling near the edge of source <a href="SkRect_Reference#Rect">Rect</a>.
|
||||
it cannot read outside the bounds, when sampling near the edge of source <a href="SkRect_Reference#Rect">Rect</a>.
|
||||
<a href="#SkCanvas_SrcRectConstraint">SrcRectConstraint</a> specifies whether an <a href="undocumented#Image_Filter">Image Filter</a> is allowed to read pixels
|
||||
outside source <a href="SkRect_Reference#Rect">Rect</a>.
|
||||
|
||||
@ -3792,7 +3792,7 @@ void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst,
|
||||
Draw <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> of <a href="SkImage_Reference#Image">Image</a> <a href="#SkCanvas_drawImageRect_2_image">image</a>, scaled and translated to fill <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawImageRect_2_dst">dst</a>.
|
||||
Note that <a href="#SkCanvas_drawImageRect_2_isrc">isrc</a> is on integer pixel boundaries; <a href="#SkCanvas_drawImageRect_2_dst">dst</a> may include fractional
|
||||
boundaries. Additionally transform draw using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and optional <a href="SkPaint_Reference#Paint">Paint</a>
|
||||
<a href="#SkCanvas_drawImageRect_2_paint">paint</a>.
|
||||
<a href="#SkCanvas_drawImageRect_2_paint">paint</a>.
|
||||
|
||||
If <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawImageRect_2_paint">paint</a> is supplied, apply <a href="undocumented#Color_Filter">Color Filter</a>, <a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>,
|
||||
<a href="undocumented#Blend_Mode">Blend Mode</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>. If <a href="#SkCanvas_drawImageRect_2_image">image</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>, apply <a href="undocumented#Shader">Shader</a>.
|
||||
@ -4102,7 +4102,7 @@ and so on; or nullptr</td>
|
||||
|
||||
<div><fiddle-embed name="e941e553970569d1ffb03a42f7fcd6d9"><div>The two leftmost images has four corners and sides to the left and right of <a href="#SkCanvas_drawImageNine_2_center">center</a>.
|
||||
The leftmost <a href="#SkCanvas_drawImageNine_2_image">image</a> scales the width of corners proportionately to fit.
|
||||
The third and fourth <a href="#SkCanvas_drawImageNine_2_image">image</a> corners are not scaled; the sides and <a href="#SkCanvas_drawImageNine_2_center">center</a> are scaled to
|
||||
The third and fourth <a href="#SkCanvas_drawImageNine_2_image">image</a> corners are not scaled; the sides and <a href="#SkCanvas_drawImageNine_2_center">center</a> are scaled to
|
||||
fill the remaining space.
|
||||
The rightmost <a href="#SkCanvas_drawImageNine_2_image">image</a> has four corners scaled vertically to fit, and uses sides above
|
||||
and below <a href="#SkCanvas_drawImageNine_2_center">center</a> to fill the remaining space.</div></fiddle-embed></div>
|
||||
@ -4130,7 +4130,7 @@ If <a href="#SkCanvas_drawBitmap_paint">paint</a> contains <a href="undocumented
|
||||
If generated mask extends beyond <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> bounds, replicate <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> edge colors,
|
||||
just as <a href="undocumented#Shader">Shader</a> made from <a href="#SkShader_MakeBitmapShader">SkShader::MakeBitmapShader</a> with
|
||||
<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> set replicates the <a href="#SkCanvas_drawBitmap_bitmap">bitmap</a> edge color when it samples
|
||||
outside of its bounds.
|
||||
outside of its bounds.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4343,7 +4343,7 @@ and so on; or nullptr</td>
|
||||
|
||||
<div><fiddle-embed name="a4a30aa10e566a85fe6f6cad2ff9935b"><div>The two leftmost <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> draws has four corners and sides to the left and right of <a href="#SkCanvas_drawBitmapNine_center">center</a>.
|
||||
The leftmost <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> draw scales the width of corners proportionately to fit.
|
||||
The third and fourth draw corners are not scaled; the sides and <a href="#SkCanvas_drawBitmapNine_center">center</a> are scaled to
|
||||
The third and fourth draw corners are not scaled; the sides and <a href="#SkCanvas_drawBitmapNine_center">center</a> are scaled to
|
||||
fill the remaining space.
|
||||
The rightmost <a href="#SkCanvas_drawBitmapNine_bitmap">bitmap</a> draw has four corners scaled vertically to fit, and uses sides above
|
||||
and below <a href="#SkCanvas_drawBitmapNine_center">center</a> to fill the remaining space.</div></fiddle-embed></div>
|
||||
@ -4498,7 +4498,7 @@ and so on; or nullptr</td>
|
||||
|
||||
<div><fiddle-embed name="7a02b16a4cc8158d88858a76907c9d89"><div>The two leftmost <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> draws has four corners and sides to the left and right of center.
|
||||
The leftmost <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> draw scales the width of corners proportionately to fit.
|
||||
The third and fourth draw corners are not scaled; the sides are scaled to
|
||||
The third and fourth draw corners are not scaled; the sides are scaled to
|
||||
fill the remaining space; the center is transparent.
|
||||
The rightmost <a href="#SkCanvas_drawBitmapLattice_bitmap">bitmap</a> draw has four corners scaled vertically to fit, and uses sides above
|
||||
and below center to fill the remaining space.</div></fiddle-embed></div>
|
||||
@ -4577,7 +4577,7 @@ UTF-8.
|
||||
|
||||
<a href="#SkCanvas_drawText_x">x</a> and <a href="#SkCanvas_drawText_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default
|
||||
<a href="#SkCanvas_drawText_text">text</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawText_x">x</a>
|
||||
and its baseline at <a href="#SkCanvas_drawText_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
and its baseline at <a href="#SkCanvas_drawText_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawText_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawText_text">text</a>. By default, draws
|
||||
@ -4625,7 +4625,7 @@ results, since zero bytes may be embedded in the <a href="#SkCanvas_drawString_s
|
||||
|
||||
<a href="#SkCanvas_drawString_x">x</a> and <a href="#SkCanvas_drawString_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default
|
||||
<a href="#SkCanvas_drawString_string">string</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawString_x">x</a>
|
||||
and its baseline at <a href="#SkCanvas_drawString_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
and its baseline at <a href="#SkCanvas_drawString_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawString_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to text. By default, draws
|
||||
@ -4668,7 +4668,7 @@ results, since zero bytes may be embedded in the <a href="#SkCanvas_drawString_2
|
||||
|
||||
<a href="#SkCanvas_drawString_2_x">x</a> and <a href="#SkCanvas_drawString_2_y">y</a> meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by default
|
||||
<a href="#SkCanvas_drawString_2_string">string</a> draws left to right, positioning the first glyph left side bearing at <a href="#SkCanvas_drawString_2_x">x</a>
|
||||
and its baseline at <a href="#SkCanvas_drawString_2_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
and its baseline at <a href="#SkCanvas_drawString_2_y">y</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawString_2_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to text. By default, draws
|
||||
@ -4713,13 +4713,13 @@ described by <a href="#SkCanvas_drawPosText_byteLength">byteLength</a> of <a hre
|
||||
UTF-8. <a href="#SkCanvas_drawPosText_pos">pos</a> elements' meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>;
|
||||
by default each glyph left side bearing is positioned at x and its
|
||||
baseline is positioned at y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and
|
||||
<a href="#Text_Size">Paint Text Size</a>.
|
||||
<a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawPosText_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawPosText_text">text</a>. By default, draws
|
||||
filled 12 point black <a href="#Glyph">Glyphs</a>.
|
||||
|
||||
Layout engines such as <a href="undocumented#Harfbuzz">Harfbuzz</a> typically position each glyph
|
||||
Layout engines such as Harfbuzz typically position each glyph
|
||||
rather than using the font advance widths.
|
||||
|
||||
### Parameters
|
||||
@ -4761,13 +4761,13 @@ must match the number of <a href="#Glyph">Glyphs</a> described by <a href="#SkCa
|
||||
UTF-8. <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> elements' meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>;
|
||||
by default each glyph left side bearing is positioned at an <a href="#SkCanvas_drawPosTextH_xpos">xpos</a> element and
|
||||
its baseline is positioned at <a href="#SkCanvas_drawPosTextH_constY">constY</a>. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and
|
||||
<a href="#Text_Size">Paint Text Size</a>.
|
||||
<a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawPosTextH_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawPosTextH_text">text</a>. By default, draws
|
||||
filled 12 point black <a href="#Glyph">Glyphs</a>.
|
||||
|
||||
Layout engines such as <a href="undocumented#Harfbuzz">Harfbuzz</a> typically position each glyph
|
||||
Layout engines such as Harfbuzz typically position each glyph
|
||||
rather than using the font advance widths if all <a href="#Glyph">Glyphs</a> share the same
|
||||
baseline.
|
||||
|
||||
@ -4815,7 +4815,7 @@ than the <a href="#SkCanvas_drawTextOnPathHV_path">path</a> length, the excess <
|
||||
<a href="#SkCanvas_drawTextOnPathHV_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPathHV_text">text</a> is encoded as
|
||||
UTF-8. Origin meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by
|
||||
default <a href="#SkCanvas_drawTextOnPathHV_text">text</a> positions the first glyph left side bearing at origin x and its
|
||||
baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawTextOnPathHV_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawTextOnPathHV_text">text</a>. By default, draws
|
||||
@ -4867,7 +4867,7 @@ than the <a href="#SkCanvas_drawTextOnPath_path">path</a> length, the excess <a
|
||||
<a href="#SkCanvas_drawTextOnPath_text">text</a> meaning depends on <a href="#Text_Encoding">Paint Text Encoding</a>; by default, <a href="#SkCanvas_drawTextOnPath_text">text</a> is encoded as
|
||||
UTF-8. Origin meaning depends on <a href="#Text_Align">Paint Text Align</a> and <a href="#Vertical_Text">Paint Vertical Text</a>; by
|
||||
default <a href="#SkCanvas_drawTextOnPath_text">text</a> positions the first glyph left side bearing at origin x and its
|
||||
baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
baseline at origin y. <a href="undocumented#Text">Text</a> size is affected by <a href="#Matrix">Matrix</a> and <a href="#Text_Size">Paint Text Size</a>.
|
||||
|
||||
All elements of <a href="#SkCanvas_drawTextOnPath_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>,
|
||||
<a href="undocumented#Color_Filter">Color Filter</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawTextOnPath_text">text</a>. By default, draws
|
||||
@ -4910,7 +4910,7 @@ void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[
|
||||
Draw <a href="#SkCanvas_drawTextRSXform_text">text</a>, transforming each glyph by the corresponding <a href="undocumented#SkRSXform">SkRSXform</a>,
|
||||
using <a href="#Clip">Clip</a>, <a href="#Matrix">Matrix</a>, and <a href="SkPaint_Reference#Paint">Paint</a> <a href="#SkCanvas_drawTextRSXform_paint">paint</a>.
|
||||
|
||||
<a href="undocumented#RSXform">RSXform</a> array specifies a separate square <a href="#SkCanvas_scale">scale</a>, rotation, and translation for
|
||||
<a href="undocumented#RSXform">RSXform</a> array specifies a separate square <a href="#SkCanvas_scale">scale</a>, rotation, and translation for
|
||||
each glyph.
|
||||
|
||||
Optional <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkCanvas_drawTextRSXform_cullRect">cullRect</a> is a conservative bounds of <a href="#SkCanvas_drawTextRSXform_text">text</a>, taking into account
|
||||
@ -4962,7 +4962,7 @@ Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextB
|
||||
|
||||
<a href="#Text_Encoding">Paint Text Encoding</a> must be set to <a href="#SkPaint_kGlyphID_TextEncoding">SkPaint::kGlyphID TextEncoding</a>.
|
||||
|
||||
Elements of <a href="#SkCanvas_drawTextBlob_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
Elements of <a href="#SkCanvas_drawTextBlob_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
<a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawTextBlob_blob">blob</a>.
|
||||
|
||||
### Parameters
|
||||
@ -5002,7 +5002,7 @@ Draw <a href="undocumented#Text_Blob">Text Blob</a> <a href="#SkCanvas_drawTextB
|
||||
|
||||
<a href="#Text_Encoding">Paint Text Encoding</a> must be set to <a href="#SkPaint_kGlyphID_TextEncoding">SkPaint::kGlyphID TextEncoding</a>.
|
||||
|
||||
Elements of <a href="#SkCanvas_drawTextBlob_2_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
Elements of <a href="#SkCanvas_drawTextBlob_2_paint">paint</a>: <a href="undocumented#Path_Effect">Path Effect</a>, <a href="undocumented#Rasterizer">Rasterizer</a>, <a href="undocumented#Mask_Filter">Mask Filter</a>, <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
<a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Draw_Looper">Draw Looper</a>; apply to <a href="#SkCanvas_drawTextBlob_2_blob">blob</a>.
|
||||
|
||||
### Parameters
|
||||
@ -5219,15 +5219,15 @@ void drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint
|
||||
SkBlendMode mode, const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draws a <a href="undocumented#Coons_Patch">Coons Patch</a>: the interpolation of four <a href="#SkCanvas_drawPatch_cubics">cubics</a> with shared corners,
|
||||
Draws a Coons_Patch: the interpolation of four <a href="#SkCanvas_drawPatch_cubics">cubics</a> with shared corners,
|
||||
associating a color, and optionally a texture coordinate, with each corner.
|
||||
|
||||
<a href="undocumented#Coons_Patch">Coons Patch</a> uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
Coons_Patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
<a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>. If <a href="undocumented#Shader">Shader</a> is provided it is treated
|
||||
as <a href="undocumented#Coons_Patch">Coons Patch</a> texture; <a href="undocumented#Blend_Mode">Blend Mode</a> <a href="#SkCanvas_drawPatch_mode">mode</a> combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if
|
||||
as Coons_Patch texture; <a href="undocumented#Blend_Mode">Blend Mode</a> <a href="#SkCanvas_drawPatch_mode">mode</a> combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if
|
||||
both are provided.
|
||||
|
||||
<a href="SkPoint_Reference#Point">Point</a> array <a href="#SkCanvas_drawPatch_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner,
|
||||
<a href="SkPoint_Reference#Point">Point</a> array <a href="#SkCanvas_drawPatch_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner,
|
||||
in clockwise order, sharing every fourth point. The last <a href="#Cubic">Cubic</a> ends at the
|
||||
first point.
|
||||
|
||||
@ -5269,15 +5269,15 @@ void drawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint
|
||||
const SkPaint& paint)
|
||||
</pre>
|
||||
|
||||
Draws <a href="#Cubic">Cubic</a> <a href="undocumented#Coons_Patch">Coons Patch</a>: the interpolation of four <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> with shared corners,
|
||||
Draws <a href="#Cubic">Cubic</a> Coons_Patch: the interpolation of four <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> with shared corners,
|
||||
associating a color, and optionally a texture coordinate, with each corner.
|
||||
|
||||
<a href="undocumented#Coons_Patch">Coons Patch</a> uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_2_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
Coons_Patch uses <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, <a href="#SkCanvas_drawPatch_2_paint">paint</a> <a href="undocumented#Shader">Shader</a>, <a href="undocumented#Color_Filter">Color Filter</a>,
|
||||
<a href="#Alpha">Color Alpha</a>, <a href="undocumented#Image_Filter">Image Filter</a>, and <a href="undocumented#Blend_Mode">Blend Mode</a>. If <a href="undocumented#Shader">Shader</a> is provided it is treated
|
||||
as <a href="undocumented#Coons_Patch">Coons Patch</a> texture; <a href="undocumented#Blend_Mode">Blend Mode</a> mode combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_2_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if
|
||||
as Coons_Patch texture; <a href="undocumented#Blend_Mode">Blend Mode</a> mode combines <a href="undocumented#Color">Color</a> <a href="#SkCanvas_drawPatch_2_colors">colors</a> and <a href="undocumented#Shader">Shader</a> if
|
||||
both are provided.
|
||||
|
||||
<a href="SkPoint_Reference#Point">Point</a> array <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner,
|
||||
<a href="SkPoint_Reference#Point">Point</a> array <a href="#SkCanvas_drawPatch_2_cubics">cubics</a> specifies four <a href="#Cubic">Cubics</a> starting at the top-left corner,
|
||||
in clockwise order, sharing every fourth point. The last <a href="#Cubic">Cubic</a> ends at the
|
||||
first point.
|
||||
|
||||
@ -5332,7 +5332,7 @@ to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect
|
||||
|
||||
<a href="#SkCanvas_drawAtlas_xform">xform</a>, text, and <a href="#SkCanvas_drawAtlas_colors">colors</a> if present, must contain <a href="#SkCanvas_drawAtlas_count">count</a> entries.
|
||||
Optional <a href="#SkCanvas_drawAtlas_colors">colors</a> are applied for each sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>.
|
||||
Optional <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
Optional <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
If <a href="#SkCanvas_drawAtlas_cullRect">cullRect</a> is outside of <a href="#Clip">Clip</a>, canvas can skip drawing.
|
||||
|
||||
### Parameters
|
||||
@ -5379,7 +5379,7 @@ to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect
|
||||
|
||||
<a href="#SkCanvas_drawAtlas_2_xform">xform</a>, text, and <a href="#SkCanvas_drawAtlas_2_colors">colors</a> if present, must contain <a href="#SkCanvas_drawAtlas_2_count">count</a> entries.
|
||||
Optional <a href="#SkCanvas_drawAtlas_2_colors">colors</a> is applied for each sprite using <a href="undocumented#Blend_Mode">Blend Mode</a>.
|
||||
Optional <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
Optional <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
If <a href="#SkCanvas_drawAtlas_2_cullRect">cullRect</a> is outside of <a href="#Clip">Clip</a>, canvas can skip drawing.
|
||||
|
||||
### Parameters
|
||||
@ -5424,7 +5424,7 @@ to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect
|
||||
<a href="#SkCanvas_drawAtlas_3_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_3_xform">xform</a> transforms it into destination space.
|
||||
|
||||
<a href="#SkCanvas_drawAtlas_3_xform">xform</a> and text must contain <a href="#SkCanvas_drawAtlas_3_count">count</a> entries.
|
||||
Optional <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
Optional <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
If <a href="#SkCanvas_drawAtlas_3_cullRect">cullRect</a> is outside of <a href="#Clip">Clip</a>, canvas can skip drawing.
|
||||
|
||||
### Parameters
|
||||
@ -5465,7 +5465,7 @@ to draw, if present. For each entry in the array, <a href="SkRect_Reference#Rect
|
||||
<a href="#SkCanvas_drawAtlas_4_atlas">atlas</a>, and <a href="undocumented#RSXform">RSXform</a> <a href="#SkCanvas_drawAtlas_4_xform">xform</a> transforms it into destination space.
|
||||
|
||||
<a href="#SkCanvas_drawAtlas_4_xform">xform</a> and text must contain <a href="#SkCanvas_drawAtlas_4_count">count</a> entries.
|
||||
Optional <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
Optional <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is a conservative bounds of all transformed sprites.
|
||||
If <a href="#SkCanvas_drawAtlas_4_cullRect">cullRect</a> is outside of <a href="#Clip">Clip</a>, canvas can skip drawing.
|
||||
|
||||
### Parameters
|
||||
@ -5502,10 +5502,10 @@ bounds of transformed sprites for efficient clipping; may be nullptr</td>
|
||||
void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr)
|
||||
</pre>
|
||||
|
||||
Draw <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, concatenated with
|
||||
Draw <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, concatenated with
|
||||
optional <a href="#SkCanvas_drawDrawable_matrix">matrix</a>.
|
||||
|
||||
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
|
||||
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
|
||||
when it is recording into <a href="undocumented#Picture">Picture</a>, then <a href="#SkCanvas_drawDrawable_drawable">drawable</a> will be referenced,
|
||||
so that <a href="#SkDrawable_draw">SkDrawable::draw()</a> can be called when the operation is finalized. To force
|
||||
immediate drawing, call <a href="#SkDrawable_draw">SkDrawable::draw()</a> instead.
|
||||
@ -5535,7 +5535,7 @@ void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y)
|
||||
|
||||
Draw <a href="undocumented#Drawable">Drawable</a> <a href="#SkCanvas_drawDrawable_2_drawable">drawable</a> using <a href="#Clip">Clip</a> and <a href="#Matrix">Matrix</a>, offset by (<a href="#SkCanvas_drawDrawable_2_x">x</a>, <a href="#SkCanvas_drawDrawable_2_y">y</a>).
|
||||
|
||||
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
|
||||
If <a href="#Canvas">Canvas</a> has an asynchronous implementation, as is the case
|
||||
when it is recording into <a href="undocumented#Picture">Picture</a>, then <a href="#SkCanvas_drawDrawable_2_drawable">drawable</a> will be referenced,
|
||||
so that <a href="#SkDrawable_draw">SkDrawable::draw()</a> can be called when the operation is finalized. To force
|
||||
immediate drawing, call <a href="#SkDrawable_draw">SkDrawable::draw()</a> instead.
|
||||
@ -5571,7 +5571,7 @@ void drawAnnotation(const SkRect& rect, const char key[], SkData* value)
|
||||
Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a <a href="#SkCanvas_drawAnnotation_key">key</a>-<a href="#SkCanvas_drawAnnotation_value">value</a> pair, where the <a href="#SkCanvas_drawAnnotation_key">key</a> is
|
||||
a null-terminated utf8 string, and optional <a href="#SkCanvas_drawAnnotation_value">value</a> is stored as <a href="undocumented#Data">Data</a>.
|
||||
|
||||
Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to
|
||||
Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to
|
||||
<a href="#PDF">Document PDF</a>, use annotations.
|
||||
|
||||
### Parameters
|
||||
@ -5602,7 +5602,7 @@ void drawAnnotation(const SkRect& rect, const char key[], const sk_sp<SkData&
|
||||
Associate <a href="SkRect_Reference#Rect">Rect</a> on <a href="#Canvas">Canvas</a> when an annotation; a <a href="#SkCanvas_drawAnnotation_2_key">key</a>-<a href="#SkCanvas_drawAnnotation_2_value">value</a> pair, where the <a href="#SkCanvas_drawAnnotation_2_key">key</a> is
|
||||
a null-terminated utf8 string, and optional <a href="#SkCanvas_drawAnnotation_2_value">value</a> is stored as <a href="undocumented#Data">Data</a>.
|
||||
|
||||
Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to
|
||||
Only some canvas implementations, such as recording to <a href="undocumented#Picture">Picture</a>, or drawing to
|
||||
<a href="#PDF">Document PDF</a>, use annotations.
|
||||
|
||||
### Parameters
|
||||
@ -5759,7 +5759,7 @@ utility to <a href="#SkAutoCanvasRestore_restore">restore</a> <a href="#Canvas">
|
||||
~SkAutoCanvasRestore()
|
||||
</pre>
|
||||
|
||||
Restores <a href="#Canvas">Canvas</a> to saved state. <a href="undocumented#Destructor">Destructor</a> is called when container goes out of
|
||||
Restores <a href="#Canvas">Canvas</a> to saved state. Destructor is called when container goes out of
|
||||
scope.
|
||||
|
||||
### See Also
|
||||
|
@ -37,7 +37,7 @@ SkIPoint16 Reference
|
||||
static constexpr SkIPoint16 Make(int x, int y)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#SkIPoint16_fX">fX</a> to <a href="#SkIPoint16_x">x</a>, <a href="#SkIPoint16_fY">fY</a> to <a href="#SkIPoint16_y">y</a>. If <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined, asserts
|
||||
Sets <a href="#SkIPoint16_fX">fX</a> to <a href="#SkIPoint16_x">x</a>, <a href="#SkIPoint16_fY">fY</a> to <a href="#SkIPoint16_y">y</a>. If SK_DEBUG is defined, asserts
|
||||
if <a href="#SkIPoint16_x">x</a> or <a href="#SkIPoint16_y">y</a> does not fit in 16 bits.
|
||||
|
||||
### Parameters
|
||||
|
@ -5,10 +5,10 @@ SkIRect Reference
|
||||
|
||||
# <a name="SkIRect"></a> Struct SkIRect
|
||||
<a href="#SkIRect">SkIRect</a> holds four 32 bit integer coordinates describing the upper and
|
||||
lower bounds of a rectangle. <a href="#SkIRect">SkIRect</a> may be created from outer bounds or
|
||||
lower bounds of a rectangle. <a href="#SkIRect">SkIRect</a> may be created from outer bounds or
|
||||
from position, <a href="#SkIRect_width">width</a>, and <a href="#SkIRect_height">height</a>. <a href="#SkIRect">SkIRect</a> describes an area; if its <a href="#SkIRect_right">right</a>
|
||||
is less than or equal to its <a href="#SkIRect_left">left</a>, or if its <a href="#SkIRect_bottom">bottom</a> is less than or equal to
|
||||
its <a href="#SkIRect_top">top</a>, it is considered empty.
|
||||
its <a href="#SkIRect_top">top</a>, it is considered empty.
|
||||
|
||||
# <a name="Overview"></a> Overview
|
||||
|
||||
@ -137,7 +137,7 @@ outset rect isEmpty: false
|
||||
static SkIRect SK_WARN_UNUSED_RESULT MakeLargest()
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="#IRect">IRect</a> setting <a href="#SkIRect_left">left</a> and <a href="#SkIRect_top">top</a> to most negative value, and
|
||||
Returns constructed <a href="#IRect">IRect</a> setting <a href="#SkIRect_left">left</a> and <a href="#SkIRect_top">top</a> to most negative value, and
|
||||
setting <a href="#SkIRect_right">right</a> and <a href="#SkIRect_bottom">bottom</a> to most positive value.
|
||||
|
||||
### Return Value
|
||||
@ -213,7 +213,7 @@ all equal
|
||||
static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeSize(const SkISize& size)
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="#IRect">IRect</a> <a href="#SkIRect_set">set</a> to (0, 0, <a href="#SkIRect_size">size</a>.<a href="#SkIRect_width">width</a>, <a href="#SkIRect_size">size</a>.<a href="#SkIRect_height">height</a>).
|
||||
Returns constructed <a href="#IRect">IRect</a> <a href="#SkIRect_set">set</a> to (0, 0, <a href="#SkIRect_size">size</a>.<a href="#SkIRect_width">width</a>, <a href="#SkIRect_size">size</a>.<a href="#SkIRect_height">height</a>).
|
||||
Does not validate input; <a href="#SkIRect_size">size</a>.<a href="#SkIRect_width">width</a> or <a href="#SkIRect_size">size</a>.<a href="#SkIRect_height">height</a> may be negative.
|
||||
|
||||
### Parameters
|
||||
@ -300,7 +300,7 @@ static constexpr SkIRect SK_WARN_UNUSED_RESULT MakeXYWH(int32_t x, int32_t y, in
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="#IRect">IRect</a> <a href="#SkIRect_set">set</a> to:
|
||||
(<a href="#SkIRect_x">x</a>, <a href="#SkIRect_y">y</a>, <a href="#SkIRect_x">x</a> + <a href="#SkIRect_MakeXYWH_w">w</a>, <a href="#SkIRect_y">y</a> + <a href="#SkIRect_MakeXYWH_h">h</a>).
|
||||
(<a href="#SkIRect_x">x</a>, <a href="#SkIRect_y">y</a>, <a href="#SkIRect_x">x</a> + <a href="#SkIRect_MakeXYWH_w">w</a>, <a href="#SkIRect_y">y</a> + <a href="#SkIRect_MakeXYWH_h">h</a>).
|
||||
Does not validate input;
|
||||
<a href="#SkIRect_MakeXYWH_w">w</a> or <a href="#SkIRect_MakeXYWH_h">h</a> may be negative.
|
||||
|
||||
@ -682,7 +682,7 @@ int32_t centerY() const
|
||||
</pre>
|
||||
|
||||
Returns average of <a href="#SkIRect_top">top</a> edge and <a href="#SkIRect_bottom">bottom</a> edge. Result does not change if <a href="SkRect_Reference#Rect">Rect</a>
|
||||
is sorted. Result may be incorrect if <a href="SkRect_Reference#Rect">Rect</a> is far from the origin.
|
||||
is sorted. Result may be incorrect if <a href="SkRect_Reference#Rect">Rect</a> is far from the origin.
|
||||
|
||||
Result is rounded down.
|
||||
|
||||
@ -751,7 +751,7 @@ sorted: {20, 40, 20, 50} is empty
|
||||
bool isLargest() const
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="#IRect">IRect</a> encloses largest possible area.
|
||||
Returns true if <a href="#IRect">IRect</a> encloses largest possible area.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -785,7 +785,7 @@ large is empty: false
|
||||
bool operator==(const SkIRect& a, const SkIRect& b)
|
||||
</pre>
|
||||
|
||||
Returns true if all members in <a href="#SkIRect_equal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; are
|
||||
Returns true if all members in <a href="#SkIRect_equal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; are
|
||||
identical to corresponding members in <a href="#SkIRect_equal_operator_b">b</a>.
|
||||
|
||||
### Parameters
|
||||
@ -826,7 +826,7 @@ test == sorted
|
||||
bool operator!=(const SkIRect& a, const SkIRect& b)
|
||||
</pre>
|
||||
|
||||
Returns true if any member in <a href="#SkIRect_notequal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; is not
|
||||
Returns true if any member in <a href="#SkIRect_notequal_operator_a">a</a>: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; is not
|
||||
identical to the corresponding member in <a href="#SkIRect_notequal_operator_b">b</a>.
|
||||
|
||||
### Parameters
|
||||
@ -868,7 +868,7 @@ bool is16Bit() const
|
||||
</pre>
|
||||
|
||||
Returns true if all members: <a href="#SkIRect_fLeft">fLeft</a>, <a href="#SkIRect_fTop">fTop</a>, <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fBottom">fBottom</a>; values are
|
||||
equal to or larger than -32768 and equal to or smaller than 32767.
|
||||
equal to or larger than -32768 and equal to or smaller than 32767.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1019,7 +1019,7 @@ void setXYWH(int32_t x, int32_t y, int32_t width, int32_t height)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#IRect">IRect</a> to:
|
||||
(<a href="#SkIRect_x">x</a>, <a href="#SkIRect_y">y</a>, <a href="#SkIRect_x">x</a> + <a href="#SkIRect_width">width</a>, <a href="#SkIRect_y">y</a> + <a href="#SkIRect_height">height</a>).
|
||||
(<a href="#SkIRect_x">x</a>, <a href="#SkIRect_y">y</a>, <a href="#SkIRect_x">x</a> + <a href="#SkIRect_width">width</a>, <a href="#SkIRect_y">y</a> + <a href="#SkIRect_height">height</a>).
|
||||
Does not validate input;
|
||||
<a href="#SkIRect_width">width</a> or <a href="#SkIRect_height">height</a> may be negative.
|
||||
|
||||
@ -1115,7 +1115,7 @@ Returns <a href="#IRect">IRect</a> <a href="#SkIRect_offset">offset</a> by (<a h
|
||||
If <a href="#SkIRect_makeOffset_dx">dx</a> is negative, <a href="#IRect">IRect</a> returned is moved to the <a href="#SkIRect_left">left</a>.
|
||||
If <a href="#SkIRect_makeOffset_dx">dx</a> is positive, <a href="#IRect">IRect</a> returned is moved to the <a href="#SkIRect_right">right</a>.
|
||||
If <a href="#SkIRect_makeOffset_dy">dy</a> is negative, <a href="#IRect">IRect</a> returned is moved upward.
|
||||
If <a href="#SkIRect_makeOffset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is moved downward.
|
||||
If <a href="#SkIRect_makeOffset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is moved downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1161,7 +1161,7 @@ Returns <a href="#IRect">IRect</a>, <a href="#SkIRect_inset">inset</a> by (<a hr
|
||||
If <a href="#SkIRect_makeInset_dx">dx</a> is negative, <a href="#IRect">IRect</a> returned is wider.
|
||||
If <a href="#SkIRect_makeInset_dx">dx</a> is positive, <a href="#IRect">IRect</a> returned is narrower.
|
||||
If <a href="#SkIRect_makeInset_dy">dy</a> is negative, <a href="#IRect">IRect</a> returned is taller.
|
||||
If <a href="#SkIRect_makeInset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is shorter.
|
||||
If <a href="#SkIRect_makeInset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is shorter.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1207,7 +1207,7 @@ Returns <a href="#IRect">IRect</a>, <a href="#SkIRect_outset">outset</a> by (<a
|
||||
If <a href="#SkIRect_makeOutset_dx">dx</a> is negative, <a href="#IRect">IRect</a> returned is narrower.
|
||||
If <a href="#SkIRect_makeOutset_dx">dx</a> is positive, <a href="#IRect">IRect</a> returned is wider.
|
||||
If <a href="#SkIRect_makeOutset_dy">dy</a> is negative, <a href="#IRect">IRect</a> returned is shorter.
|
||||
If <a href="#SkIRect_makeOutset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is taller.
|
||||
If <a href="#SkIRect_makeOutset_dy">dy</a> is positive, <a href="#IRect">IRect</a> returned is taller.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1253,7 +1253,7 @@ Offsets <a href="#IRect">IRect</a> by adding <a href="#SkIRect_offset_dx">dx</a>
|
||||
If <a href="#SkIRect_offset_dx">dx</a> is negative, moves <a href="#IRect">IRect</a> returned to the <a href="#SkIRect_left">left</a>.
|
||||
If <a href="#SkIRect_offset_dx">dx</a> is positive, moves <a href="#IRect">IRect</a> returned to the <a href="#SkIRect_right">right</a>.
|
||||
If <a href="#SkIRect_offset_dy">dy</a> is negative, moves <a href="#IRect">IRect</a> returned upward.
|
||||
If <a href="#SkIRect_offset_dy">dy</a> is positive, moves <a href="#IRect">IRect</a> returned downward.
|
||||
If <a href="#SkIRect_offset_dy">dy</a> is positive, moves <a href="#IRect">IRect</a> returned downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1292,7 +1292,7 @@ Offsets <a href="#IRect">IRect</a> by adding <a href="#SkIRect_offset_2_delta">d
|
||||
If <a href="#SkIRect_offset_2_delta">delta</a>.fX is negative, moves <a href="#IRect">IRect</a> returned to the <a href="#SkIRect_left">left</a>.
|
||||
If <a href="#SkIRect_offset_2_delta">delta</a>.fX is positive, moves <a href="#IRect">IRect</a> returned to the <a href="#SkIRect_right">right</a>.
|
||||
If <a href="#SkIRect_offset_2_delta">delta</a>.fY is negative, moves <a href="#IRect">IRect</a> returned upward.
|
||||
If <a href="#SkIRect_offset_2_delta">delta</a>.fY is positive, moves <a href="#IRect">IRect</a> returned downward.
|
||||
If <a href="#SkIRect_offset_2_delta">delta</a>.fY is positive, moves <a href="#IRect">IRect</a> returned downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1675,7 +1675,7 @@ Constructs <a href="#IRect">IRect</a> from (<a href="#SkIRect_left">left</a>, <a
|
||||
construction.
|
||||
|
||||
Returns true if <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkIRect_contains">contains</a> construction.
|
||||
Asserts if <a href="#IRect">IRect</a> is empty or construction is empty, and if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined.
|
||||
Asserts if <a href="#IRect">IRect</a> is empty or construction is empty, and if SK_DEBUG is defined.
|
||||
|
||||
Return is undefined if <a href="SkRect_Reference#Rect">Rect</a> is empty or construction is empty.
|
||||
|
||||
@ -1721,7 +1721,7 @@ bool containsNoEmptyCheck(const SkIRect& r) const
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="SkRect_Reference#Rect">Rect</a> <a href="#SkIRect_contains">contains</a> construction.
|
||||
Asserts if <a href="#IRect">IRect</a> is empty or construction is empty, and if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined.
|
||||
Asserts if <a href="#IRect">IRect</a> is empty or construction is empty, and if SK_DEBUG is defined.
|
||||
|
||||
Return is undefined if <a href="SkRect_Reference#Rect">Rect</a> is empty or construction is empty.
|
||||
|
||||
@ -1757,7 +1757,7 @@ rect: (30, 50, 40, 60) does not contain (29, 59, 30, 60)
|
||||
---
|
||||
|
||||
# <a name="Intersection"></a> Intersection
|
||||
IRects <a href="#SkIRect_intersect">intersect</a> when they enclose a common area. To <a href="#SkIRect_intersect">intersect</a>, each of the pair
|
||||
IRects <a href="#SkIRect_intersect">intersect</a> when they enclose a common area. To <a href="#SkIRect_intersect">intersect</a>, each of the pair
|
||||
must describe area; <a href="#SkIRect_fLeft">fLeft</a> is less than <a href="#SkIRect_fRight">fRight</a>, and <a href="#SkIRect_fTop">fTop</a> is less than <a href="#SkIRect_fBottom">fBottom</a>;
|
||||
empty() returns false. The intersection of <a href="#IRect">IRect</a> pair can be described by:
|
||||
(max(a.fLeft, b.fLeft), max(a.fTop, b.fTop),
|
||||
@ -1857,7 +1857,7 @@ bool SK_WARN_UNUSED_RESULT intersectNoEmptyCheck(const SkIRect& a, const SkIRect
|
||||
Returns true if <a href="#SkIRect_intersectNoEmptyCheck_a">a</a> intersects <a href="#SkIRect_intersectNoEmptyCheck_b">b</a>, and sets <a href="#IRect">IRect</a> to intersection.
|
||||
Returns false if <a href="#SkIRect_intersectNoEmptyCheck_a">a</a> does not <a href="#SkIRect_intersect">intersect</a> <a href="#SkIRect_intersectNoEmptyCheck_b">b</a>, and leaves <a href="#IRect">IRect</a> unchanged.
|
||||
|
||||
Asserts if either <a href="#SkIRect_intersectNoEmptyCheck_a">a</a> or <a href="#SkIRect_intersectNoEmptyCheck_b">b</a> is empty, and if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined.
|
||||
Asserts if either <a href="#SkIRect_intersectNoEmptyCheck_a">a</a> or <a href="#SkIRect_intersectNoEmptyCheck_b">b</a> is empty, and if SK_DEBUG is defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1988,7 +1988,7 @@ static bool IntersectsNoEmptyCheck(const SkIRect& a, const SkIRect& b)
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="#SkIRect_IntersectsNoEmptyCheck_a">a</a> intersects <a href="#SkIRect_IntersectsNoEmptyCheck_b">b</a>.
|
||||
Asserts if either <a href="#SkIRect_IntersectsNoEmptyCheck_a">a</a> or <a href="#SkIRect_IntersectsNoEmptyCheck_b">b</a> is empty, and if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined.
|
||||
Asserts if either <a href="#SkIRect_IntersectsNoEmptyCheck_a">a</a> or <a href="#SkIRect_IntersectsNoEmptyCheck_b">b</a> is empty, and if SK_DEBUG is defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
@ -6,7 +6,7 @@ SkImage Reference
|
||||
# <a name="SkImage"></a> Class SkImage
|
||||
<a href="#Image">Image</a> describes a two dimensional array of pixels to draw. The pixels may be
|
||||
unencoded in a <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>, encoded in a <a href="undocumented#Picture">Picture</a> or compressed data stream,
|
||||
or located in <a href="undocumented#GPU">GPU</a> memory as a <a href="undocumented#GPU_Texture">GPU Texture</a>.
|
||||
or located in GPU memory as a <a href="undocumented#GPU_Texture">GPU Texture</a>.
|
||||
|
||||
<a href="#Image">Image</a> cannot be modified after it is created. <a href="#Image">Image</a> may allocate additional
|
||||
storage as needed; for instance, an encoded <a href="#Image">Image</a> may decode when drawn.
|
||||
@ -16,7 +16,7 @@ or <a href="#SkImage_height">height</a> returns <a href="#Image">Image</a> equal
|
||||
|
||||
<a href="#Image">Image</a> may be created from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, <a href="SkSurface_Reference#Surface">Surface</a>, <a href="undocumented#Picture">Picture</a>, encoded streams,
|
||||
<a href="undocumented#GPU_Texture">GPU Texture</a>, <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data, or hardware buffer. Encoded streams supported
|
||||
include <a href="undocumented#BMP">BMP</a>, <a href="undocumented#GIF">GIF</a>, <a href="undocumented#HEIF">HEIF</a>, <a href="undocumented#ICO">ICO</a>, <a href="undocumented#JPEG">JPEG</a>, <a href="undocumented#PNG">PNG</a>, <a href="undocumented#WBMP">WBMP</a>, <a href="undocumented#WebP">WebP</a>. Supported encodings details
|
||||
include BMP, GIF, HEIF, ICO, JPEG, PNG, WBMP, WebP. Supported encodings details
|
||||
vary with platform.
|
||||
|
||||
# <a name="Raster_Image"></a> Raster Image
|
||||
@ -25,9 +25,9 @@ directly and in most cases written to, although edited pixels may not be drawn
|
||||
if <a href="#Image">Image</a> has been copied internally.
|
||||
|
||||
# <a name="Texture_Image"></a> Texture Image
|
||||
<a href="#Texture_Image">Texture Image</a> are located on <a href="undocumented#GPU">GPU</a> and pixels are not accessible. <a href="#Texture_Image">Texture Image</a>
|
||||
<a href="#Texture_Image">Texture Image</a> are located on GPU and pixels are not accessible. <a href="#Texture_Image">Texture Image</a>
|
||||
are allocated optimally for best performance. <a href="SkImage_Reference#Raster_Image">Raster Image</a> may
|
||||
be drawn to <a href="undocumented#GPU_Surface">GPU Surface</a>, but pixels are uploaded from <a href="undocumented#CPU">CPU</a> to <a href="undocumented#GPU">GPU</a> downgrading
|
||||
be drawn to <a href="undocumented#GPU_Surface">GPU Surface</a>, but pixels are uploaded from CPU to GPU downgrading
|
||||
performance.
|
||||
|
||||
# <a name="Lazy_Image"></a> Lazy Image
|
||||
@ -47,8 +47,8 @@ drawing.
|
||||
| description | function |
|
||||
| --- | --- |
|
||||
| <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | Creates <a href="undocumented#GPU_Texture">GPU Texture</a> from <a href="#Image">Image</a>. |
|
||||
| <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to <a href="undocumented#GPU">GPU</a>. |
|
||||
| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#Android">Android</a> hardware buffer. |
|
||||
| <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to GPU. |
|
||||
| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from Android hardware buffer. |
|
||||
| <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed internally. |
|
||||
| <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | Creates <a href="#Image">Image</a> from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, sharing or copying pixels. |
|
||||
| <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | |
|
||||
@ -69,7 +69,7 @@ drawing.
|
||||
| <a href="#SkImage_encodeToData">encodeToData</a> | Returns encoded <a href="#Image">Image</a> as <a href="undocumented#SkData">SkData</a>. |
|
||||
| <a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a> | |
|
||||
| <a href="#SkImage_getTexture">getTexture</a> | Deprecated. |
|
||||
| <a href="#SkImage_getTextureHandle">getTextureHandle</a> | Returns <a href="undocumented#GPU">GPU</a> reference to <a href="#Image">Image</a> as texture. |
|
||||
| <a href="#SkImage_getTextureHandle">getTextureHandle</a> | Returns GPU reference to <a href="#Image">Image</a> as texture. |
|
||||
| <a href="#SkImage_height">height</a> | Returns pixel row count. |
|
||||
| <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> | Returns if pixels represent a transparency mask. |
|
||||
| <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> | Returns if <a href="#Image">Image</a> is created as needed. |
|
||||
@ -180,7 +180,7 @@ Caller data passed to <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a>
|
||||
<a href="#SkImage_MakeFromRaster">MakeFromRaster</a> <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a>
|
||||
|
||||
Function called when <a href="#Image">Image</a> no longer shares pixels. <a href="#SkImage_ReleaseContext">ReleaseContext</a> is
|
||||
provided by caller when <a href="#Image">Image</a> is created, and may be nullptr.
|
||||
provided by caller when <a href="#Image">Image</a> is created, and may be nullptr.
|
||||
|
||||
### See Also
|
||||
|
||||
@ -250,7 +250,7 @@ after reset: 1
|
||||
static sk_sp<SkImage> MakeFromBitmap(const SkBitmap& bitmap)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>, sharing or copying <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> pixels. If the <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>, sharing or copying <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> pixels. If the <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>
|
||||
is marked immutable, and its pixel memory is shareable, it may be shared
|
||||
instead of copied.
|
||||
|
||||
@ -334,7 +334,7 @@ created <a href="#Image">Image</a>, or nullptr
|
||||
static sk_sp<SkImage> MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data.
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data.
|
||||
<a href="#SkImage_MakeFromEncoded_subset">subset</a> allows selecting a portion of the full image. Pass nullptr to select the entire image;
|
||||
otherwise, <a href="#SkImage_MakeFromEncoded_subset">subset</a> must be contained by image <a href="#SkImage_bounds">bounds</a>.
|
||||
|
||||
@ -380,7 +380,7 @@ Deprecated.
|
||||
<table> <tr> <td><a name="SkImage_MakeFromTexture_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td>
|
||||
@ -416,7 +416,7 @@ Deprecated.
|
||||
<table> <tr> <td><a name="SkImage_MakeFromTexture_2_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_2_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td>
|
||||
@ -451,14 +451,14 @@ Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU T
|
||||
managing the lifetime of <a href="undocumented#GPU_Texture">GPU Texture</a>.
|
||||
|
||||
<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_3_backendTexture">backendTexture</a> is recognized and supported.
|
||||
Recognized formats vary by <a href="undocumented#GPU">GPU</a> back-end.
|
||||
Recognized formats vary by GPU back-end.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkImage_MakeFromTexture_3_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_3_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_3_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_3_colorType"> <code><strong>colorType </strong></code> </a></td> <td>
|
||||
@ -480,7 +480,7 @@ created <a href="#Image">Image</a>, or nullptr
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="2faa98d6a1d578010326af17ee7e4d2a" gpu="true"><div>A back-end texture has been created and uploaded to the <a href="undocumented#GPU">GPU</a> outside of this example.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="2faa98d6a1d578010326af17ee7e4d2a" gpu="true"><div>A back-end texture has been created and uploaded to the GPU outside of this example.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -501,14 +501,14 @@ valid and unchanged until <a href="#SkImage_MakeFromTexture_4_textureReleaseProc
|
||||
passed <a href="#SkImage_MakeFromTexture_4_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to texture.
|
||||
|
||||
<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_4_backendTexture">backendTexture</a> is recognized and supported.
|
||||
Recognized formats vary by <a href="undocumented#GPU">GPU</a> back-end.
|
||||
Recognized formats vary by GPU back-end.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkImage_MakeFromTexture_4_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_4_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_4_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromTexture_4_colorType"> <code><strong>colorType </strong></code> </a></td> <td>
|
||||
@ -550,10 +550,10 @@ static sk_sp<SkImage> MakeCrossContextFromEncoded(GrContext* context, sk_s
|
||||
bool buildMips, SkColorSpace* dstColorSpace)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. <a href="#Image">Image</a> is uploaded to <a href="undocumented#GPU">GPU</a> back-end using <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a>.
|
||||
Creates <a href="#Image">Image</a> from encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a>.
|
||||
|
||||
Created <a href="#Image">Image</a> is available to other <a href="undocumented#GPU">GPU</a> contexts, and is available across thread
|
||||
boundaries. All contexts must be in the same <a href="undocumented#GPU_Share_Group">GPU Share Group</a>, or otherwise
|
||||
Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread
|
||||
boundaries. All contexts must be in the same GPU_Share_Group, or otherwise
|
||||
share resources.
|
||||
|
||||
When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> releases texture memory
|
||||
@ -563,7 +563,7 @@ asynchronously.
|
||||
<a href="#SkImage_MakeCrossContextFromEncoded_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>.
|
||||
|
||||
<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a>
|
||||
supports moving resources. Recognized formats vary by platform and <a href="undocumented#GPU">GPU</a> back-end.
|
||||
supports moving resources. Recognized formats vary by platform and GPU back-end.
|
||||
|
||||
<a href="#Image">Image</a> is returned using <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> is nullptr or does not support
|
||||
moving resources between contexts.
|
||||
@ -577,7 +577,7 @@ moving resources between contexts.
|
||||
</tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td>
|
||||
create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td>
|
||||
range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a></td>
|
||||
range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -603,10 +603,10 @@ static sk_sp<SkImage> MakeCrossContextFromPixmap(GrContext* context, const
|
||||
bool buildMips, SkColorSpace* dstColorSpace)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>. <a href="#Image">Image</a> is uploaded to <a href="undocumented#GPU">GPU</a> back-end using <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a>.
|
||||
Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a>.
|
||||
|
||||
Created <a href="#Image">Image</a> is available to other <a href="undocumented#GPU">GPU</a> contexts, and is available across thread
|
||||
boundaries. All contexts must be in the same <a href="undocumented#GPU_Share_Group">GPU Share Group</a>, or otherwise
|
||||
Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread
|
||||
boundaries. All contexts must be in the same GPU_Share_Group, or otherwise
|
||||
share resources.
|
||||
|
||||
When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> releases texture memory
|
||||
@ -615,11 +615,11 @@ asynchronously.
|
||||
<a href="undocumented#Texture">Texture</a> created from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> is uploaded to match <a href="SkSurface_Reference#Surface">Surface</a> created with
|
||||
<a href="#SkImage_MakeCrossContextFromPixmap_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>.<a href="#SkImage_colorSpace">colorSpace</a>.
|
||||
|
||||
<a href="#Image">Image</a> is returned referring to <a href="undocumented#GPU">GPU</a> back-end if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> is not nullptr,
|
||||
<a href="#Image">Image</a> is returned referring to GPU back-end if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> is not nullptr,
|
||||
format of data is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> supports moving
|
||||
resources between contexts. Otherwise, <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> pixel data is copied and <a href="#Image">Image</a>
|
||||
as returned in raster format if possible; nullptr may be returned.
|
||||
Recognized <a href="undocumented#GPU">GPU</a> formats vary by platform and <a href="undocumented#GPU">GPU</a> back-end.
|
||||
Recognized GPU formats vary by platform and GPU back-end.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -630,7 +630,7 @@ Recognized <a href="undocumented#GPU">GPU</a> formats vary by platform and <a hr
|
||||
</tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td>
|
||||
create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td>
|
||||
range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a></td>
|
||||
range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -666,7 +666,7 @@ Deprecated.
|
||||
<table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td>
|
||||
@ -699,14 +699,14 @@ Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromAdoptedTexture
|
||||
returned <a href="#Image">Image</a> are managed internally, and are released when no longer needed.
|
||||
|
||||
<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> is recognized and supported.
|
||||
Recognized formats vary by <a href="undocumented#GPU">GPU</a> back-end.
|
||||
Recognized formats vary by GPU back-end.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_colorType"> <code><strong>colorType </strong></code> </a></td> <td>
|
||||
@ -747,11 +747,11 @@ static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVCol
|
||||
sk_sp<SkColorSpace> colorSpace = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on <a href="undocumented#GPU">GPU</a>.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a> contain pixels for <a href="undocumented#YUV">YUV</a> planes of <a href="#Image">Image</a>.
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a> conain <a href="#SkImage_dimensions">dimensions</a> for each pixel plane. Dimensions must be greater than
|
||||
zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the <a href="#SkImage_dimensions">dimensions</a>
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how <a href="undocumented#YUV">YUV</a> colors convert to <a href="undocumented#RGB">RGB</a> colors.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -761,9 +761,9 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
|
||||
one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
|
||||
<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td>
|
||||
array of <a href="undocumented#YUV">YUV</a> textures on <a href="undocumented#GPU">GPU</a></td>
|
||||
array of YUV textures on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of <a href="undocumented#YUV">YUV</a> textures</td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of YUV textures</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
@ -789,11 +789,11 @@ static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVCol
|
||||
sk_sp<SkColorSpace> colorSpace = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on <a href="undocumented#GPU">GPU</a>.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a> contain pixels for <a href="undocumented#YUV">YUV</a> planes of <a href="#Image">Image</a>.
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a> conain <a href="#SkImage_dimensions">dimensions</a> for each pixel plane. Dimensions must be greater than
|
||||
zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the <a href="#SkImage_dimensions">dimensions</a>
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how <a href="undocumented#YUV">YUV</a> colors convert to <a href="undocumented#RGB">RGB</a> colors.
|
||||
<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -803,9 +803,9 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
|
||||
one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
|
||||
<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td>
|
||||
array of <a href="undocumented#YUV">YUV</a> textures on <a href="undocumented#GPU">GPU</a></td>
|
||||
array of YUV textures on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of <a href="undocumented#YUV">YUV</a> textures</td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of YUV textures</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
@ -834,13 +834,13 @@ static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVCo
|
||||
sk_sp<SkColorSpace> colorSpace = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on <a href="undocumented#GPU">GPU</a>.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for <a href="undocumented#YUV_Component_Y">YUV Component Y</a> plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for <a href="undocumented#YUV_Component_U">YUV Component U</a> plane,
|
||||
followed by pixels for <a href="undocumented#YUV_Component_V">YUV Component V</a> plane.
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane,
|
||||
followed by pixels for YUV_Component_V plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a> conain <a href="#SkImage_dimensions">dimensions</a> for each pixel plane. Dimensions must be greater than
|
||||
zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the <a href="#SkImage_dimensions">dimensions</a>
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how <a href="undocumented#YUV">YUV</a> colors convert to <a href="undocumented#RGB">RGB</a> colors.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -850,9 +850,9 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
|
||||
one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
|
||||
<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td>
|
||||
array of <a href="undocumented#YUV">YUV</a> textures on <a href="undocumented#GPU">GPU</a></td>
|
||||
array of YUV textures on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of <a href="undocumented#YUV">YUV</a> textures</td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of YUV textures</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
@ -878,13 +878,13 @@ static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVCo
|
||||
sk_sp<SkColorSpace> colorSpace = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on <a href="undocumented#GPU">GPU</a>.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for <a href="undocumented#YUV_Component_Y">YUV Component Y</a> plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for <a href="undocumented#YUV_Component_U">YUV Component U</a> plane,
|
||||
followed by pixels for <a href="undocumented#YUV_Component_V">YUV Component V</a> plane.
|
||||
Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane,
|
||||
followed by pixels for YUV_Component_V plane.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a> conain <a href="#SkImage_dimensions">dimensions</a> for each pixel plane. Dimensions must be greater than
|
||||
zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the <a href="#SkImage_dimensions">dimensions</a>
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how <a href="undocumented#YUV">YUV</a> colors convert to <a href="undocumented#RGB">RGB</a> colors.
|
||||
<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -894,9 +894,9 @@ zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has
|
||||
one of: <a href="undocumented#YUV_ColorSpace">kJPEG SkYUVColorSpace</a>, <a href="undocumented#YUV_ColorSpace">kRec601 SkYUVColorSpace</a>,
|
||||
<a href="undocumented#YUV_ColorSpace">kRec709 SkYUVColorSpace</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td>
|
||||
array of <a href="undocumented#YUV">YUV</a> textures on <a href="undocumented#GPU">GPU</a></td>
|
||||
array of YUV textures on GPU</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of <a href="undocumented#YUV">YUV</a> textures</td>
|
||||
<a href="#SkImage_dimensions">dimensions</a> of YUV textures</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
@ -952,7 +952,7 @@ Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromPicture_pictur
|
||||
<a href="#Image">Image</a> draws <a href="#SkImage_MakeFromPicture_picture">picture</a> with <a href="#SkImage_MakeFromPicture_matrix">matrix</a> and <a href="#SkImage_MakeFromPicture_paint">paint</a>, set to <a href="#SkImage_MakeFromPicture_bitDepth">bitDepth</a> and <a href="#SkImage_colorSpace">colorSpace</a>.
|
||||
|
||||
If <a href="#SkImage_MakeFromPicture_matrix">matrix</a> is nullptr, draws with identity <a href="SkMatrix_Reference#Matrix">Matrix</a>. If <a href="#SkImage_MakeFromPicture_paint">paint</a> is nullptr, draws
|
||||
with default <a href="SkPaint_Reference#Paint">Paint</a>. <a href="#SkImage_colorSpace">colorSpace</a> may be nullptr.
|
||||
with default <a href="SkPaint_Reference#Paint">Paint</a>. <a href="#SkImage_colorSpace">colorSpace</a> may be nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -994,15 +994,15 @@ static sk_sp<SkImage> MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuf
|
||||
sk_sp<SkColorSpace> colorSpace = nullptr)
|
||||
</pre>
|
||||
|
||||
Creates <a href="#Image">Image</a> from <a href="undocumented#Android">Android</a> hardware buffer.
|
||||
Creates <a href="#Image">Image</a> from Android hardware buffer.
|
||||
Returned <a href="#Image">Image</a> takes a reference on the buffer.
|
||||
|
||||
Only available on <a href="undocumented#Android">Android</a>, when __<a href="undocumented#ANDROID_API__">ANDROID API </a> is defined to be 26 or greater.
|
||||
Only available on Android, when __ANDROID_API__ is defined to be 26 or greater.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_hardwareBuffer"> <code><strong>hardwareBuffer </strong></code> </a></td> <td>
|
||||
<a href="undocumented#AHardwareBuffer">AHardwareBuffer</a> <a href="undocumented#Android">Android</a> hardware buffer</td>
|
||||
AHardwareBuffer Android hardware buffer</td>
|
||||
</tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>, <a href="undocumented#SkAlphaType">kOpaque SkAlphaType</a>,
|
||||
<a href="undocumented#SkAlphaType">kPremul SkAlphaType</a>, <a href="undocumented#SkAlphaType">kUnpremul SkAlphaType</a></td>
|
||||
@ -1436,7 +1436,7 @@ is nullptr, tests if <a href="#Image">Image</a> draws on <a href="undocumented#R
|
||||
draws on <a href="undocumented#GPU_Surface">GPU Surface</a> associated with <a href="#SkImage_isValid_context">context</a>.
|
||||
|
||||
<a href="undocumented#Texture">Texture</a>-backed images may become invalid if their underlying <a href="undocumented#GrContext">GrContext</a> is abandoned. Some
|
||||
generator-backed images may be invalid for <a href="undocumented#CPU">CPU</a> and/or <a href="undocumented#GPU">GPU</a>.
|
||||
generator-backed images may be invalid for CPU and/or GPU.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1466,8 +1466,8 @@ incomplete
|
||||
GrBackendObject getTextureHandle(bool flushPendingGrContextIO, GrSurfaceOrigin* origin = nullptr) const
|
||||
</pre>
|
||||
|
||||
Retrieves the back-end <a href="undocumented#API">API</a> handle of texture. If <a href="#SkImage_getTextureHandle_flushPendingGrContextIO">flushPendingGrContextIO</a> is true,
|
||||
complete deferred <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a> operations.
|
||||
Retrieves the back-end API handle of texture. If <a href="#SkImage_getTextureHandle_flushPendingGrContextIO">flushPendingGrContextIO</a> is true,
|
||||
complete deferred I/O operations.
|
||||
|
||||
If <a href="#SkImage_getTextureHandle_origin">origin</a> in not nullptr, copies location of content drawn into <a href="#Image">Image</a>.
|
||||
|
||||
@ -1483,7 +1483,7 @@ storage for one of: <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOri
|
||||
|
||||
### Return Value
|
||||
|
||||
back-end <a href="undocumented#API">API</a> texture handle
|
||||
back-end API texture handle
|
||||
|
||||
### Example
|
||||
|
||||
@ -1504,7 +1504,7 @@ enum <a href="#SkImage_CachingHint">CachingHint</a> {
|
||||
};</pre>
|
||||
|
||||
Hints to image calls where the system might cache computed intermediates (e.g. the results
|
||||
of decoding or a read-back from the <a href="undocumented#GPU">GPU</a>. Passing <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a> signals that the system's default
|
||||
of decoding or a read-back from the GPU. Passing <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a> signals that the system's default
|
||||
behavior is fine. Passing <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a> signals that caching should be avoided.
|
||||
|
||||
### Constants
|
||||
@ -1693,9 +1693,9 @@ sk_sp<SkData> encodeToData() const
|
||||
|
||||
Encodes <a href="#Image">Image</a> and returns result as <a href="undocumented#SkData">SkData</a>. Will reuse existing encoded data
|
||||
if present, as returned by <a href="#SkImage_refEncodedData">refEncodedData</a>. If encoded data is missing or invalid,
|
||||
<a href="#Image">Image</a> is encoded as <a href="undocumented#PNG">PNG</a>.
|
||||
<a href="#Image">Image</a> is encoded as PNG.
|
||||
|
||||
Returns nullptr if existing encoded data is missing or invalid and
|
||||
Returns nullptr if existing encoded data is missing or invalid and
|
||||
encoding fails.
|
||||
|
||||
### Return Value
|
||||
@ -1719,7 +1719,7 @@ incomplete
|
||||
sk_sp<SkData> refEncodedData() const
|
||||
</pre>
|
||||
|
||||
If the image already has its contents in encoded form (e.g. <a href="undocumented#PNG">PNG</a> or <a href="undocumented#JPEG">JPEG</a>), return that
|
||||
If the image already has its contents in encoded form (e.g. PNG or JPEG), return that
|
||||
as <a href="undocumented#SkData">SkData</a>. If the image does not already has its contents in encoded form, return nullptr.
|
||||
|
||||
To force the image to return its contents as encoded data, call <a href="#SkImage_encodeToData">encodeToData</a>.
|
||||
@ -2021,7 +2021,7 @@ If the method determines that mip-maps are needed, this helps determine the corr
|
||||
for building them (gamma-correct or not).
|
||||
|
||||
<a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> is the color type of the surface where this texture will ultimately be used.
|
||||
This determines the format with which the image will be uploaded to the <a href="undocumented#GPU">GPU</a>. If <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a>
|
||||
This determines the format with which the image will be uploaded to the GPU. If <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a>
|
||||
does not support color spaces (low bit depth types such as <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>),
|
||||
then <a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> must be null.
|
||||
|
||||
@ -2107,13 +2107,13 @@ static bool MakeBackendTextureFromSkImage(GrContext* context, sk_sp<SkImage&g
|
||||
Creates a <a href="undocumented#GrBackendTexture">GrBackendTexture</a> from the provided <a href="#SkImage">SkImage</a>. Returns true on success. The
|
||||
<a href="undocumented#GrBackendTexture">GrBackendTexture</a> and <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> are populated on success. It is the callers
|
||||
responsibility to call the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> once they have deleted the texture.
|
||||
Note that the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> allows <a href="undocumented#Skia">Skia</a> to clean up auxiliary data related
|
||||
Note that the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> allows Skia to clean up auxiliary data related
|
||||
to the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>, and is not a substitute for the client deleting the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>
|
||||
themselves.
|
||||
|
||||
If <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is both texture backed and singly referenced; that is, its only
|
||||
reference was transferred using std::move(): <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is returned in <a href="#SkImage_MakeBackendTextureFromSkImage_backendTexture">backendTexture</a>
|
||||
without conversion or making a copy.
|
||||
without conversion or making a copy.
|
||||
|
||||
If the <a href="#SkImage">SkImage</a> is not texture backed, this function will generate a texture with the <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a>'s
|
||||
contents and return that.
|
||||
@ -2247,7 +2247,7 @@ Otherwise, returns nullptr.
|
||||
This will leave the image as is if it already in <a href="#SkImage_makeColorSpace_target">target</a> color space.
|
||||
Otherwise, it will convert the pixels from <a href="#Image">Image</a> color space to <a href="#SkImage_makeColorSpace_target">target</a>
|
||||
color space. If this-><a href="#SkImage_colorSpace">colorSpace</a> is nullptr, <a href="#Image">Image</a> color space will be
|
||||
treated as <a href="undocumented#sRGB">sRGB</a>.
|
||||
treated as sRGB.
|
||||
|
||||
If <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> is <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>: converts <a href="#Image">Image</a>
|
||||
pixels to a linear space before converting to match destination <a href="#Color_Type">Color Type</a>
|
||||
|
@ -13,7 +13,7 @@ so it must be explicitly initialized. <a href="#SkMatrix_setIdentity">setIdentit
|
||||
so it has no effect. <a href="#SkMatrix_setTranslate">setTranslate</a>, <a href="#SkMatrix_setScale">setScale</a>, <a href="#SkMatrix_setSkew">setSkew</a>, <a href="#SkMatrix_setRotate">setRotate</a>, <a href="#SkMatrix_set9">set9</a> and <a href="#SkMatrix_setAll">setAll</a>
|
||||
initializes all <a href="#Matrix">Matrix</a> elements with the corresponding mapping.
|
||||
|
||||
<a href="#Matrix">Matrix</a> includes a hidden variable that classifies the type of matrix to
|
||||
<a href="#Matrix">Matrix</a> includes a hidden variable that classifies the type of matrix to
|
||||
improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a href="#SkMatrix_getType">getType</a> is called first.
|
||||
|
||||
# <a name="Overview"></a> Overview
|
||||
@ -37,7 +37,7 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h
|
||||
| function | description |
|
||||
| --- | --- |
|
||||
| <a href="#SkMatrix_Concat">Concat</a> | Returns the concatenation of <a href="#Matrix">Matrix</a> pair. |
|
||||
| <a href="undocumented#I">I</a> | Returns a reference to a const identity <a href="#Matrix">Matrix</a>. |
|
||||
| I | Returns a reference to a const identity <a href="#Matrix">Matrix</a>. |
|
||||
| <a href="#SkMatrix_InvalidMatrix">InvalidMatrix</a> | Returns a reference to a const invalid <a href="#Matrix">Matrix</a>. |
|
||||
| <a href="#SkMatrix_MakeAll">MakeAll</a> | Constructs all nine values. |
|
||||
| <a href="#SkMatrix_MakeRectToRect">MakeRectToRect</a> | Constructs from source <a href="SkRect_Reference#Rect">Rect</a> to destination <a href="SkRect_Reference#Rect">Rect</a>. |
|
||||
@ -66,7 +66,7 @@ improve performance. <a href="#Matrix">Matrix</a> is not thread safe unless <a h
|
||||
| <a href="#SkMatrix_getType">getType</a> | Returns transform complexity. |
|
||||
| <a href="#SkMatrix_hasPerspective">hasPerspective</a> | Returns if transform includes perspective. |
|
||||
| <a href="#SkMatrix_invert">invert</a> | Returns inverse, if possible. |
|
||||
| <a href="#SkMatrix_isFinite">isFinite</a> | Returns if all <a href="#Matrix">Matrix</a> values are not infinity, <a href="undocumented#NaN">NaN</a>. |
|
||||
| <a href="#SkMatrix_isFinite">isFinite</a> | Returns if all <a href="#Matrix">Matrix</a> values are not infinity, NaN. |
|
||||
| <a href="#SkMatrix_isFixedStepInX">isFixedStepInX</a> | Returns if transformation supports fixed step in x. |
|
||||
| <a href="#SkMatrix_isIdentity">isIdentity</a> | Returns if matrix equals the identity <a href="#Matrix">Matrix</a> . |
|
||||
| <a href="#SkMatrix_isScaleTranslate">isScaleTranslate</a> | Returns if transform is limited to scale and translate. |
|
||||
@ -609,7 +609,7 @@ Returns true if the matrix contains perspective elements. <a href="#Matrix">Matr
|
||||
| -- -- -- |
|
||||
| perspective-x perspective-y perspective-scale |</pre>
|
||||
|
||||
where perspective-x or perspective-y is non-zero, or perspective-scale is
|
||||
where perspective-x or perspective-y is non-zero, or perspective-scale is
|
||||
not one. All other elements may have any value.
|
||||
|
||||
### Return Value
|
||||
@ -638,9 +638,9 @@ uniform scale.
|
||||
Returns false if <a href="#Matrix">Matrix</a> contains different scales, skewing, perspective, or
|
||||
degenerate forms that collapse to a line or point.
|
||||
|
||||
Describes that the <a href="#Matrix">Matrix</a> makes rendering with and without the matrix are
|
||||
Describes that the <a href="#Matrix">Matrix</a> makes rendering with and without the matrix are
|
||||
visually alike; a transformed circle remains a circle. Mathematically, this is
|
||||
referred to as similarity of a <a href="undocumented#Euclidean_Space">Euclidean Space</a>, or a similarity transformation.
|
||||
referred to as similarity of a Euclidean_Space, or a similarity transformation.
|
||||
|
||||
Preserves right angles, keeping the arms of the angle equal lengths.
|
||||
|
||||
@ -675,7 +675,7 @@ bool preservesRightAngles(SkScalar tol = SK_ScalarNearlyZero) const
|
||||
|
||||
Returns true if <a href="#Matrix">Matrix</a> contains only translation, rotation, reflection, and
|
||||
scale. Scale may differ along rotated axes.
|
||||
Returns false if <a href="#Matrix">Matrix</a> skewing, perspective, or degenerate forms that collapse
|
||||
Returns false if <a href="#Matrix">Matrix</a> skewing, perspective, or degenerate forms that collapse
|
||||
to a line or point.
|
||||
|
||||
Preserves right angles, but not requiring that the arms of the angle
|
||||
@ -777,7 +777,7 @@ enum {
|
||||
};</pre>
|
||||
|
||||
Affine arrays are in column major order to match the matrix used by
|
||||
<a href="undocumented#PDF">PDF</a> and <a href="undocumented#XPS">XPS</a>.
|
||||
PDF and XPS.
|
||||
|
||||
### Constants
|
||||
|
||||
@ -815,7 +815,7 @@ Affine arrays are in column major order to match the matrix used by
|
||||
SkScalar operator[](int index) _const
|
||||
</pre>
|
||||
|
||||
Returns one matrix value. Asserts if <a href="#SkMatrix_array_operator_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is
|
||||
Returns one matrix value. Asserts if <a href="#SkMatrix_array_operator_index">index</a> is out of range and SK_DEBUG is
|
||||
defined.
|
||||
|
||||
### Parameters
|
||||
@ -856,7 +856,7 @@ matrix[SkMatrix::kMScaleY] == 24
|
||||
SkScalar get(int index) const
|
||||
</pre>
|
||||
|
||||
Returns one matrix value. Asserts if <a href="#SkMatrix_get_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is
|
||||
Returns one matrix value. Asserts if <a href="#SkMatrix_get_index">index</a> is out of range and SK_DEBUG is
|
||||
defined.
|
||||
|
||||
### Parameters
|
||||
@ -1091,7 +1091,7 @@ matrix.getTranslateY() == 24
|
||||
SkScalar getPerspX() const
|
||||
</pre>
|
||||
|
||||
Returns factor scaling input x relative to input y.
|
||||
Returns factor scaling input x relative to input y.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1114,7 +1114,7 @@ input x perspective factor
|
||||
SkScalar getPerspY() const
|
||||
</pre>
|
||||
|
||||
Returns factor scaling input y relative to input x.
|
||||
Returns factor scaling input y relative to input x.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1137,7 +1137,7 @@ input y perspective factor
|
||||
SkScalar& operator[](int index)
|
||||
</pre>
|
||||
|
||||
Returns writable <a href="#Matrix">Matrix</a> value. Asserts if <a href="#SkMatrix_array1_operator_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is
|
||||
Returns writable <a href="#Matrix">Matrix</a> value. Asserts if <a href="#SkMatrix_array1_operator_index">index</a> is out of range and SK_DEBUG is
|
||||
defined. Clears internal cache anticipating that caller will change <a href="#Matrix">Matrix</a> value.
|
||||
|
||||
Next call to read <a href="#Matrix">Matrix</a> state may recompute cache; subsequent writes to <a href="#Matrix">Matrix</a>
|
||||
@ -1183,7 +1183,7 @@ after dirty cache: x = 66
|
||||
void set(int index, SkScalar value)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Matrix">Matrix</a> <a href="#SkMatrix_set_value">value</a>. Asserts if <a href="#SkMatrix_set_index">index</a> is out of range and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is
|
||||
Sets <a href="#Matrix">Matrix</a> <a href="#SkMatrix_set_value">value</a>. Asserts if <a href="#SkMatrix_set_index">index</a> is out of range and SK_DEBUG is
|
||||
defined. Safer than operator[]; internal cache is always maintained.
|
||||
|
||||
### Parameters
|
||||
@ -1223,7 +1223,7 @@ operator[] <a href="#SkMatrix_get">get</a>
|
||||
void setScaleX(SkScalar v)
|
||||
</pre>
|
||||
|
||||
Sets horizontal scale factor.
|
||||
Sets horizontal scale factor.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1249,7 +1249,7 @@ horizontal scale factor to store</td>
|
||||
void setScaleY(SkScalar v)
|
||||
</pre>
|
||||
|
||||
Sets vertical scale factor.
|
||||
Sets vertical scale factor.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1275,7 +1275,7 @@ vertical scale factor to store</td>
|
||||
void setSkewY(SkScalar v)
|
||||
</pre>
|
||||
|
||||
Sets vertical skew factor.
|
||||
Sets vertical skew factor.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1301,7 +1301,7 @@ vertical skew factor to store</td>
|
||||
void setSkewX(SkScalar v)
|
||||
</pre>
|
||||
|
||||
Sets horizontal skew factor.
|
||||
Sets horizontal skew factor.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1794,7 +1794,7 @@ angle of axes relative to upright axes</td>
|
||||
void setSinCos(SkScalar sinValue, SkScalar cosValue, SkScalar px, SkScalar py)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>, about a pivot point at (<a href="#SkMatrix_setSinCos_px">px</a>, <a href="#SkMatrix_setSinCos_py">py</a>).
|
||||
Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>, about a pivot point at (<a href="#SkMatrix_setSinCos_px">px</a>, <a href="#SkMatrix_setSinCos_py">py</a>).
|
||||
The pivot point is unchanged when mapped with <a href="#Matrix">Matrix</a>.
|
||||
|
||||
<a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1).
|
||||
@ -1827,7 +1827,7 @@ pivot y</td>
|
||||
void setSinCos(SkScalar sinValue, SkScalar cosValue)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>, about a pivot point at (0, 0).
|
||||
Sets <a href="#Matrix">Matrix</a> to rotate by <a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a> and <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>, about a pivot point at (0, 0).
|
||||
|
||||
<a href="SkPoint_Reference#Vector">Vector</a> (<a href="#SkMatrix_setSinCos_2_sinValue">sinValue</a>, <a href="#SkMatrix_setSinCos_2_cosValue">cosValue</a>) describes the angle of rotation relative to (0, 1).
|
||||
<a href="SkPoint_Reference#Vector">Vector</a> length specifies scale.
|
||||
@ -2974,7 +2974,7 @@ If <a href="#SkMatrix_setPolyToPoly_count">count</a> is zero, sets <a href="#Mat
|
||||
If <a href="#SkMatrix_setPolyToPoly_count">count</a> is one, sets <a href="#Matrix">Matrix</a> to translate and returns true.
|
||||
If <a href="#SkMatrix_setPolyToPoly_count">count</a> is two or more, sets <a href="#Matrix">Matrix</a> to map <a href="#Point">Points</a> if possible; returns false
|
||||
if <a href="#Matrix">Matrix</a> cannot be constructed. If <a href="#SkMatrix_setPolyToPoly_count">count</a> is four, <a href="#Matrix">Matrix</a> may include
|
||||
perspective.
|
||||
perspective.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3048,7 +3048,7 @@ Sets <a href="#SkMatrix_SetAffineIdentity_affine">affine</a> to:
|
||||
| 1 0 0 |
|
||||
| 0 1 0 |</pre>
|
||||
|
||||
Affine 3x2 matrices in column major order are used by <a href="undocumented#OpenGL">OpenGL</a> and <a href="undocumented#XPS">XPS</a>.
|
||||
Affine 3x2 matrices in column major order are used by OpenGL and XPS.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3737,7 +3737,7 @@ void mapRectToQuad(SkPoint dst[4], const SkRect& rect) const
|
||||
Maps four corners of <a href="#SkMatrix_mapRectToQuad_rect">rect</a> to <a href="#SkMatrix_mapRectToQuad_dst">dst</a>. <a href="#Point">Points</a> are mapped by multiplying each
|
||||
<a href="#SkMatrix_mapRectToQuad_rect">rect</a> corner by <a href="#Matrix">Matrix</a>. <a href="#SkMatrix_mapRectToQuad_rect">rect</a> corner is processed in this order:
|
||||
(<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fTop), (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fRight, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fTop), (<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fRight, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom),
|
||||
(<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom).
|
||||
(<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft, <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom).
|
||||
|
||||
<a href="#SkMatrix_mapRectToQuad_rect">rect</a> may be empty: <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fLeft may be greater than or equal to <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fRight;
|
||||
<a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fTop may be greater than or equal to <a href="#SkMatrix_mapRectToQuad_rect">rect</a>.fBottom.
|
||||
@ -3785,7 +3785,7 @@ void mapRectScaleTranslate(SkRect* dst, const SkRect& src) const
|
||||
</pre>
|
||||
|
||||
Sets <a href="#SkMatrix_mapRectScaleTranslate_dst">dst</a> to bounds of <a href="#SkMatrix_mapRectScaleTranslate_src">src</a> corners mapped by <a href="#Matrix">Matrix</a>. If matrix contains
|
||||
elements other than scale or translate: asserts if <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined;
|
||||
elements other than scale or translate: asserts if SK_DEBUG is defined;
|
||||
otherwise, results are undefined.
|
||||
|
||||
### Parameters
|
||||
@ -3935,9 +3935,9 @@ Returns true if <a href="#Matrix">Matrix</a> equals <a href="#SkMatrix_cheapEqua
|
||||
Returns false when the sign of zero values is the different; when one
|
||||
matrix has positive zero value and the other has negative zero value.
|
||||
|
||||
Returns true even when both <a href="#Matrix">Matrices</a> contain <a href="undocumented#NaN">NaN</a>.
|
||||
Returns true even when both <a href="#Matrix">Matrices</a> contain NaN.
|
||||
|
||||
<a href="undocumented#NaN">NaN</a> never equals any value, including itself. To improve performance, <a href="undocumented#NaN">NaN</a> values
|
||||
NaN never equals any value, including itself. To improve performance, NaN values
|
||||
are treated as bit patterns that are equal if their bit patterns are equal.
|
||||
|
||||
### Parameters
|
||||
@ -3981,7 +3981,7 @@ bool operator==(const SkMatrix& a, const SkMatrix& b)
|
||||
|
||||
Compares <a href="#SkMatrix_equal_operator_a">a</a> and <a href="#SkMatrix_equal_operator_b">b</a>; returns true if <a href="#SkMatrix_equal_operator_a">a</a> and <a href="#SkMatrix_equal_operator_b">b</a> are numerically equal. Returns true
|
||||
even if sign of zero values are different. Returns false if either <a href="#Matrix">Matrix</a>
|
||||
contains <a href="undocumented#NaN">NaN</a>, even if the other <a href="#Matrix">Matrix</a> also contains <a href="undocumented#NaN">NaN</a>.
|
||||
contains NaN, even if the other <a href="#Matrix">Matrix</a> also contains NaN.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4023,7 +4023,7 @@ bool operator!=(const SkMatrix& a, const SkMatrix& b)
|
||||
|
||||
Compares <a href="#SkMatrix_notequal_operator_a">a</a> and <a href="#SkMatrix_notequal_operator_b">b</a>; returns true if <a href="#SkMatrix_notequal_operator_a">a</a> and <a href="#SkMatrix_notequal_operator_b">b</a> are not numerically equal. Returns false
|
||||
even if sign of zero values are different. Returns true if either <a href="#Matrix">Matrix</a>
|
||||
contains <a href="undocumented#NaN">NaN</a>, even if the other <a href="#Matrix">Matrix</a> also contains <a href="undocumented#NaN">NaN</a>.
|
||||
contains NaN, even if the other <a href="#Matrix">Matrix</a> also contains NaN.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4190,7 +4190,7 @@ matrix.getMaxScale() 42
|
||||
bool SK_WARN_UNUSED_RESULT getMinMaxScales(SkScalar scaleFactors[2]) const
|
||||
</pre>
|
||||
|
||||
Sets <a href="#SkMatrix_getMinMaxScales_scaleFactors">scaleFactors</a>[0] to the minimum scaling factor, and <a href="#SkMatrix_getMinMaxScales_scaleFactors">scaleFactors</a>[1] to the
|
||||
Sets <a href="#SkMatrix_getMinMaxScales_scaleFactors">scaleFactors</a>[0] to the minimum scaling factor, and <a href="#SkMatrix_getMinMaxScales_scaleFactors">scaleFactors</a>[1] to the
|
||||
maximum scaling factor. Scaling factors are computed by decomposing
|
||||
the <a href="#Matrix">Matrix</a> scaling and skewing elements.
|
||||
|
||||
@ -4242,7 +4242,7 @@ to determine if <a href="#Matrix">Matrix</a> can be decomposed without computing
|
||||
|
||||
Returns true if <a href="#SkMatrix_decomposeScale_scale">scale</a> components are found. <a href="#SkMatrix_decomposeScale_scale">scale</a> and <a href="#SkMatrix_decomposeScale_remaining">remaining</a> are
|
||||
unchanged if <a href="#Matrix">Matrix</a> contains perspective; <a href="#SkMatrix_decomposeScale_scale">scale</a> factors are not finite, or
|
||||
are nearly zero.
|
||||
are nearly zero.
|
||||
|
||||
On success<a href="#Matrix">Matrix</a> = <a href="#SkMatrix_decomposeScale_scale">scale</a> * Remaining
|
||||
|
||||
@ -4408,7 +4408,7 @@ Multiplying the matrix by its inverse turns into an identity matrix.</div></fidd
|
||||
void dirtyMatrixTypeCache()
|
||||
</pre>
|
||||
|
||||
Sets internal cache to unknown state. Use to force update after repeated
|
||||
Sets internal cache to unknown state. Use to force update after repeated
|
||||
modifications to <a href="#Matrix">Matrix</a> element reference returned by <a href="#SkMatrix_array1_operator">operator[](int index)</a>.
|
||||
|
||||
### Example
|
||||
@ -4485,7 +4485,7 @@ bool isFinite() const
|
||||
</pre>
|
||||
|
||||
Returns true if all elements of the matrix are finite. Returns false if any
|
||||
element is infinity, or <a href="undocumented#NaN">NaN</a>.
|
||||
element is infinity, or NaN.
|
||||
|
||||
### Return Value
|
||||
|
||||
|
@ -7,7 +7,7 @@ SkPaint Reference
|
||||
<a href="#Paint">Paint</a> controls options applied when drawing and measuring. <a href="#Paint">Paint</a> collects all
|
||||
options outside of the <a href="#Clip">Canvas Clip</a> and <a href="#Matrix">Canvas Matrix</a>.
|
||||
|
||||
Various options apply to text, strokes and fills, and images.
|
||||
Various options apply to text, strokes and fills, and images.
|
||||
|
||||
Some options may not be implemented on all platforms; in these cases, setting
|
||||
the option has no effect. Some options are conveniences that duplicate <a href="SkCanvas_Reference#Canvas">Canvas</a>
|
||||
@ -16,14 +16,14 @@ functionality; for instance, text size is identical to matrix scale.
|
||||
<a href="#Paint">Paint</a> options are rarely exclusive; each option modifies a stage of the drawing
|
||||
pipeline and multiple pipeline stages may be affected by a single <a href="#Paint">Paint</a>.
|
||||
|
||||
<a href="#Paint">Paint</a> collects effects and filters that describe single-pass and multiple-pass
|
||||
<a href="#Paint">Paint</a> collects effects and filters that describe single-pass and multiple-pass
|
||||
algorithms that alter the drawing geometry, color, and transparency. For instance,
|
||||
<a href="#Paint">Paint</a> does not directly implement dashing or blur, but contains the objects that do so.
|
||||
<a href="#Paint">Paint</a> does not directly implement dashing or blur, but contains the objects that do so.
|
||||
|
||||
The objects contained by <a href="#Paint">Paint</a> are opaque, and cannot be edited outside of the <a href="#Paint">Paint</a>
|
||||
to affect it. The implementation is free to defer computations associated with the
|
||||
<a href="#Paint">Paint</a>, or ignore them altogether. For instance, some <a href="undocumented#GPU">GPU</a> implementations draw all
|
||||
<a href="SkPath_Reference#Path">Path</a> geometries with Anti-aliasing, regardless of how <a href="#SkPaint_kAntiAlias_Flag">SkPaint::kAntiAlias Flag</a>
|
||||
<a href="#Paint">Paint</a>, or ignore them altogether. For instance, some GPU implementations draw all
|
||||
<a href="SkPath_Reference#Path">Path</a> geometries with Anti-aliasing, regardless of how <a href="#SkPaint_kAntiAlias_Flag">SkPaint::kAntiAlias Flag</a>
|
||||
is set in <a href="#Paint">Paint</a>.
|
||||
|
||||
<a href="#Paint">Paint</a> describes a single color, a single font, a single image quality, and so on.
|
||||
@ -37,7 +37,7 @@ Multiple colors are drawn either by using multiple paints or with objects like
|
||||
| topics | description |
|
||||
| --- | --- |
|
||||
| <a href="#Initializers">Initializers</a> | Constructors and initialization. |
|
||||
| <a href="undocumented#Destructor">Destructor</a> | <a href="#Paint">Paint</a> termination. |
|
||||
| Destructor | <a href="#Paint">Paint</a> termination. |
|
||||
| <a href="#Management">Management</a> | <a href="#Paint">Paint</a> copying, moving, comparing. |
|
||||
| <a href="#SkPaint_Hinting">Hinting</a> | <a href="undocumented#Glyph">Glyph</a> outline adjustment. |
|
||||
| <a href="#SkPaint_Flags">Flags</a> | Attributes represented by single bits. |
|
||||
@ -270,7 +270,7 @@ Constructs <a href="#Paint">Paint</a> with default values.
|
||||
| <a href="#Vertical_Text">Vertical Text</a> | false |
|
||||
|
||||
The flags, text size, hinting, and miter limit may be overridden at compile time by defining
|
||||
paint default values. The overrides may be included in "<a href="undocumented#SkUserConfig">SkUserConfig</a>.h" or predefined by the
|
||||
paint default values. The overrides may be included in "SkUserConfig.h" or predefined by the
|
||||
build system.
|
||||
|
||||
### Return Value
|
||||
@ -657,7 +657,7 @@ enum <a href="#Hinting">Hinting</a> {
|
||||
look at a given point size on font engines that support it. <a href="#Hinting">Hinting</a> may have a
|
||||
muted effect or no effect at all depending on the platform.
|
||||
|
||||
The four levels roughly control corresponding features on platforms that use <a href="undocumented#FreeType">FreeType</a>
|
||||
The four levels roughly control corresponding features on platforms that use FreeType
|
||||
as the <a href="#Engine">Font Engine</a>.
|
||||
|
||||
### Constants
|
||||
@ -665,34 +665,34 @@ as the <a href="#Engine">Font Engine</a>.
|
||||
<table>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kNo_Hinting"> <code><strong>SkPaint::kNo_Hinting </strong></code> </a></td><td>0</td><td>Leaves glyph outlines unchanged from their native representation.
|
||||
With <a href="undocumented#FreeType">FreeType</a>, this is equivalent to the <a href="undocumented#FT_LOAD_NO_HINTING">FT LOAD NO HINTING</a>
|
||||
bit-field constant supplied to <a href="undocumented#FT_Load_Glyph">FT Load Glyph</a>, which indicates that the vector
|
||||
With FreeType, this is equivalent to the FT_LOAD_NO_HINTING
|
||||
bit-field constant supplied to FT_Load_Glyph, which indicates that the vector
|
||||
outline being loaded should not be fitted to the pixel grid but simply scaled
|
||||
to 26.6 fractional pixels.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kSlight_Hinting"> <code><strong>SkPaint::kSlight_Hinting </strong></code> </a></td><td>1</td><td>Modifies glyph outlines minimally to improve constrast.
|
||||
With <a href="undocumented#FreeType">FreeType</a>, this is equivalent in spirit to the
|
||||
<a href="undocumented#FT_LOAD_TARGET_LIGHT">FT LOAD TARGET LIGHT</a> value supplied to <a href="undocumented#FT_Load_Glyph">FT Load Glyph</a>. It chooses a
|
||||
With FreeType, this is equivalent in spirit to the
|
||||
FT_LOAD_TARGET_LIGHT value supplied to FT_Load_Glyph. It chooses a
|
||||
lighter hinting algorithm for non-monochrome modes.
|
||||
Generated <a href="#Glyph">Glyphs</a> may be fuzzy but better resemble their original shape.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kNormal_Hinting"> <code><strong>SkPaint::kNormal_Hinting </strong></code> </a></td><td>2</td><td>Modifies glyph outlines to improve constrast. This is the default.
|
||||
With <a href="undocumented#FreeType">FreeType</a>, this supplies <a href="undocumented#FT_LOAD_TARGET_NORMAL">FT LOAD TARGET NORMAL</a> to <a href="undocumented#FT_Load_Glyph">FT Load Glyph</a>,
|
||||
choosing the default hinting algorithm, which is optimized for standard
|
||||
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.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kFull_Hinting"> <code><strong>SkPaint::kFull_Hinting </strong></code> </a></td><td>3</td><td>Modifies glyph outlines for maxiumum constrast. With <a href="undocumented#FreeType">FreeType</a>, this selects
|
||||
<a href="undocumented#FT_LOAD_TARGET_LCD">FT LOAD TARGET LCD</a> or <a href="undocumented#FT_LOAD_TARGET_LCD_V">FT LOAD TARGET LCD V</a> if <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> is set.
|
||||
<a href="undocumented#FT_LOAD_TARGET_LCD">FT LOAD TARGET LCD</a> is a variant of <a href="undocumented#FT_LOAD_TARGET_NORMAL">FT LOAD TARGET NORMAL</a> optimized for
|
||||
horizontally decimated <a href="undocumented#LCD">LCD</a> displays; <a href="undocumented#FT_LOAD_TARGET_LCD_V">FT LOAD TARGET LCD V</a> is a
|
||||
variant of <a href="undocumented#FT_LOAD_TARGET_NORMAL">FT LOAD TARGET NORMAL</a> optimized for vertically decimated <a href="undocumented#LCD">LCD</a> displays.</td>
|
||||
<td><a name="SkPaint_kFull_Hinting"> <code><strong>SkPaint::kFull_Hinting </strong></code> </a></td><td>3</td><td>Modifies glyph outlines for maxiumum constrast. With FreeType, this selects
|
||||
FT_LOAD_TARGET_LCD or FT_LOAD_TARGET_LCD_V if <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> 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.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
On <a href="undocumented#Windows">Windows</a> with <a href="undocumented#DirectWrite">DirectWrite</a>, <a href="#Hinting">Hinting</a> has no effect.
|
||||
On Windows with DirectWrite, <a href="#Hinting">Hinting</a> has no effect.
|
||||
|
||||
<a href="#Hinting">Hinting</a> defaults to <a href="#SkPaint_kNormal_Hinting">kNormal Hinting</a>.
|
||||
Set <a href="undocumented#SkPaintDefaults_Hinting">SkPaintDefaults Hinting</a> at compile time to change the default setting.
|
||||
@ -925,13 +925,13 @@ Anti-alias drawing approximates partial pixel coverage with transparency.
|
||||
If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is clear, pixel centers contained by the shape edge are drawn opaque.
|
||||
If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is set, pixels are drawn with <a href="#Alpha">Color Alpha</a> equal to their coverage.
|
||||
|
||||
The rule for <a href="#Alias">Aliased</a> pixels is inconsistent across platforms. A shape edge
|
||||
The rule for <a href="#Alias">Aliased</a> pixels is inconsistent across platforms. A shape edge
|
||||
passing through the pixel center may, but is not required to, draw the pixel.
|
||||
|
||||
<a href="undocumented#Raster_Engine">Raster Engine</a> draws <a href="#Alias">Aliased</a> pixels whose centers are on or to the right of the start of an
|
||||
active <a href="SkPath_Reference#Path">Path</a> edge, and whose center is to the left of the end of the active <a href="SkPath_Reference#Path">Path</a> edge.
|
||||
|
||||
A platform may only support Anti-aliased drawing. Some <a href="undocumented#GPU">GPU</a>-backed platforms use
|
||||
A platform may only support Anti-aliased drawing. Some GPU-backed platforms use
|
||||
<a href="undocumented#Supersampling">Supersampling</a> to Anti-alias all drawing, and have no mechanism to selectively
|
||||
<a href="undocumented#Alias">Alias</a>.
|
||||
|
||||
@ -1013,10 +1013,10 @@ paint1 == paint2
|
||||
---
|
||||
|
||||
# <a name="Dither"></a> Dither
|
||||
<a href="#Dither">Dither</a> increases fidelity by adjusting the color of adjacent pixels.
|
||||
<a href="#Dither">Dither</a> increases fidelity by adjusting the color of adjacent pixels.
|
||||
This can help to smooth color transitions and reducing banding in gradients.
|
||||
Dithering lessens visible banding from <a href="undocumented#SkColorType">kRGB 565 SkColorType</a>
|
||||
and <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> gradients,
|
||||
and <a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> gradients,
|
||||
and improves rendering into a <a href="undocumented#SkColorType">kRGB 565 SkColorType</a> <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
|
||||
Dithering is always enabled for linear gradients drawing into
|
||||
@ -1114,19 +1114,19 @@ Gradient <a href="#RGB">Color RGB</a>-565
|
||||
# <a name="Device_Text"></a> Device Text
|
||||
<a href="SkPaint_Reference#LCD_Text">LCD Text</a> and <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a> increase the precision of glyph position.
|
||||
|
||||
When set, <a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> takes advantage of the organization of <a href="#RGB">Color RGB</a> stripes that
|
||||
When set, <a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> takes advantage of the organization of <a href="#RGB">Color RGB</a> stripes that
|
||||
create a color, and relies
|
||||
on the small size of the stripe and visual perception to make the color fringing imperceptible.
|
||||
<a href="SkPaint_Reference#LCD_Text">LCD Text</a> can be enabled on devices that orient stripes horizontally or vertically, and that order
|
||||
the color components as <a href="#RGB">Color RGB</a> or <a href="#RBG">Color RBG</a>.
|
||||
|
||||
<a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> uses the pixel transparency to represent a fractional offset.
|
||||
<a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> uses the pixel transparency to represent a fractional offset.
|
||||
As the opaqueness
|
||||
of the color increases, the edge of the glyph appears to move towards the outside of the pixel.
|
||||
|
||||
Either or both techniques can be enabled.
|
||||
<a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> and <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> are clear by default.
|
||||
<a href="SkPaint_Reference#LCD_Text">LCD Text</a> or <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a> can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to
|
||||
<a href="SkPaint_Reference#LCD_Text">LCD Text</a> or <a href="SkPaint_Reference#Subpixel_Text">Subpixel Text</a> can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to
|
||||
<a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> or <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> (or both) at compile time.
|
||||
|
||||
### Example
|
||||
@ -1198,7 +1198,7 @@ setting for <a href="#SkPaint_kLinearText_Flag">kLinearText Flag</a></td>
|
||||
|
||||
## <a name="Subpixel_Text"></a> Subpixel Text
|
||||
|
||||
<a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> uses the pixel transparency to represent a fractional offset.
|
||||
<a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kSubpixelText_Flag">kSubpixelText Flag</a> uses the pixel transparency to represent a fractional offset.
|
||||
As the opaqueness
|
||||
of the color increases, the edge of the glyph appears to move towards the outside of the pixel.
|
||||
|
||||
@ -1267,7 +1267,7 @@ paint1 == paint2
|
||||
|
||||
## <a name="LCD_Text"></a> LCD Text
|
||||
|
||||
When set, <a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> takes advantage of the organization of <a href="#RGB">Color RGB</a> stripes that
|
||||
When set, <a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> takes advantage of the organization of <a href="#RGB">Color RGB</a> stripes that
|
||||
create a color, and relies
|
||||
on the small size of the stripe and visual perception to make the color fringing imperceptible.
|
||||
<a href="SkPaint_Reference#LCD_Text">LCD Text</a> can be enabled on devices that orient stripes horizontally or vertically, and that order
|
||||
@ -1280,7 +1280,7 @@ the color components as <a href="#RGB">Color RGB</a> or <a href="#RBG">Color RBG
|
||||
bool isLCDRenderText() const
|
||||
</pre>
|
||||
|
||||
If true, <a href="#Glyph">Glyphs</a> may use <a href="undocumented#LCD">LCD</a> striping to improve glyph edges.
|
||||
If true, <a href="#Glyph">Glyphs</a> may use LCD striping to improve glyph edges.
|
||||
|
||||
Returns true if <a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> is set.
|
||||
|
||||
@ -1310,7 +1310,7 @@ paint.isLCDRenderText() == !!(paint.getFlags() & SkPaint::kLCDRenderText_Flag)
|
||||
void setLCDRenderText(bool lcdText)
|
||||
</pre>
|
||||
|
||||
Requests, but does not require, that <a href="#Glyph">Glyphs</a> use <a href="undocumented#LCD">LCD</a> striping for glyph edges.
|
||||
Requests, but does not require, that <a href="#Glyph">Glyphs</a> use LCD striping for glyph edges.
|
||||
|
||||
Sets <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> if <a href="#SkPaint_setLCDRenderText_lcdText">lcdText</a> is true.
|
||||
Clears <a href="#SkPaint_kLCDRenderText_Flag">kLCDRenderText Flag</a> if <a href="#SkPaint_setLCDRenderText_lcdText">lcdText</a> is false.
|
||||
@ -1339,12 +1339,12 @@ paint1 == paint2
|
||||
# <a name="Font_Embedded_Bitmaps"></a> Font Embedded Bitmaps
|
||||
<a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a> allows selecting custom sized bitmap <a href="#Glyph">Glyphs</a>.
|
||||
<a href="#SkPaint_Flags">Flags</a> <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> when set chooses an embedded bitmap glyph over an outline contained
|
||||
in a font if the platform supports this option.
|
||||
in a font if the platform supports this option.
|
||||
|
||||
<a href="undocumented#FreeType">FreeType</a> selects the bitmap glyph if available when <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> is set, and selects
|
||||
FreeType selects the bitmap glyph if available when <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> is set, and selects
|
||||
the outline glyph if <a href="#SkPaint_kEmbeddedBitmapText_Flag">kEmbeddedBitmapText Flag</a> is clear.
|
||||
<a href="undocumented#Windows">Windows</a> may select the bitmap glyph but is not required to do so.
|
||||
<a href="undocumented#OS_X">OS X</a> and <a href="undocumented#iOS">iOS</a> do not support this option.
|
||||
Windows may select the bitmap glyph but is not required to do so.
|
||||
<a href="undocumented#OS_X">OS X</a> and iOS do not support this option.
|
||||
|
||||
<a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a> is disabled by default.
|
||||
<a href="SkPaint_Reference#Font_Embedded_Bitmaps">Font Embedded Bitmaps</a> can be enabled by default by setting <a href="undocumented#SkPaintDefaults_Flags">SkPaintDefaults Flags</a> to
|
||||
@ -1444,7 +1444,7 @@ instructs the <a href="undocumented#Font_Manager">Font Manager</a> to always hin
|
||||
<a href="#Automatic_Hinting">Automatic Hinting</a> has no effect if <a href="#SkPaint_Hinting">Hinting</a> is set to <a href="#SkPaint_kNo_Hinting">kNo Hinting</a> or
|
||||
<a href="#SkPaint_kSlight_Hinting">kSlight Hinting</a>.
|
||||
|
||||
<a href="#Automatic_Hinting">Automatic Hinting</a> only affects platforms that use <a href="undocumented#FreeType">FreeType</a> as the <a href="undocumented#Font_Manager">Font Manager</a>.
|
||||
<a href="#Automatic_Hinting">Automatic Hinting</a> only affects platforms that use FreeType as the <a href="undocumented#Font_Manager">Font Manager</a>.
|
||||
|
||||
<a name="SkPaint_isAutohinted"></a>
|
||||
## isAutohinted
|
||||
@ -1454,7 +1454,7 @@ bool isAutohinted() const
|
||||
</pre>
|
||||
|
||||
If true, and if <a href="#SkPaint_Hinting">Hinting</a> is set to <a href="#SkPaint_kNormal_Hinting">kNormal Hinting</a> or <a href="#SkPaint_kFull_Hinting">kFull Hinting</a>, and if
|
||||
platform uses <a href="undocumented#FreeType">FreeType</a> as the <a href="undocumented#Font_Manager">Font Manager</a>, instruct the <a href="undocumented#Font_Manager">Font Manager</a> to always hint
|
||||
platform uses FreeType as the <a href="undocumented#Font_Manager">Font Manager</a>, instruct the <a href="undocumented#Font_Manager">Font Manager</a> to always hint
|
||||
<a href="#Glyph">Glyphs</a>.
|
||||
|
||||
Equivalent to <a href="#SkPaint_getFlags">getFlags</a> masked with <a href="#SkPaint_kAutoHinting_Flag">kAutoHinting Flag</a>.
|
||||
@ -1494,7 +1494,7 @@ instruct the <a href="undocumented#Font_Manager">Font Manager</a> to always hint
|
||||
<a href="#Automatic_Hinting">Automatic Hinting</a> has no effect if <a href="#SkPaint_Hinting">Hinting</a> is set to <a href="#SkPaint_kNo_Hinting">kNo Hinting</a> or
|
||||
<a href="#SkPaint_kSlight_Hinting">kSlight Hinting</a>.
|
||||
|
||||
Only affects platforms that use <a href="undocumented#FreeType">FreeType</a> as the <a href="undocumented#Font_Manager">Font Manager</a>.
|
||||
Only affects platforms that use FreeType as the <a href="undocumented#Font_Manager">Font Manager</a>.
|
||||
|
||||
Sets <a href="#SkPaint_kAutoHinting_Flag">kAutoHinting Flag</a> if <a href="#SkPaint_setAutohinted_useAutohinter">useAutohinter</a> is true.
|
||||
Clears <a href="#SkPaint_kAutoHinting_Flag">kAutoHinting Flag</a> if <a href="#SkPaint_setAutohinted_useAutohinter">useAutohinter</a> is false.
|
||||
@ -1522,10 +1522,10 @@ using <a href="#Advance">Font Advance</a> to position subsequent <a href="#Glyph
|
||||
is positioned to the right of the preceding glyph. <a href="#Vertical_Text">Vertical Text</a> sets successive
|
||||
<a href="#Glyph">Glyphs</a> to position below the preceding glyph.
|
||||
|
||||
<a href="undocumented#Skia">Skia</a> can translate text character codes as a series of <a href="#Glyph">Glyphs</a>, but does not implement
|
||||
font substitution,
|
||||
textual substitution, line layout, or contextual spacing like <a href="undocumented#Kerning">Kerning</a> pairs. Use
|
||||
a text shaping engine likeHarfBuzzto translate text runs
|
||||
Skia can translate text character codes as a series of <a href="#Glyph">Glyphs</a>, but does not implement
|
||||
font substitution,
|
||||
textual substitution, line layout, or contextual spacing like Kerning pairs. Use
|
||||
a text shaping engine like <a href="http://harfbuzz.org/">HarfBuzz</a> to translate text runs
|
||||
into glyph series.
|
||||
|
||||
<a href="#Vertical_Text">Vertical Text</a> is clear if text is drawn left to right or set if drawn from top to bottom.
|
||||
@ -1607,15 +1607,15 @@ paint1 == paint2
|
||||
|
||||
# <a name="Fake_Bold"></a> Fake Bold
|
||||
<a href="#Fake_Bold">Fake Bold</a> approximates the bold font style accompanying a normal font when a bold font face
|
||||
is not available. <a href="undocumented#Skia">Skia</a> does not provide font substitution; it is up to the client to find the
|
||||
is not available. Skia does not provide font substitution; it is up to the client to find the
|
||||
bold font face using the platform <a href="undocumented#Font_Manager">Font Manager</a>.
|
||||
|
||||
Use <a href="#Text_Skew_X">Text Skew X</a> to approximate an italic font style when the italic font face
|
||||
Use <a href="#Text_Skew_X">Text Skew X</a> to approximate an italic font style when the italic font face
|
||||
is not available.
|
||||
|
||||
A <a href="undocumented#FreeType">FreeType</a> based port may define <a href="undocumented#SK_USE_FREETYPE_EMBOLDEN">SK USE FREETYPE EMBOLDEN</a> at compile time to direct
|
||||
A FreeType based port may define SK_USE_FREETYPE_EMBOLDEN at compile time to direct
|
||||
the font engine to create the bold <a href="#Glyph">Glyphs</a>. Otherwise, the extra bold is computed
|
||||
by increasing the stroke width and setting the <a href="#SkPaint_Style">Style</a> to <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a> as needed.
|
||||
by increasing the stroke width and setting the <a href="#SkPaint_Style">Style</a> to <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a> as needed.
|
||||
|
||||
<a href="#Fake_Bold">Fake Bold</a> is disabled by default.
|
||||
|
||||
@ -1689,12 +1689,12 @@ paint1 == paint2
|
||||
|
||||
# <a name="Full_Hinting_Spacing"></a> Full Hinting Spacing
|
||||
if <a href="#SkPaint_Hinting">Hinting</a> is set to <a href="#SkPaint_kFull_Hinting">kFull Hinting</a>, <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> adjusts the character
|
||||
spacing by the difference of the hinted and <a href="undocumented#Unhinted">Unhinted</a> <a href="undocumented#Left_Side_Bearing">Left Side Bearing</a> and
|
||||
spacing by the difference of the hinted and Unhinted <a href="undocumented#Left_Side_Bearing">Left Side Bearing</a> and
|
||||
<a href="undocumented#Right_Side_Bearing">Right Side Bearing</a>. <a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> only applies to platforms that use
|
||||
<a href="undocumented#FreeType">FreeType</a> as their <a href="#Engine">Font Engine</a>.
|
||||
FreeType as their <a href="#Engine">Font Engine</a>.
|
||||
|
||||
<a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> is not related to text <a href="undocumented#Kerning">Kerning</a>, where the space between
|
||||
a specific pair of characters is adjusted using data in the font <a href="undocumented#Kerning">Kerning</a> tables.
|
||||
<a href="SkPaint_Reference#Full_Hinting_Spacing">Full Hinting Spacing</a> is not related to text Kerning, where the space between
|
||||
a specific pair of characters is adjusted using data in the font Kerning tables.
|
||||
|
||||
<a name="SkPaint_isDevKernText"></a>
|
||||
## isDevKernText
|
||||
@ -1786,7 +1786,7 @@ draws faster; a higher setting looks better when the image is scaled.
|
||||
|
||||
### Return Value
|
||||
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
<a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a>
|
||||
|
||||
### Example
|
||||
@ -1812,12 +1812,12 @@ void setFilterQuality(SkFilterQuality quality)
|
||||
|
||||
Sets <a href="undocumented#Filter_Quality">Filter Quality</a>, the image filtering level. A lower setting
|
||||
draws faster; a higher setting looks better when the image is scaled.
|
||||
Does not check to see if <a href="#SkPaint_setFilterQuality_quality">quality</a> is valid.
|
||||
Does not check to see if <a href="#SkPaint_setFilterQuality_quality">quality</a> is valid.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPaint_setFilterQuality_quality"> <code><strong>quality </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
<a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -1901,7 +1901,7 @@ void setColor(SkColor color)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Alpha">Alpha</a> and <a href="#RGB">Color RGB</a> used when stroking and filling. The <a href="#SkPaint_setColor_color">color</a> is a 32-bit value,
|
||||
<a href="#Unpremultiply">Unpremultiplied</a>, packing 8-bit components for <a href="#Alpha">Alpha</a>, <a href="#Red">Red</a>, <a href="#Blue">Blue</a>, and <a href="#Green">Green</a>.
|
||||
<a href="#Unpremultiply">Unpremultiplied</a>, packing 8-bit components for <a href="#Alpha">Alpha</a>, <a href="#Red">Red</a>, <a href="#Blue">Blue</a>, and <a href="#Green">Green</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1966,7 +1966,7 @@ Retrieves <a href="#Alpha">Alpha</a> from the <a href="undocumented#Color">Color
|
||||
void setAlpha(U8CPU a)
|
||||
</pre>
|
||||
|
||||
Replaces <a href="#Alpha">Alpha</a>, leaving <a href="#RGB">Color RGB</a>
|
||||
Replaces <a href="#Alpha">Alpha</a>, leaving <a href="#RGB">Color RGB</a>
|
||||
unchanged. An out of range value triggers an assert in the debug
|
||||
build. <a href="#SkPaint_setAlpha_a">a</a> is <a href="#SkPaint_setAlpha_a">a</a> value from zero to 255.
|
||||
<a href="#SkPaint_setAlpha_a">a</a> set to zero makes <a href="undocumented#Color">Color</a> fully transparent; <a href="#SkPaint_setAlpha_a">a</a> set to 255 makes <a href="undocumented#Color">Color</a>
|
||||
@ -2062,13 +2062,13 @@ may have gaps, and if <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is
|
||||
## <a name="Hairline"></a> Hairline
|
||||
|
||||
<a href="#Stroke_Width">Stroke Width</a> of zero has a special meaning and switches drawing to use <a href="#Hairline">Hairline</a>.
|
||||
<a href="#Hairline">Hairline</a> draws the thinnest continuous frame. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is clear, adjacent pixels
|
||||
flow horizontally, vertically,or diagonally.
|
||||
<a href="#Hairline">Hairline</a> draws the thinnest continuous frame. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is clear, adjacent pixels
|
||||
flow horizontally, vertically,or diagonally.
|
||||
|
||||
<a href="SkPath_Reference#Path">Path</a> drawing with <a href="#Hairline">Hairline</a> may hit the same pixel more than once. For instance, <a href="SkPath_Reference#Path">Path</a> containing
|
||||
two lines in one <a href="#Contour">Path Contour</a> will draw the corner point once, but may both lines may draw the adjacent
|
||||
pixel. If <a href="#SkPaint_kAntiAlias_Flag">kAntiAlias Flag</a> is set, transparency is applied twice, resulting in a darker pixel. Some
|
||||
<a href="undocumented#GPU">GPU</a>-backed implementations apply transparency at a later drawing stage, avoiding double hit pixels
|
||||
GPU-backed implementations apply transparency at a later drawing stage, avoiding double hit pixels
|
||||
while stroking.
|
||||
|
||||
## <a name="SkPaint_Style"></a> Enum SkPaint::Style
|
||||
@ -2092,7 +2092,7 @@ a fill draw.
|
||||
<table>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kFill_Style"> <code><strong>SkPaint::kFill_Style </strong></code> </a></td><td>0</td><td>Set to fill geometry.
|
||||
Applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</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>.
|
||||
Applies to <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Region">Region</a>, <a href="undocumented#Round_Rect">Round Rect</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>.
|
||||
<a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkImage_Reference#Image">Image</a>, <a href="#Patch">Patches</a>, <a href="undocumented#Region">Region</a>, <a href="#Sprite">Sprites</a>, and <a href="undocumented#Vertices">Vertices</a> are painted as if
|
||||
<a href="#SkPaint_kFill_Style">kFill Style</a> is set, and ignore the set <a href="#SkPaint_Style">Style</a>.
|
||||
The <a href="#Fill_Type">Path Fill Type</a> specifies additional rules to fill the area outside the path edge,
|
||||
@ -2101,7 +2101,7 @@ and to create an unfilled hole inside the shape.
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kStroke_Style"> <code><strong>SkPaint::kStroke_Style </strong></code> </a></td><td>1</td><td>Set to stroke geometry.
|
||||
Applies to <a href="SkRect_Reference#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>.
|
||||
Applies to <a href="SkRect_Reference#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>.
|
||||
<a href="#Arc">Arcs</a>, <a href="#Line">Lines</a>, and <a href="#Point">Points</a>, are always drawn as if <a href="#SkPaint_kStroke_Style">kStroke Style</a> is set,
|
||||
and ignore the set <a href="#SkPaint_Style">Style</a>.
|
||||
The stroke construction is unaffected by the <a href="#Fill_Type">Path Fill Type</a>.</td>
|
||||
@ -2196,12 +2196,12 @@ one of: <a href="#SkPaint_kFill_Style">kFill Style</a>, <a href="#SkPaint_kStrok
|
||||
|
||||
# <a name="Stroke_Width"></a> Stroke Width
|
||||
<a href="#Stroke_Width">Stroke Width</a> sets the width for stroking. The width is the thickness
|
||||
of the stroke perpendicular to the path direction when the paint style is
|
||||
of the stroke perpendicular to the path direction when the paint style is
|
||||
set to <a href="#SkPaint_kStroke_Style">kStroke Style</a> or <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a>.
|
||||
|
||||
When width is greater than zero, the stroke encompasses as many pixels partially
|
||||
or fully as needed. When the width equals zero, the paint enables hairlines;
|
||||
the stroke is always one pixel wide.
|
||||
the stroke is always one pixel wide.
|
||||
|
||||
The stroke dimensions are scaled by the canvas matrix, but <a href="#Hairline">Hairline</a> stroke
|
||||
remains one pixel wide regardless of scaling.
|
||||
@ -2210,7 +2210,7 @@ The default width for the paint is zero.
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="01e3e08a3022a351628ff54e84887756" gpu="true"><div>The pixels hit to represent thin lines vary with the angle of the
|
||||
<div><fiddle-embed name="01e3e08a3022a351628ff54e84887756" gpu="true"><div>The pixels hit to represent thin lines vary with the angle of the
|
||||
line and the platform implementation.</div></fiddle-embed></div>
|
||||
|
||||
<a name="SkPaint_getStrokeWidth"></a>
|
||||
@ -2249,8 +2249,8 @@ void setStrokeWidth(SkScalar width)
|
||||
</pre>
|
||||
|
||||
Sets the thickness of the pen used by the paint to
|
||||
outline the shape.
|
||||
Has no effect if <a href="#SkPaint_setStrokeWidth_width">width</a> is less than zero.
|
||||
outline the shape.
|
||||
Has no effect if <a href="#SkPaint_setStrokeWidth_width">width</a> is less than zero.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2288,7 +2288,7 @@ is replaced with <a href="#SkPaint_kBevel_Join">kBevel Join</a>.
|
||||
|
||||
miter limit = 1 / sin ( angle / 2 )<a href="#Miter_Limit">Miter Limit</a> default value is 4.
|
||||
The default may be changed at compile time by setting <a href="undocumented#SkPaintDefaults_MiterLimit">SkPaintDefaults MiterLimit</a>
|
||||
in "<a href="undocumented#SkUserConfig">SkUserConfig</a>.h" or as a define supplied by the build environment.
|
||||
in "SkUserConfig.h" or as a define supplied by the build environment.
|
||||
|
||||
Here are some miter limits and the angles that triggers them.
|
||||
|
||||
@ -2423,7 +2423,7 @@ of the stroke.</td>
|
||||
May be used to verify that <a href="#Stroke_Cap">Stroke Cap</a> is a legal value.</td>
|
||||
</tr>
|
||||
|
||||
Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it
|
||||
Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it
|
||||
follows the <a href="#Contour">Path Contour</a>, moving parallel to the contour direction.
|
||||
|
||||
If the <a href="#Contour">Path Contour</a> is not terminated by <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a>, the contour has a
|
||||
@ -2432,7 +2432,7 @@ visible beginning and end.
|
||||
<a href="#Contour">Path Contour</a> may start and end at the same point; defining <a href="SkPath_Reference#Zero_Length">Zero Length Contour</a>.
|
||||
|
||||
<a href="#SkPaint_kButt_Cap">kButt Cap</a> and <a href="SkPath_Reference#Zero_Length">Zero Length Contour</a> is not drawn.
|
||||
<a href="#SkPaint_kRound_Cap">kRound Cap</a> and <a href="SkPath_Reference#Zero_Length">Zero Length Contour</a> draws a circle of diameter <a href="#Stroke_Width">Stroke Width</a>
|
||||
<a href="#SkPaint_kRound_Cap">kRound Cap</a> and <a href="SkPath_Reference#Zero_Length">Zero Length Contour</a> draws a circle of diameter <a href="#Stroke_Width">Stroke Width</a>
|
||||
at the contour point.
|
||||
<a href="#SkPaint_kSquare_Cap">kSquare Cap</a> and <a href="SkPath_Reference#Zero_Length">Zero Length Contour</a> draws an upright square with a side of
|
||||
<a href="#Stroke_Width">Stroke Width</a> at the contour point.
|
||||
@ -2514,7 +2514,7 @@ kRound_Cap == paint.getStrokeCap()
|
||||
# <a name="Stroke_Join"></a> Stroke Join
|
||||
<a href="#Stroke_Join">Stroke Join</a> draws at the sharp corners of an open or closed <a href="#Contour">Path Contour</a>.
|
||||
|
||||
Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it
|
||||
Stroke describes the area covered by a pen of <a href="#Stroke_Width">Stroke Width</a> as it
|
||||
follows the <a href="#Contour">Path Contour</a>, moving parallel to the contour direction.
|
||||
|
||||
If the contour direction changes abruptly, because the tangent direction leading
|
||||
@ -2547,7 +2547,7 @@ Choose miter join to draw sharp corners. Choose round join to draw a circle with
|
||||
radius equal to the stroke width on top of the corner. Choose bevel join to minimally
|
||||
connect the thick strokes.
|
||||
|
||||
The fill path constructed to describe the stroked path respects the join setting but may
|
||||
The fill path constructed to describe the stroked path respects the join setting but may
|
||||
not contain the actual join. For instance, a fill path constructed with round joins does
|
||||
not necessarily include circles at each connected segment.
|
||||
|
||||
@ -2667,11 +2667,11 @@ destination <a href="SkPath_Reference#Path">Path</a>.
|
||||
Fill <a href="SkPath_Reference#Path">Path</a> can request the <a href="undocumented#Path_Effect">Path Effect</a> to restrict to a culling rectangle, but
|
||||
the <a href="undocumented#Path_Effect">Path Effect</a> is not required to do so.
|
||||
|
||||
If <a href="#SkPaint_Style">Style</a> is <a href="#SkPaint_kStroke_Style">kStroke Style</a> or <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a>,
|
||||
If <a href="#SkPaint_Style">Style</a> is <a href="#SkPaint_kStroke_Style">kStroke Style</a> or <a href="#SkPaint_kStrokeAndFill_Style">kStrokeAndFill Style</a>,
|
||||
and <a href="#Stroke_Width">Stroke Width</a> is greater than zero, the <a href="#Stroke_Width">Stroke Width</a>, <a href="#Stroke_Cap">Stroke Cap</a>, <a href="#Stroke_Join">Stroke Join</a>,
|
||||
and <a href="#Miter_Limit">Miter Limit</a> operate on the destination <a href="SkPath_Reference#Path">Path</a>, replacing it.
|
||||
|
||||
Fill <a href="SkPath_Reference#Path">Path</a> can specify the precision used by <a href="#Stroke_Width">Stroke Width</a> to approximate the stroke geometry.
|
||||
Fill <a href="SkPath_Reference#Path">Path</a> can specify the precision used by <a href="#Stroke_Width">Stroke Width</a> to approximate the stroke geometry.
|
||||
|
||||
If the <a href="#SkPaint_Style">Style</a> is <a href="#SkPaint_kStroke_Style">kStroke Style</a> and the <a href="#Stroke_Width">Stroke Width</a> is zero, <a href="#SkPaint_getFillPath">getFillPath</a>
|
||||
returns false since <a href="#Hairline">Hairline</a> has no filled equivalent.
|
||||
@ -2706,7 +2706,7 @@ true if the path represents <a href="#Style_Fill">Style Fill</a>, or false if it
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="cedd6233848198e1fca4d1e14816baaf"><div>A very small <a href="#Quad">Quad</a> stroke is turned into a filled path with increasing levels of precision.
|
||||
At the lowest precision, the <a href="#Quad">Quad</a> stroke is approximated by a rectangle.
|
||||
At the lowest precision, the <a href="#Quad">Quad</a> stroke is approximated by a rectangle.
|
||||
At the highest precision, the filled path has high fidelity compared to the original stroke.</div></fiddle-embed></div>
|
||||
|
||||
---
|
||||
@ -2746,7 +2746,7 @@ true if the path represents <a href="#Style_Fill">Style Fill</a>, or false if it
|
||||
# <a name="Shader_Methods"></a> Shader Methods
|
||||
<a href="undocumented#Shader">Shader</a> defines the colors used when drawing a shape.
|
||||
<a href="undocumented#Shader">Shader</a> may be an image, a gradient, or a computed fill.
|
||||
If <a href="#Paint">Paint</a> has no <a href="undocumented#Shader">Shader</a>, then <a href="undocumented#Color">Color</a> fills the shape.
|
||||
If <a href="#Paint">Paint</a> has no <a href="undocumented#Shader">Shader</a>, then <a href="undocumented#Color">Color</a> fills the shape.
|
||||
|
||||
<a href="undocumented#Shader">Shader</a> is modulated by <a href="#Alpha">Color Alpha</a> component of <a href="undocumented#Color">Color</a>.
|
||||
If <a href="undocumented#Shader">Shader</a> object defines only <a href="#Alpha">Color Alpha</a>, then <a href="undocumented#Color">Color</a> modulated by <a href="#Alpha">Color Alpha</a> describes
|
||||
@ -3020,7 +3020,7 @@ isSrcOver != true
|
||||
void setBlendMode(SkBlendMode mode)
|
||||
</pre>
|
||||
|
||||
Sets <a href="undocumented#Blend_Mode">Blend Mode</a> to <a href="#SkPaint_setBlendMode_mode">mode</a>.
|
||||
Sets <a href="undocumented#Blend_Mode">Blend Mode</a> to <a href="#SkPaint_setBlendMode_mode">mode</a>.
|
||||
Does not check for valid input.
|
||||
|
||||
### Parameters
|
||||
@ -3314,7 +3314,7 @@ 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>.
|
||||
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.
|
||||
|
||||
@ -3332,7 +3332,7 @@ font and style used to draw text</td>
|
||||
---
|
||||
|
||||
# <a name="Rasterizer_Methods"></a> Rasterizer Methods
|
||||
<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> 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>.
|
||||
|
||||
@ -3537,7 +3537,7 @@ 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.
|
||||
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.
|
||||
|
||||
### Example
|
||||
|
||||
@ -3678,9 +3678,9 @@ enum <a href="#SkPaint_Align">Align</a> {
|
||||
|
||||
<a href="#SkPaint_Align">Align</a> adjusts the text relative to the text position.
|
||||
<a href="#SkPaint_Align">Align</a> affects <a href="#Glyph">Glyphs</a> drawn with: <a href="#SkCanvas_drawText">SkCanvas::drawText</a>, <a href="#SkCanvas_drawPosText">SkCanvas::drawPosText</a>,
|
||||
<a href="#SkCanvas_drawPosTextH">SkCanvas::drawPosTextH</a>, <a href="#SkCanvas_drawTextOnPath">SkCanvas::drawTextOnPath</a>,
|
||||
<a href="#SkCanvas_drawPosTextH">SkCanvas::drawPosTextH</a>, <a href="#SkCanvas_drawTextOnPath">SkCanvas::drawTextOnPath</a>,
|
||||
<a href="#SkCanvas_drawTextOnPathHV">SkCanvas::drawTextOnPathHV</a>, <a href="#SkCanvas_drawTextRSXform">SkCanvas::drawTextRSXform</a>, <a href="#SkCanvas_drawTextBlob">SkCanvas::drawTextBlob</a>,
|
||||
and <a href="#SkCanvas_drawString">SkCanvas::drawString</a>;
|
||||
and <a href="#SkCanvas_drawString">SkCanvas::drawString</a>;
|
||||
as well as calls that place text <a href="#Glyph">Glyphs</a> like <a href="#SkPaint_getTextWidths">getTextWidths</a> and <a href="#SkPaint_getTextPath">getTextPath</a>.
|
||||
|
||||
The text position is set by the font for both horizontal and vertical text.
|
||||
@ -3688,7 +3688,7 @@ Typically, for horizontal text, the position is to the left side of the glyph on
|
||||
base line; and for vertical text, the position is the horizontal center of the glyph
|
||||
at the caps height.
|
||||
|
||||
<a href="#SkPaint_Align">Align</a> adjusts the glyph position to center it or move it to abut the position
|
||||
<a href="#SkPaint_Align">Align</a> adjusts the glyph position to center it or move it to abut the position
|
||||
using the metrics returned by the font.
|
||||
|
||||
<a href="#SkPaint_Align">Align</a> defaults to <a href="#SkPaint_kLeft_Align">kLeft Align</a>.
|
||||
@ -3959,19 +3959,19 @@ enum <a href="#SkPaint_TextEncoding">TextEncoding</a> {
|
||||
};</pre>
|
||||
|
||||
<a href="#SkPaint_TextEncoding">TextEncoding</a> determines whether text specifies character codes and their encoded
|
||||
size, or glyph indices. Characters are encoded as specified by the<a href="undocumented#Unicode">Unicode</a> standard.
|
||||
size, or glyph indices. Characters are encoded as specified by the <a href="http://unicode.org/standard/standard.html">Unicode standard</a> .
|
||||
|
||||
Character codes encoded size are specified by UTF-8, UTF-16, or UTF-32.
|
||||
All character code formats are able to represent all of <a href="undocumented#Unicode">Unicode</a>, differing only
|
||||
All character code formats are able to represent all of Unicode, differing only
|
||||
in the total storage required.
|
||||
|
||||
UTF-8 (<a href="undocumented#RFC">RFC</a> 3629)encodes each character as one or more 8-bit bytes.
|
||||
<a href="https://tools.ietf.org/html/rfc3629">UTF-8 (RFC 3629)</a> encodes each character as one or more 8-bit bytes.
|
||||
|
||||
UTF-16 (<a href="undocumented#RFC">RFC</a> 2781)encodes each character as one or two 16-bit words.
|
||||
<a href="https://tools.ietf.org/html/rfc2781">UTF-16 (RFC 2781)</a> encodes each character as one or two 16-bit words.
|
||||
|
||||
UTF-32encodes each character as one 32-bit word.
|
||||
<a href="http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf">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 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.
|
||||
|
||||
<a href="#SkPaint_TextEncoding">TextEncoding</a> is set to <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a> by default.
|
||||
@ -3980,13 +3980,13 @@ A glyph index is a 16-bit word.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kUTF8_TextEncoding"> <code><strong>SkPaint::kUTF8_TextEncoding </strong></code> </a></td><td>0</td><td>Uses bytes to represent UTF-8 or <a href="undocumented#ASCII">ASCII</a>.</td>
|
||||
<td><a name="SkPaint_kUTF8_TextEncoding"> <code><strong>SkPaint::kUTF8_TextEncoding </strong></code> </a></td><td>0</td><td>Uses bytes to represent UTF-8 or ASCII.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kUTF16_TextEncoding"> <code><strong>SkPaint::kUTF16_TextEncoding </strong></code> </a></td><td>1</td><td>Uses two byte words to represent most of <a href="undocumented#Unicode">Unicode</a>.</td>
|
||||
<td><a name="SkPaint_kUTF16_TextEncoding"> <code><strong>SkPaint::kUTF16_TextEncoding </strong></code> </a></td><td>1</td><td>Uses two byte words to represent most of Unicode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kUTF32_TextEncoding"> <code><strong>SkPaint::kUTF32_TextEncoding </strong></code> </a></td><td>2</td><td>Uses four byte words to represent all of <a href="undocumented#Unicode">Unicode</a>.</td>
|
||||
<td><a name="SkPaint_kUTF32_TextEncoding"> <code><strong>SkPaint::kUTF32_TextEncoding </strong></code> </a></td><td>2</td><td>Uses four byte words to represent all of Unicode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPaint_kGlyphID_TextEncoding"> <code><strong>SkPaint::kGlyphID_TextEncoding </strong></code> </a></td><td>3</td><td>Uses two byte words to represent glyph indices.</td>
|
||||
@ -4013,7 +4013,7 @@ Returns <a href="#Text_Encoding">Text Encoding</a>.
|
||||
|
||||
### Return Value
|
||||
|
||||
one of: <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#SkPaint_kUTF16_TextEncoding">kUTF16 TextEncoding</a>, <a href="#SkPaint_kUTF32_TextEncoding">kUTF32 TextEncoding</a>, or
|
||||
one of: <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#SkPaint_kUTF16_TextEncoding">kUTF16 TextEncoding</a>, <a href="#SkPaint_kUTF32_TextEncoding">kUTF32 TextEncoding</a>, or
|
||||
<a href="#SkPaint_kGlyphID_TextEncoding">kGlyphID TextEncoding</a>
|
||||
|
||||
### Example
|
||||
@ -4038,14 +4038,14 @@ kGlyphID_TextEncoding == text encoding
|
||||
void setTextEncoding(TextEncoding encoding)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Text_Encoding">Text Encoding</a> to <a href="#SkPaint_setTextEncoding_encoding">encoding</a>.
|
||||
Sets <a href="#Text_Encoding">Text Encoding</a> to <a href="#SkPaint_setTextEncoding_encoding">encoding</a>.
|
||||
<a href="#Text_Encoding">Text Encoding</a> determines how character code points are mapped to font glyph indices.
|
||||
Invalid values for <a href="#SkPaint_setTextEncoding_encoding">encoding</a> are ignored.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPaint_setTextEncoding_encoding"> <code><strong>encoding </strong></code> </a></td> <td>
|
||||
one of: <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#SkPaint_kUTF16_TextEncoding">kUTF16 TextEncoding</a>, <a href="#SkPaint_kUTF32_TextEncoding">kUTF32 TextEncoding</a>, or
|
||||
one of: <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#SkPaint_kUTF16_TextEncoding">kUTF16 TextEncoding</a>, <a href="#SkPaint_kUTF32_TextEncoding">kUTF32 TextEncoding</a>, or
|
||||
<a href="#SkPaint_kGlyphID_TextEncoding">kGlyphID TextEncoding</a></td>
|
||||
</tr>
|
||||
#
|
||||
@ -4068,7 +4068,7 @@ one of: <a href="#SkPaint_kUTF8_TextEncoding">kUTF8 TextEncoding</a>, <a href="#
|
||||
|
||||
# <a name="Font_Metrics"></a> Font Metrics
|
||||
<a href="#Font_Metrics">Font Metrics</a> describe dimensions common to the <a href="#Glyph">Glyphs</a> in <a href="undocumented#Typeface">Typeface</a>.
|
||||
The dimensions are computed by <a href="undocumented#Font_Manager">Font Manager</a> from font data and do not take
|
||||
The dimensions are computed by <a href="undocumented#Font_Manager">Font Manager</a> from font data and do not take
|
||||
<a href="#Paint">Paint</a> settings other than <a href="#Text_Size">Text Size</a> into account.
|
||||
|
||||
<a href="undocumented#Font">Font</a> dimensions specify the anchor to the left of the glyph at baseline as the origin.
|
||||
@ -4426,12 +4426,12 @@ SkRect getFontBounds() const
|
||||
</pre>
|
||||
|
||||
Returns the union of bounds of all <a href="#Glyph">Glyphs</a>.
|
||||
Returned dimensions are computed by <a href="undocumented#Font_Manager">Font Manager</a> from font data,
|
||||
Returned dimensions are computed by <a href="undocumented#Font_Manager">Font Manager</a> from font data,
|
||||
ignoring <a href="#SkPaint_Hinting">Hinting</a>. Includes <a href="#Text_Size">Text Size</a>, <a href="#Text_Scale_X">Text Scale X</a>,
|
||||
and <a href="#Text_Skew_X">Text Skew X</a>, but not <a href="#Fake_Bold">Fake Bold</a> or <a href="undocumented#Path_Effect">Path Effect</a>.
|
||||
|
||||
If <a href="#Text_Size">Text Size</a> is large, <a href="#Text_Scale_X">Text Scale X</a> is one, and <a href="#Text_Skew_X">Text Skew X</a> is zero,
|
||||
returns the same bounds as <a href="#Font_Metrics">Font Metrics</a> { <a href="#SkPaint_FontMetrics_fXMin">FontMetrics::fXMin</a>,
|
||||
returns the same bounds as <a href="#Font_Metrics">Font Metrics</a> { <a href="#SkPaint_FontMetrics_fXMin">FontMetrics::fXMin</a>,
|
||||
<a href="#SkPaint_FontMetrics_fTop">FontMetrics::fTop</a>, <a href="#SkPaint_FontMetrics_fXMax">FontMetrics::fXMax</a>, <a href="#SkPaint_FontMetrics_fBottom">FontMetrics::fBottom</a> }.
|
||||
|
||||
### Return Value
|
||||
@ -4539,7 +4539,7 @@ count = 5
|
||||
bool containsText(const void* text, size_t byteLength) const
|
||||
</pre>
|
||||
|
||||
Returns true if all <a href="#SkPaint_containsText_text">text</a> corresponds to a non-zero glyph index.
|
||||
Returns true if all <a href="#SkPaint_containsText_text">text</a> corresponds to a non-zero glyph index.
|
||||
Returns false if any characters in <a href="#SkPaint_containsText_text">text</a> are not supported in
|
||||
<a href="undocumented#Typeface">Typeface</a>.
|
||||
|
||||
@ -4565,7 +4565,7 @@ true if all <a href="#SkPaint_containsText_text">text</a> corresponds to a non-z
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="9202369019552f09cd4bec7f3046fee4"><div><a href="#SkPaint_containsText">containsText</a> succeeds for degree symbol, but cannot find a glyph index
|
||||
corresponding to the <a href="undocumented#Unicode">Unicode</a> surrogate code point.</div>
|
||||
corresponding to the Unicode surrogate code point.</div>
|
||||
|
||||
#### Example Output
|
||||
|
||||
@ -4604,12 +4604,12 @@ that it corresponds to an entry in <a href="undocumented#Typeface">Typeface</a>.
|
||||
void glyphsToUnichars(const SkGlyphID glyphs[], int count, SkUnichar text[]) const
|
||||
</pre>
|
||||
|
||||
Converts <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> into <a href="#SkPaint_glyphsToUnichars_text">text</a> if possible.
|
||||
<a href="undocumented#Glyph">Glyph</a> values without direct <a href="undocumented#Unicode">Unicode</a> equivalents are mapped to zero.
|
||||
Converts <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> into <a href="#SkPaint_glyphsToUnichars_text">text</a> if possible.
|
||||
<a href="undocumented#Glyph">Glyph</a> values without direct Unicode equivalents are mapped to zero.
|
||||
Uses the <a href="undocumented#Typeface">Typeface</a>, but is unaffected
|
||||
by <a href="#Text_Encoding">Text Encoding</a>; the <a href="#SkPaint_glyphsToUnichars_text">text</a> values returned are equivalent to <a href="#SkPaint_kUTF32_TextEncoding">kUTF32 TextEncoding</a>.
|
||||
|
||||
Only supported on platforms that use <a href="undocumented#FreeType">FreeType</a> as the <a href="#Engine">Font Engine</a>.
|
||||
Only supported on platforms that use FreeType as the <a href="#Engine">Font Engine</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4624,7 +4624,7 @@ storage for character codes, one per glyph</td>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="c12686b0b3e0a87d0a248bbfc57e9492"><div>Convert UTF-8 <a href="#SkPaint_glyphsToUnichars_text">text</a> to <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a>; then convert <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> to <a href="undocumented#Unichar">Unichar</a> code points.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="c12686b0b3e0a87d0a248bbfc57e9492"><div>Convert UTF-8 <a href="#SkPaint_glyphsToUnichars_text">text</a> to <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a>; then convert <a href="#SkPaint_glyphsToUnichars_glyphs">glyphs</a> to Unichar code points.</div></fiddle-embed></div>
|
||||
|
||||
---
|
||||
|
||||
@ -4760,7 +4760,7 @@ Retrieves the advance and <a href="#SkPaint_getTextWidths_bounds">bounds</a> for
|
||||
the glyph count in <a href="#SkPaint_getTextWidths_text">text</a>.
|
||||
Both <a href="#SkPaint_getTextWidths_widths">widths</a> and <a href="#SkPaint_getTextWidths_bounds">bounds</a> may be nullptr.
|
||||
If <a href="#SkPaint_getTextWidths_widths">widths</a> is not nullptr, <a href="#SkPaint_getTextWidths_widths">widths</a> must be an array of glyph count entries.
|
||||
if <a href="#SkPaint_getTextWidths_bounds">bounds</a> is not nullptr, <a href="#SkPaint_getTextWidths_bounds">bounds</a> must be an array of glyph count entries.
|
||||
if <a href="#SkPaint_getTextWidths_bounds">bounds</a> is not nullptr, <a href="#SkPaint_getTextWidths_bounds">bounds</a> must be an array of glyph count entries.
|
||||
If <a href="#SkPaint_kVerticalText_Flag">kVerticalText Flag</a> is clear, <a href="#SkPaint_getTextWidths_widths">widths</a> returns the horizontal advance.
|
||||
If <a href="#SkPaint_kVerticalText_Flag">kVerticalText Flag</a> is set, <a href="#SkPaint_getTextWidths_widths">widths</a> returns the vertical advance.
|
||||
Uses <a href="#Text_Encoding">Text Encoding</a> to decode <a href="#SkPaint_getTextWidths_text">text</a>, <a href="undocumented#Typeface">Typeface</a> to get the font metrics,
|
||||
@ -4866,7 +4866,7 @@ geometry of the <a href="#Glyph">Glyphs</a></td>
|
||||
# <a name="Text_Intercepts"></a> Text Intercepts
|
||||
<a href="#Text_Intercepts">Text Intercepts</a> describe the intersection of drawn text <a href="#Glyph">Glyphs</a> with a pair
|
||||
of lines parallel to the text advance. <a href="#Text_Intercepts">Text Intercepts</a> permits creating a
|
||||
underline that skips <a href="undocumented#Descenders">Descenders</a>.
|
||||
underline that skips Descenders.
|
||||
|
||||
<a name="SkPaint_getTextIntercepts"></a>
|
||||
## getTextIntercepts
|
||||
@ -4879,7 +4879,7 @@ int getTextIntercepts(const void* text, size_t length, SkScalar x, SkScalar y,
|
||||
Returns the number of <a href="#SkPaint_getTextIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getTextIntercepts_bounds">bounds</a>.
|
||||
<a href="#SkPaint_getTextIntercepts_bounds">bounds</a> describes a pair of lines parallel to the <a href="#SkPaint_getTextIntercepts_text">text</a> advance.
|
||||
The return count is zero or a multiple of two, and is at most twice the number of <a href="#Glyph">Glyphs</a> in
|
||||
the string.
|
||||
the string.
|
||||
Uses <a href="#Text_Encoding">Text Encoding</a> to decode <a href="#SkPaint_getTextIntercepts_text">text</a>, <a href="undocumented#Typeface">Typeface</a> to get the glyph paths,
|
||||
and <a href="#Text_Size">Text Size</a>, <a href="#Fake_Bold">Fake Bold</a>, and <a href="undocumented#Path_Effect">Path Effect</a> to scale and modify the glyph paths.
|
||||
Uses <a href="#SkPaint_getTextIntercepts_x">x</a>, <a href="#SkPaint_getTextIntercepts_y">y</a>, and <a href="#Text_Align">Text Align</a> to position <a href="#SkPaint_getTextIntercepts_intervals">intervals</a>.
|
||||
@ -4924,7 +4924,7 @@ int getPosTextIntercepts(const void* text, size_t length, const SkPoint pos[],
|
||||
Returns the number of <a href="#SkPaint_getPosTextIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getPosTextIntercepts_bounds">bounds</a>.
|
||||
<a href="#SkPaint_getPosTextIntercepts_bounds">bounds</a> describes a pair of lines parallel to the <a href="#SkPaint_getPosTextIntercepts_text">text</a> advance.
|
||||
The return count is zero or a multiple of two, and is at most twice the number of <a href="#Glyph">Glyphs</a> in
|
||||
the string.
|
||||
the string.
|
||||
Uses <a href="#Text_Encoding">Text Encoding</a> to decode <a href="#SkPaint_getPosTextIntercepts_text">text</a>, <a href="undocumented#Typeface">Typeface</a> to get the glyph paths,
|
||||
and <a href="#Text_Size">Text Size</a>, <a href="#Fake_Bold">Fake Bold</a>, and <a href="undocumented#Path_Effect">Path Effect</a> to scale and modify the glyph paths.
|
||||
Uses <a href="#SkPaint_getPosTextIntercepts_pos">pos</a> array and <a href="#Text_Align">Text Align</a> to position <a href="#SkPaint_getPosTextIntercepts_intervals">intervals</a>.
|
||||
@ -4967,7 +4967,7 @@ int getPosTextHIntercepts(const void* text, size_t length, const SkScalar xpos[]
|
||||
Returns the number of <a href="#SkPaint_getPosTextHIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getPosTextHIntercepts_bounds">bounds</a>.
|
||||
<a href="#SkPaint_getPosTextHIntercepts_bounds">bounds</a> describes a pair of lines parallel to the <a href="#SkPaint_getPosTextHIntercepts_text">text</a> advance.
|
||||
The return count is zero or a multiple of two, and is at most twice the number of <a href="#Glyph">Glyphs</a> in
|
||||
the string.
|
||||
the string.
|
||||
Uses <a href="#Text_Encoding">Text Encoding</a> to decode <a href="#SkPaint_getPosTextHIntercepts_text">text</a>, <a href="undocumented#Typeface">Typeface</a> to get the glyph paths,
|
||||
and <a href="#Text_Size">Text Size</a>, <a href="#Fake_Bold">Fake Bold</a>, and <a href="undocumented#Path_Effect">Path Effect</a> to scale and modify the glyph paths.
|
||||
Uses <a href="#SkPaint_getPosTextHIntercepts_xpos">xpos</a> array, <a href="#SkPaint_getPosTextHIntercepts_constY">constY</a>, and <a href="#Text_Align">Text Align</a> to position <a href="#SkPaint_getPosTextHIntercepts_intervals">intervals</a>.
|
||||
@ -5011,7 +5011,7 @@ int getTextBlobIntercepts(const SkTextBlob* blob, const SkScalar bounds[2], SkSc
|
||||
Returns the number of <a href="#SkPaint_getTextBlobIntercepts_intervals">intervals</a> that intersect <a href="#SkPaint_getTextBlobIntercepts_bounds">bounds</a>.
|
||||
<a href="#SkPaint_getTextBlobIntercepts_bounds">bounds</a> describes a pair of lines parallel to the text advance.
|
||||
The return count is zero or a multiple of two, and is at most twice the number of <a href="#Glyph">Glyphs</a> in
|
||||
the string.
|
||||
the string.
|
||||
Uses <a href="undocumented#Typeface">Typeface</a> to get the glyph paths,
|
||||
and <a href="#Text_Size">Text Size</a>, <a href="#Fake_Bold">Fake Bold</a>, and <a href="undocumented#Path_Effect">Path Effect</a> to scale and modify the glyph paths.
|
||||
Uses run array and <a href="#Text_Align">Text Align</a> to position <a href="#SkPaint_getTextBlobIntercepts_intervals">intervals</a>.
|
||||
@ -5188,7 +5188,7 @@ void toString(SkString* str) const;
|
||||
|
||||
Creates string representation of <a href="#Paint">Paint</a>. The representation is read by
|
||||
internal debugging tools. The interface and implementation may be
|
||||
suppressed by defining <a href="undocumented#SK_IGNORE_TO_STRING">SK IGNORE TO STRING</a>.
|
||||
suppressed by defining SK_IGNORE_TO_STRING.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
@ -2,13 +2,13 @@ SkPath Reference
|
||||
===
|
||||
|
||||
# <a name="Path"></a> Path
|
||||
<a href="#Path">Path</a> contains <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> which can be stroked or filled. <a href="#Contour">Contour</a> is
|
||||
composed of a series of connected <a href="#Line">Lines</a> and <a href="#Curve">Curves</a>. <a href="#Path">Path</a> may contain zero,
|
||||
<a href="#Path">Path</a> contains <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> which can be stroked or filled. <a href="#Contour">Contour</a> is
|
||||
composed of a series of connected <a href="#Line">Lines</a> and <a href="#Curve">Curves</a>. <a href="#Path">Path</a> may contain zero,
|
||||
one, or more <a href="#Contour">Contours</a>.
|
||||
Each <a href="undocumented#Line">Line</a> and <a href="undocumented#Curve">Curve</a> are described by <a href="#Verb">Verb</a>, <a href="#Point">Points</a>, and optional <a href="#Conic_Weight">Conic Weight</a>.
|
||||
|
||||
Each pair of connected <a href="#Line">Lines</a> and <a href="#Curve">Curves</a> share common <a href="SkPoint_Reference#Point">Point</a>; for instance, <a href="#Path">Path</a>
|
||||
containing two connected <a href="#Line">Lines</a> are described the <a href="#Verb">Verb</a> sequence:
|
||||
containing two connected <a href="#Line">Lines</a> are described the <a href="#Verb">Verb</a> sequence:
|
||||
<a href="#SkPath_kMove_Verb">SkPath::kMove Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>, <a href="#SkPath_kLine_Verb">SkPath::kLine Verb</a>; and a <a href="SkPoint_Reference#Point">Point</a> sequence
|
||||
with three entries, sharing
|
||||
the middle entry as the end of the first <a href="undocumented#Line">Line</a> and the start of the second <a href="undocumented#Line">Line</a>.
|
||||
@ -51,15 +51,15 @@ are required to satisfy <a href="#Verb_Array">Verb Array</a>. First <a href="#Ve
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="0374f2dcd7effeb1dd435205a6c2de6f"><div>Each <a href="#SkPath_moveTo">SkPath::moveTo</a> starts a new <a href="#Contour">Contour</a>, and content after <a href="#SkPath_close">SkPath::close()</a>
|
||||
also starts a new <a href="#Contour">Contour</a>. Since <a href="#SkPath_conicTo">SkPath::conicTo</a> is not preceded by
|
||||
also starts a new <a href="#Contour">Contour</a>. Since <a href="#SkPath_conicTo">SkPath::conicTo</a> is not preceded by
|
||||
<a href="#SkPath_moveTo">SkPath::moveTo</a>, the first <a href="SkPoint_Reference#Point">Point</a> of the third <a href="#Contour">Contour</a> starts at the last <a href="SkPoint_Reference#Point">Point</a>
|
||||
of the second <a href="#Contour">Contour</a>.</div></fiddle-embed></div>
|
||||
|
||||
If final <a href="#Verb">Verb</a> in <a href="#Contour">Contour</a> is <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a>, <a href="undocumented#Line">Line</a> connects <a href="#Last_Point">Last Point</a> in
|
||||
<a href="#Contour">Contour</a> with first <a href="SkPoint_Reference#Point">Point</a>. A closed <a href="#Contour">Contour</a>, stroked, draws
|
||||
<a href="#Contour">Contour</a> with first <a href="SkPoint_Reference#Point">Point</a>. A closed <a href="#Contour">Contour</a>, stroked, draws
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a> at <a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a>. Without <a href="#SkPath_kClose_Verb">SkPath::kClose Verb</a>
|
||||
as final <a href="#Verb">Verb</a>, <a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a> are not connected; <a href="#Contour">Contour</a>
|
||||
remains open. An open <a href="#Contour">Contour</a>, stroked, draws <a href="#Stroke_Cap">Paint Stroke Cap</a> at
|
||||
remains open. An open <a href="#Contour">Contour</a>, stroked, draws <a href="#Stroke_Cap">Paint Stroke Cap</a> at
|
||||
<a href="#Last_Point">Last Point</a> and first <a href="SkPoint_Reference#Point">Point</a>.
|
||||
|
||||
### Example
|
||||
@ -79,7 +79,7 @@ makes them visible.
|
||||
|
||||
# <a name="SkPath"></a> Class SkPath
|
||||
<a href="#Path">Paths</a> contain geometry. <a href="#Path">Paths</a> may be empty, or contain one or more <a href="#Verb">Verbs</a> that
|
||||
outline a figure. <a href="#Path">Path</a> always starts with a move verb to a <a href="undocumented#Cartesian_Coordinate">Cartesian Coordinate</a>,
|
||||
outline a figure. <a href="#Path">Path</a> always starts with a move verb to a Cartesian_Coordinate,
|
||||
and may be followed by additional verbs that add lines or curves.
|
||||
Adding a <a href="#SkPath_close">close</a> verb makes the geometry into a continuous loop, a closed contour.
|
||||
<a href="#Path">Paths</a> may contain any number of contours, each beginning with a move verb.
|
||||
@ -93,7 +93,7 @@ outside the geometry. <a href="#Path">Path</a> also describes the winding rule u
|
||||
overlapping contours.
|
||||
|
||||
Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and convexity. Call
|
||||
<a href="#SkPath_updateBoundsCache">SkPath::updateBoundsCache</a> to make <a href="#Path">Path</a> thread safe.
|
||||
<a href="#SkPath_updateBoundsCache">SkPath::updateBoundsCache</a> to make <a href="#Path">Path</a> thread safe.
|
||||
|
||||
# <a name="Overview"></a> Overview
|
||||
|
||||
@ -219,13 +219,13 @@ Internally, <a href="#Path">Path</a> lazily computes metrics likes bounds and co
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#Verb">Verb</a> {
|
||||
<a href="#SkPath_kMove_Verb">kMove Verb</a>,
|
||||
<a href="#SkPath_kLine_Verb">kLine Verb</a>,
|
||||
<a href="#SkPath_kQuad_Verb">kQuad Verb</a>,
|
||||
<a href="#SkPath_kConic_Verb">kConic Verb</a>,
|
||||
<a href="#SkPath_kCubic_Verb">kCubic Verb</a>,
|
||||
<a href="#SkPath_kClose_Verb">kClose Verb</a>,
|
||||
<a href="#SkPath_kDone_Verb">kDone Verb</a>,
|
||||
<a href="#SkPath_kMove_Verb">kMove Verb</a>,
|
||||
<a href="#SkPath_kLine_Verb">kLine Verb</a>,
|
||||
<a href="#SkPath_kQuad_Verb">kQuad Verb</a>,
|
||||
<a href="#SkPath_kConic_Verb">kConic Verb</a>,
|
||||
<a href="#SkPath_kCubic_Verb">kCubic Verb</a>,
|
||||
<a href="#SkPath_kClose_Verb">kClose Verb</a>,
|
||||
<a href="#SkPath_kDone_Verb">kDone Verb</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#Verb">Verb</a> instructs <a href="#Path">Path</a> how to interpret one or more <a href="SkPoint_Reference#Point">Point</a> and optional <a href="#Conic_Weight">Conic Weight</a>;
|
||||
@ -242,20 +242,20 @@ manage <a href="#Contour">Contour</a>, and terminate <a href="#Path">Path</a>.
|
||||
<a href="undocumented#Line">Line</a> is a straight segment from <a href="SkPoint_Reference#Point">Point</a> to <a href="SkPoint_Reference#Point">Point</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPath_kQuad_Verb"> <code><strong>SkPath::kQuad_Verb </strong></code> </a></td><td>2</td><td>Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a>, using control <a href="SkPoint_Reference#Point">Point</a>, and end <a href="SkPoint_Reference#Point">Point</a>.
|
||||
<td><a name="SkPath_kQuad_Verb"> <code><strong>SkPath::kQuad_Verb </strong></code> </a></td><td>2</td><td>Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a>, using control <a href="SkPoint_Reference#Point">Point</a>, and end <a href="SkPoint_Reference#Point">Point</a>.
|
||||
<a href="#Quad">Quad</a> is a parabolic section within tangents from <a href="#Last_Point">Last Point</a> to control <a href="SkPoint_Reference#Point">Point</a>,
|
||||
and control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPath_kConic_Verb"> <code><strong>SkPath::kConic_Verb </strong></code> </a></td><td>3</td><td>Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a>, using control <a href="SkPoint_Reference#Point">Point</a>, end <a href="SkPoint_Reference#Point">Point</a>, and <a href="#Conic_Weight">Conic Weight</a>.
|
||||
<a href="#Conic">Conic</a> is a elliptical, parabolic, or hyperbolic section within tangents
|
||||
<a href="#Conic">Conic</a> is a elliptical, parabolic, or hyperbolic section within tangents
|
||||
from <a href="#Last_Point">Last Point</a> to control <a href="SkPoint_Reference#Point">Point</a>, and control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>, constrained
|
||||
by <a href="#Conic_Weight">Conic Weight</a>. <a href="#Conic_Weight">Conic Weight</a> less than one is elliptical; equal to one is
|
||||
parabolic (and identical to <a href="#Quad">Quad</a>); greater than one hyperbolic.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkPath_kCubic_Verb"> <code><strong>SkPath::kCubic_Verb </strong></code> </a></td><td>4</td><td>Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a>, using two control <a href="#Point">Points</a>, and end <a href="SkPoint_Reference#Point">Point</a>.
|
||||
<a href="#Cubic">Cubic</a> is a third-order <a href="undocumented#Bezier_Curve">Bezier Curve</a> section within tangents from <a href="#Last_Point">Last Point</a>
|
||||
<td><a name="SkPath_kCubic_Verb"> <code><strong>SkPath::kCubic_Verb </strong></code> </a></td><td>4</td><td>Adds <a href="#Cubic">Cubic</a> from <a href="#Last_Point">Last Point</a>, using two control <a href="#Point">Points</a>, and end <a href="SkPoint_Reference#Point">Point</a>.
|
||||
<a href="#Cubic">Cubic</a> is a third-order Bezier_Curve section within tangents from <a href="#Last_Point">Last Point</a>
|
||||
to first control <a href="SkPoint_Reference#Point">Point</a>, and from second control <a href="SkPoint_Reference#Point">Point</a> to end <a href="SkPoint_Reference#Point">Point</a>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -301,8 +301,8 @@ verbs: kMove_Verb kLine_Verb kQuad_Verb kClose_Verb kMove_Verb kCubic_Verb kConi
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#Direction">Direction</a> {
|
||||
<a href="#SkPath_kCW_Direction">kCW Direction</a>,
|
||||
<a href="#SkPath_kCCW_Direction">kCCW Direction</a>,
|
||||
<a href="#SkPath_kCW_Direction">kCW Direction</a>,
|
||||
<a href="#SkPath_kCCW_Direction">kCCW Direction</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#Direction">Direction</a> describes whether <a href="#Contour">Contour</a> is clockwise or counterclockwise.
|
||||
@ -313,7 +313,7 @@ When <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> multiple o
|
||||
measures along <a href="#Path">Path</a> to determine where to start and stop stroke; <a href="#Direction">Direction</a>
|
||||
will change dashed results as it steps clockwise or counterclockwise.
|
||||
|
||||
Closed <a href="#Contour">Contours</a> like <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> added with
|
||||
Closed <a href="#Contour">Contours</a> like <a href="SkRect_Reference#Rect">Rect</a>, <a href="undocumented#Round_Rect">Round Rect</a>, <a href="undocumented#Circle">Circle</a>, and <a href="undocumented#Oval">Oval</a> added with
|
||||
<a href="#SkPath_kCW_Direction">kCW Direction</a> travel clockwise; the same added with <a href="#SkPath_kCCW_Direction">kCCW Direction</a>
|
||||
travel counterclockwise.
|
||||
|
||||
@ -430,7 +430,7 @@ Releases ownership of any shared data and deletes data if <a href="#Path">Path</
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="01ad6be9b7d15a2217daea273eb3d466"><div>delete calls <a href="#Path">Path</a> <a href="undocumented#Destructor">Destructor</a>, but copy of original in path2 is unaffected.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="01ad6be9b7d15a2217daea273eb3d466"><div>delete calls <a href="#Path">Path</a> Destructor, but copy of original in path2 is unaffected.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -576,7 +576,7 @@ If <a href="#Path">Paths</a> contain one or more <a href="#Conic">Conics</a>, th
|
||||
|
||||
<a href="#SkPath_conicTo">conicTo</a> may add different <a href="#Verb">Verbs</a> depending on <a href="#Conic_Weight">Conic Weight</a>, so it is not
|
||||
trivial to <a href="#SkPath_interpolate">interpolate</a> a pair of <a href="#Path">Paths</a> containing <a href="#Conic">Conics</a> with different
|
||||
<a href="#Conic_Weight">Conic Weight</a> values.
|
||||
<a href="#Conic_Weight">Conic Weight</a> values.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -619,12 +619,12 @@ Copy <a href="#Verb_Array">Verb Array</a> and <a href="#Weight">Weights</a> to <
|
||||
average of this <a href="#Point_Array">Point Array</a> and <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>, using the formula:
|
||||
(this->points * <a href="#SkPath_interpolate_weight">weight</a>) + <a href="#SkPath_interpolate_ending">ending</a>->points * (1 - <a href="#SkPath_interpolate_weight">weight</a>).
|
||||
|
||||
<a href="#SkPath_interpolate_weight">weight</a> is most useful when between zero (<a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>) and
|
||||
one (this <a href="#Point_Array">Point Array</a>); will work with values outside of this
|
||||
<a href="#SkPath_interpolate_weight">weight</a> is most useful when between zero (<a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>) and
|
||||
one (this <a href="#Point_Array">Point Array</a>); will work with values outside of this
|
||||
range.
|
||||
|
||||
<a href="#SkPath_interpolate">interpolate</a> returns false and leaves <a href="#SkPath_interpolate_out">out</a> unchanged if <a href="#Point_Array">Point Array</a> is not
|
||||
the same size as <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>. Call <a href="#SkPath_isInterpolatable">isInterpolatable</a> to check <a href="#Path">Path</a>
|
||||
the same size as <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a>. Call <a href="#SkPath_isInterpolatable">isInterpolatable</a> to check <a href="#Path">Path</a>
|
||||
compatibility prior to calling <a href="#SkPath_interpolate">interpolate</a>.
|
||||
|
||||
### Parameters
|
||||
@ -632,7 +632,7 @@ compatibility prior to calling <a href="#SkPath_interpolate">interpolate</a>.
|
||||
<table> <tr> <td><a name="SkPath_interpolate_ending"> <code><strong>ending </strong></code> </a></td> <td>
|
||||
<a href="#Point_Array">Point Array</a> averaged with this <a href="#Point_Array">Point Array</a></td>
|
||||
</tr> <tr> <td><a name="SkPath_interpolate_weight"> <code><strong>weight </strong></code> </a></td> <td>
|
||||
contribution of this <a href="#Point_Array">Point Array</a>, and
|
||||
contribution of this <a href="#Point_Array">Point Array</a>, and
|
||||
one minus contribution of <a href="#SkPath_interpolate_ending">ending</a> <a href="#Point_Array">Point Array</a></td>
|
||||
</tr> <tr> <td><a name="SkPath_interpolate_out"> <code><strong>out </strong></code> </a></td> <td>
|
||||
<a href="#Path">Path</a> replaced by interpolated averages</td>
|
||||
@ -672,16 +672,16 @@ true if <a href="#Path">Path</a> has one owner
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#SkPath_FillType">FillType</a> {
|
||||
<a href="#SkPath_kWinding_FillType">kWinding FillType</a>,
|
||||
<a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>,
|
||||
<a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
<a href="#SkPath_kInverseEvenOdd_FillType">kInverseEvenOdd FillType</a>,
|
||||
<a href="#SkPath_kWinding_FillType">kWinding FillType</a>,
|
||||
<a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>,
|
||||
<a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
<a href="#SkPath_kInverseEvenOdd_FillType">kInverseEvenOdd FillType</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#Fill_Type">Fill Type</a> selects the rule used to fill <a href="#Path">Path</a>. <a href="#Path">Path</a> set to <a href="#SkPath_kWinding_FillType">kWinding FillType</a>
|
||||
<a href="#Fill_Type">Fill Type</a> selects the rule used to fill <a href="#Path">Path</a>. <a href="#Path">Path</a> set to <a href="#SkPath_kWinding_FillType">kWinding FillType</a>
|
||||
fills if the sum of <a href="#Contour">Contour</a> edges is not zero, where clockwise edges add one, and
|
||||
counterclockwise edges subtract one. <a href="#Path">Path</a> set to <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a> fills if the
|
||||
number of <a href="#Contour">Contour</a> edges is odd. Each <a href="#Fill_Type">Fill Type</a> has an inverse variant that
|
||||
number of <a href="#Contour">Contour</a> edges is odd. Each <a href="#Fill_Type">Fill Type</a> has an inverse variant that
|
||||
reverses the rule:
|
||||
<a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a> fills where the sum of <a href="#Contour">Contour</a> edges is zero;
|
||||
<a href="#SkPath_kInverseEvenOdd_FillType">kInverseEvenOdd FillType</a> fills where the number of <a href="#Contour">Contour</a> edges is even.
|
||||
@ -732,7 +732,7 @@ Returns <a href="#SkPath_FillType">FillType</a>, the rule used to fill <a href="
|
||||
|
||||
### Return Value
|
||||
|
||||
one of: <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>, <a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
one of: <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>, <a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
<a href="#SkPath_kInverseEvenOdd_FillType">kInverseEvenOdd FillType</a>
|
||||
|
||||
### Example
|
||||
@ -766,7 +766,7 @@ that <a href="#SkPath_setFillType_ft">ft</a> is legal, values outside of <a href
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkPath_setFillType_ft"> <code><strong>ft </strong></code> </a></td> <td>
|
||||
one of: <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>, <a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
one of: <a href="#SkPath_kWinding_FillType">kWinding FillType</a>, <a href="#SkPath_kEvenOdd_FillType">kEvenOdd FillType</a>, <a href="#SkPath_kInverseWinding_FillType">kInverseWinding FillType</a>,
|
||||
<a href="#SkPath_kInverseEvenOdd_FillType">kInverseEvenOdd FillType</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -846,20 +846,20 @@ unmodified by the original <a href="#SkPath_FillType">FillType</a>.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#Convexity">Convexity</a> : uint8_t {
|
||||
<a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>,
|
||||
<a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>,
|
||||
<a href="#SkPath_kConvex_Convexity">kConvex Convexity</a>,
|
||||
<a href="#SkPath_kConcave_Convexity">kConcave Convexity</a>,
|
||||
<a href="#SkPath_kConcave_Convexity">kConcave Convexity</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#Path">Path</a> is convex if it <a href="#SkPath_contains">contains</a> one <a href="#Contour">Contour</a> and <a href="#Contour">Contour</a> loops no more than
|
||||
360 degrees, and <a href="#Contour">Contour</a> angles all have same <a href="#SkPath_Direction">Direction</a>. Convex <a href="#Path">Path</a>
|
||||
<a href="#Path">Path</a> is convex if it <a href="#SkPath_contains">contains</a> one <a href="#Contour">Contour</a> and <a href="#Contour">Contour</a> loops no more than
|
||||
360 degrees, and <a href="#Contour">Contour</a> angles all have same <a href="#SkPath_Direction">Direction</a>. Convex <a href="#Path">Path</a>
|
||||
may have better performance and require fewer resources on <a href="undocumented#GPU_Surface">GPU Surface</a>.
|
||||
|
||||
<a href="#Path">Path</a> is concave when either at least one <a href="#SkPath_Direction">Direction</a> change is clockwise and
|
||||
another is counterclockwise, or the sum of the changes in <a href="#SkPath_Direction">Direction</a> is not 360
|
||||
degrees.
|
||||
|
||||
Initially <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>. <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is computed
|
||||
Initially <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>. <a href="#Path">Path</a> <a href="#Convexity">Convexity</a> is computed
|
||||
if needed by destination <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
|
||||
### Constants
|
||||
@ -893,7 +893,7 @@ if needed by destination <a href="SkSurface_Reference#Surface">Surface</a>.
|
||||
Convexity getConvexity() const
|
||||
</pre>
|
||||
|
||||
Computes <a href="#Convexity">Convexity</a> if required, and returns stored value.
|
||||
Computes <a href="#Convexity">Convexity</a> if required, and returns stored value.
|
||||
<a href="#Convexity">Convexity</a> is computed if stored value is <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a>,
|
||||
or if <a href="#Path">Path</a> has been altered since <a href="#Convexity">Convexity</a> was computed or set.
|
||||
|
||||
@ -918,7 +918,7 @@ computed or stored <a href="#Convexity">Convexity</a>
|
||||
Convexity getConvexityOrUnknown() const
|
||||
</pre>
|
||||
|
||||
Returns last computed <a href="#Convexity">Convexity</a>, or <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a> if
|
||||
Returns last computed <a href="#Convexity">Convexity</a>, or <a href="#SkPath_kUnknown_Convexity">kUnknown Convexity</a> if
|
||||
<a href="#Path">Path</a> has been altered since <a href="#Convexity">Convexity</a> was computed or set.
|
||||
|
||||
### Return Value
|
||||
@ -988,7 +988,7 @@ true if <a href="#Convexity">Convexity</a> stored or computed is <a href="#SkPat
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="dfd2c40e1c2a7b539a94aec8d040d349"><div>Concave shape is erroneously considered convex after a forced call to
|
||||
<div><fiddle-embed name="dfd2c40e1c2a7b539a94aec8d040d349"><div>Concave shape is erroneously considered convex after a forced call to
|
||||
<a href="#SkPath_setConvexity">setConvexity</a>.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -1136,7 +1136,7 @@ Removes <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array
|
||||
Internal storage associated with <a href="#Path">Path</a> is retained.
|
||||
|
||||
Use <a href="#SkPath_rewind">rewind</a> instead of <a href="#SkPath_reset">reset</a> if <a href="#Path">Path</a> storage will be reused and performance
|
||||
is critical.
|
||||
is critical.
|
||||
|
||||
### Example
|
||||
|
||||
@ -1157,7 +1157,7 @@ bool isEmpty() const
|
||||
</pre>
|
||||
|
||||
Empty <a href="#Path">Path</a> may have <a href="#SkPath_FillType">FillType</a> but has no <a href="SkPoint_Reference#SkPoint">SkPoint</a>, <a href="#SkPath_Verb">Verb</a>, or <a href="#Conic_Weight">Conic Weight</a>.
|
||||
<a href="#SkPath_empty_constructor">SkPath()</a> constructs empty <a href="#Path">Path</a>; <a href="#SkPath_reset">reset</a> and (<a href="#SkPath_rewind">rewind</a>) make <a href="#Path">Path</a> empty.
|
||||
<a href="#SkPath_empty_constructor">SkPath()</a> constructs empty <a href="#Path">Path</a>; <a href="#SkPath_reset">reset</a> and (<a href="#SkPath_rewind">rewind</a>) make <a href="#Path">Path</a> empty.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1193,7 +1193,7 @@ bool isLastContourClosed() const
|
||||
</pre>
|
||||
|
||||
<a href="#Contour">Contour</a> is closed if <a href="#Path">Path</a> <a href="#SkPath_Verb">Verb</a> array was last modified by <a href="#SkPath_close">close</a>. When stroked,
|
||||
closed <a href="#Contour">Contour</a> draws <a href="#Stroke_Join">Paint Stroke Join</a> instead of <a href="#Stroke_Cap">Paint Stroke Cap</a> at first and last <a href="SkPoint_Reference#Point">Point</a>.
|
||||
closed <a href="#Contour">Contour</a> draws <a href="#Stroke_Join">Paint Stroke Join</a> instead of <a href="#Stroke_Cap">Paint Stroke Cap</a> at first and last <a href="SkPoint_Reference#Point">Point</a>.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1264,7 +1264,7 @@ bool isVolatile() const
|
||||
</pre>
|
||||
|
||||
Returns true if the path is volatile; it will not be altered or discarded
|
||||
by the caller after it is drawn. <a href="#Path">Paths</a> by default have volatile set false, allowing
|
||||
by the caller after it is drawn. <a href="#Path">Paths</a> by default have volatile set false, allowing
|
||||
<a href="SkSurface_Reference#Surface">Surface</a> to attach a cache of data which speeds repeated drawing. If true, <a href="SkSurface_Reference#Surface">Surface</a>
|
||||
may not speed repeated drawing.
|
||||
|
||||
@ -1298,7 +1298,7 @@ void setIsVolatile(bool isVolatile)
|
||||
</pre>
|
||||
|
||||
Specify whether <a href="#Path">Path</a> is volatile; whether it will be altered or discarded
|
||||
by the caller after it is drawn. <a href="#Path">Paths</a> by default have volatile set false, allowing
|
||||
by the caller after it is drawn. <a href="#Path">Paths</a> by default have volatile set false, allowing
|
||||
<a href="undocumented#Device">Device</a> to attach a cache of data which speeds repeated drawing.
|
||||
|
||||
Mark temporary paths, discarded or modified after use, as volatile
|
||||
@ -1336,7 +1336,7 @@ static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact)
|
||||
|
||||
Test if <a href="undocumented#Line">Line</a> between <a href="SkPoint_Reference#Point">Point</a> pair is degenerate.
|
||||
<a href="undocumented#Line">Line</a> with no length or that moves a very short distance is degenerate; it is
|
||||
treated as a point.
|
||||
treated as a point.
|
||||
|
||||
<a href="#SkPath_IsLineDegenerate_exact">exact</a> changes the equality test. If true, returns true only if <a href="#SkPath_IsLineDegenerate_p1">p1</a> equals <a href="#SkPath_IsLineDegenerate_p2">p2</a>.
|
||||
If false, returns true if <a href="#SkPath_IsLineDegenerate_p1">p1</a> equals or nearly equals <a href="#SkPath_IsLineDegenerate_p2">p2</a>.
|
||||
@ -1388,7 +1388,7 @@ static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2, const SkPoint
|
||||
|
||||
Test if <a href="#Quad">Quad</a> is degenerate.
|
||||
<a href="#Quad">Quad</a> with no length or that moves a very short distance is degenerate; it is
|
||||
treated as a point.
|
||||
treated as a point.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1399,7 +1399,7 @@ treated as a point.
|
||||
</tr> <tr> <td><a name="SkPath_IsQuadDegenerate_p3"> <code><strong>p3 </strong></code> </a></td> <td>
|
||||
<a href="#Quad">Quad</a> end point</td>
|
||||
</tr> <tr> <td><a name="SkPath_IsQuadDegenerate_exact"> <code><strong>exact </strong></code> </a></td> <td>
|
||||
if true, returns true only if <a href="#SkPath_IsQuadDegenerate_p1">p1</a>, <a href="#SkPath_IsQuadDegenerate_p2">p2</a>, and <a href="#SkPath_IsQuadDegenerate_p3">p3</a> are equal;
|
||||
if true, returns true only if <a href="#SkPath_IsQuadDegenerate_p1">p1</a>, <a href="#SkPath_IsQuadDegenerate_p2">p2</a>, and <a href="#SkPath_IsQuadDegenerate_p3">p3</a> are equal;
|
||||
if false, returns true if <a href="#SkPath_IsQuadDegenerate_p1">p1</a>, <a href="#SkPath_IsQuadDegenerate_p2">p2</a>, and <a href="#SkPath_IsQuadDegenerate_p3">p3</a> are equal or nearly equal</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -1441,7 +1441,7 @@ static bool IsCubicDegenerate(const SkPoint& p1, const SkPoint& p2, const SkPoin
|
||||
|
||||
Test if <a href="#Cubic">Cubic</a> is degenerate.
|
||||
<a href="#Cubic">Cubic</a> with no length or that moves a very short distance is degenerate; it is
|
||||
treated as a point.
|
||||
treated as a point.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1454,7 +1454,7 @@ treated as a point.
|
||||
</tr> <tr> <td><a name="SkPath_IsCubicDegenerate_p4"> <code><strong>p4 </strong></code> </a></td> <td>
|
||||
<a href="#Cubic">Cubic</a> end point</td>
|
||||
</tr> <tr> <td><a name="SkPath_IsCubicDegenerate_exact"> <code><strong>exact </strong></code> </a></td> <td>
|
||||
if true, returns true only if <a href="#SkPath_IsCubicDegenerate_p1">p1</a>, <a href="#SkPath_IsCubicDegenerate_p2">p2</a>, <a href="#SkPath_IsCubicDegenerate_p3">p3</a>, and <a href="#SkPath_IsCubicDegenerate_p4">p4</a> are equal;
|
||||
if true, returns true only if <a href="#SkPath_IsCubicDegenerate_p1">p1</a>, <a href="#SkPath_IsCubicDegenerate_p2">p2</a>, <a href="#SkPath_IsCubicDegenerate_p3">p3</a>, and <a href="#SkPath_IsCubicDegenerate_p4">p4</a> are equal;
|
||||
if false, returns true if <a href="#SkPath_IsCubicDegenerate_p1">p1</a>, <a href="#SkPath_IsCubicDegenerate_p2">p2</a>, <a href="#SkPath_IsCubicDegenerate_p3">p3</a>, and <a href="#SkPath_IsCubicDegenerate_p4">p4</a> are equal or nearly equal</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -1486,8 +1486,8 @@ bool isLine(SkPoint line[2]) const
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> only one <a href="undocumented#Line">Line</a>;
|
||||
<a href="#Verb">Path Verb</a> array has two entries: <a href="#SkPath_kMove_Verb">kMove Verb</a>, <a href="#SkPath_kLine_Verb">kLine Verb</a>.
|
||||
If <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> one <a href="undocumented#Line">Line</a> and <a href="#SkPath_isLine_line">line</a> is not nullptr, <a href="#SkPath_isLine_line">line</a> is set to
|
||||
<a href="#Verb">Path Verb</a> array has two entries: <a href="#SkPath_kMove_Verb">kMove Verb</a>, <a href="#SkPath_kLine_Verb">kLine Verb</a>.
|
||||
If <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> one <a href="undocumented#Line">Line</a> and <a href="#SkPath_isLine_line">line</a> is not nullptr, <a href="#SkPath_isLine_line">line</a> is set to
|
||||
<a href="undocumented#Line">Line</a> start point and <a href="undocumented#Line">Line</a> end point.
|
||||
Returns false if <a href="#Path">Path</a> is not one <a href="undocumented#Line">Line</a>; <a href="#SkPath_isLine_line">line</a> is unaltered.
|
||||
|
||||
@ -1538,7 +1538,7 @@ int getPoints(SkPoint points[], int max) const
|
||||
|
||||
Returns number of <a href="#SkPath_getPoints_points">points</a> in <a href="#Path">Path</a>. Up to <a href="#SkPath_getPoints_max">max</a> <a href="#SkPath_getPoints_points">points</a> are copied.
|
||||
<a href="#SkPath_getPoints_points">points</a> may be nullptr; then, <a href="#SkPath_getPoints_max">max</a> must be zero.
|
||||
If <a href="#SkPath_getPoints_max">max</a> is greater than number of <a href="#SkPath_getPoints_points">points</a>, excess <a href="#SkPath_getPoints_points">points</a> storage is unaltered.
|
||||
If <a href="#SkPath_getPoints_max">max</a> is greater than number of <a href="#SkPath_getPoints_points">points</a>, excess <a href="#SkPath_getPoints_points">points</a> storage is unaltered.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1582,7 +1582,7 @@ int countPoints() const
|
||||
</pre>
|
||||
|
||||
Returns the number of points in <a href="#Path">Path</a>.
|
||||
<a href="SkPoint_Reference#Point">Point</a> count is initially zero.
|
||||
<a href="SkPoint_Reference#Point">Point</a> count is initially zero.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -1618,7 +1618,7 @@ SkPoint getPoint(int index) const
|
||||
|
||||
Returns <a href="SkPoint_Reference#Point">Point</a> at <a href="#SkPath_getPoint_index">index</a> in <a href="#Point_Array">Point Array</a>. Valid range for <a href="#SkPath_getPoint_index">index</a> is
|
||||
0 to <a href="#SkPath_countPoints">countPoints</a> - 1.
|
||||
Returns (0, 0) if <a href="#SkPath_getPoint_index">index</a> is out of range.
|
||||
Returns (0, 0) if <a href="#SkPath_getPoint_index">index</a> is out of range.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1658,7 +1658,7 @@ the quantity of <a href="#SkPath_kMove_Verb">kMove Verb</a> equals the <a href="
|
||||
<a href="#Verb_Array">Verb Array</a> does not include or count <a href="#SkPath_kDone_Verb">kDone Verb</a>; it is a convenience
|
||||
returned when iterating through <a href="#Verb_Array">Verb Array</a>.
|
||||
|
||||
<a href="#Verb_Array">Verb Array</a> may be read directly from <a href="#Path">Path</a> with <a href="#SkPath_getVerbs">getVerbs</a>, or inspected with <a href="#SkPath_Iter">Iter</a>,
|
||||
<a href="#Verb_Array">Verb Array</a> may be read directly from <a href="#Path">Path</a> with <a href="#SkPath_getVerbs">getVerbs</a>, or inspected with <a href="#SkPath_Iter">Iter</a>,
|
||||
or with <a href="#SkPath_RawIter">RawIter</a>.
|
||||
|
||||
<a name="SkPath_countVerbs"></a>
|
||||
@ -1668,7 +1668,7 @@ or with <a href="#SkPath_RawIter">RawIter</a>.
|
||||
int countVerbs() const
|
||||
</pre>
|
||||
|
||||
Returns the number of <a href="#Verb">Verbs</a>: <a href="#SkPath_kMove_Verb">kMove Verb</a>, <a href="#SkPath_kLine_Verb">kLine Verb</a>, <a href="#SkPath_kQuad_Verb">kQuad Verb</a>, <a href="#SkPath_kConic_Verb">kConic Verb</a>,
|
||||
Returns the number of <a href="#Verb">Verbs</a>: <a href="#SkPath_kMove_Verb">kMove Verb</a>, <a href="#SkPath_kLine_Verb">kLine Verb</a>, <a href="#SkPath_kQuad_Verb">kQuad Verb</a>, <a href="#SkPath_kConic_Verb">kConic Verb</a>,
|
||||
<a href="#SkPath_kCubic_Verb">kCubic Verb</a>, and <a href="#SkPath_kClose_Verb">kClose Verb</a>; added to <a href="#Path">Path</a>.
|
||||
|
||||
### Return Value
|
||||
@ -1786,7 +1786,7 @@ path2 bounds = 10, 20, 30, 40
|
||||
const SkRect& getBounds() const
|
||||
</pre>
|
||||
|
||||
Returns minimum and maximum x and y values of <a href="#Point_Array">Point Array</a>.
|
||||
Returns minimum and maximum x and y values of <a href="#Point_Array">Point Array</a>.
|
||||
Returns (0, 0, 0, 0) if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> no points. Returned bounds width and height may
|
||||
be larger or smaller than area affected when <a href="#Path">Path</a> is drawn.
|
||||
|
||||
@ -1830,7 +1830,7 @@ Unaltered copies of <a href="#Path">Path</a> may also access cached bounds throu
|
||||
|
||||
For now, identical to calling <a href="#SkPath_getBounds">getBounds</a> and ignoring the returned value.
|
||||
|
||||
Call to prepare <a href="#Path">Path</a> subsequently drawn from multiple threads,
|
||||
Call to prepare <a href="#Path">Path</a> subsequently drawn from multiple threads,
|
||||
to avoid a race condition where each draw separately computes the bounds.
|
||||
|
||||
### Example
|
||||
@ -1861,8 +1861,8 @@ SkRect computeTightBounds() const
|
||||
</pre>
|
||||
|
||||
Returns minimum and maximum x and y values of the lines and curves in <a href="#Path">Path</a>.
|
||||
Returns (0, 0, 0, 0) if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> no points.
|
||||
Returned bounds width and height may be larger or smaller than area affected
|
||||
Returns (0, 0, 0, 0) if <a href="#Path">Path</a> <a href="#SkPath_contains">contains</a> no points.
|
||||
Returned bounds width and height may be larger or smaller than area affected
|
||||
when <a href="#Path">Path</a> is drawn.
|
||||
|
||||
Includes <a href="#Point">Points</a> associated with <a href="#SkPath_kMove_Verb">kMove Verb</a> that define empty
|
||||
@ -1904,7 +1904,7 @@ rotated circle bounds = 25, 20, 75, 70
|
||||
bool conservativelyContainsRect(const SkRect& rect) const
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained by <a href="#Path">Path</a>.
|
||||
Returns true if <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained by <a href="#Path">Path</a>.
|
||||
May return false when <a href="#SkPath_conservativelyContainsRect_rect">rect</a> is contained by <a href="#Path">Path</a>.
|
||||
|
||||
For now, only returns true if <a href="#Path">Path</a> has one <a href="#Contour">Contour</a> and is convex.
|
||||
@ -2021,7 +2021,7 @@ void rMoveTo(SkScalar dx, SkScalar dy)
|
||||
|
||||
Adds beginning of <a href="#Contour">Contour</a> relative to <a href="#Last_Point">Last Point</a>.
|
||||
If <a href="#Path">Path</a> is empty, starts <a href="#Contour">Contour</a> at (<a href="#SkPath_rMoveTo_dx">dx</a>, <a href="#SkPath_rMoveTo_dy">dy</a>).
|
||||
Otherwise, start <a href="#Contour">Contour</a> at <a href="#Last_Point">Last Point</a> <a href="#SkPath_offset">offset</a> by (<a href="#SkPath_rMoveTo_dx">dx</a>, <a href="#SkPath_rMoveTo_dy">dy</a>).
|
||||
Otherwise, start <a href="#Contour">Contour</a> at <a href="#Last_Point">Last Point</a> <a href="#SkPath_offset">offset</a> by (<a href="#SkPath_rMoveTo_dx">dx</a>, <a href="#SkPath_rMoveTo_dy">dy</a>).
|
||||
Function name stands for "relative move to".
|
||||
|
||||
### Parameters
|
||||
@ -2162,7 +2162,7 @@ tangent to the line between control <a href="SkPoint_Reference#Point">Point</a>
|
||||
void quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
|
||||
</pre>
|
||||
|
||||
Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards (<a href="#SkPath_quadTo_x1">x1</a>, <a href="#SkPath_quadTo_y1">y1</a>), to (<a href="#SkPath_quadTo_x2">x2</a>, <a href="#SkPath_quadTo_y2">y2</a>).
|
||||
Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards (<a href="#SkPath_quadTo_x1">x1</a>, <a href="#SkPath_quadTo_y1">y1</a>), to (<a href="#SkPath_quadTo_x2">x2</a>, <a href="#SkPath_quadTo_y2">y2</a>).
|
||||
If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0)
|
||||
before adding <a href="#Quad">Quad</a>.
|
||||
|
||||
@ -2197,7 +2197,7 @@ end <a href="SkPoint_Reference#Point">Point</a> of <a href="#Quad">Quad</a> in y
|
||||
void quadTo(const SkPoint& p1, const SkPoint& p2)
|
||||
</pre>
|
||||
|
||||
Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p2">p2</a>.
|
||||
Adds <a href="#Quad">Quad</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_quadTo_2_p2">p2</a>.
|
||||
If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0)
|
||||
before adding <a href="#Quad">Quad</a>.
|
||||
|
||||
@ -2267,7 +2267,7 @@ Function name stands for "relative quad to".
|
||||
|
||||
# <a name="Conic"></a> Conic
|
||||
<a href="#Conic">Conic</a> describes a conical section: a piece of an ellipse, or a piece of a
|
||||
parabola, or a piece of a hyperbola. <a href="#Conic">Conic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>,
|
||||
parabola, or a piece of a hyperbola. <a href="#Conic">Conic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>,
|
||||
curves towards a control <a href="SkPoint_Reference#Point">Point</a>, and then curves to an end <a href="SkPoint_Reference#Point">Point</a>. The influence
|
||||
of the control <a href="SkPoint_Reference#Point">Point</a> is determined by <a href="#Conic_Weight">Conic Weight</a>.
|
||||
|
||||
@ -2278,7 +2278,7 @@ may be inspected with <a href="#SkPath_Iter">Iter</a>, or with <a href="#SkPath_
|
||||
|
||||
<a href="#Conic_Weight">Weight</a> determines both the strength of the control <a href="SkPoint_Reference#Point">Point</a> and the type of <a href="#Conic">Conic</a>.
|
||||
If <a href="#Conic_Weight">Weight</a> is exactly one, then <a href="#Conic">Conic</a> is identical to <a href="#Quad">Quad</a>; it is always a
|
||||
parabolic segment.
|
||||
parabolic segment.
|
||||
|
||||
### Example
|
||||
|
||||
@ -2336,7 +2336,7 @@ done
|
||||
void conicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
|
||||
</pre>
|
||||
|
||||
Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards (<a href="#SkPath_conicTo_x1">x1</a>, <a href="#SkPath_conicTo_y1">y1</a>), to (<a href="#SkPath_conicTo_x2">x2</a>, <a href="#SkPath_conicTo_y2">y2</a>), weighted by <a href="#SkPath_conicTo_w">w</a>.
|
||||
Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards (<a href="#SkPath_conicTo_x1">x1</a>, <a href="#SkPath_conicTo_y1">y1</a>), to (<a href="#SkPath_conicTo_x2">x2</a>, <a href="#SkPath_conicTo_y2">y2</a>), weighted by <a href="#SkPath_conicTo_w">w</a>.
|
||||
If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0)
|
||||
before adding <a href="#Conic">Conic</a>.
|
||||
|
||||
@ -2368,7 +2368,7 @@ weight of added <a href="#Conic">Conic</a></td>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="358d9b6060b528b0923c007420f09c13"><div>As weight increases, curve is pulled towards control point.
|
||||
<div><fiddle-embed name="358d9b6060b528b0923c007420f09c13"><div>As weight increases, curve is pulled towards control point.
|
||||
The bottom two curves are elliptical; the next is parabolic; the
|
||||
top curve is hyperbolic.</div></fiddle-embed></div>
|
||||
|
||||
@ -2382,7 +2382,7 @@ top curve is hyperbolic.</div></fiddle-embed></div>
|
||||
void conicTo(const SkPoint& p1, const SkPoint& p2, SkScalar w)
|
||||
</pre>
|
||||
|
||||
Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p2">p2</a>, weighted by <a href="#SkPath_conicTo_2_w">w</a>.
|
||||
Adds <a href="#Conic">Conic</a> from <a href="#Last_Point">Last Point</a> towards <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p1">p1</a>, to <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_conicTo_2_p2">p2</a>, weighted by <a href="#SkPath_conicTo_2_w">w</a>.
|
||||
If <a href="#Path">Path</a> is empty, or last <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0)
|
||||
before adding <a href="#Conic">Conic</a>.
|
||||
|
||||
@ -2431,7 +2431,7 @@ weighted by <a href="#SkPath_rConicTo_w">w</a>. If <a href="#Path">Path</a> is e
|
||||
is <a href="#SkPath_kClose_Verb">kClose Verb</a>, <a href="#Last_Point">Last Point</a> is set to (0, 0) before adding <a href="#Conic">Conic</a>.
|
||||
|
||||
Appends <a href="#SkPath_kMove_Verb">kMove Verb</a> to <a href="#Verb_Array">Verb Array</a> and (0, 0) to <a href="#Point_Array">Point Array</a>,
|
||||
if needed.
|
||||
if needed.
|
||||
If <a href="#SkPath_rConicTo_w">w</a> is finite and not one, next appends <a href="#SkPath_kConic_Verb">kConic Verb</a> to <a href="#Verb_Array">Verb Array</a>,
|
||||
and <a href="#SkPath_rConicTo_w">w</a> is recorded as <a href="#Conic_Weight">Conic Weight</a>; otherwise, if <a href="#SkPath_rConicTo_w">w</a> is one, appends
|
||||
<a href="#SkPath_kQuad_Verb">kQuad Verb</a> to <a href="#Verb_Array">Verb Array</a>; or if <a href="#SkPath_rConicTo_w">w</a> is not finite, appends <a href="#SkPath_kLine_Verb">kLine Verb</a>
|
||||
@ -2469,7 +2469,7 @@ weight of added <a href="#Conic">Conic</a></td>
|
||||
---
|
||||
|
||||
# <a name="Cubic"></a> Cubic
|
||||
<a href="#Cubic">Cubic</a> describes a <a href="undocumented#Bezier_Curve">Bezier Curve</a> segment described by a third-order polynomial.
|
||||
<a href="#Cubic">Cubic</a> describes a Bezier_Curve segment described by a third-order polynomial.
|
||||
<a href="#Cubic">Cubic</a> begins at a start <a href="SkPoint_Reference#Point">Point</a>, curving towards the first control <a href="SkPoint_Reference#Point">Point</a>;
|
||||
and curves from the end <a href="SkPoint_Reference#Point">Point</a> towards the second control <a href="SkPoint_Reference#Point">Point</a>.
|
||||
|
||||
@ -2608,7 +2608,7 @@ All <a href="#Arc">Arc</a> draws are implemented by one or more <a href="#Conic"
|
||||
|
||||
<a href="#SkPath_arcTo">arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool forceMoveTo)</a>
|
||||
describes <a href="#Arc">Arc</a> as a piece of <a href="undocumented#Oval">Oval</a>, beginning at start angle, sweeping clockwise or counterclockwise,
|
||||
which may continue <a href="#Contour">Contour</a> or start a new one. This construction is similar to <a href="undocumented#PostScript">PostScript</a> and
|
||||
which may continue <a href="#Contour">Contour</a> or start a new one. This construction is similar to <a href="undocumented#PostScript">PostScript</a> and
|
||||
<a href="undocumented#HTML_Canvas">HTML Canvas</a> arcs. Variation <a href="#SkPath_addArc">addArc</a> always starts new <a href="#Contour">Contour</a>. Canvas::drawArc draws without
|
||||
requiring <a href="#Path">Path</a>.
|
||||
|
||||
@ -2618,14 +2618,14 @@ where (x0, y0) is the last <a href="SkPoint_Reference#Point">Point</a> added to
|
||||
<a href="undocumented#HTML_Canvas">HTML Canvas</a> arcs.
|
||||
|
||||
<a href="#SkPath_arcTo_4">arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep,
|
||||
SkScalar x, SkScalar y)</a>
|
||||
SkScalar x, SkScalar y)</a>
|
||||
describes <a href="#Arc">Arc</a> as part of <a href="undocumented#Oval">Oval</a> with radii (rx, ry), beginning at
|
||||
last <a href="SkPoint_Reference#Point">Point</a> added to <a href="#Path">Path</a> and ending at (x, y). More than one <a href="#Arc">Arc</a> satisfies this criteria,
|
||||
so additional values choose a single solution. This construction is similar to <a href="undocumented#SVG">SVG</a> arcs.
|
||||
|
||||
<a href="#SkPath_conicTo">conicTo</a> describes <a href="#Arc">Arc</a> of less than 180 degrees as a pair of tangent lines and <a href="#Conic_Weight">Conic Weight</a>.
|
||||
<a href="#SkPath_conicTo">conicTo</a> can represent any <a href="#Arc">Arc</a> with a sweep less than 180 degrees at any rotation. All <a href="#SkPath_arcTo">arcTo</a>
|
||||
constructions are converted to <a href="#Conic">Conic</a> data when added to <a href="#Path">Path</a>.
|
||||
constructions are converted to <a href="#Conic">Conic</a> data when added to <a href="#Path">Path</a>.
|
||||
|
||||
### Example
|
||||
|
||||
@ -2698,7 +2698,7 @@ void arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius)
|
||||
Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, after appending <a href="undocumented#Line">Line</a> if needed. <a href="#Arc">Arc</a> is implemented by <a href="#Conic">Conic</a>
|
||||
weighted to describe part of <a href="undocumented#Circle">Circle</a>. <a href="#Arc">Arc</a> is contained by tangent from
|
||||
last <a href="#Path">Path</a> point (x0, y0) to (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>), and tangent from (<a href="#SkPath_arcTo_2_x1">x1</a>, <a href="#SkPath_arcTo_2_y1">y1</a>) to (<a href="#SkPath_arcTo_2_x2">x2</a>, <a href="#SkPath_arcTo_2_y2">y2</a>). <a href="#Arc">Arc</a>
|
||||
is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_arcTo_2_radius">radius</a>, positioned so it touches both tangent lines.
|
||||
is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_arcTo_2_radius">radius</a>, positioned so it touches both tangent lines.
|
||||
|
||||
### Example
|
||||
|
||||
@ -2759,7 +2759,7 @@ void arcTo(const SkPoint p1, const SkPoint p2, SkScalar radius)
|
||||
Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, after appending <a href="undocumented#Line">Line</a> if needed. <a href="#Arc">Arc</a> is implemented by <a href="#Conic">Conic</a>
|
||||
weighted to describe part of <a href="undocumented#Circle">Circle</a>. <a href="#Arc">Arc</a> is contained by tangent from
|
||||
last <a href="#Path">Path</a> point to <a href="#SkPath_arcTo_3_p1">p1</a>, and tangent from <a href="#SkPath_arcTo_3_p1">p1</a> to <a href="#SkPath_arcTo_3_p2">p2</a>. <a href="#Arc">Arc</a>
|
||||
is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_arcTo_3_radius">radius</a>, positioned so it touches both tangent lines.
|
||||
is part of <a href="undocumented#Circle">Circle</a> sized to <a href="#SkPath_arcTo_3_radius">radius</a>, positioned so it touches both tangent lines.
|
||||
|
||||
If last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> does not start <a href="#Arc">Arc</a>, <a href="#SkPath_arcTo">arcTo</a> appends connecting <a href="undocumented#Line">Line</a> to <a href="#Path">Path</a>.
|
||||
The length of <a href="SkPoint_Reference#Vector">Vector</a> from <a href="#SkPath_arcTo_3_p1">p1</a> to <a href="#SkPath_arcTo_3_p2">p2</a> does not affect <a href="#Arc">Arc</a>.
|
||||
@ -2805,8 +2805,8 @@ line (156,20),(200,20)
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#SkPath_ArcSize">ArcSize</a> {
|
||||
<a href="#SkPath_kSmall_ArcSize">kSmall ArcSize</a>,
|
||||
<a href="#SkPath_kLarge_ArcSize">kLarge ArcSize</a>,
|
||||
<a href="#SkPath_kSmall_ArcSize">kSmall ArcSize</a>,
|
||||
<a href="#SkPath_kLarge_ArcSize">kLarge ArcSize</a>,
|
||||
};</pre>
|
||||
|
||||
Four <a href="undocumented#Oval">Oval</a> parts with radii (rx, ry) start at last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> and ends at (x, y).
|
||||
@ -2933,11 +2933,11 @@ void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, Di
|
||||
SkScalar dx, SkScalar dy)
|
||||
</pre>
|
||||
|
||||
Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, relative to last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a>. <a href="#Arc">Arc</a> is implemented by one or
|
||||
Append <a href="#Arc">Arc</a> to <a href="#Path">Path</a>, relative to last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a>. <a href="#Arc">Arc</a> is implemented by one or
|
||||
more <a href="#Conic">Conic</a>, weighted to describe part of <a href="undocumented#Oval">Oval</a> with radii (<a href="#SkPath_rArcTo_rx">rx</a>, <a href="#SkPath_rArcTo_ry">ry</a>) rotated by
|
||||
<a href="#SkPath_rArcTo_xAxisRotate">xAxisRotate</a> degrees. <a href="#Arc">Arc</a> curves from last <a href="#Path">Path</a> <a href="SkPoint_Reference#Point">Point</a> (x0, y0) to end <a href="SkPoint_Reference#Point">Point</a>:
|
||||
|
||||
(x0 + <a href="#SkPath_rArcTo_dx">dx</a>, y0 + <a href="#SkPath_rArcTo_dy">dy</a>),
|
||||
(x0 + <a href="#SkPath_rArcTo_dx">dx</a>, y0 + <a href="#SkPath_rArcTo_dy">dy</a>),
|
||||
choosing one of four possible routes: clockwise or
|
||||
counterclockwise, and smaller or larger. If <a href="#Path">Path</a> is empty, the start <a href="#Arc">Arc</a> <a href="SkPoint_Reference#Point">Point</a>
|
||||
is (0, 0).
|
||||
@ -2991,7 +2991,7 @@ void close()
|
||||
Append <a href="#SkPath_kClose_Verb">kClose Verb</a> to <a href="#Path">Path</a>. A closed <a href="#Contour">Contour</a> connects the first and last <a href="SkPoint_Reference#Point">Point</a>
|
||||
with <a href="undocumented#Line">Line</a>, forming a continuous loop. Open and closed <a href="#Contour">Contour</a> draw the same
|
||||
with <a href="#SkPaint_kFill_Style">SkPaint::kFill Style</a>. With <a href="#SkPaint_kStroke_Style">SkPaint::kStroke Style</a>, open <a href="#Contour">Contour</a> draws
|
||||
<a href="#Stroke_Cap">Paint Stroke Cap</a> at <a href="#Contour">Contour</a> start and end; closed <a href="#Contour">Contour</a> draws
|
||||
<a href="#Stroke_Cap">Paint Stroke Cap</a> at <a href="#Contour">Contour</a> start and end; closed <a href="#Contour">Contour</a> draws
|
||||
<a href="#Stroke_Join">Paint Stroke Join</a> at <a href="#Contour">Contour</a> start and end.
|
||||
|
||||
<a href="#SkPath_close">close</a> has no effect if <a href="#Path">Path</a> is empty or last <a href="#Path">Path</a> <a href="#SkPath_Verb">Verb</a> is <a href="#SkPath_kClose_Verb">kClose Verb</a>.
|
||||
@ -3113,11 +3113,11 @@ static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPoi
|
||||
</pre>
|
||||
|
||||
Approximates <a href="#Conic">Conic</a> with <a href="#Quad">Quad</a> array. <a href="#Conic">Conic</a> is constructed from start <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p0">p0</a>,
|
||||
control <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p1">p1</a>, end <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p2">p2</a>, and weight <a href="#SkPath_ConvertConicToQuads_w">w</a>.
|
||||
control <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p1">p1</a>, end <a href="SkPoint_Reference#Point">Point</a> <a href="#SkPath_ConvertConicToQuads_p2">p2</a>, and weight <a href="#SkPath_ConvertConicToQuads_w">w</a>.
|
||||
<a href="#Quad">Quad</a> array is stored in <a href="#SkPath_ConvertConicToQuads_pts">pts</a>; this storage is supplied by caller.
|
||||
Maximum <a href="#Quad">Quad</a> count is 2 to the <a href="#SkPath_ConvertConicToQuads_pow2">pow2</a>.
|
||||
Every third point in array shares last <a href="SkPoint_Reference#Point">Point</a> of previous <a href="#Quad">Quad</a> and first <a href="SkPoint_Reference#Point">Point</a> of
|
||||
next <a href="#Quad">Quad</a>. Maximum <a href="#SkPath_ConvertConicToQuads_pts">pts</a> storage size is given by:
|
||||
Every third point in array shares last <a href="SkPoint_Reference#Point">Point</a> of previous <a href="#Quad">Quad</a> and first <a href="SkPoint_Reference#Point">Point</a> of
|
||||
next <a href="#Quad">Quad</a>. Maximum <a href="#SkPath_ConvertConicToQuads_pts">pts</a> storage size is given by:
|
||||
(1 + 2 * (1 << <a href="#SkPath_ConvertConicToQuads_pow2">pow2</a>)) * sizeof(SkPoint).
|
||||
|
||||
Returns <a href="#Quad">Quad</a> count used the approximation, which may be smaller
|
||||
@ -3446,8 +3446,8 @@ void addCircle(SkScalar x, SkScalar y, SkScalar radius, Direction dir = kCW_Dire
|
||||
</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>),
|
||||
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>.
|
||||
|
||||
@ -3488,8 +3488,8 @@ bounded by <a href="#SkPath_addArc_oval">oval</a>, from <a href="#SkPath_addArc_
|
||||
<a href="#SkPath_addArc_sweepAngle">sweepAngle</a> are measured in degrees, where zero degrees is aligned with the
|
||||
positive x-axis, and positive sweeps extends <a href="#Arc">Arc</a> clockwise.
|
||||
|
||||
If <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> <= -360, or <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> >= 360; and <a href="#SkPath_addArc_startAngle">startAngle</a> modulo 90 is nearly
|
||||
zero, append <a href="undocumented#Oval">Oval</a> instead of <a href="#Arc">Arc</a>. Otherwise, <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> values are treated
|
||||
If <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> <= -360, or <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> >= 360; and <a href="#SkPath_addArc_startAngle">startAngle</a> modulo 90 is nearly
|
||||
zero, append <a href="undocumented#Oval">Oval</a> instead of <a href="#Arc">Arc</a>. Otherwise, <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> values are treated
|
||||
modulo 360, and <a href="#Arc">Arc</a> may or may not draw depending on numeric rounding.
|
||||
|
||||
### Parameters
|
||||
@ -3506,7 +3506,7 @@ sweep, in degrees. Positive is clockwise; treated modulo 360</td>
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="9cf5122475624e4cf39f06c698f80b1a"><div>The middle row of the left and right columns draw differently from the entries
|
||||
above and below because <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> is outside of the range of +/-360,
|
||||
above and below because <a href="#SkPath_addArc_sweepAngle">sweepAngle</a> is outside of the range of +/-360,
|
||||
and <a href="#SkPath_addArc_startAngle">startAngle</a> modulo 90 is not zero.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
@ -3580,11 +3580,11 @@ array.
|
||||
| 6 | x-radius of bottom-left corner |
|
||||
| 7 | y-radius of bottom-left corner |
|
||||
|
||||
If <a href="#SkPath_addRoundRect_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, <a href="undocumented#Round_Rect">Round Rect</a> starts at top-left of the lower-left corner
|
||||
and winds clockwise. If <a href="#SkPath_addRoundRect_2_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>, <a href="undocumented#Round_Rect">Round Rect</a> starts at the
|
||||
If <a href="#SkPath_addRoundRect_2_dir">dir</a> is <a href="#SkPath_kCW_Direction">kCW Direction</a>, <a href="undocumented#Round_Rect">Round Rect</a> starts at top-left of the lower-left corner
|
||||
and winds clockwise. If <a href="#SkPath_addRoundRect_2_dir">dir</a> is <a href="#SkPath_kCCW_Direction">kCCW Direction</a>, <a href="undocumented#Round_Rect">Round Rect</a> starts at the
|
||||
bottom-left of the upper-left corner and winds counterclockwise.
|
||||
|
||||
If both <a href="#SkPath_addRoundRect_2_radii">radii</a> on any side of <a href="#SkPath_addRoundRect_2_rect">rect</a> exceed its length, all <a href="#SkPath_addRoundRect_2_radii">radii</a> are scaled
|
||||
If both <a href="#SkPath_addRoundRect_2_radii">radii</a> on any side of <a href="#SkPath_addRoundRect_2_rect">rect</a> exceed its length, all <a href="#SkPath_addRoundRect_2_radii">radii</a> are scaled
|
||||
uniformly until the corners fit. If either radius of a corner is less than or
|
||||
equal to zero, both are treated as zero.
|
||||
|
||||
@ -3726,8 +3726,8 @@ true to add <a href="undocumented#Line">Line</a> connecting <a href="#Contour">C
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
enum <a href="#SkPath_AddPathMode">AddPathMode</a> {
|
||||
<a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>,
|
||||
<a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>,
|
||||
<a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>,
|
||||
<a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>,
|
||||
};</pre>
|
||||
|
||||
<a href="#SkPath_AddPathMode">AddPathMode</a> chooses how <a href="#SkPath_addPath">addPath</a> appends. Adding one <a href="#Path">Path</a> to another can extend
|
||||
@ -3765,11 +3765,11 @@ The top right composition is made up of one contour; the other three have two.</
|
||||
void addPath(const SkPath& src, SkScalar dx, SkScalar dy, AddPathMode mode = kAppend_AddPathMode)
|
||||
</pre>
|
||||
|
||||
Append <a href="#SkPath_addPath_src">src</a> to <a href="#Path">Path</a>, <a href="#SkPath_offset">offset</a> by (<a href="#SkPath_addPath_dx">dx</a>, <a href="#SkPath_addPath_dy">dy</a>).
|
||||
Append <a href="#SkPath_addPath_src">src</a> to <a href="#Path">Path</a>, <a href="#SkPath_offset">offset</a> by (<a href="#SkPath_addPath_dx">dx</a>, <a href="#SkPath_addPath_dy">dy</a>).
|
||||
|
||||
If <a href="#SkPath_addPath_mode">mode</a> is <a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>, <a href="#SkPath_addPath_src">src</a> <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Weight">Conic Weights</a> are
|
||||
added unaltered. If <a href="#SkPath_addPath_mode">mode</a> is <a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>, add <a href="undocumented#Line">Line</a> before appending
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3802,7 +3802,7 @@ Append <a href="#SkPath_addPath_2_src">src</a> to <a href="#Path">Path</a>.
|
||||
|
||||
If <a href="#SkPath_addPath_2_mode">mode</a> is <a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>, <a href="#SkPath_addPath_2_src">src</a> <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Weight">Conic Weights</a> are
|
||||
added unaltered. If <a href="#SkPath_addPath_2_mode">mode</a> is <a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>, add <a href="undocumented#Line">Line</a> before appending
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3832,7 +3832,7 @@ Append <a href="#SkPath_addPath_3_src">src</a> to <a href="#Path">Path</a>, tran
|
||||
|
||||
If <a href="#SkPath_addPath_3_mode">mode</a> is <a href="#SkPath_kAppend_AddPathMode">kAppend AddPathMode</a>, <a href="#SkPath_addPath_3_src">src</a> <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Weight">Conic Weights</a> are
|
||||
added unaltered. If <a href="#SkPath_addPath_3_mode">mode</a> is <a href="#SkPath_kExtend_AddPathMode">kExtend AddPathMode</a>, add <a href="undocumented#Line">Line</a> before appending
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
<a href="#Verb">Verbs</a>, <a href="#Point">Points</a>, and <a href="#Weight">Conic Weights</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -3862,7 +3862,7 @@ added unaltered. If <a href="#SkPath_addPath_3_mode">mode</a> is <a href="#SkPat
|
||||
void reverseAddPath(const SkPath& src)
|
||||
</pre>
|
||||
|
||||
Append <a href="#SkPath_reverseAddPath_src">src</a> to <a href="#Path">Path</a>, from back to front.
|
||||
Append <a href="#SkPath_reverseAddPath_src">src</a> to <a href="#Path">Path</a>, from back to front.
|
||||
Reversed <a href="#SkPath_reverseAddPath_src">src</a> always appends a new <a href="#Contour">Contour</a> to <a href="#Path">Path</a>.
|
||||
|
||||
### Parameters
|
||||
@ -3948,7 +3948,7 @@ void transform(const SkMatrix& matrix, SkPath* dst) const
|
||||
Transform <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and weight by <a href="#SkPath_transform_matrix">matrix</a>.
|
||||
<a href="#SkPath_transform">transform</a> may change <a href="#Verb">Verbs</a> and increase their number.
|
||||
Transformed <a href="#Path">Path</a> replaces <a href="#SkPath_transform_dst">dst</a>; if <a href="#SkPath_transform_dst">dst</a> is nullptr, original data
|
||||
is replaced.
|
||||
is replaced.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -4007,7 +4007,7 @@ Transform <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Arr
|
||||
bool getLastPt(SkPoint* lastPt) const
|
||||
</pre>
|
||||
|
||||
Returns <a href="#Last_Point">Last Point</a> on <a href="#Path">Path</a> in <a href="#SkPath_getLastPt_lastPt">lastPt</a>. Returns false if <a href="#Point_Array">Point Array</a> is empty,
|
||||
Returns <a href="#Last_Point">Last Point</a> on <a href="#Path">Path</a> in <a href="#SkPath_getLastPt_lastPt">lastPt</a>. Returns false if <a href="#Point_Array">Point Array</a> is empty,
|
||||
storing (0, 0) if <a href="#SkPath_getLastPt_lastPt">lastPt</a> is not nullptr.
|
||||
|
||||
### Parameters
|
||||
@ -4183,7 +4183,7 @@ bool contains(SkScalar x, SkScalar y) const
|
||||
</pre>
|
||||
|
||||
Returns true if the point (<a href="#SkPath_contains_x">x</a>, <a href="#SkPath_contains_y">y</a>) is contained by <a href="#Path">Path</a>, taking into
|
||||
account <a href="#SkPath_FillType">FillType</a>.
|
||||
account <a href="#SkPath_FillType">FillType</a>.
|
||||
|
||||
| <a href="#SkPath_FillType">FillType</a> | <a href="#SkPath_contains">contains</a> returns true if <a href="SkPoint_Reference#Point">Point</a> is enclosed by |
|
||||
| --- | --- |
|
||||
@ -4276,7 +4276,7 @@ void dump() const
|
||||
</pre>
|
||||
|
||||
Writes text representation of <a href="#Path">Path</a> to standard output. The representation may be
|
||||
directly compiled as <a href="undocumented#C">C</a>++ code. Floating point values are written
|
||||
directly compiled as C++ code. Floating point values are written
|
||||
with limited precision; it may not be possible to reconstruct original <a href="#Path">Path</a>
|
||||
from output.
|
||||
|
||||
@ -4309,11 +4309,11 @@ void dumpHex() const
|
||||
</pre>
|
||||
|
||||
Writes text representation of <a href="#Path">Path</a> to standard output. The representation may be
|
||||
directly compiled as <a href="undocumented#C">C</a>++ code. Floating point values are written
|
||||
directly compiled as C++ code. Floating point values are written
|
||||
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>.
|
||||
Use instead of <a href="#SkPath_dump_2">dump</a> when submitting <a href="http://bug.skia.org">bug reports against Skia</a> .
|
||||
|
||||
### Example
|
||||
|
||||
@ -4426,7 +4426,7 @@ size_t readFromMemory(const void* buffer, size_t length)
|
||||
</pre>
|
||||
|
||||
Initializes <a href="#Path">Path</a> from <a href="#SkPath_readFromMemory_buffer">buffer</a> of size <a href="#SkPath_readFromMemory_length">length</a>. Returns zero if the <a href="#SkPath_readFromMemory_buffer">buffer</a> is
|
||||
data is inconsistent, or the <a href="#SkPath_readFromMemory_length">length</a> is too small.
|
||||
data is inconsistent, or the <a href="#SkPath_readFromMemory_length">length</a> is too small.
|
||||
|
||||
Reads <a href="#Fill_Type">Fill Type</a>, <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, <a href="#Conic_Weight">Conic Weight</a>, and
|
||||
additionally reads computed information like <a href="#SkPath_Convexity">Convexity</a> and bounds.
|
||||
@ -4480,7 +4480,7 @@ Empty <a href="#Path">Paths</a> have a <a href="#Generation_ID">Generation ID</a
|
||||
uint32_t getGenerationID() const
|
||||
</pre>
|
||||
|
||||
Returns a non-zero, globally <a href="#SkPath_unique">unique</a> value. A different value is returned
|
||||
Returns a non-zero, globally <a href="#SkPath_unique">unique</a> value. A different value is returned
|
||||
if <a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, or <a href="#Conic_Weight">Conic Weight</a> changes.
|
||||
|
||||
Setting <a href="#Fill_Type">Fill Type</a> does not change <a href="#Generation_ID">Generation ID</a>.
|
||||
@ -4894,7 +4894,7 @@ with close(), forceClose is true : isClosedContour returns true
|
||||
|
||||
# <a name="SkPath::RawIter"></a> Class SkPath::RawIter
|
||||
Iterates through <a href="#Verb_Array">Verb Array</a>, and associated <a href="#Point_Array">Point Array</a> and <a href="#Conic_Weight">Conic Weight</a>.
|
||||
<a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Conic_Weight">Conic Weight</a> are returned unaltered.
|
||||
<a href="#Verb_Array">Verb Array</a>, <a href="#Point_Array">Point Array</a>, and <a href="#Conic_Weight">Conic Weight</a> are returned unaltered.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
class <a href="#SkPath_RawIter_RawIter">RawIter</a> {
|
||||
|
@ -4,7 +4,7 @@ SkPixmap Reference
|
||||
# <a name="Pixmap"></a> Pixmap
|
||||
|
||||
# <a name="SkPixmap"></a> Class SkPixmap
|
||||
<a href="#Pixmap">Pixmap</a> provides a utility to pair <a href="undocumented#SkImageInfo">SkImageInfo</a> with pixels and row bytes.
|
||||
<a href="#Pixmap">Pixmap</a> provides a utility to pair <a href="undocumented#SkImageInfo">SkImageInfo</a> with pixels and row bytes.
|
||||
<a href="#Pixmap">Pixmap</a> is a low level class which provides convenience functions to access
|
||||
raster destinations. <a href="SkCanvas_Reference#Canvas">Canvas</a> can not draw <a href="#Pixmap">Pixmap</a>, nor does <a href="#Pixmap">Pixmap</a> provide
|
||||
a direct drawing destination.
|
||||
@ -121,7 +121,7 @@ Creates <a href="#Pixmap">Pixmap</a> from <a href="#SkPixmap_info">info</a> <a h
|
||||
<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>.
|
||||
<a href="#SkPixmap_addr">addr</a> and <a href="#SkPixmap_rowBytes">rowBytes</a> agree with <a href="#SkPixmap_info">info</a>.
|
||||
|
||||
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.
|
||||
@ -146,7 +146,7 @@ initialized <a href="#Pixmap">Pixmap</a>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="9a00774be57d7308313b3a9073e6e696"><div><a href="#SkImage_MakeRasterCopy">SkImage::MakeRasterCopy</a> takes const <a href="#SkPixmap">SkPixmap</a>& as an argument. The example
|
||||
<div><fiddle-embed name="9a00774be57d7308313b3a9073e6e696"><div><a href="#SkImage_MakeRasterCopy">SkImage::MakeRasterCopy</a> takes const <a href="#SkPixmap">SkPixmap</a>& as an argument. The example
|
||||
constructs a <a href="#SkPixmap">SkPixmap</a> from the brace-delimited parameters.</div>
|
||||
|
||||
#### Example Output
|
||||
@ -171,7 +171,7 @@ copy alpha only = true
|
||||
void reset()
|
||||
</pre>
|
||||
|
||||
Sets <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, row bytes to zero; pixel address to nullptr; <a href="undocumented#SkColorType">SkColorType</a> to
|
||||
Sets <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, row bytes to zero; pixel address to nullptr; <a href="undocumented#SkColorType">SkColorType</a> to
|
||||
<a href="undocumented#SkColorType">kUnknown SkColorType</a>; and <a href="undocumented#SkAlphaType">SkAlphaType</a> to <a href="undocumented#SkAlphaType">kUnknown SkAlphaType</a>.
|
||||
|
||||
The prior pixels are unaffected; it is up to the caller to release pixels
|
||||
@ -201,12 +201,12 @@ void reset(const SkImageInfo& info, const void* addr, size_t rowBytes)
|
||||
</pre>
|
||||
|
||||
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 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> 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.
|
||||
Does not check <a href="#SkPixmap_addr">addr</a>. Asserts if built with SK_DEBUG defined and if <a href="#SkPixmap_rowBytes">rowBytes</a> is
|
||||
too small to hold one row of pixels.
|
||||
|
||||
The memory lifetime pixels are managed by the caller. When <a href="#Pixmap">Pixmap</a> goes
|
||||
out of scope, <a href="#SkPixmap_addr">addr</a> is unaffected.
|
||||
@ -319,7 +319,7 @@ bool SK_WARN_UNUSED_RESULT extractSubset(SkPixmap* subset, const SkIRect& area)
|
||||
|
||||
Sets <a href="#SkPixmap_extractSubset_subset">subset</a> <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, pixel address to intersection of <a href="#Pixmap">Pixmap</a> with <a href="#SkPixmap_extractSubset_area">area</a>,
|
||||
if intersection is not empty; and return true. Otherwise, leave <a href="#SkPixmap_extractSubset_subset">subset</a> unchanged
|
||||
and return false.
|
||||
and return false.
|
||||
|
||||
Failing to read the return value generates a compile time warning.
|
||||
|
||||
@ -387,7 +387,7 @@ size_t rowBytes() const
|
||||
</pre>
|
||||
|
||||
Returns row bytes, the interval from one pixel row to the next. Row bytes
|
||||
is at least as large as:
|
||||
is at least as large as:
|
||||
<a href="#SkPixmap_width">width</a> * <a href="#SkPixmap_info">info</a>.bytesPerPixel().
|
||||
|
||||
Returns zero if <a href="#SkPixmap_colorType">colorType</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
@ -460,7 +460,7 @@ int width() const
|
||||
|
||||
Returns pixel count in each pixel row. Should be equal or less than:
|
||||
|
||||
<a href="#SkPixmap_rowBytes">rowBytes</a> / <a href="#SkPixmap_info">info</a>.bytesPerPixel().
|
||||
<a href="#SkPixmap_rowBytes">rowBytes</a> / <a href="#SkPixmap_info">info</a>.bytesPerPixel().
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -598,7 +598,7 @@ immutable.
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="34c71f803b8edb48eaf1cd0c55bb212e"><div><a href="#SkColorSpace_MakeSRGBLinear">SkColorSpace::MakeSRGBLinear</a> creates <a href="undocumented#Color_Space">Color Space</a> with linear gamma
|
||||
and an <a href="undocumented#sRGB">sRGB</a> gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to <a href="undocumented#sRGB">sRGB</a> gamma.</div>
|
||||
and an sRGB gamut. This <a href="undocumented#Color_Space">Color Space</a> gamma is not close to sRGB gamma.</div>
|
||||
|
||||
#### Example Output
|
||||
|
||||
@ -823,7 +823,7 @@ For <a href="undocumented#Image_Color_Type">Color Type</a> <a href="undocumented
|
||||
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 <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
Returns false for <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -861,12 +861,12 @@ Returns pixel at (<a href="#SkPixmap_getColor_x">x</a>, <a href="#SkPixmap_getCo
|
||||
Returns black with <a href="#Alpha">Alpha</a> if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kAlpha 8 SkColorType</a>.
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_getColor_x">x</a> or <a href="#SkPixmap_getColor_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined; and returns undefined values or may crash if
|
||||
<a href="undocumented#SK_RELEASE">SK RELEASE</a> is defined. Fails if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a> or
|
||||
built with SK_DEBUG defined; and returns undefined values or may crash if
|
||||
SK_RELEASE is defined. Fails if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a> or
|
||||
pixel address is nullptr.
|
||||
|
||||
<a href="undocumented#Color_Space">Color Space</a> in <a href="undocumented#Image_Info">Image Info</a> is ignored. Some <a href="undocumented#Color">Color</a> precision may be lost in the
|
||||
conversion to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>; original pixel data may have additional
|
||||
conversion to <a href="#Unpremultiply">Unpremultiplied</a> <a href="undocumented#Color">Color</a>; original pixel data may have additional
|
||||
precision.
|
||||
|
||||
### Parameters
|
||||
@ -918,9 +918,9 @@ const void* addr(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addr_2_x">x</a>, <a href="#SkPixmap_addr_2_y">y</a>). Returns nullptr if <a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr.
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr_2_x">x</a> or <a href="#SkPixmap_addr_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns nullptr if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
built with SK_DEBUG defined. Returns nullptr if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
|
||||
Performs a lookup of pixel size; for better performance, call
|
||||
Performs a lookup of pixel size; for better performance, call
|
||||
one of: <a href="#SkPixmap_addr8">addr8</a>, <a href="#SkPixmap_addr16">addr16</a>, <a href="#SkPixmap_addr32">addr32</a>, <a href="#SkPixmap_addr64">addr64</a>, or <a href="#SkPixmap_addrF16">addrF16</a>.
|
||||
|
||||
### Parameters
|
||||
@ -963,7 +963,7 @@ const uint8_t* addr8() const
|
||||
|
||||
Returns readable base pixel address. Result is addressable as unsigned 8-bit bytes.
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
One byte corresponds to one pixel.
|
||||
|
||||
@ -998,7 +998,7 @@ const uint16_t* addr16() const
|
||||
|
||||
Returns readable base pixel address. Result is addressable as unsigned 16-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
@ -1033,7 +1033,7 @@ const uint32_t* addr32() const
|
||||
|
||||
Returns readable base pixel address. Result is addressable as unsigned 32-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
@ -1068,7 +1068,7 @@ const uint64_t* addr64() const
|
||||
|
||||
Returns readable base pixel address. Result is addressable as unsigned 64-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
with SK_DEBUG defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
@ -1103,7 +1103,7 @@ const uint16_t* addrF16() const
|
||||
|
||||
Returns readable base pixel address. Result is addressable as unsigned 16-bit words.
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
with SK_DEBUG defined.
|
||||
|
||||
Each word represents one color component encoded as a half float.
|
||||
Four words correspond to one pixel.
|
||||
@ -1137,10 +1137,10 @@ const uint8_t* addr8(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addr8_2_x">x</a>, <a href="#SkPixmap_addr8_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr8_2_x">x</a> or <a href="#SkPixmap_addr8_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
built with SK_DEBUG defined.
|
||||
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1180,10 +1180,10 @@ const uint16_t* addr16(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addr16_2_x">x</a>, <a href="#SkPixmap_addr16_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr16_2_x">x</a> or <a href="#SkPixmap_addr16_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
built with SK_DEBUG defined.
|
||||
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1223,10 +1223,10 @@ const uint32_t* addr32(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addr32_2_x">x</a>, <a href="#SkPixmap_addr32_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr32_2_x">x</a> or <a href="#SkPixmap_addr32_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
built with SK_DEBUG defined.
|
||||
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
<a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1266,10 +1266,10 @@ const uint64_t* addr64(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addr64_2_x">x</a>, <a href="#SkPixmap_addr64_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addr64_2_x">x</a> or <a href="#SkPixmap_addr64_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
built with SK_DEBUG defined.
|
||||
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
with SK_DEBUG defined.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1309,10 +1309,10 @@ const uint16_t* addrF16(int x, int y) const
|
||||
Returns readable pixel address at (<a href="#SkPixmap_addrF16_2_x">x</a>, <a href="#SkPixmap_addrF16_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_addrF16_2_x">x</a> or <a href="#SkPixmap_addrF16_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined.
|
||||
built with SK_DEBUG defined.
|
||||
|
||||
Will trigger an assert() if <a href="undocumented#Image_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.
|
||||
with SK_DEBUG defined.
|
||||
|
||||
Each unsigned 16-bit word represents one color component encoded as a half float.
|
||||
Four words correspond to one pixel.
|
||||
@ -1390,7 +1390,7 @@ void* writable_addr(int x, int y) const
|
||||
Returns writable pixel address at (<a href="#SkPixmap_writable_addr_2_x">x</a>, <a href="#SkPixmap_writable_addr_2_y">y</a>).
|
||||
|
||||
Input is not validated: out of <a href="#SkPixmap_bounds">bounds</a> values of <a href="#SkPixmap_writable_addr_2_x">x</a> or <a href="#SkPixmap_writable_addr_2_y">y</a> trigger an assert() if
|
||||
built with <a href="undocumented#SK_DEBUG">SK DEBUG</a> defined. Returns zero if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
built with SK_DEBUG defined. Returns zero if <a href="undocumented#Image_Color_Type">Color Type</a> is <a href="undocumented#SkColorType">kUnknown SkColorType</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1434,7 +1434,7 @@ uint8_t* writable_addr8(int x, int y) const
|
||||
|
||||
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#Image_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.
|
||||
or <a href="undocumented#SkColorType">kGray 8 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
One byte corresponds to one pixel.
|
||||
|
||||
@ -1472,7 +1472,7 @@ uint16_t* writable_addr16(int x, int y) const
|
||||
|
||||
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#Image_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.
|
||||
or <a href="undocumented#SkColorType">kARGB 4444 SkColorType</a>, and is built with SK_DEBUG defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
@ -1509,7 +1509,7 @@ uint32_t* writable_addr32(int x, int y) const
|
||||
|
||||
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#Image_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>
|
||||
<a href="undocumented#SkColorType">kRGBA 8888 SkColorType</a> or <a href="undocumented#SkColorType">kBGRA 8888 SkColorType</a>, and is built with SK_DEBUG
|
||||
defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
@ -1546,7 +1546,7 @@ uint64_t* writable_addr64(int x, int y) const
|
||||
|
||||
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#Image_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.
|
||||
<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with SK_DEBUG defined.
|
||||
|
||||
One word corresponds to one pixel.
|
||||
|
||||
@ -1582,7 +1582,7 @@ uint16_t* writable_addrF16(int x, int y) const
|
||||
|
||||
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#Image_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.
|
||||
<a href="undocumented#SkColorType">kRGBA F16 SkColorType</a> and is built with SK_DEBUG defined.
|
||||
|
||||
Each word represents one color component encoded as a half float.
|
||||
Four words correspond to one pixel.
|
||||
@ -1622,9 +1622,9 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
</pre>
|
||||
|
||||
Copies a <a href="SkRect_Reference#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>).
|
||||
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#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="#SkPixmap_readPixels_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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
|
||||
<a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>.
|
||||
@ -1638,7 +1638,7 @@ 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 if:
|
||||
|
||||
abs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
abs(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
|
||||
@ -1685,7 +1685,7 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes)
|
||||
Copies a <a href="SkRect_Reference#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>).
|
||||
|
||||
<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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
|
||||
<a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_2_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_2_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>.
|
||||
@ -1732,7 +1732,7 @@ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
|
||||
Copies a <a href="SkRect_Reference#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>).
|
||||
|
||||
<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_Alpha_Type">Alpha Type</a>, and
|
||||
<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a> specifies <a href="#SkPixmap_width">width</a>, <a href="#SkPixmap_height">height</a>, <a href="undocumented#Image_Color_Type">Color Type</a>, <a href="undocumented#Image_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
|
||||
<a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="#SkPixmap_addr">addr</a> equals nullptr, or <a href="#SkPixmap_readPixels_3_dstRowBytes">dstRowBytes</a> is less than <a href="#SkPixmap_readPixels_3_dstInfo">dstInfo</a>.<a href="undocumented#SkImageInfo">minRowBytes</a>.
|
||||
@ -1746,7 +1746,7 @@ 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 if:
|
||||
|
||||
abs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
abs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
@ -1797,7 +1797,7 @@ 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 if:
|
||||
|
||||
abs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
abs(srcX) >= this-><a href="#SkPixmap_width">width</a>,
|
||||
or ifabs(srcY) >= this-><a href="#SkPixmap_height">height</a>.
|
||||
|
||||
### Parameters
|
||||
@ -1896,7 +1896,7 @@ Scales the image, with <a href="#SkPixmap_scalePixels_filterQuality">filterQuali
|
||||
<table> <tr> <td><a name="SkPixmap_scalePixels_dst"> <code><strong>dst </strong></code> </a></td> <td>
|
||||
<a href="undocumented#Image_Info">Image Info</a> and pixel address to write to</td>
|
||||
</tr> <tr> <td><a name="SkPixmap_scalePixels_filterQuality"> <code><strong>filterQuality </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>,
|
||||
<a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -41,7 +41,7 @@ SkPoint Reference
|
||||
| <a href="#SkPoint_distanceToOrigin">distanceToOrigin</a> | Returns straight-line distance to origin. |
|
||||
| <a href="#SkPoint_dot">dot</a> | Returns <a href="#SkPoint_dot">dot</a> product. |
|
||||
| <a href="#SkPoint_equals">equals</a> | Returns true if <a href="#Point">Points</a> are equal. |
|
||||
| <a href="#SkPoint_isFinite">isFinite</a> | Returns true if no member is infinite or <a href="undocumented#NaN">NaN</a>. |
|
||||
| <a href="#SkPoint_isFinite">isFinite</a> | Returns true if no member is infinite or NaN. |
|
||||
| <a href="#SkPoint_isZero">isZero</a> | Returns true if both members equal zero. |
|
||||
| <a href="#SkPoint_iset">iset</a> | Sets to integer input. |
|
||||
| <a href="#SkPoint_length">length</a> | Returns straight-line distance to origin. |
|
||||
@ -59,12 +59,12 @@ SkPoint Reference
|
||||
<a name="SkPoint_fX"> <code><strong>SkScalar fX</strong></code> </a>
|
||||
|
||||
<a href="#SkPoint_x">x</a>-axis value used by both <a href="#Point">Point</a> and <a href="SkPoint_Reference#Vector">Vector</a>. May contain any value, including
|
||||
infinities and <a href="undocumented#NaN">NaN</a>.
|
||||
infinities and NaN.
|
||||
|
||||
<a name="SkPoint_fY"> <code><strong>SkScalar fY</strong></code> </a>
|
||||
|
||||
<a href="#SkPoint_y">y</a>-axis value used by both <a href="#Point">Point</a> and <a href="SkPoint_Reference#Vector">Vector</a>. May contain any value, including
|
||||
infinities and <a href="undocumented#NaN">NaN</a>.
|
||||
infinities and NaN.
|
||||
|
||||
<a name="SkPoint_Make"></a>
|
||||
## Make
|
||||
@ -245,9 +245,9 @@ void iset(int32_t x, int32_t y)
|
||||
|
||||
Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_x">x</a> and <a href="#SkPoint_fY">fY</a> to <a href="#SkPoint_y">y</a>, promoting integers to <a href="undocumented#SkScalar">SkScalar</a> values.
|
||||
|
||||
Assigning a large integer value directly to <a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_fY">fY</a> may cause a compiler
|
||||
Assigning a large integer value directly to <a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_fY">fY</a> may cause a compiler
|
||||
error, triggered by narrowing conversion of int to <a href="undocumented#SkScalar">SkScalar</a>. This safely
|
||||
casts <a href="#SkPoint_x">x</a> and <a href="#SkPoint_y">y</a> to avoid the error.
|
||||
casts <a href="#SkPoint_x">x</a> and <a href="#SkPoint_y">y</a> to avoid the error.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -276,7 +276,7 @@ Sets <a href="#SkPoint_fX">fX</a> to <a href="#SkPoint_iset_2_p">p</a>.<a href="
|
||||
|
||||
Assigning an <a href="SkIPoint_Reference#IPoint">IPoint</a> containing a large integer value directly to <a href="#SkPoint_fX">fX</a> or <a href="#SkPoint_fY">fY</a> may
|
||||
cause a compiler error, triggered by narrowing conversion of int to <a href="undocumented#SkScalar">SkScalar</a>.
|
||||
This safely casts <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fY">fY</a> to avoid the error.
|
||||
This safely casts <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_iset_2_p">p</a>.<a href="#SkPoint_fY">fY</a> to avoid the error.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -435,7 +435,7 @@ added to <a href="#SkPoint_fY">fY</a></td>
|
||||
SkScalar length() const
|
||||
</pre>
|
||||
|
||||
Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as:
|
||||
Returns the Euclidean_Distance from origin, computed as:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
sqrt(fX * fX + fY * fY)</pre>
|
||||
@ -463,7 +463,7 @@ straight-line distance to origin
|
||||
SkScalar distanceToOrigin() const
|
||||
</pre>
|
||||
|
||||
Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as:
|
||||
Returns the Euclidean_Distance from origin, computed as:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
sqrt(fX * fX + fY * fY)</pre>
|
||||
@ -849,7 +849,7 @@ Returns true if both <a href="#SkPoint_fX">fX</a> and <a href="#SkPoint_fY">fY</
|
||||
|
||||
### Return Value
|
||||
|
||||
true for values other than infinities and <a href="undocumented#NaN">NaN</a>
|
||||
true for values other than infinities and NaN
|
||||
|
||||
### Example
|
||||
|
||||
@ -1079,7 +1079,7 @@ Can also be used to add <a href="SkPoint_Reference#Vector">Vector</a> to <a href
|
||||
static SkScalar Length(SkScalar x, SkScalar y)
|
||||
</pre>
|
||||
|
||||
Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> from origin, computed as:
|
||||
Returns the Euclidean_Distance from origin, computed as:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
sqrt(x * x + y * y)</pre>
|
||||
@ -1152,7 +1152,7 @@ original <a href="#SkPoint_Normalize_vec">vec</a> <a href="#SkPoint_length">leng
|
||||
static SkScalar Distance(const SkPoint& a, const SkPoint& b)
|
||||
</pre>
|
||||
|
||||
Returns the <a href="undocumented#Euclidean_Distance">Euclidean Distance</a> between <a href="#SkPoint_Distance_a">a</a> and <a href="#SkPoint_Distance_b">b</a>.
|
||||
Returns the Euclidean_Distance between <a href="#SkPoint_Distance_a">a</a> and <a href="#SkPoint_Distance_b">b</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
@ -5,7 +5,7 @@ SkRect Reference
|
||||
|
||||
# <a name="SkRect"></a> Struct SkRect
|
||||
<a href="#SkRect">SkRect</a> holds four <a href="undocumented#SkScalar">SkScalar</a> coordinates describing the upper and
|
||||
lower bounds of a rectangle. <a href="#SkRect">SkRect</a> may be created from outer bounds or
|
||||
lower bounds of a rectangle. <a href="#SkRect">SkRect</a> may be created from outer bounds or
|
||||
from position, <a href="#SkRect_width">width</a>, and <a href="#SkRect_height">height</a>. <a href="#SkRect">SkRect</a> describes an area; if its <a href="#SkRect_right">right</a>
|
||||
is less than or equal to its <a href="#SkRect_left">left</a>, or if its <a href="#SkRect_bottom">bottom</a> is less than or equal to
|
||||
its <a href="#SkRect_top">top</a>, it is considered empty.
|
||||
@ -55,7 +55,7 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit
|
||||
| <a href="#SkRect_intersect">intersect</a> | Sets to shared area; returns true if not empty. |
|
||||
| <a href="#SkRect_intersects">intersects</a> | Returns true if areas overlap. |
|
||||
| <a href="#SkRect_isEmpty">isEmpty</a> | Returns true if <a href="#SkRect_width">width</a> or <a href="#SkRect_height">height</a> are zero or negative. |
|
||||
| <a href="#SkRect_isFinite">isFinite</a> | Returns true if no member is infinite or <a href="undocumented#NaN">NaN</a>. |
|
||||
| <a href="#SkRect_isFinite">isFinite</a> | Returns true if no member is infinite or NaN. |
|
||||
| <a href="#SkRect_isLargest">isLargest</a> | Returns equal to (<a href="undocumented#SK_ScalarMin">SK ScalarMin</a>, <a href="undocumented#SK_ScalarMin">SK ScalarMin</a>, <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>, <a href="undocumented#SK_ScalarMax">SK ScalarMax</a>). |
|
||||
| <a href="#SkRect_isSorted">isSorted</a> | Returns true if <a href="#SkRect_width">width</a> or <a href="#SkRect_height">height</a> are zero or positive. |
|
||||
| <a href="#SkRect_iset">iset</a> | Sets to int input (<a href="#SkRect_left">left</a>, <a href="#SkRect_top">top</a>, <a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>). |
|
||||
@ -93,22 +93,22 @@ integer input cannot convert to <a href="undocumented#SkScalar">SkScalar</a> wit
|
||||
|
||||
<a name="SkRect_fLeft"> <code><strong>SkScalar fLeft</strong></code> </a>
|
||||
|
||||
May contain any value, including infinities and <a href="undocumented#NaN">NaN</a>. The smaller of the
|
||||
May contain any value, including infinities and NaN. The smaller of the
|
||||
horizontal values when sorted. When equal to or greater than <a href="#SkRect_fRight">fRight</a>, <a href="#Rect">Rect</a> is empty.
|
||||
|
||||
<a name="SkRect_fTop"> <code><strong>SkScalar fTop</strong></code> </a>
|
||||
|
||||
May contain any value, including infinities and <a href="undocumented#NaN">NaN</a>. The smaller of the
|
||||
May contain any value, including infinities and NaN. The smaller of the
|
||||
vertical values when sorted. When equal to or greater than <a href="#SkRect_fBottom">fBottom</a>, <a href="#Rect">Rect</a> is empty.
|
||||
|
||||
<a name="SkRect_fRight"> <code><strong>SkScalar fRight</strong></code> </a>
|
||||
|
||||
May contain any value, including infinities and <a href="undocumented#NaN">NaN</a>. The larger of the
|
||||
May contain any value, including infinities and NaN. The larger of the
|
||||
horizontal values when sorted. When equal to or less than <a href="#SkRect_fLeft">fLeft</a>, <a href="#Rect">Rect</a> is empty.
|
||||
|
||||
<a name="SkRect_fBottom"> <code><strong>SkScalar fBottom</strong></code> </a>
|
||||
|
||||
May contain any value, including infinities and <a href="undocumented#NaN">NaN</a>. The larger of the
|
||||
May contain any value, including infinities and NaN. The larger of the
|
||||
vertical values when sorted. When equal to or less than <a href="#SkRect_fTop">fTop</a>, <a href="#Rect">Rect</a> is empty.
|
||||
|
||||
<a name="SkRect_MakeEmpty"></a>
|
||||
@ -155,7 +155,7 @@ outset rect isEmpty: false
|
||||
static SkRect SK_WARN_UNUSED_RESULT MakeLargest()
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="#Rect">Rect</a> setting <a href="#SkRect_left">left</a> and <a href="#SkRect_top">top</a> to most negative finite value, and
|
||||
Returns constructed <a href="#Rect">Rect</a> setting <a href="#SkRect_left">left</a> and <a href="#SkRect_top">top</a> to most negative finite value, and
|
||||
setting <a href="#SkRect_right">right</a> and <a href="#SkRect_bottom">bottom</a> to most positive finite value.
|
||||
|
||||
### Return Value
|
||||
@ -404,7 +404,7 @@ rect: 5, 25, 15, 35 isEmpty: false
|
||||
static constexpr SkRect SK_WARN_UNUSED_RESULT MakeXYWH(SkScalar x, SkScalar y, SkScalar w, SkScalar h)
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="#Rect">Rect</a> <a href="#SkRect_set">set</a> to(<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_x">x</a> + <a href="#SkRect_MakeXYWH_w">w</a>, <a href="#SkRect_y">y</a> + <a href="#SkRect_MakeXYWH_h">h</a>).
|
||||
Returns constructed <a href="#Rect">Rect</a> <a href="#SkRect_set">set</a> to(<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_x">x</a> + <a href="#SkRect_MakeXYWH_w">w</a>, <a href="#SkRect_y">y</a> + <a href="#SkRect_MakeXYWH_h">h</a>).
|
||||
Does not validate input;
|
||||
<a href="#SkRect_MakeXYWH_w">w</a> or <a href="#SkRect_MakeXYWH_h">h</a> may be negative.
|
||||
|
||||
@ -477,7 +477,7 @@ integer rect</td>
|
||||
static SkRect Make(const SkISize& size)
|
||||
</pre>
|
||||
|
||||
Returns constructed <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkRect_set">set</a> to (0, 0, <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_width">width</a>, <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_height">height</a>).
|
||||
Returns constructed <a href="SkIRect_Reference#IRect">IRect</a> <a href="#SkRect_set">set</a> to (0, 0, <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_width">width</a>, <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_height">height</a>).
|
||||
Does not validate input; <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_width">width</a> or <a href="#SkRect_Make_size">size</a>.<a href="#SkRect_height">height</a> may be negative.
|
||||
|
||||
### Parameters
|
||||
@ -617,7 +617,7 @@ sorted: {20, 40, 20, 50} is sorted
|
||||
bool isLargest() const
|
||||
</pre>
|
||||
|
||||
Returns true if <a href="#Rect">Rect</a> encloses largest possible area.
|
||||
Returns true if <a href="#Rect">Rect</a> encloses largest possible area.
|
||||
|
||||
### Return Value
|
||||
|
||||
@ -653,11 +653,11 @@ bool isFinite() const
|
||||
</pre>
|
||||
|
||||
Returns true if all values in the rectangle are finite: <a href="undocumented#SK_ScalarMin">SK ScalarMin</a> or larger,
|
||||
and <a href="undocumented#SK_ScalarMax">SK ScalarMax</a> or smaller.
|
||||
and <a href="undocumented#SK_ScalarMax">SK ScalarMax</a> or smaller.
|
||||
|
||||
### Return Value
|
||||
|
||||
true if no member is infinite or <a href="undocumented#NaN">NaN</a>
|
||||
true if no member is infinite or NaN
|
||||
|
||||
### Example
|
||||
|
||||
@ -1017,10 +1017,10 @@ left: 2e+38 right: 3e+38 centerX: inf safe mid x: 2.5e+38
|
||||
bool operator==(const SkRect& a, const SkRect& b)
|
||||
</pre>
|
||||
|
||||
Returns true if all members in <a href="#SkRect_equal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; are
|
||||
Returns true if all members in <a href="#SkRect_equal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; are
|
||||
equal to the corresponding members in <a href="#SkRect_equal_operator_b">b</a>.
|
||||
|
||||
<a href="#SkRect_equal_operator_a">a</a> and <a href="#SkRect_equal_operator_b">b</a> are not equal if either contain <a href="undocumented#NaN">NaN</a>. <a href="#SkRect_equal_operator_a">a</a> and <a href="#SkRect_equal_operator_b">b</a> are equal if members
|
||||
<a href="#SkRect_equal_operator_a">a</a> and <a href="#SkRect_equal_operator_b">b</a> are not equal if either contain NaN. <a href="#SkRect_equal_operator_a">a</a> and <a href="#SkRect_equal_operator_b">b</a> are equal if members
|
||||
contain zeroes <a href="#SkRect_width">width</a> different signs.
|
||||
|
||||
### Parameters
|
||||
@ -1064,10 +1064,10 @@ tests are equal
|
||||
bool operator!=(const SkRect& a, const SkRect& b)
|
||||
</pre>
|
||||
|
||||
Returns true if any in <a href="#SkRect_notequal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; does not
|
||||
Returns true if any in <a href="#SkRect_notequal_operator_a">a</a>: <a href="#SkRect_fLeft">fLeft</a>, <a href="#SkRect_fTop">fTop</a>, <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fBottom">fBottom</a>; does not
|
||||
equal the corresponding members in <a href="#SkRect_notequal_operator_b">b</a>.
|
||||
|
||||
<a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are not equal if either contain <a href="undocumented#NaN">NaN</a>. <a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are equal if members
|
||||
<a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are not equal if either contain NaN. <a href="#SkRect_notequal_operator_a">a</a> and <a href="#SkRect_notequal_operator_b">b</a> are equal if members
|
||||
contain zeroes <a href="#SkRect_width">width</a> different signs.
|
||||
|
||||
### Parameters
|
||||
@ -1109,7 +1109,7 @@ void toQuad(SkPoint quad[4]) const
|
||||
</pre>
|
||||
|
||||
Returns four points in <a href="#SkRect_toQuad_quad">quad</a> that enclose <a href="#Rect">Rect</a> ordered as: <a href="#SkRect_top">top</a>-<a href="#SkRect_left">left</a>, <a href="#SkRect_top">top</a>-<a href="#SkRect_right">right</a>,
|
||||
<a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_left">left</a>.
|
||||
<a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_right">right</a>, <a href="#SkRect_bottom">bottom</a>-<a href="#SkRect_left">left</a>.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1177,7 +1177,7 @@ void set(const SkIRect& src)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Rect">Rect</a> to <a href="#SkRect_set_src">src</a>, promoting <a href="#SkRect_set_src">src</a> members from integer to <a href="#Scalar">Scalar</a>.
|
||||
Very large values in <a href="#SkRect_set_src">src</a> may lose precision.
|
||||
Very large values in <a href="#SkRect_set_src">src</a> may lose precision.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1376,7 +1376,7 @@ void set(const SkPoint pts[], int count)
|
||||
</pre>
|
||||
|
||||
Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_set_3_count">count</a> entries. If <a href="#SkRect_set_3_count">count</a> is zero or smaller,
|
||||
or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets <a href="#Rect">Rect</a> to (0, 0, 0, 0).
|
||||
or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or NaN, sets <a href="#Rect">Rect</a> to (0, 0, 0, 0).
|
||||
|
||||
Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and
|
||||
<a href="#SkRect_fTop">fTop</a> is less than or equal to <a href="#SkRect_fBottom">fBottom</a>.
|
||||
@ -1420,7 +1420,7 @@ void setBounds(const SkPoint pts[], int count)
|
||||
</pre>
|
||||
|
||||
Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_setBounds_count">count</a> entries. If <a href="#SkRect_setBounds_count">count</a> is zero or smaller,
|
||||
or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>, sets to (0, 0, 0, 0).
|
||||
or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or NaN, sets to (0, 0, 0, 0).
|
||||
|
||||
Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and
|
||||
<a href="#SkRect_fTop">fTop</a> is less than or equal to <a href="#SkRect_fBottom">fBottom</a>.
|
||||
@ -1464,7 +1464,7 @@ bool setBoundsCheck(const SkPoint pts[], int count)
|
||||
</pre>
|
||||
|
||||
Sets to bounds of <a href="SkPoint_Reference#Point">Point</a> array with <a href="#SkRect_setBoundsCheck_count">count</a> entries. Returns false if <a href="#SkRect_setBoundsCheck_count">count</a> is
|
||||
zero or smaller, or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or <a href="undocumented#NaN">NaN</a>; in these cases
|
||||
zero or smaller, or if <a href="SkPoint_Reference#Point">Point</a> array <a href="#SkRect_contains">contains</a> an infinity or NaN; in these cases
|
||||
sets <a href="#Rect">Rect</a> to (0, 0, 0, 0).
|
||||
|
||||
Result is either empty or sorted: <a href="#SkRect_fLeft">fLeft</a> is less than or equal to <a href="#SkRect_fRight">fRight</a>, and
|
||||
@ -1523,7 +1523,7 @@ corner to include</td>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="ee72450381f768f3869153cdbeccdc3e"><div><a href="#SkRect_set_4_p0">p0</a> and <a href="#SkRect_set_4_p1">p1</a> may be swapped and have the same effect unless one <a href="#SkRect_contains">contains</a> <a href="undocumented#NaN">NaN</a>.</div></fiddle-embed></div>
|
||||
<div><fiddle-embed name="ee72450381f768f3869153cdbeccdc3e"><div><a href="#SkRect_set_4_p0">p0</a> and <a href="#SkRect_set_4_p1">p1</a> may be swapped and have the same effect unless one <a href="#SkRect_contains">contains</a> NaN.</div></fiddle-embed></div>
|
||||
|
||||
### See Also
|
||||
|
||||
@ -1538,7 +1538,7 @@ corner to include</td>
|
||||
void setXYWH(SkScalar x, SkScalar y, SkScalar width, SkScalar height)
|
||||
</pre>
|
||||
|
||||
Sets <a href="#Rect">Rect</a> to(<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_x">x</a> + <a href="#SkRect_width">width</a>, <a href="#SkRect_y">y</a> + <a href="#SkRect_height">height</a>).
|
||||
Sets <a href="#Rect">Rect</a> to(<a href="#SkRect_x">x</a>, <a href="#SkRect_y">y</a>, <a href="#SkRect_x">x</a> + <a href="#SkRect_width">width</a>, <a href="#SkRect_y">y</a> + <a href="#SkRect_height">height</a>).
|
||||
Does not validate input;
|
||||
<a href="#SkRect_width">width</a> or <a href="#SkRect_height">height</a> may be negative.
|
||||
|
||||
@ -1688,7 +1688,7 @@ Returns <a href="#Rect">Rect</a> <a href="#SkRect_offset">offset</a> by (<a href
|
||||
If <a href="#SkRect_makeOffset_dx">dx</a> is negative, <a href="#Rect">Rect</a> returned is moved to the <a href="#SkRect_left">left</a>.
|
||||
If <a href="#SkRect_makeOffset_dx">dx</a> is positive, <a href="#Rect">Rect</a> returned is moved to the <a href="#SkRect_right">right</a>.
|
||||
If <a href="#SkRect_makeOffset_dy">dy</a> is negative, <a href="#Rect">Rect</a> returned is moved upward.
|
||||
If <a href="#SkRect_makeOffset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is moved downward.
|
||||
If <a href="#SkRect_makeOffset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is moved downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1734,7 +1734,7 @@ Returns <a href="#Rect">Rect</a>, <a href="#SkRect_inset">inset</a> by (<a href=
|
||||
If <a href="#SkRect_makeInset_dx">dx</a> is negative, <a href="#Rect">Rect</a> returned is wider.
|
||||
If <a href="#SkRect_makeInset_dx">dx</a> is positive, <a href="#Rect">Rect</a> returned is narrower.
|
||||
If <a href="#SkRect_makeInset_dy">dy</a> is negative, <a href="#Rect">Rect</a> returned is taller.
|
||||
If <a href="#SkRect_makeInset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is shorter.
|
||||
If <a href="#SkRect_makeInset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is shorter.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1780,7 +1780,7 @@ Returns <a href="#Rect">Rect</a>, <a href="#SkRect_outset">outset</a> by (<a hre
|
||||
If <a href="#SkRect_makeOutset_dx">dx</a> is negative, <a href="#Rect">Rect</a> returned is narrower.
|
||||
If <a href="#SkRect_makeOutset_dx">dx</a> is positive, <a href="#Rect">Rect</a> returned is wider.
|
||||
If <a href="#SkRect_makeOutset_dy">dy</a> is negative, <a href="#Rect">Rect</a> returned is shorter.
|
||||
If <a href="#SkRect_makeOutset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is taller.
|
||||
If <a href="#SkRect_makeOutset_dy">dy</a> is positive, <a href="#Rect">Rect</a> returned is taller.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1826,7 +1826,7 @@ Offsets <a href="#Rect">Rect</a> by adding <a href="#SkRect_offset_dx">dx</a> to
|
||||
If <a href="#SkRect_offset_dx">dx</a> is negative, moves <a href="#Rect">Rect</a> to the <a href="#SkRect_left">left</a>.
|
||||
If <a href="#SkRect_offset_dx">dx</a> is positive, moves <a href="#Rect">Rect</a> to the <a href="#SkRect_right">right</a>.
|
||||
If <a href="#SkRect_offset_dy">dy</a> is negative, moves <a href="#Rect">Rect</a> upward.
|
||||
If <a href="#SkRect_offset_dy">dy</a> is positive, moves <a href="#Rect">Rect</a> downward.
|
||||
If <a href="#SkRect_offset_dy">dy</a> is positive, moves <a href="#Rect">Rect</a> downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -1865,7 +1865,7 @@ Offsets <a href="#Rect">Rect</a> by adding <a href="#SkRect_offset_2_delta">delt
|
||||
If <a href="#SkRect_offset_2_delta">delta</a>.fX is negative, moves <a href="#Rect">Rect</a> to the <a href="#SkRect_left">left</a>.
|
||||
If <a href="#SkRect_offset_2_delta">delta</a>.fX is positive, moves <a href="#Rect">Rect</a> to the <a href="#SkRect_right">right</a>.
|
||||
If <a href="#SkRect_offset_2_delta">delta</a>.fY is negative, moves <a href="#Rect">Rect</a> upward.
|
||||
If <a href="#SkRect_offset_2_delta">delta</a>.fY is positive, moves <a href="#Rect">Rect</a> downward.
|
||||
If <a href="#SkRect_offset_2_delta">delta</a>.fY is positive, moves <a href="#Rect">Rect</a> downward.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -2012,7 +2012,7 @@ rect: 5, 1, 55, 86
|
||||
---
|
||||
|
||||
# <a name="Intersection"></a> Intersection
|
||||
<a href="#Rect">Rects</a> <a href="#SkRect_intersect">intersect</a> when they enclose a common area. To <a href="#SkRect_intersect">intersect</a>, each of the pair
|
||||
<a href="#Rect">Rects</a> <a href="#SkRect_intersect">intersect</a> when they enclose a common area. To <a href="#SkRect_intersect">intersect</a>, each of the pair
|
||||
must describe area; <a href="#SkRect_fLeft">fLeft</a> is less than <a href="#SkRect_fRight">fRight</a>, and <a href="#SkRect_fTop">fTop</a> is less than <a href="#SkRect_fBottom">fBottom</a>;
|
||||
empty() returns false. The intersection of <a href="#Rect">Rect</a> pair can be described by:
|
||||
|
||||
@ -2368,7 +2368,7 @@ void joinNonEmptyArg(const SkRect& r)
|
||||
|
||||
Sets <a href="#Rect">Rect</a> to the union of itself and <a href="#SkRect_joinNonEmptyArg_r">r</a>.
|
||||
|
||||
Asserts if <a href="#SkRect_joinNonEmptyArg_r">r</a> is empty and <a href="undocumented#SK_DEBUG">SK DEBUG</a> is defined.
|
||||
Asserts if <a href="#SkRect_joinNonEmptyArg_r">r</a> is empty and SK_DEBUG is defined.
|
||||
If <a href="#Rect">Rect</a> is empty, sets <a href="#Rect">Rect</a> to <a href="#SkRect_joinNonEmptyArg_r">r</a>.
|
||||
|
||||
May produce incorrect results if <a href="#SkRect_joinNonEmptyArg_r">r</a> is empty.
|
||||
@ -2519,7 +2519,7 @@ void growToInclude(const SkPoint pts[], size_t stride, int count)
|
||||
|
||||
For each of <a href="#SkRect_growToInclude_3_count">count</a> <a href="SkPoint_Reference#Point">Point</a> in <a href="#SkRect_growToInclude_3_pts">pts</a>, grows <a href="#Rect">Rect</a> to include (pt.fX, pt.fY), modifying
|
||||
it so that:
|
||||
<a href="#SkRect_fLeft">fLeft</a> <= pt.fX <= <a href="#SkRect_fRight">fRight</a> && <a href="#SkRect_fTop">fTop</a> <= pt.fY <= <a href="#SkRect_fBottom">fBottom</a>.
|
||||
<a href="#SkRect_fLeft">fLeft</a> <= pt.fX <= <a href="#SkRect_fRight">fRight</a> && <a href="#SkRect_fTop">fTop</a> <= pt.fY <= <a href="#SkRect_fBottom">fBottom</a>.
|
||||
|
||||
<a href="SkPoint_Reference#Point">Point</a> may be followed with other data in each array element. <a href="#SkRect_growToInclude_3_stride">stride</a> is number
|
||||
of bytes in element; the interval to skip to advance from one <a href="SkPoint_Reference#Point">Point</a> to
|
||||
@ -2941,7 +2941,7 @@ rect.asScalars() == &rect.fLeft
|
||||
void dump(bool asHex) const
|
||||
</pre>
|
||||
|
||||
Writes text representation of <a href="#Rect">Rect</a> to standard output. Set <a href="#SkRect_dump_asHex">asHex</a> to true to
|
||||
Writes text representation of <a href="#Rect">Rect</a> to standard output. Set <a href="#SkRect_dump_asHex">asHex</a> to true to
|
||||
generate exact binary representations of floating point numbers.
|
||||
|
||||
### Parameters
|
||||
@ -2978,7 +2978,7 @@ void dump() const
|
||||
</pre>
|
||||
|
||||
Writes text representation of <a href="#Rect">Rect</a> to standard output. The representation may be
|
||||
directly compiled as <a href="undocumented#C">C</a>++ code. Floating point values are written
|
||||
directly compiled as C++ code. Floating point values are written
|
||||
with limited precision; it may not be possible to reconstruct original <a href="#Rect">Rect</a>
|
||||
from output.
|
||||
|
||||
@ -3009,11 +3009,11 @@ void dumpHex() const
|
||||
</pre>
|
||||
|
||||
Writes text representation of <a href="#Rect">Rect</a> to standard output. The representation may be
|
||||
directly compiled as <a href="undocumented#C">C</a>++ code. Floating point values are written
|
||||
directly compiled as C++ code. Floating point values are written
|
||||
in hexadecimal to preserve their exact bit pattern. The output reconstructs the
|
||||
original <a href="#Rect">Rect</a>.
|
||||
|
||||
Use instead of <a href="#SkRect_dump_2">dump</a> when submittingbug reports against <a href="undocumented#Skia">Skia</a>.
|
||||
Use instead of <a href="#SkRect_dump_2">dump</a> when submitting <a href="http://bug.skia.org">bug reports against Skia</a> .
|
||||
|
||||
### Example
|
||||
|
||||
|
@ -5,7 +5,7 @@ SkSurface Reference
|
||||
|
||||
# <a name="SkSurface"></a> Class SkSurface
|
||||
<a href="#SkSurface">SkSurface</a> is responsible for managing the pixels that a canvas draws into. The pixels can be
|
||||
allocated either in <a href="undocumented#CPU">CPU</a> memory (a raster surface) or on the <a href="undocumented#GPU">GPU</a> (a <a href="undocumented#GrRenderTarget">GrRenderTarget</a> surface).
|
||||
allocated either in CPU memory (a raster surface) or on the GPU (a <a href="undocumented#GrRenderTarget">GrRenderTarget</a> surface).
|
||||
<a href="#SkSurface">SkSurface</a> takes care of allocating a <a href="SkCanvas_Reference#SkCanvas">SkCanvas</a> that will <a href="#SkSurface_draw">draw</a> into the surface. Call
|
||||
surface-><a href="#SkSurface_getCanvas">getCanvas</a> to use that canvas (but don't delete it, it is owned by the surface).
|
||||
<a href="#SkSurface">SkSurface</a> always has non-zero dimensions. If there is a request for a new surface, and either
|
||||
@ -22,27 +22,27 @@ of the requested dimensions are zero, then nullptr will be returned.
|
||||
|
||||
| description | function |
|
||||
| --- | --- |
|
||||
| <a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a> memory buffer. |
|
||||
| <a href="#SkSurface_MakeFromBackendTexture">MakeFromBackendTexture</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a>-backed texture. |
|
||||
| <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#GPU">GPU</a>-backed texture. |
|
||||
| <a href="#SkSurface_MakeFromBackendRenderTarget">MakeFromBackendRenderTarget</a> | Creates <a href="#Surface">Surface</a> from GPU memory buffer. |
|
||||
| <a href="#SkSurface_MakeFromBackendTexture">MakeFromBackendTexture</a> | Creates <a href="#Surface">Surface</a> from GPU-backed texture. |
|
||||
| <a href="#SkSurface_MakeFromBackendTextureAsRenderTarget">MakeFromBackendTextureAsRenderTarget</a> | Creates <a href="#Surface">Surface</a> from GPU-backed texture. |
|
||||
| <a href="#SkSurface_MakeNull">MakeNull</a> | Creates <a href="#Surface">Surface</a> without backing pixels. |
|
||||
| <a href="#SkSurface_MakeRaster">MakeRaster</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a>. |
|
||||
| <a href="#SkSurface_MakeRasterDirect">MakeRasterDirect</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="#Storage">Pixel Storage</a>. |
|
||||
| <a href="#SkSurface_MakeRasterDirectReleaseProc">MakeRasterDirectReleaseProc</a> | Creates <a href="#Surface">Surface</a> from <a href="undocumented#SkImageInfo">SkImageInfo</a> and <a href="#Storage">Pixel Storage</a>. |
|
||||
| <a href="#SkSurface_MakeRasterN32Premul">MakeRasterN32Premul</a> | Creates <a href="#Surface">Surface</a> from <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a> matching output. |
|
||||
| <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> | Creates <a href="#Surface">Surface</a> pointing to new <a href="undocumented#GPU">GPU</a> memory buffer. |
|
||||
| <a href="#SkSurface_MakeRenderTarget">MakeRenderTarget</a> | Creates <a href="#Surface">Surface</a> pointing to new GPU memory buffer. |
|
||||
| <a href="#SkSurface_characterize">characterize</a> | Set up <a href="#Characterization">Surface Characterization</a> for threaded pre-processing. |
|
||||
| <a href="#SkSurface_draw">draw</a> | Draws <a href="#Surface">Surface</a> contents to canvas. |
|
||||
| <a href="#SkSurface_flush">flush</a> | Resolve pending <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a>. |
|
||||
| <a href="#SkSurface_flushAndSignalSemaphores">flushAndSignalSemaphores</a> | Resolve pending <a href="undocumented#I">I</a>/<a href="undocumented#O">O</a>, and signal. |
|
||||
| <a href="#SkSurface_flush">flush</a> | Resolve pending I/O. |
|
||||
| <a href="#SkSurface_flushAndSignalSemaphores">flushAndSignalSemaphores</a> | Resolve pending I/O, and signal. |
|
||||
| <a href="#SkSurface_generationID">generationID</a> | Returns unique ID. |
|
||||
| <a href="#SkSurface_getCanvas">getCanvas</a> | Returns <a href="SkCanvas_Reference#Canvas">Canvas</a> that draws into <a href="#Surface">Surface</a>. |
|
||||
| <a href="#SkSurface_getRenderTargetHandle">getRenderTargetHandle</a> | Returns the <a href="undocumented#GPU">GPU</a> reference to render target. |
|
||||
| <a href="#SkSurface_getTextureHandle">getTextureHandle</a> | Returns the <a href="undocumented#GPU">GPU</a> reference to texture. |
|
||||
| <a href="#SkSurface_getRenderTargetHandle">getRenderTargetHandle</a> | Returns the GPU reference to render target. |
|
||||
| <a href="#SkSurface_getTextureHandle">getTextureHandle</a> | Returns the GPU reference to texture. |
|
||||
| <a href="#SkSurface_height">height</a> | Returns pixel row count. |
|
||||
| <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> | Returns <a href="SkImage_Reference#Image">Image</a> capturing <a href="#Surface">Surface</a> contents. |
|
||||
| <a href="#SkSurface_makeSurface">makeSurface</a> | Returns a compatible <a href="#Surface">Surface</a>. |
|
||||
| <a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a> | Notifies that contents will be changed outside of <a href="undocumented#Skia">Skia</a>. |
|
||||
| <a href="#SkSurface_notifyContentWillChange">notifyContentWillChange</a> | Notifies that contents will be changed outside of Skia. |
|
||||
| <a href="#SkSurface_peekPixels">peekPixels</a> | Copies <a href="#Surface">Surface</a> parameters to <a href="SkPixmap_Reference#Pixmap">Pixmap</a>. |
|
||||
| <a href="#SkSurface_prepareForExternalIO">prepareForExternalIO</a> | To be deprecated. |
|
||||
| <a href="#SkSurface_props">props</a> | Returns <a href="#Properties">Surface Properties</a>. |
|
||||
@ -81,7 +81,7 @@ pointer to destination <a href="#SkSurface_MakeRasterDirect_pixels">pixels</a> b
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterDirect_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td>
|
||||
interval from one <a href="#Surface">Surface</a> row to the next</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterDirect_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -148,7 +148,7 @@ called when <a href="#Surface">Surface</a> is deleted; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
passed to <a href="#SkSurface_MakeRasterDirectReleaseProc_releaseProc">releaseProc</a>; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterDirectReleaseProc_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -208,7 +208,7 @@ of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRaster_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td>
|
||||
interval from one <a href="#Surface">Surface</a> row to the next; may be zero</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRaster_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -258,7 +258,7 @@ info contains <a href="undocumented#Image_Color_Type">Image Color Type</a> and <
|
||||
<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>,
|
||||
of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must be greater than zero</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRaster_2_props"> <code><strong>props </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts;
|
||||
LCD striping orientation and setting for device independent fonts;
|
||||
may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -304,7 +304,7 @@ pixel column count; must be greater than zero</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterN32Premul_height"> <code><strong>height </strong></code> </a></td> <td>
|
||||
pixel row count; must be greater than zero</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRasterN32Premul_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -344,25 +344,25 @@ static sk_sp<SkSurface> MakeFromBackendTexture(GrContext* context,
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Wraps a <a href="undocumented#GPU">GPU</a>-backed texture into <a href="#Surface">Surface</a>. Caller must ensure the texture is
|
||||
Wraps a GPU-backed texture into <a href="#Surface">Surface</a>. Caller must ensure the texture is
|
||||
valid for the lifetime of returned <a href="#Surface">Surface</a>. If <a href="#SkSurface_MakeFromBackendTexture_sampleCnt">sampleCnt</a> greater than zero,
|
||||
creates an intermediate <a href="undocumented#MSAA">MSAA</a> <a href="#Surface">Surface</a> which is used for drawing <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a>.
|
||||
creates an intermediate MSAA <a href="#Surface">Surface</a> which is used for drawing <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a>.
|
||||
|
||||
<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> is valid if
|
||||
its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendTexture_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendTexture_context">context</a>; for instance, if
|
||||
<a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendTexture_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>,
|
||||
<a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> has an sRGB configuration, then <a href="#SkSurface_MakeFromBackendTexture_context">context</a> must support sRGB,
|
||||
and <a href="#SkSurface_MakeFromBackendTexture_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendTexture_backendTexture">backendTexture</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must
|
||||
not exceed <a href="#SkSurface_MakeFromBackendTexture_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendTexture_context">context</a> must be able to support
|
||||
back-end textures.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendTexture_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td>
|
||||
@ -370,7 +370,7 @@ samples per pixel, or 0 to disable full scene anti-aliasing</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -415,25 +415,25 @@ static sk_sp<SkSurface> MakeFromBackendTexture(GrContext* context,
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Wraps a <a href="undocumented#GPU">GPU</a>-backed texture into <a href="#Surface">Surface</a>. Caller must ensure the texture is
|
||||
Wraps a GPU-backed texture into <a href="#Surface">Surface</a>. Caller must ensure the texture is
|
||||
valid for the lifetime of returned <a href="#Surface">Surface</a>. If <a href="#SkSurface_MakeFromBackendTexture_2_sampleCnt">sampleCnt</a> greater than zero,
|
||||
creates an intermediate <a href="undocumented#MSAA">MSAA</a> <a href="#Surface">Surface</a> which is used for drawing <a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a>.
|
||||
creates an intermediate MSAA <a href="#Surface">Surface</a> which is used for drawing <a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a>.
|
||||
|
||||
<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a> is valid if
|
||||
its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendTexture_2_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendTexture_2_context">context</a>; for instance, if
|
||||
<a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendTexture_2_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>,
|
||||
<a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a> has an sRGB configuration, then <a href="#SkSurface_MakeFromBackendTexture_2_context">context</a> must support sRGB,
|
||||
and <a href="#SkSurface_MakeFromBackendTexture_2_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendTexture_2_backendTexture">backendTexture</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must
|
||||
not exceed <a href="#SkSurface_MakeFromBackendTexture_2_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendTexture_2_context">context</a> must be able to support
|
||||
back-end textures.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td>
|
||||
@ -446,7 +446,7 @@ one of: <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="un
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTexture_2_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -494,30 +494,30 @@ static sk_sp<SkSurface> MakeFromBackendRenderTarget(GrContext* context,
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Wraps a <a href="undocumented#GPU">GPU</a>-backed buffer into <a href="#Surface">Surface</a>. Caller must ensure render target is
|
||||
Wraps a GPU-backed buffer into <a href="#Surface">Surface</a>. Caller must ensure render target is
|
||||
valid for the lifetime of returned <a href="#Surface">Surface</a>.
|
||||
|
||||
<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> is valid if
|
||||
its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendRenderTarget_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a>; for instance, if
|
||||
<a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>,
|
||||
<a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> has an sRGB configuration, then <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> must support sRGB,
|
||||
and <a href="#SkSurface_MakeFromBackendRenderTarget_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget">backendRenderTarget</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must
|
||||
not exceed <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendRenderTarget_context">context</a> must be able to support
|
||||
back-end render targets.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_backendRenderTarget"> <code><strong>backendRenderTarget </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU">GPU</a> intermediate memory buffer</td>
|
||||
GPU intermediate memory buffer</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -561,24 +561,24 @@ static sk_sp<SkSurface> MakeFromBackendRenderTarget(GrContext* context,
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Wraps a <a href="undocumented#GPU">GPU</a>-backed buffer into <a href="#Surface">Surface</a>. Caller must ensure render target is
|
||||
Wraps a GPU-backed buffer into <a href="#Surface">Surface</a>. Caller must ensure render target is
|
||||
valid for the lifetime of returned <a href="#Surface">Surface</a>.
|
||||
|
||||
<a href="#Surface">Surface</a> is returned if all parameters are valid. <a href="#SkSurface_MakeFromBackendRenderTarget_2_backendRenderTarget">backendRenderTarget</a> is valid if
|
||||
its pixel configuration agrees with <a href="#SkSurface_MakeFromBackendRenderTarget_2_colorSpace">colorSpace</a> and <a href="#SkSurface_MakeFromBackendRenderTarget_2_context">context</a>; for instance, if
|
||||
<a href="#SkSurface_MakeFromBackendRenderTarget_2_backendRenderTarget">backendRenderTarget</a> has an <a href="undocumented#sRGB">sRGB</a> configuration, then <a href="#SkSurface_MakeFromBackendRenderTarget_2_context">context</a> must support <a href="undocumented#sRGB">sRGB</a>,
|
||||
<a href="#SkSurface_MakeFromBackendRenderTarget_2_backendRenderTarget">backendRenderTarget</a> has an sRGB configuration, then <a href="#SkSurface_MakeFromBackendRenderTarget_2_context">context</a> must support sRGB,
|
||||
and <a href="#SkSurface_MakeFromBackendRenderTarget_2_colorSpace">colorSpace</a> must be present. Further, <a href="#SkSurface_MakeFromBackendRenderTarget_2_backendRenderTarget">backendRenderTarget</a> <a href="#SkSurface_width">width</a> and <a href="#SkSurface_height">height</a> must
|
||||
not exceed <a href="#SkSurface_MakeFromBackendRenderTarget_2_context">context</a> capabilities, and the <a href="#SkSurface_MakeFromBackendRenderTarget_2_context">context</a> must be able to support
|
||||
back-end render targets.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_backendRenderTarget"> <code><strong>backendRenderTarget </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU">GPU</a> intermediate memory buffer</td>
|
||||
GPU intermediate memory buffer</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_colorType"> <code><strong>colorType </strong></code> </a></td> <td>
|
||||
@ -589,7 +589,7 @@ one of: <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="un
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendRenderTarget_2_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -637,20 +637,20 @@ static sk_sp<SkSurface> MakeFromBackendTextureAsRenderTarget(GrContext* co
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Used to wrap a <a href="undocumented#GPU">GPU</a>-backed texture as a <a href="#SkSurface">SkSurface</a>. <a href="undocumented#Skia">Skia</a> will treat the texture as
|
||||
a rendering target only, but unlike NewFromBackendRenderTarget, <a href="undocumented#Skia">Skia</a> will manage and own
|
||||
the associated render target objects (but not the provided texture). <a href="undocumented#Skia">Skia</a> will not assume
|
||||
Used to wrap a GPU-backed texture as a <a href="#SkSurface">SkSurface</a>. Skia will treat the texture as
|
||||
a rendering target only, but unlike NewFromBackendRenderTarget, Skia will manage and own
|
||||
the associated render target objects (but not the provided texture). Skia will not assume
|
||||
ownership of the texture and the client must ensure the texture is valid for the lifetime
|
||||
of the <a href="#SkSurface">SkSurface</a>.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td>
|
||||
@ -658,7 +658,7 @@ samples per pixel, or 0 to disable full scene anti-aliasing</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -702,20 +702,20 @@ static sk_sp<SkSurface> MakeFromBackendTextureAsRenderTarget(GrContext* co
|
||||
const SkSurfaceProps* surfaceProps)
|
||||
</pre>
|
||||
|
||||
Used to wrap a <a href="undocumented#GPU">GPU</a>-backed texture as a <a href="#SkSurface">SkSurface</a>. <a href="undocumented#Skia">Skia</a> will treat the texture as
|
||||
a rendering target only, but unlike NewFromBackendRenderTarget, <a href="undocumented#Skia">Skia</a> will manage and own
|
||||
the associated render target objects (but not the provided texture). <a href="undocumented#Skia">Skia</a> will not assume
|
||||
Used to wrap a GPU-backed texture as a <a href="#SkSurface">SkSurface</a>. Skia will treat the texture as
|
||||
a rendering target only, but unlike NewFromBackendRenderTarget, Skia will manage and own
|
||||
the associated render target objects (but not the provided texture). Skia will not assume
|
||||
ownership of the texture and the client must ensure the texture is valid for the lifetime
|
||||
of the <a href="#SkSurface">SkSurface</a>.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_context"> <code><strong>context </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU_Context">GPU Context</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td>
|
||||
texture residing on <a href="undocumented#GPU">GPU</a></td>
|
||||
texture residing on GPU</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_origin"> <code><strong>origin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_sampleCnt"> <code><strong>sampleCnt </strong></code> </a></td> <td>
|
||||
@ -728,7 +728,7 @@ one of: <a href="undocumented#SkColorType">kUnknown SkColorType</a>, <a href="un
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td>
|
||||
range of colors</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeFromBackendTextureAsRenderTarget_2_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -775,14 +775,14 @@ static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted bu
|
||||
bool shouldCreateWithMips = false)
|
||||
</pre>
|
||||
|
||||
Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_context">context</a>. Allocates memory for
|
||||
Returns offscreen <a href="#Surface">Surface</a> on GPU indicated by <a href="#SkSurface_MakeRenderTarget_context">context</a>. Allocates memory for
|
||||
pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_budgeted">budgeted</a>
|
||||
selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_context">context</a>. <a href="#SkSurface_MakeRenderTarget_imageInfo">imageInfo</a>
|
||||
describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in
|
||||
<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and color matching in <a href="undocumented#Color_Space">Color Space</a>.
|
||||
|
||||
<a href="#SkSurface_MakeRenderTarget_sampleCount">sampleCount</a> requests the number of samples per pixel.
|
||||
Pass zero to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a>. The request is rounded
|
||||
<a href="#SkSurface_MakeRenderTarget_sampleCount">sampleCount</a> requests the number of samples per pixel.
|
||||
Pass zero to disable Multi_Sample_Anti_Aliasing. The request is rounded
|
||||
up to the next supported count, or rounded down if it is larger than the
|
||||
maximum supported count.
|
||||
|
||||
@ -790,7 +790,7 @@ maximum supported count.
|
||||
|
||||
<a href="#SkSurface_MakeRenderTarget_shouldCreateWithMips">shouldCreateWithMips</a> hints that <a href="SkImage_Reference#Image">Image</a> returned by <a href="#SkSurface_makeImageSnapshot">makeImageSnapshot</a> is <a href="undocumented#Mip_Map">Mip Map</a>.
|
||||
|
||||
If <a href="undocumented#SK_SUPPORT_GPU">SK SUPPORT GPU</a> is defined as zero, has no effect and returns nullptr.
|
||||
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -806,7 +806,7 @@ samples per pixel, or 0 to disable full scene anti-aliasing</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRenderTarget_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td>
|
||||
one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRenderTarget_surfaceProps"> <code><strong>surfaceProps </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRenderTarget_shouldCreateWithMips"> <code><strong>shouldCreateWithMips </strong></code> </a></td> <td>
|
||||
hint that <a href="#Surface">Surface</a> will host <a href="undocumented#Mip_Map">Mip Map</a> images</td>
|
||||
@ -833,14 +833,14 @@ static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted bu
|
||||
const SkSurfaceProps* props)
|
||||
</pre>
|
||||
|
||||
Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_2_context">context</a>. Allocates memory for
|
||||
Returns offscreen <a href="#Surface">Surface</a> on GPU indicated by <a href="#SkSurface_MakeRenderTarget_2_context">context</a>. Allocates memory for
|
||||
pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_2_budgeted">budgeted</a>
|
||||
selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_2_context">context</a>. <a href="#SkSurface_MakeRenderTarget_2_imageInfo">imageInfo</a>
|
||||
describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in
|
||||
<a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, and color matching in <a href="undocumented#Color_Space">Color Space</a>.
|
||||
|
||||
<a href="#SkSurface_MakeRenderTarget_2_sampleCount">sampleCount</a> requests the number of samples per pixel.
|
||||
Pass zero to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a>. The request is rounded
|
||||
<a href="#SkSurface_MakeRenderTarget_2_sampleCount">sampleCount</a> requests the number of samples per pixel.
|
||||
Pass zero to disable Multi_Sample_Anti_Aliasing. The request is rounded
|
||||
up to the next supported count, or rounded down if it is larger than the
|
||||
maximum supported count.
|
||||
|
||||
@ -856,9 +856,9 @@ one of: <a href="#SkBudgeted_kNo">SkBudgeted::kNo</a>, <a href="#SkBudgeted_kYes
|
||||
<a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, <a href="undocumented#Image_Color_Type">Image Color Type</a>, <a href="undocumented#Image_Alpha_Type">Image Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>,
|
||||
of <a href="undocumented#Raster_Surface">Raster Surface</a>; <a href="#SkSurface_width">width</a>, or <a href="#SkSurface_height">height</a>, or both, may be zero</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_sampleCount"> <code><strong>sampleCount </strong></code> </a></td> <td>
|
||||
samples per pixel, or 0 to disable <a href="undocumented#Multi_Sample_Anti_Aliasing">Multi Sample Anti Aliasing</a></td>
|
||||
samples per pixel, or 0 to disable Multi_Sample_Anti_Aliasing</td>
|
||||
</tr> <tr> <td><a name="SkSurface_MakeRenderTarget_2_props"> <code><strong>props </strong></code> </a></td> <td>
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent
|
||||
LCD striping orientation and setting for device independent
|
||||
fonts; may be nullptr</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -869,8 +869,8 @@ fonts; may be nullptr</td>
|
||||
|
||||
### Example
|
||||
|
||||
<div><fiddle-embed name="640321e8ecfb3f9329f3bc6e1f02485f" gpu="true" cpu="true"><div><a href="undocumented#LCD">LCD</a> text takes advantage of raster striping to improve resolution. Only one of
|
||||
the four combinations is correct, depending on whether the monitor's <a href="undocumented#LCD">LCD</a> is
|
||||
<div><fiddle-embed name="640321e8ecfb3f9329f3bc6e1f02485f" gpu="true" cpu="true"><div>LCD text takes advantage of raster striping to improve resolution. Only one of
|
||||
the four combinations is correct, depending on whether the monitor's LCD is
|
||||
horizontal or vertical, and whether the order of the stripes is red blue green
|
||||
or red green blue.</div></fiddle-embed></div>
|
||||
|
||||
@ -885,7 +885,7 @@ static sk_sp<SkSurface> MakeRenderTarget(GrContext* context, SkBudgeted bu
|
||||
const SkImageInfo& imageInfo)
|
||||
</pre>
|
||||
|
||||
Returns offscreen <a href="#Surface">Surface</a> on <a href="undocumented#GPU">GPU</a> indicated by <a href="#SkSurface_MakeRenderTarget_3_context">context</a>. Allocates memory for
|
||||
Returns offscreen <a href="#Surface">Surface</a> on GPU indicated by <a href="#SkSurface_MakeRenderTarget_3_context">context</a>. Allocates memory for
|
||||
pixels, based on the <a href="#SkSurface_width">width</a>, <a href="#SkSurface_height">height</a>, and <a href="undocumented#Image_Color_Type">Image Color Type</a> in ImageInfo. <a href="#SkSurface_MakeRenderTarget_3_budgeted">budgeted</a>
|
||||
selects whether allocation for offscreen pixels is tracked by <a href="#SkSurface_MakeRenderTarget_3_context">context</a>. <a href="#SkSurface_MakeRenderTarget_3_imageInfo">imageInfo</a>
|
||||
describes the pixel format in <a href="undocumented#Image_Color_Type">Image Color Type</a>, and transparency in
|
||||
@ -1092,7 +1092,7 @@ enum <a href="#SkSurface_ContentChangeMode">ContentChangeMode</a> {
|
||||
void notifyContentWillChange(ContentChangeMode mode)
|
||||
</pre>
|
||||
|
||||
Notifies that <a href="#Surface">Surface</a> contents will be changed by code outside of <a href="undocumented#Skia">Skia</a>.
|
||||
Notifies that <a href="#Surface">Surface</a> contents will be changed by code outside of Skia.
|
||||
Subsequent calls to <a href="#SkSurface_generationID">generationID</a> return a different value.
|
||||
|
||||
<a href="#SkSurface_notifyContentWillChange_mode">mode</a> is normally passed as <a href="#SkSurface_kRetain_ContentChangeMode">kRetain ContentChangeMode</a>.
|
||||
@ -1121,7 +1121,14 @@ enum <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> {
|
||||
<a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>,
|
||||
<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>,
|
||||
<a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a>,
|
||||
};</pre>
|
||||
};
|
||||
|
||||
static const <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> <a href="#SkSurface_kFlushRead_TextureHandleAccess">kFlushRead TextureHandleAccess</a> =
|
||||
<a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>;
|
||||
static const <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> <a href="#SkSurface_kFlushWrite_TextureHandleAccess">kFlushWrite TextureHandleAccess</a> =
|
||||
<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>;
|
||||
static const <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> <a href="#SkSurface_kDiscardWrite_TextureHandleAccess">kDiscardWrite TextureHandleAccess</a> =
|
||||
<a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a>;</pre>
|
||||
|
||||
### Constants
|
||||
|
||||
@ -1135,6 +1142,18 @@ enum <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> {
|
||||
<tr>
|
||||
<td><a name="SkSurface_kDiscardWrite_BackendHandleAccess"> <code><strong>SkSurface::kDiscardWrite_BackendHandleAccess </strong></code> </a></td><td>2</td><td>Caller must overwrite the entire back-end object.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkSurface_kFlushRead_TextureHandleAccess"> <code><strong>SkSurface::kFlushRead_TextureHandleAccess </strong></code> </a></td><td>0</td><td>Deprecated.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkSurface_kFlushWrite_TextureHandleAccess"> <code><strong>SkSurface::kFlushWrite_TextureHandleAccess </strong></code> </a></td><td>1</td><td>Deprecated.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a name="SkSurface_kDiscardWrite_TextureHandleAccess"> <code><strong>SkSurface::kDiscardWrite_TextureHandleAccess </strong></code> </a></td><td>2</td><td>Deprecated.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Example
|
||||
@ -1154,8 +1173,8 @@ enum <a href="#SkSurface_BackendHandleAccess">BackendHandleAccess</a> {
|
||||
GrBackendObject getTextureHandle(BackendHandleAccess backendHandleAccess)
|
||||
</pre>
|
||||
|
||||
Returns the <a href="undocumented#GPU">GPU</a> back-end reference of the texture used by <a href="#Surface">Surface</a>, or zero
|
||||
if <a href="#Surface">Surface</a> is not backed by a <a href="undocumented#GPU">GPU</a> texture.
|
||||
Returns the GPU back-end reference of the texture used by <a href="#Surface">Surface</a>, or zero
|
||||
if <a href="#Surface">Surface</a> is not backed by a GPU texture.
|
||||
|
||||
The returned texture handle is only valid until the next <a href="#SkSurface_draw">draw</a> into <a href="#Surface">Surface</a>,
|
||||
or when <a href="#Surface">Surface</a> is deleted.
|
||||
@ -1170,7 +1189,7 @@ one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendH
|
||||
|
||||
### Return Value
|
||||
|
||||
<a href="undocumented#GPU">GPU</a> texture reference
|
||||
GPU texture reference
|
||||
|
||||
### Example
|
||||
|
||||
@ -1189,21 +1208,21 @@ one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendH
|
||||
bool getRenderTargetHandle(GrBackendObject* backendObject, BackendHandleAccess backendHandleAccess)
|
||||
</pre>
|
||||
|
||||
Returns true and stores the <a href="undocumented#GPU">GPU</a> back-end reference of the render target used
|
||||
Returns true and stores the GPU back-end reference of the render target used
|
||||
by <a href="#Surface">Surface</a> in <a href="#SkSurface_getRenderTargetHandle_backendObject">backendObject</a>.
|
||||
|
||||
Return false if <a href="#Surface">Surface</a> is not backed by a <a href="undocumented#GPU">GPU</a> render target, and leaves
|
||||
Return false if <a href="#Surface">Surface</a> is not backed by a GPU render target, and leaves
|
||||
<a href="#SkSurface_getRenderTargetHandle_backendObject">backendObject</a> unchanged.
|
||||
|
||||
The returned render target handle is only valid until the next <a href="#SkSurface_draw">draw</a> into <a href="#Surface">Surface</a>,
|
||||
or when <a href="#Surface">Surface</a> is deleted.
|
||||
|
||||
In <a href="undocumented#OpenGL">OpenGL</a> this returns the frame buffer object ID.
|
||||
In OpenGL this returns the frame buffer object ID.
|
||||
|
||||
### Parameters
|
||||
|
||||
<table> <tr> <td><a name="SkSurface_getRenderTargetHandle_backendObject"> <code><strong>backendObject </strong></code> </a></td> <td>
|
||||
<a href="undocumented#GPU">GPU</a> intermediate memory buffer</td>
|
||||
GPU intermediate memory buffer</td>
|
||||
</tr> <tr> <td><a name="SkSurface_getRenderTargetHandle_backendHandleAccess"> <code><strong>backendHandleAccess </strong></code> </a></td> <td>
|
||||
one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendHandleAccess</a>,
|
||||
<a href="#SkSurface_kFlushWrite_BackendHandleAccess">kFlushWrite BackendHandleAccess</a>, <a href="#SkSurface_kDiscardWrite_BackendHandleAccess">kDiscardWrite BackendHandleAccess</a></td>
|
||||
@ -1212,7 +1231,7 @@ one of: <a href="#SkSurface_kFlushRead_BackendHandleAccess">kFlushRead BackendH
|
||||
|
||||
### Return Value
|
||||
|
||||
true if <a href="#Surface">Surface</a> is backed by <a href="undocumented#GPU">GPU</a> texture
|
||||
true if <a href="#Surface">Surface</a> is backed by GPU texture
|
||||
|
||||
### Example
|
||||
|
||||
@ -1257,7 +1276,7 @@ sk_sp<SkSurface> makeSurface(const SkImageInfo& imageInfo)
|
||||
</pre>
|
||||
|
||||
Returns a compatible <a href="#Surface">Surface</a>, or nullptr. Returned <a href="#Surface">Surface</a> contains
|
||||
the same raster, <a href="undocumented#GPU">GPU</a>, or null properties as the original. Returned <a href="#Surface">Surface</a>
|
||||
the same raster, GPU, or null properties as the original. Returned <a href="#Surface">Surface</a>
|
||||
does not share the same pixels.
|
||||
|
||||
Returns nullptr if <a href="#SkSurface_makeSurface_imageInfo">imageInfo</a> <a href="#SkSurface_width">width</a> or <a href="#SkSurface_height">height</a> are zero, or if <a href="#SkSurface_makeSurface_imageInfo">imageInfo</a>
|
||||
@ -1394,7 +1413,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkSurface_readPixels_dst">dst</a>.colorType() and <a href="#SkSurface_readPixels_dst">dst</a>.alphaType() if required.
|
||||
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a GPU.
|
||||
|
||||
The destination pixel storage must be allocated by the caller.
|
||||
|
||||
@ -1448,7 +1467,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (<a
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.colorType() and <a href="#SkSurface_readPixels_2_dstInfo">dstInfo</a>.alphaType() if required.
|
||||
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a GPU.
|
||||
|
||||
The destination pixel storage must be allocated by the caller.
|
||||
|
||||
@ -1508,7 +1527,7 @@ Destination <a href="SkRect_Reference#Rect">Rect</a> corners are (0, 0) and (bit
|
||||
Copies each readable pixel intersecting both rectangles, without scaling,
|
||||
converting to bitmap.colorType() and bitmap.alphaType() if required.
|
||||
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a <a href="undocumented#GPU">GPU</a>.
|
||||
Pixels are readable when <a href="#Surface">Surface</a> is raster, or backed by a GPU.
|
||||
|
||||
The destination pixel storage must be allocated by the caller.
|
||||
|
||||
@ -1563,7 +1582,7 @@ Returns <a href="#Properties">Surface Properties</a> for surface.
|
||||
|
||||
### Return Value
|
||||
|
||||
<a href="undocumented#LCD">LCD</a> striping orientation and setting for device independent fonts
|
||||
LCD striping orientation and setting for device independent fonts
|
||||
|
||||
### Example
|
||||
|
||||
@ -1601,11 +1620,11 @@ To be deprecated.
|
||||
void flush()
|
||||
</pre>
|
||||
|
||||
Issues pending <a href="#Surface">Surface</a> commands to the <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> and resolves any <a href="#Surface">Surface</a> <a href="undocumented#MSAA">MSAA</a>.
|
||||
Issues pending <a href="#Surface">Surface</a> commands to the GPU-backed API and resolves any <a href="#Surface">Surface</a> MSAA.
|
||||
|
||||
<a href="undocumented#Skia">Skia</a> flushes as needed, so it is not necessary to call this if <a href="undocumented#Skia">Skia</a> manages
|
||||
drawing and object lifetime. Call when interleaving <a href="undocumented#Skia">Skia</a> calls with native
|
||||
<a href="undocumented#GPU">GPU</a> calls.
|
||||
Skia flushes as needed, so it is not necessary to call this if Skia manages
|
||||
drawing and object lifetime. Call when interleaving Skia calls with native
|
||||
GPU calls.
|
||||
|
||||
### See Also
|
||||
|
||||
@ -1621,26 +1640,26 @@ GrSemaphoresSubmitted flushAndSignalSemaphores(int numSemaphores,
|
||||
GrBackendSemaphore signalSemaphores[])
|
||||
</pre>
|
||||
|
||||
Issues pending <a href="#Surface">Surface</a> commands to the <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> and resolves any <a href="#Surface">Surface</a> <a href="undocumented#MSAA">MSAA</a>.
|
||||
Issues pending <a href="#Surface">Surface</a> commands to the GPU-backed API and resolves any <a href="#Surface">Surface</a> MSAA.
|
||||
After issuing all commands, <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a> of count <a href="#SkSurface_flushAndSignalSemaphores_numSemaphores">numSemaphores</a> semaphores
|
||||
are signaled by the <a href="undocumented#GPU">GPU</a>.
|
||||
are signaled by the GPU.
|
||||
|
||||
For each <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> in <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a>:
|
||||
if <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> is initialized, the <a href="undocumented#GPU">GPU</a> back-end uses the semaphore as is;
|
||||
if <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> is initialized, the GPU back-end uses the semaphore as is;
|
||||
otherwise, a new semaphore is created and initializes <a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a>.
|
||||
|
||||
The caller must delete the semaphores created and returned in <a href="#SkSurface_flushAndSignalSemaphores_signalSemaphores">signalSemaphores</a>.
|
||||
<a href="undocumented#GrBackendSemaphore">GrBackendSemaphore</a> can be deleted as soon as this function returns.
|
||||
|
||||
If the back-end <a href="undocumented#API">API</a> is <a href="undocumented#OpenGL">OpenGL</a> only uninitialized <a href="#GrBackendSemaphore">GrBackendSemaphores</a> are supported.
|
||||
If the back-end API is OpenGL only uninitialized <a href="#GrBackendSemaphore">GrBackendSemaphores</a> are supported.
|
||||
|
||||
If the back-end <a href="undocumented#API">API</a> is <a href="undocumented#Vulkan">Vulkan</a> semaphores may be initialized or uninitialized.
|
||||
If the back-end API is Vulkan semaphores may be initialized or uninitialized.
|
||||
If uninitialized, created semaphores are valid only with the VkDevice
|
||||
with which they were created.
|
||||
|
||||
If <a href="#kNo">GrSemaphoresSubmitted::kNo</a> is returned, the <a href="undocumented#GPU">GPU</a> back-end did not create or
|
||||
add any semaphores to signal on the <a href="undocumented#GPU">GPU</a>; the caller should not instruct the <a href="undocumented#GPU">GPU</a>
|
||||
to <a href="#SkSurface_wait">wait</a> on any of the semaphores.
|
||||
If <a href="#kNo">GrSemaphoresSubmitted::kNo</a> is returned, the GPU back-end did not create or
|
||||
add any semaphores to signal on the GPU; the caller should not instruct the GPU
|
||||
to <a href="#SkSurface_wait">wait</a> on any of the semaphores.
|
||||
|
||||
Pending surface commands are flushed regardless of the return result.
|
||||
|
||||
@ -1670,10 +1689,10 @@ one of: <a href="#kYes">GrSemaphoresSubmitted::kYes</a>, <a href="#kNo">GrSemaph
|
||||
bool wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores)
|
||||
</pre>
|
||||
|
||||
Inserts a list of <a href="undocumented#GPU">GPU</a> semaphores that the current <a href="undocumented#GPU">GPU</a>-backed <a href="undocumented#API">API</a> must <a href="#SkSurface_wait">wait</a> on before
|
||||
executing any more commands on the <a href="undocumented#GPU">GPU</a> for this surface. <a href="undocumented#Skia">Skia</a> will take ownership of the
|
||||
Inserts a list of GPU semaphores that the current GPU-backed API must <a href="#SkSurface_wait">wait</a> on before
|
||||
executing any more commands on the GPU for this surface. Skia will take ownership of the
|
||||
underlying semaphores and delete them once they have been signaled and waited on.
|
||||
If this call returns false, then the <a href="undocumented#GPU">GPU</a> back-end will not <a href="#SkSurface_wait">wait</a> on any passed in semaphores,
|
||||
If this call returns false, then the GPU back-end will not <a href="#SkSurface_wait">wait</a> on any passed in semaphores,
|
||||
and the client will still own the semaphores.
|
||||
|
||||
### Parameters
|
||||
@ -1687,7 +1706,7 @@ array of semaphore containers</td>
|
||||
|
||||
### Return Value
|
||||
|
||||
true if <a href="undocumented#GPU">GPU</a> is waiting on semaphores
|
||||
true if GPU is waiting on semaphores
|
||||
|
||||
### Example
|
||||
|
||||
@ -1706,7 +1725,7 @@ true if <a href="undocumented#GPU">GPU</a> is waiting on semaphores
|
||||
bool characterize(SkSurfaceCharacterization* characterization) const
|
||||
</pre>
|
||||
|
||||
Initializes <a href="#Characterization">Surface Characterization</a> that can be used to perform <a href="undocumented#GPU">GPU</a> back-end
|
||||
Initializes <a href="#Characterization">Surface Characterization</a> that can be used to perform GPU back-end
|
||||
pre-processing in a separate thread. Typically this is used to divide drawing
|
||||
into multiple tiles. DeferredDisplayListRecorder records the drawing commands
|
||||
for each tile.
|
||||
|
@ -2,9 +2,61 @@ usingBookmaker
|
||||
===
|
||||
|
||||
# <a name="Bookmaker"></a> Bookmaker
|
||||
|
||||
## <a name="Broken_Build"></a> Broken Build
|
||||
|
||||
If the <a href="https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-PerCommit-Bookmaker">Housekeeper-PerCommit-Bookmaker</a> bot is red, the bot has detected that the files in docs and include/core differ.
|
||||
|
||||
The bot output describes what changed.
|
||||
|
||||
To fix this, edit the docs file corresponding to the changed include file.
|
||||
|
||||
For instance, if the change was made to <a href="SkIRect_Reference#SkIRect">SkIRect</a>, edit docs/SkIRect_Reference.bmh.
|
||||
Checking in the edited docs/SkIRect_Reference.bmh will fix the bot.
|
||||
|
||||
To regenerate the documentation, follow the <a href="#Installing">Installing</a> and <a href="#Regenerate">Regenerate</a> steps below.
|
||||
|
||||
If the <a href="https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker">Housekeeper-Nightly-Bookmaker</a> bot is red, one of several things may have gone wrong:
|
||||
|
||||
<table> <tr>
|
||||
<td>A change to include broke documentation examples.</td> </tr> <tr>
|
||||
<td>Something changed the examples that output text.</td> </tr> <tr>
|
||||
<td>Some interface was added, deleted, edited.</td> </tr> <tr>
|
||||
<td>Documentation is malformed.</td> </tr>
|
||||
</table>
|
||||
|
||||
The bot output describes what changed, and includes the file and line
|
||||
where the error occurred.
|
||||
|
||||
To regenerate the documentation, follow the <a href="#Installing">Installing</a> and <a href="#Regenerate">Regenerate</a> steps below.
|
||||
|
||||
## <a name="Editing_Comments"></a> Editing Comments
|
||||
|
||||
Edit docs instead of include/core files to update comments if possible.
|
||||
|
||||
The <a href="#Bookmaker">Bookmaker</a> bots do not complain if the docs file does not match the
|
||||
corresponding include comments. Running <a href="#Bookmaker">Bookmaker</a> include generation will
|
||||
report when docs and includes comments do not match.
|
||||
|
||||
For instance, if include/core/SkSurface.h comments do not match
|
||||
docs/SkSurface_Reference.bmh, running:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/dir/bookmaker -b docs -i include/core/SkSurface.h -p</pre>
|
||||
|
||||
generates
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
wrote updated <a href="SkSurface_Reference#SkSurface">SkSurface</a>.h</pre>
|
||||
|
||||
The updated SkSurface.h is written to the root to avoid subsequent runs of
|
||||
<a href="#Bookmaker">Bookmaker</a> from recompiling. if SkSurface.h was not changed, it is not written,
|
||||
and <a href="#Bookmaker">Bookmaker</a> will not generate any output.
|
||||
How to use the <a href="#Bookmaker">Bookmaker</a> utility.
|
||||
|
||||
Install<a href="usingBookmaker#Go">Go</a>if needed.
|
||||
## <a name="Installing"></a> Installing
|
||||
|
||||
Install <a href="https://golang.org/doc/install">Go</a> if needed.
|
||||
Get the fiddle command line interface tool.
|
||||
By default this will appear in your home directory.
|
||||
|
||||
@ -14,17 +66,30 @@ $ go get go.skia.org/infra/fiddle/go/fiddlecli</pre>
|
||||
Build <a href="#Bookmaker">Bookmaker</a>.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ninja -<a href="undocumented#C">C</a> out/dir bookmaker</pre>
|
||||
$ ninja -C out/dir bookmaker</pre>
|
||||
|
||||
## <a name="Regenerate"></a> Regenerate
|
||||
|
||||
Complete rebuilding of all bookmaker output looks like:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -e fiddle.json
|
||||
$ ~/go/bin/fiddlecli.exe --input fiddle.json --output fiddleout.json
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -f fiddleout.json -r site/user/api -c
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -x
|
||||
$ ./out/skia/bookmaker.exe -a docs/status.json -p</pre>
|
||||
|
||||
## <a name="New_Documentation"></a> New Documentation
|
||||
|
||||
Generate an starter <a href="#Bookmaker">Bookmaker</a> file from an existing include.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/dir/bookmaker -i include/core/<a href="undocumented#SkXXX.h">SkXXX.h</a> -t docs</pre>
|
||||
$ ./out/dir/bookmaker -i include/core/SkXXX.h -t docs</pre>
|
||||
|
||||
If a method or function has an unnamed parameter, bookmaker generates an error:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
<a href="undocumented#C">C</a>:/puregit/include/core/<a href="SkPixmap_Reference#SkPixmap">SkPixmap</a>.h(208): error: # missing param name
|
||||
C:/puregit/include/core/<a href="SkPixmap_Reference#SkPixmap">SkPixmap</a>.h(208): error: # missing param name
|
||||
bool erase(const SkColor4f&, const SkIRect* subset = nullptr) const
|
||||
^
|
||||
</pre>
|
||||
@ -35,14 +100,14 @@ them. After naming all parameters, check in the include before continuing.
|
||||
A successful run generates
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
docs/<a href="undocumented#SkXXX_Reference">SkXXX Reference</a>.bmh</pre>
|
||||
docs/SkXXX_Reference.bmh</pre>
|
||||
|
||||
.
|
||||
|
||||
Next, use your favorite editor to fill out
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
docs/<a href="undocumented#SkXXX_Reference">SkXXX Reference</a>.bmh</pre>
|
||||
docs/SkXXX_Reference.bmh</pre>
|
||||
|
||||
.
|
||||
|
||||
@ -78,7 +143,7 @@ Descriptions may contain code and formulas, each bracketed by markup.
|
||||
Similar items may be grouped into topics. Topics may include subtopics.
|
||||
|
||||
Each document begins with one or more indices that include the contents of
|
||||
that file. A class reference includes an index listing contained topics,
|
||||
that file. A class reference includes an index listing contained topics,
|
||||
a separate listing for constructors, one for methods, and so on.
|
||||
|
||||
Class methods contain a description, any parameters, any return value,
|
||||
@ -90,10 +155,13 @@ that there is no example.
|
||||
After editing is complete, searching for "" should fail,
|
||||
assuming "" is not the perfect word to use in a description or
|
||||
example!
|
||||
|
||||
## <a name="Adding_Documentation"></a> Adding Documentation
|
||||
|
||||
Generate fiddle.json from all examples, including the ones you just wrote.
|
||||
Error checking is syntatic: starting keywords are closed, keywords have the
|
||||
correct parents.
|
||||
If you run <a href="#Bookmaker">Bookmaker</a> inside <a href="usingBookmaker#Visual_Studio">Visual Studio</a>, you can click on errors and it
|
||||
If you run <a href="#Bookmaker">Bookmaker</a> inside Visual_Studio, you can click on errors and it
|
||||
will take you to the source line in question.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
@ -105,10 +173,10 @@ Errors are contained by the output but aren't reported yet.
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ $GOPATH/bin/fiddlecli --input fiddle.json --output fiddleout.json</pre>
|
||||
|
||||
Generate <a href="usingBookmaker#bmh_SkXXX">bmh SkXXX</a>.md from <a href="usingBookmaker#SkXXX">SkXXX</a>.bmh and fiddleout.json.
|
||||
Generate SkXXX.md from SkXXX.bmh and fiddleout.json.
|
||||
Error checking includes: undefined references, fiddle compiler errors,
|
||||
missing or mismatched printf output.
|
||||
Again, you can click on any errors inside <a href="usingBookmaker#Visual_Studio">Visual Studio</a>.
|
||||
Again, you can click on any errors inside Visual_Studio.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/dir/bookmaker -r site/user/api -b docs -f fiddleout.json</pre>
|
||||
@ -118,28 +186,23 @@ Check to see if it is up to date.
|
||||
This reports if a method no longer exists or its parameters have changed.
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/dir/bookmaker -x -b docs/<a href="usingBookmaker#SkXXX">SkXXX</a>.bmh -i include/core/<a href="usingBookmaker#SkXXX">SkXXX</a>.h</pre>
|
||||
$ ./out/dir/bookmaker -x -b docs/SkXXX.bmh -i include/core/SkXXX.h</pre>
|
||||
|
||||
Generate an updated include header. Run:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
$ ./out/dir/bookmaker -p -b docs -i include/core/<a href="usingBookmaker#SkXXX">SkXXX</a>.h</pre>
|
||||
$ ./out/dir/bookmaker -p -b docs -i include/core/SkXXX.h</pre>
|
||||
|
||||
to write the updated <a href="undocumented#SkXXX.h">SkXXX.h</a> to the current directory.
|
||||
to write the updated SkXXX.h to the current directory.
|
||||
|
||||
Once adding the file is complete, add the file to status.json in the
|
||||
<a href="usingBookmaker#Completed">Completed</a> section. You may add it to the <a href="usingBookmaker#InProgress">InProgress</a> section during
|
||||
Completed section. You may add it to the InProgress section during
|
||||
development, or leave status.json unchanged.
|
||||
|
||||
If the new file has been added to status.json, you can run
|
||||
any of the above commands with -a docs/status.json in place of
|
||||
-b docs or -i includes.
|
||||
|
||||
Complete rebuilding of all bookmaker output looks like:
|
||||
|
||||
<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
|
||||
./ out/skia/bookmaker.exe -a docs/status.json -e fiddle.json</pre>
|
||||
|
||||
## <a name="Bugs"></a> Bugs
|
||||
|
||||
<a href="#Bookmaker">Bookmaker</a> bugs are trackedhere.
|
||||
<a href="#Bookmaker">Bookmaker</a> bugs are tracked <a href="bug.skia.org/6898">here</a> .
|
||||
|
@ -16,7 +16,7 @@ DEFINE_string2(include, i, "", "Path to a *.h file or a directory.");
|
||||
DEFINE_bool2(hack, k, false, "Do a find/replace hack to update all *.bmh files. (Requires -b)");
|
||||
DEFINE_bool2(stdout, o, false, "Write file out to standard out.");
|
||||
DEFINE_bool2(populate, p, false, "Populate include from bmh. (Requires -b -i)");
|
||||
DEFINE_string2(ref, r, "", "Resolve refs and write bmh_*.md files to path. (Requires -b -f)");
|
||||
DEFINE_string2(ref, r, "", "Resolve refs and write *.md files to path. (Requires -b -f)");
|
||||
DEFINE_string2(spellcheck, s, "", "Spell-check [once, all, mispelling]. (Requires -b)");
|
||||
DEFINE_bool2(tokens, t, false, "Write bmh from include. (Requires -b -i)");
|
||||
DEFINE_bool2(crosscheck, x, false, "Check bmh against includes. (Requires -b -i)");
|
||||
|
@ -1041,6 +1041,8 @@ public:
|
||||
fParent = fParent->fParent;
|
||||
}
|
||||
|
||||
const char* ReadToBuffer(string filename, int* size);
|
||||
|
||||
virtual void reset() = 0;
|
||||
|
||||
void resetCommon() {
|
||||
@ -1104,6 +1106,7 @@ public:
|
||||
this->writeString(str.c_str());
|
||||
}
|
||||
|
||||
bool writtenFileDiffers(string filename, string readname);
|
||||
|
||||
unordered_map<string, sk_sp<SkData>> fRawData;
|
||||
unordered_map<string, vector<char>> fLFOnly;
|
||||
@ -1195,7 +1198,7 @@ public:
|
||||
// names without formal definitions (e.g. Column) aren't included
|
||||
// fill in other names once they're actually used
|
||||
{ "", nullptr, MarkType::kNone, R_Y, E_N, 0 }
|
||||
, { "A", nullptr, MarkType::kAnchor, R_Y, E_N, 0 }
|
||||
, { "A", nullptr, MarkType::kAnchor, R_N, E_N, 0 }
|
||||
, { "Alias", nullptr, MarkType::kAlias, R_N, E_N, 0 }
|
||||
, { "Bug", nullptr, MarkType::kBug, R_N, E_N, 0 }
|
||||
, { "Class", &fClassMap, MarkType::kClass, R_Y, E_O, M_CSST | M(Root) }
|
||||
@ -1556,6 +1559,7 @@ public:
|
||||
fInFunction = false;
|
||||
fInString = false;
|
||||
fFailed = false;
|
||||
fPriorEnum = nullptr;
|
||||
}
|
||||
|
||||
void setBracketShortCuts(Bracket bracket) {
|
||||
@ -1724,6 +1728,8 @@ protected:
|
||||
Definition* fRootTopic;
|
||||
Definition* fInBrace;
|
||||
Definition* fLastObject;
|
||||
Definition* fPriorEnum;
|
||||
int fPriorIndex;
|
||||
const char* fIncludeWord;
|
||||
char fPrev;
|
||||
bool fInChar;
|
||||
@ -1837,7 +1843,6 @@ public:
|
||||
void structOut(const Definition* root, const Definition& child,
|
||||
const char* commentStart, const char* commentEnd);
|
||||
void structSizeMembers(const Definition& child);
|
||||
|
||||
private:
|
||||
BmhParser* fBmhParser;
|
||||
Definition* fDeferComment;
|
||||
@ -1966,8 +1971,8 @@ public:
|
||||
this->reset();
|
||||
}
|
||||
|
||||
bool buildReferences(const char* path, const char* outDir);
|
||||
bool buildStatus(const char* path, const char* outDir);
|
||||
bool buildReferences(const char* docDir, const char* mdOutDirOrFile);
|
||||
bool buildStatus(const char* docDir, const char* mdOutDir);
|
||||
private:
|
||||
enum class TableState {
|
||||
kNone,
|
||||
|
@ -449,6 +449,8 @@ bool IncludeParser::crossCheck(BmhParser& bmhParser) {
|
||||
}
|
||||
}
|
||||
}
|
||||
int crossChecks = 0;
|
||||
string firstCheck;
|
||||
for (auto& classMapper : fIClassMap) {
|
||||
string className = classMapper.first;
|
||||
auto finder = bmhParser.fClassMap.find(className);
|
||||
@ -460,7 +462,19 @@ bool IncludeParser::crossCheck(BmhParser& bmhParser) {
|
||||
SkDebugf("some struct elements not found; struct finding in includeParser is missing\n");
|
||||
fFailed = true;
|
||||
}
|
||||
SkDebugf("cross-checked %s\n", className.c_str());
|
||||
if (crossChecks) {
|
||||
SkDebugf(".");
|
||||
} else {
|
||||
SkDebugf("cross-check");
|
||||
firstCheck = className;
|
||||
}
|
||||
++crossChecks;
|
||||
}
|
||||
if (crossChecks) {
|
||||
if (1 == crossChecks) {
|
||||
SkDebugf("%s", firstCheck.c_str());
|
||||
}
|
||||
SkDebugf("\n");
|
||||
}
|
||||
bmhParser.fWroteOut = true;
|
||||
return !fFailed;
|
||||
@ -1338,22 +1352,21 @@ bool IncludeParser::parseEnum(Definition* child, Definition* markupDef) {
|
||||
}
|
||||
markupChild->fChildren.push_back(member);
|
||||
} while (true);
|
||||
for (auto count : child->fChildren) {
|
||||
if (Definition::Type::kBracket == count->fType) {
|
||||
for (auto outsideMember : child->fChildren) {
|
||||
if (Definition::Type::kBracket == outsideMember->fType) {
|
||||
continue;
|
||||
}
|
||||
SkASSERT(Definition::Type::kKeyWord == count->fType);
|
||||
if (KeyWord::kClass == count->fKeyWord) {
|
||||
SkASSERT(Definition::Type::kKeyWord == outsideMember->fType);
|
||||
if (KeyWord::kClass == outsideMember->fKeyWord) {
|
||||
continue;
|
||||
}
|
||||
SkASSERT(KeyWord::kStatic == count->fKeyWord);
|
||||
markupChild->fTokens.emplace_back(MarkType::kMember, count->fContentStart,
|
||||
count->fContentEnd, count->fLineCount, markupChild);
|
||||
SkASSERT(KeyWord::kStatic == outsideMember->fKeyWord);
|
||||
markupChild->fTokens.emplace_back(MarkType::kMember, outsideMember->fContentStart,
|
||||
outsideMember->fContentEnd, outsideMember->fLineCount, markupChild);
|
||||
Definition* member = &markupChild->fTokens.back();
|
||||
member->fName = count->fName;
|
||||
member->fName = outsideMember->fName;
|
||||
// FIXME: ? add comment as well ?
|
||||
markupChild->fChildren.push_back(member);
|
||||
break;
|
||||
}
|
||||
IClassDefinition& classDef = fIClassMap[markupDef->fName];
|
||||
SkASSERT(classDef.fStart);
|
||||
@ -1493,9 +1506,6 @@ bool IncludeParser::parseMethod(Definition* child, Definition* markupDef) {
|
||||
}
|
||||
tokenIter->fName = nameStr;
|
||||
tokenIter->fMarkType = MarkType::kMethod;
|
||||
if (string::npos != nameStr.find("defined")) {
|
||||
SkDebugf("");
|
||||
}
|
||||
tokenIter->fPrivate = string::npos != nameStr.find("::");
|
||||
auto testIter = child->fParent->fTokens.begin();
|
||||
SkASSERT(child->fParentIndex > 0);
|
||||
@ -2036,6 +2046,7 @@ bool IncludeParser::parseChar() {
|
||||
fInEnum = false;
|
||||
}
|
||||
this->popObject();
|
||||
fPriorEnum = nullptr;
|
||||
} else if (Definition::Type::kBracket == fParent->fType
|
||||
&& fParent->fParent && Definition::Type::kKeyWord == fParent->fParent->fType
|
||||
&& KeyWord::kStruct == fParent->fParent->fKeyWord) {
|
||||
@ -2069,27 +2080,31 @@ bool IncludeParser::parseChar() {
|
||||
for (auto nameType = baseIter; nameType != namedIter; ++nameType) {
|
||||
member->fChildren.push_back(&*nameType);
|
||||
}
|
||||
|
||||
}
|
||||
fPriorEnum = nullptr;
|
||||
} else if (fParent->fChildren.size() > 0) {
|
||||
auto lastIter = fParent->fChildren.end();
|
||||
Definition* priorEnum;
|
||||
while (fParent->fChildren.begin() != lastIter) {
|
||||
std::advance(lastIter, -1);
|
||||
priorEnum = *lastIter;
|
||||
if (Definition::Type::kBracket != priorEnum->fType ||
|
||||
(Bracket::kSlashSlash != priorEnum->fBracket
|
||||
&& Bracket::kSlashStar != priorEnum->fBracket)) {
|
||||
break;
|
||||
Definition* priorEnum = fPriorEnum;
|
||||
fPriorEnum = nullptr;
|
||||
if (!priorEnum) {
|
||||
while (fParent->fChildren.begin() != lastIter) {
|
||||
std::advance(lastIter, -1);
|
||||
priorEnum = *lastIter;
|
||||
if (Definition::Type::kBracket != priorEnum->fType ||
|
||||
(Bracket::kSlashSlash != priorEnum->fBracket
|
||||
&& Bracket::kSlashStar != priorEnum->fBracket)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
fPriorIndex = priorEnum->fParentIndex;
|
||||
}
|
||||
if (Definition::Type::kKeyWord == priorEnum->fType
|
||||
&& KeyWord::kEnum == priorEnum->fKeyWord) {
|
||||
auto tokenWalker = fParent->fTokens.begin();
|
||||
std::advance(tokenWalker, priorEnum->fParentIndex);
|
||||
SkASSERT(KeyWord::kEnum == tokenWalker->fKeyWord);
|
||||
std::advance(tokenWalker, fPriorIndex);
|
||||
while (tokenWalker != fParent->fTokens.end()) {
|
||||
std::advance(tokenWalker, 1);
|
||||
++fPriorIndex;
|
||||
if (Punctuation::kSemicolon == tokenWalker->fPunctuation) {
|
||||
break;
|
||||
}
|
||||
@ -2103,6 +2118,7 @@ bool IncludeParser::parseChar() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
auto saveTokenWalker = tokenWalker;
|
||||
Definition* start = &*tokenWalker;
|
||||
bool foundExpected = true;
|
||||
for (KeyWord expected : {KeyWord::kStatic, KeyWord::kConstExpr, KeyWord::kInt}){
|
||||
@ -2116,6 +2132,36 @@ bool IncludeParser::parseChar() {
|
||||
}
|
||||
std::advance(tokenWalker, 1);
|
||||
}
|
||||
if (!foundExpected) {
|
||||
foundExpected = true;
|
||||
tokenWalker = saveTokenWalker;
|
||||
for (KeyWord expected : {KeyWord::kStatic, KeyWord::kConst, KeyWord::kNone}){
|
||||
const Definition* test = &*tokenWalker;
|
||||
if (expected != test->fKeyWord) {
|
||||
foundExpected = false;
|
||||
break;
|
||||
}
|
||||
if (tokenWalker == fParent->fTokens.end()) {
|
||||
break;
|
||||
}
|
||||
if (KeyWord::kNone != expected) {
|
||||
std::advance(tokenWalker, 1);
|
||||
}
|
||||
}
|
||||
if (foundExpected) {
|
||||
auto nameToken = priorEnum->fTokens.begin();
|
||||
string enumName = string(nameToken->fContentStart,
|
||||
nameToken->fContentEnd - nameToken->fContentStart);
|
||||
const Definition* test = &*tokenWalker;
|
||||
string constType = string(test->fContentStart,
|
||||
test->fContentEnd - test->fContentStart);
|
||||
if (enumName != constType) {
|
||||
foundExpected = false;
|
||||
} else {
|
||||
std::advance(tokenWalker, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (foundExpected && tokenWalker != fParent->fTokens.end()) {
|
||||
const char* nameStart = tokenWalker->fStart;
|
||||
std::advance(tokenWalker, 1);
|
||||
@ -2125,7 +2171,8 @@ bool IncludeParser::parseChar() {
|
||||
start->fName = string(nameStart, tp.fChar - nameStart);
|
||||
start->fContentEnd = fChar;
|
||||
priorEnum->fChildren.emplace_back(start);
|
||||
}
|
||||
fPriorEnum = priorEnum;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -486,7 +486,7 @@ void IncludeWriter::enumSizeItems(const Definition& child) {
|
||||
int longestValue = 0;
|
||||
int valueLen = 0;
|
||||
const char* lastEnd = nullptr;
|
||||
SkASSERT(child.fChildren.size() == 1 || child.fChildren.size() == 2);
|
||||
// SkASSERT(child.fChildren.size() == 1 || child.fChildren.size() == 2);
|
||||
auto brace = child.fChildren[0];
|
||||
if (KeyWord::kClass == brace->fKeyWord) {
|
||||
brace = brace->fChildren[0];
|
||||
@ -585,6 +585,9 @@ void IncludeWriter::enumSizeItems(const Definition& child) {
|
||||
|
||||
// walk children and output complete method doxygen description
|
||||
void IncludeWriter::methodOut(const Definition* method, const Definition& child) {
|
||||
if (string::npos != method->fName.find("validate")) {
|
||||
SkDebugf("");
|
||||
}
|
||||
if (fPendingMethod) {
|
||||
fIndent -= 4;
|
||||
fPendingMethod = false;
|
||||
@ -1076,12 +1079,22 @@ bool IncludeWriter::populate(Definition* def, ParentPair* prevPair, RootDefiniti
|
||||
const char* bodyEnd = fDeferComment ? fDeferComment->fContentStart - 1 :
|
||||
fAttrDeprecated ? fAttrDeprecated->fContentStart - 1 :
|
||||
child.fContentStart;
|
||||
if (Definition::Type::kBracket == def->fType && Bracket::kDebugCode == def->fBracket) {
|
||||
auto tokenIter = def->fParent->fTokens.begin();
|
||||
std::advance(tokenIter, def->fParentIndex - 1);
|
||||
Definition* prior = &*tokenIter;
|
||||
if (Definition::Type::kBracket == def->fType &&
|
||||
Bracket::kSlashStar == prior->fBracket) {
|
||||
bodyEnd = prior->fContentStart - 1;
|
||||
}
|
||||
}
|
||||
// FIXME: roll end-trimming into writeBlockTrim call
|
||||
while (fStart < bodyEnd && ' ' >= bodyEnd[-1]) {
|
||||
--bodyEnd;
|
||||
}
|
||||
int blockSize = (int) (bodyEnd - fStart);
|
||||
if (blockSize) {
|
||||
string debugstr(fStart, blockSize);
|
||||
this->writeBlock(blockSize, fStart);
|
||||
}
|
||||
startDef = &child;
|
||||
@ -1445,7 +1458,22 @@ bool IncludeWriter::populate(BmhParser& bmhParser) {
|
||||
this->lfcr();
|
||||
this->writePending();
|
||||
fclose(fOut);
|
||||
SkDebugf("wrote %s\n", fileName.c_str());
|
||||
fflush(fOut);
|
||||
size_t slash = fFileName.find_last_of('/');
|
||||
if (string::npos == slash) {
|
||||
slash = 0;
|
||||
}
|
||||
size_t back = fFileName.find_last_of('\\');
|
||||
if (string::npos == back) {
|
||||
back = 0;
|
||||
}
|
||||
string dir = fFileName.substr(0, SkTMax(slash, back) + 1);
|
||||
string readname = dir + fileName;
|
||||
if (this->writtenFileDiffers(fileName, readname)) {
|
||||
SkDebugf("wrote updated %s\n", fileName.c_str());
|
||||
} else {
|
||||
remove(fileName.c_str());
|
||||
}
|
||||
}
|
||||
return allPassed;
|
||||
}
|
||||
|
@ -10,6 +10,12 @@
|
||||
#include "SkOSFile.h"
|
||||
#include "SkOSPath.h"
|
||||
|
||||
#define FPRINTF(...) \
|
||||
if (fDebugOut) { \
|
||||
SkDebugf(__VA_ARGS__); \
|
||||
} \
|
||||
fprintf(fOut, __VA_ARGS__)
|
||||
|
||||
static void add_ref(const string& leadingSpaces, const string& ref, string* result) {
|
||||
*result += leadingSpaces + ref;
|
||||
}
|
||||
@ -65,7 +71,11 @@ string MdOut::addReferences(const char* refStart, const char* refEnd,
|
||||
}
|
||||
t.skipToMethodEnd();
|
||||
if (base == t.fChar) {
|
||||
break;
|
||||
if (!t.eof() && '~' == base[0] && !isalnum(base[1])) {
|
||||
t.next();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (start >= t.fChar) {
|
||||
continue;
|
||||
@ -76,6 +86,10 @@ string MdOut::addReferences(const char* refStart, const char* refEnd,
|
||||
ref = string(start, t.fChar - start);
|
||||
if (const Definition* def = this->isDefined(t, ref,
|
||||
BmhParser::Resolvable::kOut != resolvable)) {
|
||||
if (MarkType::kExternal == def->fMarkType) {
|
||||
add_ref(leadingSpaces, ref, &result);
|
||||
continue;
|
||||
}
|
||||
SkASSERT(def->fFiddle.length());
|
||||
if (!t.eof() && '(' == t.peek() && t.strnchr(')', t.fEnd)) {
|
||||
if (!t.skipToEndBracket(')')) {
|
||||
@ -237,16 +251,21 @@ string MdOut::addReferences(const char* refStart, const char* refEnd,
|
||||
return result;
|
||||
}
|
||||
|
||||
bool MdOut::buildReferences(const char* fileOrPath, const char* outDir) {
|
||||
if (!sk_isdir(fileOrPath)) {
|
||||
if (!this->buildRefFromFile(fileOrPath, outDir)) {
|
||||
SkDebugf("failed to parse %s\n", fileOrPath);
|
||||
bool MdOut::buildReferences(const char* docDir, const char* mdFileOrPath) {
|
||||
if (!sk_isdir(mdFileOrPath)) {
|
||||
SkString mdFile = SkOSPath::Basename(mdFileOrPath);
|
||||
SkString bmhFile = SkOSPath::Join(docDir, mdFile.c_str());
|
||||
bmhFile.remove(bmhFile.size() - 3, 3);
|
||||
bmhFile += ".bmh";
|
||||
SkString mdPath = SkOSPath::Dirname(mdFileOrPath);
|
||||
if (!this->buildRefFromFile(bmhFile.c_str(), mdPath.c_str())) {
|
||||
SkDebugf("failed to parse %s\n", mdFileOrPath);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
SkOSFile::Iter it(fileOrPath, ".bmh");
|
||||
SkOSFile::Iter it(docDir, ".bmh");
|
||||
for (SkString file; it.next(&file); ) {
|
||||
SkString p = SkOSPath::Join(fileOrPath, file.c_str());
|
||||
SkString p = SkOSPath::Join(docDir, file.c_str());
|
||||
const char* hunk = p.c_str();
|
||||
if (!SkStrEndsWith(hunk, ".bmh")) {
|
||||
continue;
|
||||
@ -254,7 +273,7 @@ bool MdOut::buildReferences(const char* fileOrPath, const char* outDir) {
|
||||
if (SkStrEndsWith(hunk, "markup.bmh")) { // don't look inside this for now
|
||||
continue;
|
||||
}
|
||||
if (!this->buildRefFromFile(hunk, outDir)) {
|
||||
if (!this->buildRefFromFile(hunk, mdFileOrPath)) {
|
||||
SkDebugf("failed to parse %s\n", hunk);
|
||||
return false;
|
||||
}
|
||||
@ -318,7 +337,7 @@ bool MdOut::buildRefFromFile(const char* name, const char* outDir) {
|
||||
fullName += '/';
|
||||
}
|
||||
fullName += filename;
|
||||
fOut = fopen(fullName.c_str(), "wb");
|
||||
fOut = fopen(filename.c_str(), "wb");
|
||||
if (!fOut) {
|
||||
SkDebugf("could not open output file %s\n", fullName.c_str());
|
||||
return false;
|
||||
@ -328,16 +347,26 @@ bool MdOut::buildRefFromFile(const char* name, const char* outDir) {
|
||||
header.replace(underscorePos, 1, " ");
|
||||
}
|
||||
SkASSERT(string::npos == header.find('_'));
|
||||
fprintf(fOut, "%s", header.c_str());
|
||||
FPRINTF("%s", header.c_str());
|
||||
this->lfAlways(1);
|
||||
fprintf(fOut, "===");
|
||||
FPRINTF("===");
|
||||
}
|
||||
this->markTypeOut(topicDef);
|
||||
}
|
||||
if (fOut) {
|
||||
this->writePending();
|
||||
fclose(fOut);
|
||||
SkDebugf("wrote %s\n", fullName.c_str());
|
||||
fflush(fOut);
|
||||
if (this->writtenFileDiffers(filename, fullName)) {
|
||||
fOut = fopen(fullName.c_str(), "wb");
|
||||
int writtenSize;
|
||||
const char* written = ReadToBuffer(filename, &writtenSize);
|
||||
fwrite(written, 1, writtenSize, fOut);
|
||||
fclose(fOut);
|
||||
fflush(fOut);
|
||||
SkDebugf("wrote updated %s\n", fullName.c_str());
|
||||
}
|
||||
remove(filename.c_str());
|
||||
fOut = nullptr;
|
||||
}
|
||||
return true;
|
||||
@ -642,35 +671,46 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
(!def->fParent || MarkType::kConst != def->fParent->fMarkType) &&
|
||||
TableState::kNone != fTableState) {
|
||||
this->writePending();
|
||||
fprintf(fOut, "</table>");
|
||||
FPRINTF("</table>");
|
||||
this->lf(2);
|
||||
fTableState = TableState::kNone;
|
||||
}
|
||||
switch (def->fMarkType) {
|
||||
case MarkType::kAlias:
|
||||
break;
|
||||
case MarkType::kAnchor:
|
||||
break;
|
||||
case MarkType::kAnchor: {
|
||||
if (fColumn > 0) {
|
||||
this->writeSpace();
|
||||
}
|
||||
this->writePending();
|
||||
TextParser parser(def);
|
||||
const char* start = parser.fChar;
|
||||
parser.skipToEndBracket(" # ");
|
||||
string anchorText(start, parser.fChar - start);
|
||||
parser.skipExact(" # ");
|
||||
string anchorLink(parser.fChar, parser.fEnd - parser.fChar);
|
||||
FPRINTF("<a href=\"%s\">%s", anchorLink.c_str(), anchorText.c_str());
|
||||
} break;
|
||||
case MarkType::kBug:
|
||||
break;
|
||||
case MarkType::kClass:
|
||||
this->mdHeaderOut(1);
|
||||
fprintf(fOut, "<a name=\"%s\"></a> Class %s", this->linkName(def).c_str(),
|
||||
FPRINTF("<a name=\"%s\"></a> Class %s", this->linkName(def).c_str(),
|
||||
def->fName.c_str());
|
||||
this->lf(1);
|
||||
break;
|
||||
case MarkType::kCode:
|
||||
this->lfAlways(2);
|
||||
fprintf(fOut, "<pre style=\"padding: 1em 1em 1em 1em;"
|
||||
FPRINTF("<pre style=\"padding: 1em 1em 1em 1em;"
|
||||
"width: 62.5em; background-color: #f0f0f0\">");
|
||||
this->lf(1);
|
||||
break;
|
||||
case MarkType::kColumn:
|
||||
this->writePending();
|
||||
if (fInList) {
|
||||
fprintf(fOut, " <td>");
|
||||
FPRINTF(" <td>");
|
||||
} else {
|
||||
fprintf(fOut, "| ");
|
||||
FPRINTF("| ");
|
||||
}
|
||||
break;
|
||||
case MarkType::kComment:
|
||||
@ -678,7 +718,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
case MarkType::kConst: {
|
||||
if (TableState::kNone == fTableState) {
|
||||
this->mdHeaderOut(3);
|
||||
fprintf(fOut, "Constants\n"
|
||||
FPRINTF("Constants\n"
|
||||
"\n"
|
||||
"<table>");
|
||||
fTableState = TableState::kRow;
|
||||
@ -686,19 +726,19 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
}
|
||||
if (TableState::kRow == fTableState) {
|
||||
this->writePending();
|
||||
fprintf(fOut, " <tr>");
|
||||
FPRINTF(" <tr>");
|
||||
this->lf(1);
|
||||
fTableState = TableState::kColumn;
|
||||
}
|
||||
this->writePending();
|
||||
fprintf(fOut, " <td><a name=\"%s\"> <code><strong>%s </strong></code> </a></td>",
|
||||
FPRINTF(" <td><a name=\"%s\"> <code><strong>%s </strong></code> </a></td>",
|
||||
def->fFiddle.c_str(), def->fName.c_str());
|
||||
const char* lineEnd = strchr(textStart, '\n');
|
||||
SkASSERT(lineEnd < def->fTerminator);
|
||||
SkASSERT(lineEnd > textStart);
|
||||
SkASSERT((int) (lineEnd - textStart) == lineEnd - textStart);
|
||||
fprintf(fOut, "<td>%.*s</td>", (int) (lineEnd - textStart), textStart);
|
||||
fprintf(fOut, "<td>");
|
||||
FPRINTF("<td>%.*s</td>", (int) (lineEnd - textStart), textStart);
|
||||
FPRINTF("<td>");
|
||||
textStart = lineEnd;
|
||||
} break;
|
||||
case MarkType::kDefine:
|
||||
@ -710,21 +750,21 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
case MarkType::kDescription:
|
||||
fInDescription = true;
|
||||
this->writePending();
|
||||
fprintf(fOut, "<div>");
|
||||
FPRINTF("<div>");
|
||||
break;
|
||||
case MarkType::kDoxygen:
|
||||
break;
|
||||
case MarkType::kEnum:
|
||||
case MarkType::kEnumClass:
|
||||
this->mdHeaderOut(2);
|
||||
fprintf(fOut, "<a name=\"%s\"></a> Enum %s", def->fFiddle.c_str(), def->fName.c_str());
|
||||
FPRINTF("<a name=\"%s\"></a> Enum %s", def->fFiddle.c_str(), def->fName.c_str());
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kError:
|
||||
break;
|
||||
case MarkType::kExample: {
|
||||
this->mdHeaderOut(3);
|
||||
fprintf(fOut, "Example\n"
|
||||
FPRINTF("Example\n"
|
||||
"\n");
|
||||
fHasFiddle = true;
|
||||
bool showGpu = false;
|
||||
@ -740,21 +780,21 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
}
|
||||
if (fHasFiddle && !def->hasChild(MarkType::kError)) {
|
||||
SkASSERT(def->fHash.length() > 0);
|
||||
fprintf(fOut, "<div><fiddle-embed name=\"%s\"", def->fHash.c_str());
|
||||
FPRINTF("<div><fiddle-embed name=\"%s\"", def->fHash.c_str());
|
||||
if (showGpu) {
|
||||
fprintf(fOut, " gpu=\"true\"");
|
||||
FPRINTF(" gpu=\"true\"");
|
||||
if (gpuAndCpu) {
|
||||
fprintf(fOut, " cpu=\"true\"");
|
||||
FPRINTF(" cpu=\"true\"");
|
||||
}
|
||||
}
|
||||
fprintf(fOut, ">");
|
||||
FPRINTF(">");
|
||||
} else {
|
||||
SkASSERT(def->fHash.length() == 0);
|
||||
fprintf(fOut, "<pre style=\"padding: 1em 1em 1em 1em; font-size: 13px"
|
||||
FPRINTF("<pre style=\"padding: 1em 1em 1em 1em; font-size: 13px"
|
||||
" width: 62.5em; background-color: #f0f0f0\">");
|
||||
this->lfAlways(1);
|
||||
if (def->fWrapper.length() > 0) {
|
||||
fprintf(fOut, "%s", def->fWrapper.c_str());
|
||||
FPRINTF("%s", def->fWrapper.c_str());
|
||||
}
|
||||
fRespectLeadingSpace = true;
|
||||
}
|
||||
@ -780,7 +820,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
case MarkType::kList:
|
||||
fInList = true;
|
||||
this->lfAlways(2);
|
||||
fprintf(fOut, "<table>");
|
||||
FPRINTF("<table>");
|
||||
this->lf(1);
|
||||
break;
|
||||
case MarkType::kLiteral:
|
||||
@ -794,7 +834,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
tp.skipWhiteSpace();
|
||||
const char* end = tp.trimmedBracketEnd('\n');
|
||||
this->lfAlways(2);
|
||||
fprintf(fOut, "<a name=\"%s\"> <code><strong>%.*s</strong></code> </a>",
|
||||
FPRINTF("<a name=\"%s\"> <code><strong>%.*s</strong></code> </a>",
|
||||
def->fFiddle.c_str(), (int) (end - tp.fChar), tp.fChar);
|
||||
this->lf(2);
|
||||
} break;
|
||||
@ -804,9 +844,9 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
|
||||
if (!def->isClone()) {
|
||||
this->lfAlways(2);
|
||||
fprintf(fOut, "<a name=\"%s\"></a>", def->fFiddle.c_str());
|
||||
FPRINTF("<a name=\"%s\"></a>", def->fFiddle.c_str());
|
||||
this->mdHeaderOutLF(2, 1);
|
||||
fprintf(fOut, "%s", method_name.c_str());
|
||||
FPRINTF("%s", method_name.c_str());
|
||||
this->lf(2);
|
||||
}
|
||||
|
||||
@ -814,7 +854,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
// TODO: 50em below should match limit = 80 in formatFunction()
|
||||
this->writePending();
|
||||
string preformattedStr = preformat(formattedStr);
|
||||
fprintf(fOut, "<pre style=\"padding: 1em 1em 1em 1em;"
|
||||
FPRINTF("<pre style=\"padding: 1em 1em 1em 1em;"
|
||||
"width: 62.5em; background-color: #f0f0f0\">\n"
|
||||
"%s\n"
|
||||
"</pre>", preformattedStr.c_str());
|
||||
@ -838,7 +878,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
fTableState = TableState::kRow;
|
||||
}
|
||||
if (TableState::kRow == fTableState) {
|
||||
fprintf(fOut, " <tr>");
|
||||
FPRINTF(" <tr>");
|
||||
this->lf(1);
|
||||
fTableState = TableState::kColumn;
|
||||
}
|
||||
@ -866,7 +906,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
break;
|
||||
case MarkType::kReturn:
|
||||
this->mdHeaderOut(3);
|
||||
fprintf(fOut, "Return Value");
|
||||
FPRINTF("Return Value");
|
||||
if (!this->checkParamReturnBody(def)) {
|
||||
return;
|
||||
}
|
||||
@ -874,13 +914,13 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
break;
|
||||
case MarkType::kRow:
|
||||
if (fInList) {
|
||||
fprintf(fOut, " <tr>");
|
||||
FPRINTF(" <tr>");
|
||||
this->lf(1);
|
||||
}
|
||||
break;
|
||||
case MarkType::kSeeAlso:
|
||||
this->mdHeaderOut(3);
|
||||
fprintf(fOut, "See Also");
|
||||
FPRINTF("See Also");
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kSet:
|
||||
@ -896,23 +936,23 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
code.skipSpace();
|
||||
while (!code.eof()) {
|
||||
const char* end = code.trimmedLineEnd();
|
||||
fprintf(fOut, "%.*s\n", (int) (end - code.fChar), code.fChar);
|
||||
FPRINTF("%.*s\n", (int) (end - code.fChar), code.fChar);
|
||||
code.skipToLineStart();
|
||||
}
|
||||
fprintf(fOut, "~~~~");
|
||||
FPRINTF("~~~~");
|
||||
this->lf(2);
|
||||
} break;
|
||||
case MarkType::kStruct:
|
||||
fRoot = def->asRoot();
|
||||
this->mdHeaderOut(1);
|
||||
fprintf(fOut, "<a name=\"%s\"></a> Struct %s", def->fFiddle.c_str(), def->fName.c_str());
|
||||
FPRINTF("<a name=\"%s\"></a> Struct %s", def->fFiddle.c_str(), def->fName.c_str());
|
||||
this->lf(1);
|
||||
break;
|
||||
case MarkType::kSubstitute:
|
||||
break;
|
||||
case MarkType::kSubtopic:
|
||||
this->mdHeaderOut(2);
|
||||
fprintf(fOut, "<a name=\"%s\"></a> %s", def->fName.c_str(), printable.c_str());
|
||||
FPRINTF("<a name=\"%s\"></a> %s", def->fName.c_str(), printable.c_str());
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kTable:
|
||||
@ -928,7 +968,7 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
break;
|
||||
case MarkType::kTopic:
|
||||
this->mdHeaderOut(1);
|
||||
fprintf(fOut, "<a name=\"%s\"></a> %s", this->linkName(def).c_str(),
|
||||
FPRINTF("<a name=\"%s\"></a> %s", this->linkName(def).c_str(),
|
||||
printable.c_str());
|
||||
this->lf(1);
|
||||
break;
|
||||
@ -951,23 +991,28 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
}
|
||||
this->childrenOut(def, textStart);
|
||||
switch (def->fMarkType) { // post child work, at least for tables
|
||||
case MarkType::kAnchor:
|
||||
if (fColumn > 0) {
|
||||
this->writeSpace();
|
||||
}
|
||||
break;
|
||||
case MarkType::kCode:
|
||||
this->writePending();
|
||||
fprintf(fOut, "</pre>");
|
||||
FPRINTF("</pre>");
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kColumn:
|
||||
if (fInList) {
|
||||
this->writePending();
|
||||
fprintf(fOut, "</td>");
|
||||
FPRINTF("</td>");
|
||||
this->lf(1);
|
||||
} else {
|
||||
fprintf(fOut, " ");
|
||||
FPRINTF(" ");
|
||||
}
|
||||
break;
|
||||
case MarkType::kDescription:
|
||||
this->writePending();
|
||||
fprintf(fOut, "</div>");
|
||||
FPRINTF("</div>");
|
||||
fInDescription = false;
|
||||
break;
|
||||
case MarkType::kEnum:
|
||||
@ -977,22 +1022,26 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
case MarkType::kExample:
|
||||
this->writePending();
|
||||
if (fHasFiddle) {
|
||||
fprintf(fOut, "</fiddle-embed></div>");
|
||||
FPRINTF("</fiddle-embed></div>");
|
||||
} else {
|
||||
this->lfAlways(1);
|
||||
if (def->fWrapper.length() > 0) {
|
||||
fprintf(fOut, "}");
|
||||
FPRINTF("}");
|
||||
this->lfAlways(1);
|
||||
}
|
||||
fprintf(fOut, "</pre>");
|
||||
FPRINTF("</pre>");
|
||||
}
|
||||
this->lf(2);
|
||||
fRespectLeadingSpace = false;
|
||||
break;
|
||||
case MarkType::kLink:
|
||||
this->writeString("</a>");
|
||||
this->writeSpace();
|
||||
break;
|
||||
case MarkType::kList:
|
||||
fInList = false;
|
||||
this->writePending();
|
||||
fprintf(fOut, "</table>");
|
||||
FPRINTF("</table>");
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kLegend: {
|
||||
@ -1003,15 +1052,15 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
SkASSERT(columnCount > 0);
|
||||
this->writePending();
|
||||
for (size_t index = 0; index < columnCount; ++index) {
|
||||
fprintf(fOut, "| --- ");
|
||||
FPRINTF("| --- ");
|
||||
}
|
||||
fprintf(fOut, " |");
|
||||
FPRINTF(" |");
|
||||
this->lf(1);
|
||||
} break;
|
||||
case MarkType::kMethod:
|
||||
fMethod = nullptr;
|
||||
this->lfAlways(2);
|
||||
fprintf(fOut, "---");
|
||||
FPRINTF("---");
|
||||
this->lf(2);
|
||||
break;
|
||||
case MarkType::kConst:
|
||||
@ -1019,8 +1068,8 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
SkASSERT(TableState::kColumn == fTableState);
|
||||
fTableState = TableState::kRow;
|
||||
this->writePending();
|
||||
fprintf(fOut, "</td>\n");
|
||||
fprintf(fOut, " </tr>");
|
||||
FPRINTF("</td>\n");
|
||||
FPRINTF(" </tr>");
|
||||
this->lf(1);
|
||||
break;
|
||||
case MarkType::kReturn:
|
||||
@ -1029,9 +1078,9 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
break;
|
||||
case MarkType::kRow:
|
||||
if (fInList) {
|
||||
fprintf(fOut, " </tr>");
|
||||
FPRINTF(" </tr>");
|
||||
} else {
|
||||
fprintf(fOut, "|");
|
||||
FPRINTF("|");
|
||||
}
|
||||
this->lf(1);
|
||||
break;
|
||||
@ -1051,9 +1100,9 @@ void MdOut::markTypeOut(Definition* def) {
|
||||
void MdOut::mdHeaderOutLF(int depth, int lf) {
|
||||
this->lfAlways(lf);
|
||||
for (int index = 0; index < depth; ++index) {
|
||||
fprintf(fOut, "#");
|
||||
FPRINTF("#");
|
||||
}
|
||||
fprintf(fOut, " ");
|
||||
FPRINTF(" ");
|
||||
}
|
||||
|
||||
void MdOut::resolveOut(const char* start, const char* end, BmhParser::Resolvable resolvable) {
|
||||
@ -1098,22 +1147,28 @@ void MdOut::resolveOut(const char* start, const char* end, BmhParser::Resolvable
|
||||
paragraph.skipToEndBracket('\n');
|
||||
ptrdiff_t lineLength = paragraph.fChar - contentStart;
|
||||
if (lineLength) {
|
||||
this->writePending();
|
||||
fprintf(fOut, "%.*s", (int) lineLength, contentStart);
|
||||
while (lineLength && contentStart[lineLength - 1] <= ' ') {
|
||||
--lineLength;
|
||||
}
|
||||
string str(contentStart, lineLength);
|
||||
this->writeString(str.c_str());
|
||||
}
|
||||
#if 0
|
||||
int linefeeds = 0;
|
||||
while (lineLength > 0 && '\n' == contentStart[--lineLength]) {
|
||||
|
||||
++linefeeds;
|
||||
}
|
||||
if (lineLength > 0) {
|
||||
this->nl();
|
||||
}
|
||||
fLinefeeds += linefeeds;
|
||||
#endif
|
||||
if (paragraph.eof()) {
|
||||
break;
|
||||
}
|
||||
if ('\n' == paragraph.next()) {
|
||||
linefeeds = 1;
|
||||
int linefeeds = 1;
|
||||
if (!paragraph.eof() && '\n' == paragraph.peek()) {
|
||||
linefeeds = 2;
|
||||
}
|
||||
@ -1122,7 +1177,7 @@ void MdOut::resolveOut(const char* start, const char* end, BmhParser::Resolvable
|
||||
}
|
||||
#if 0
|
||||
while (end > start && end[0] == '\n') {
|
||||
fprintf(fOut, "\n");
|
||||
FPRINTF("\n");
|
||||
--end;
|
||||
}
|
||||
#endif
|
||||
|
@ -224,6 +224,52 @@ void ParserCommon::writeString(const char* str) {
|
||||
fMaxLF = 2;
|
||||
}
|
||||
|
||||
const char* ParserCommon::ReadToBuffer(string filename, int* size) {
|
||||
FILE* file = fopen(filename.c_str(), "rb");
|
||||
if (!file) {
|
||||
return nullptr;
|
||||
}
|
||||
fseek(file, 0L, SEEK_END);
|
||||
*size = (int) ftell(file);
|
||||
rewind(file);
|
||||
char* buffer = new char[*size];
|
||||
memset(buffer, ' ', *size);
|
||||
SkAssertResult(*size == (int)fread(buffer, 1, *size, file));
|
||||
fclose(file);
|
||||
fflush(file);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
bool ParserCommon::writtenFileDiffers(string filename, string readname) {
|
||||
int writtenSize, readSize;
|
||||
const char* written = ReadToBuffer(filename, &writtenSize);
|
||||
if (!written) {
|
||||
return true;
|
||||
}
|
||||
const char* read = ReadToBuffer(readname, &readSize);
|
||||
if (!read) {
|
||||
delete[] written;
|
||||
return true;
|
||||
}
|
||||
#if 0 // enable for debugging this
|
||||
int smaller = SkTMin(writtenSize, readSize);
|
||||
for (int index = 0; index < smaller; ++index) {
|
||||
if (written[index] != read[index]) {
|
||||
SkDebugf("%.*s\n", 40, &written[index]);
|
||||
SkDebugf("%.*s\n", 40, &read[index]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (readSize != writtenSize) {
|
||||
return true;
|
||||
}
|
||||
bool result = !!memcmp(written, read, writtenSize);
|
||||
delete[] written;
|
||||
delete[] read;
|
||||
return result;
|
||||
}
|
||||
|
||||
StatusIter::StatusIter(const char* statusFile, const char* suffix, StatusFilter filter)
|
||||
: fSuffix(suffix)
|
||||
, fFilter(filter) {
|
||||
|
Loading…
Reference in New Issue
Block a user