refresh generated includes

the newest ones (SkBlendMode.h, SkPicture.h, SkRRect.h)
need additional editing; enough has changed that it is
time to refresh anyway.

TBR=reed@google.com

Docs-Preview: https://skia.org/?cl=141043
Bug: skia:6818
Change-Id: Ic123b02f57005a087f8655cafa1a2537529beca5
Reviewed-on: https://skia-review.googlesource.com/141043
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
This commit is contained in:
Cary Clark 2018-07-13 08:21:59 -04:00 committed by Skia Commit-Bot
parent 390495eb8d
commit 7651c1611e
13 changed files with 698 additions and 420 deletions

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkBitmap.h and docs/SkBitmap_Reference.bmh /* Generated by tools/bookmaker from include/core/SkBitmap.h and docs/SkBitmap_Reference.bmh
on 2018-06-08 11:48:28. Additional documentation and examples can be found at: on 2018-07-13 08:15:10. Additional documentation and examples can be found at:
https://skia.org/user/api/SkBitmap_Reference https://skia.org/user/api/SkBitmap_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -125,7 +125,7 @@ public:
/** Returns pixel count in each row. Should be equal or less than: /** Returns pixel count in each row. Should be equal or less than:
rowBytes() / info().bytesPerPixel(). rowBytes() / info().bytesPerPixel().
Maybe be less than pixelRef().width(). Will not exceed pixelRef().width() less May be less than pixelRef().width(). Will not exceed pixelRef().width() less
pixelRefOrigin().fX. pixelRefOrigin().fX.
@return pixel width in SkImageInfo @return pixel width in SkImageInfo
@ -207,7 +207,7 @@ public:
*/ */
bool empty() const { return fPixmap.info().isEmpty(); } bool empty() const { return fPixmap.info().isEmpty(); }
/** Return true if SkPixelRef is nullptr. /** Returns true if SkPixelRef is nullptr.
Does not check if width() or height() are zero; call drawsNothing() to check Does not check if width() or height() are zero; call drawsNothing() to check
width(), height(), and SkPixelRef. width(), height(), and SkPixelRef.
@ -216,7 +216,7 @@ public:
*/ */
bool isNull() const { return nullptr == fPixelRef; } bool isNull() const { return nullptr == fPixelRef; }
/** Return true if width() or height() are zero, or if SkPixelRef is nullptr. /** Returns true if width() or height() are zero, or if SkPixelRef is nullptr.
If true, SkBitmap has no effect when drawn or drawn into. If true, SkBitmap has no effect when drawn or drawn into.
@return true if drawing has no effect @return true if drawing has no effect
@ -310,8 +310,8 @@ public:
return SkAlphaTypeIsOpaque(this->alphaType()); return SkAlphaTypeIsOpaque(this->alphaType());
} }
/** If true, provides a hint to caller that pixels should not /** Provides a hint to caller that pixels should not be cached. Only true if
be cached. Only true if setIsVolatile() has been called to mark as volatile. setIsVolatile() has been called to mark as volatile.
Volatile state is not shared by other bitmaps sharing the same SkPixelRef. Volatile state is not shared by other bitmaps sharing the same SkPixelRef.
@ -1134,7 +1134,7 @@ public:
bool writePixels(const SkPixmap& src, int x, int y, SkTransferFunctionBehavior behavior); bool writePixels(const SkPixmap& src, int x, int y, SkTransferFunctionBehavior behavior);
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
/** Android framework only. /** For use by Android framework only.
@return true if setHasHardwareMipMap() has been called with true @return true if setHasHardwareMipMap() has been called with true
*/ */
@ -1142,7 +1142,7 @@ public:
return (fFlags & kHasHardwareMipMap_Flag) != 0; return (fFlags & kHasHardwareMipMap_Flag) != 0;
} }
/** Android framework only. /** For use by Android framework only.
@param hasHardwareMipMap sets state @param hasHardwareMipMap sets state
*/ */

View File

@ -5,54 +5,71 @@
* found in the LICENSE file. * found in the LICENSE file.
*/ */
/* Generated by tools/bookmaker from include/core/SkBlendMode.h and docs/SkBlendMode_Reference.bmh
on 2018-07-13 08:15:10. Additional documentation and examples can be found at:
https://skia.org/user/api/SkBlendMode_Reference
You may edit either file directly. Structural changes to public interfaces require
editing both files. After editing docs/SkBlendMode_Reference.bmh, run:
bookmaker -b docs -i include/core/SkBlendMode.h -p
to create an updated version of this file.
*/
#ifndef SkBlendMode_DEFINED #ifndef SkBlendMode_DEFINED
#define SkBlendMode_DEFINED #define SkBlendMode_DEFINED
#include "SkTypes.h" #include "SkTypes.h"
enum class SkBlendMode { enum class SkBlendMode {
kClear, //!< [0, 0] kClear, //!< replaces destination with zero: fully transparent
kSrc, //!< [Sa, Sc] kSrc, //!< replaces destination
kDst, //!< [Da, Dc] kDst, //!< preserves destination
kSrcOver, //!< [Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)] kSrcOver, //!< source over destination
kDstOver, //!< [Da + Sa * (1 - Da), Dc + Sc * (1 - Da)] kDstOver, //!< destination over source
kSrcIn, //!< [Sa * Da, Sc * Da] kSrcIn, //!< source trimmed inside destination
kDstIn, //!< [Da * Sa, Dc * Sa] kDstIn, //!< destination trimmed by source
kSrcOut, //!< [Sa * (1 - Da), Sc * (1 - Da)] kSrcOut, //!< source trimmed outside destination
kDstOut, //!< [Da * (1 - Sa), Dc * (1 - Sa)] kDstOut, //!< destination trimmed outside source
kSrcATop, //!< [Da, Sc * Da + Dc * (1 - Sa)] kSrcATop, //!< source inside destination blended with destination
kDstATop, //!< [Sa, Dc * Sa + Sc * (1 - Da)] kDstATop, //!< destination inside source blended with source
kXor, //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa)] kXor, //!< each of source and destination trimmed outside the other
kPlus, //!< [Sa + Da, Sc + Dc] kPlus, //!< sum of colors
kModulate, // multiplies all components (= alpha and color) kModulate, //!< product of premultiplied colors; darkens destination
kScreen, //!< multiply inverse of pixels, inverting result; brightens destination
// Following blend modes are defined in the CSS Compositing standard: kLastCoeffMode = kScreen, //!< last porter duff blend mode
// https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blending kOverlay, //!< multiply or screen, depending on destination
kScreen, kDarken, //!< darker of source and destination
kLastCoeffMode = kScreen, kLighten, //!< lighter of source and destination
kColorDodge, //!< brighten destination to reflect source
kOverlay, kColorBurn, //!< darken destination to reflect source
kDarken, kHardLight, //!< multiply or screen, depending on source
kLighten, kSoftLight, //!< lighten or darken, depending on source
kColorDodge, kDifference, //!< subtract darker from lighter with higher contrast
kColorBurn, kExclusion, //!< subtract darker from lighter with lower contrast
kHardLight, kMultiply, //!< multiply source with destination, darkening image
kSoftLight, kLastSeparableMode = kMultiply, //!< last blend mode operating separately on components
kDifference, kHue, //!< hue of source with saturation and luminosity of destination
kExclusion, kSaturation, //!< saturation of source with hue and luminosity of destination
kMultiply, kColor, //!< hue and saturation of source with luminosity of destination
kLastSeparableMode = kMultiply, kLuminosity, //!< luminosity of source with hue and saturation of destination
kLastMode = kLuminosity, //!< last valid value
kHue,
kSaturation,
kColor,
kLuminosity,
kLastMode = kLuminosity,
}; };
/** /** Returns name of blendMode as null-terminated C string.
* Return the (c-string) name of the blendmode.
*/ @param blendMode one of:
SkBlendMode::kClear, SkBlendMode::kSrc, SkBlendMode::kDst, SkBlendMode::kSrcOver,
SkBlendMode::kDstOver, SkBlendMode::kSrcIn, SkBlendMode::kDstIn,
SkBlendMode::kSrcOut, SkBlendMode::kDstOut, SkBlendMode::kSrcATop,
SkBlendMode::kDstATop, SkBlendMode::kXor, SkBlendMode::kPlus,
SkBlendMode::kModulate, SkBlendMode::kScreen, SkBlendMode::kOverlay,
SkBlendMode::kDarken, SkBlendMode::kLighten, SkBlendMode::kColorDodge,
SkBlendMode::kColorBurn, SkBlendMode::kHardLight, SkBlendMode::kSoftLight,
SkBlendMode::kDifference, SkBlendMode::kExclusion, SkBlendMode::kMultiply,
SkBlendMode::kHue, SkBlendMode::kSaturation, SkBlendMode::kColor,
SkBlendMode::kLuminosity
@return C string
*/
SK_API const char* SkBlendMode_Name(SkBlendMode blendMode); SK_API const char* SkBlendMode_Name(SkBlendMode blendMode);
#endif #endif

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkCanvas.h and docs/SkCanvas_Reference.bmh /* Generated by tools/bookmaker from include/core/SkCanvas.h and docs/SkCanvas_Reference.bmh
on 2018-07-03 11:34:22. Additional documentation and examples can be found at: on 2018-07-13 08:15:10. Additional documentation and examples can be found at:
https://skia.org/user/api/SkCanvas_Reference https://skia.org/user/api/SkCanvas_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -168,7 +168,7 @@ public:
*/ */
explicit SkCanvas(sk_sp<SkBaseDevice> device); explicit SkCanvas(sk_sp<SkBaseDevice> device);
/** Construct a canvas that draws into bitmap. /** Constructs a canvas that draws into bitmap.
Sets SkSurfaceProps::kLegacyFontHost_InitType in constructed SkSurface. Sets SkSurfaceProps::kLegacyFontHost_InitType in constructed SkSurface.
SkBitmap is copied so that subsequently editing bitmap will not affect SkBitmap is copied so that subsequently editing bitmap will not affect
@ -187,7 +187,7 @@ public:
kLegacy, //!< placeholder kLegacy, //!< placeholder
}; };
/** Android framework only. /** For use by Android framework only.
@param bitmap specifies a bitmap for the canvas to draw into @param bitmap specifies a bitmap for the canvas to draw into
@param behavior specializes this constructor; value is unused @param behavior specializes this constructor; value is unused
@ -196,7 +196,7 @@ public:
SkCanvas(const SkBitmap& bitmap, ColorBehavior behavior); SkCanvas(const SkBitmap& bitmap, ColorBehavior behavior);
#endif #endif
/** Construct a canvas that draws into bitmap. /** Constructs a canvas that draws into bitmap.
Use props to match the device characteristics, like LCD striping. Use props to match the device characteristics, like LCD striping.
bitmap is copied so that subsequently editing bitmap will not affect bitmap is copied so that subsequently editing bitmap will not affect
@ -229,9 +229,8 @@ public:
*/ */
SkImageInfo imageInfo() const; SkImageInfo imageInfo() const;
/** If SkCanvas is associated with raster surface or /** Copies SkSurfaceProps, if SkCanvas is associated with raster surface or
GPU surface, copies SkSurfaceProps and returns true. Otherwise, GPU surface, and returns true. Otherwise, returns false and leave props unchanged.
return false and leave props unchanged.
@param props storage for writable SkSurfaceProps @param props storage for writable SkSurfaceProps
@return true if SkSurfaceProps was copied @return true if SkSurfaceProps was copied
@ -492,8 +491,8 @@ public:
bool writePixels(const SkBitmap& bitmap, int x, int y); bool writePixels(const SkBitmap& bitmap, int x, int y);
/** Saves SkMatrix and clip. /** Saves SkMatrix and clip.
Calling restore() discards changes to SkMatrix and clip, restoring the SkMatrix and clip to Calling restore() discards changes to SkMatrix and clip,
their state when save() was called. restoring the SkMatrix and clip to their state when save() was called.
SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), setMatrix(), SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), setMatrix(),
and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), clipPath(), clipRegion(). and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), clipPath(), clipRegion().
@ -580,8 +579,8 @@ public:
/** Saves SkMatrix and clip, and allocates SkBitmap for subsequent drawing. /** Saves SkMatrix and clip, and allocates SkBitmap for subsequent drawing.
Calling restore() discards changes to SkMatrix and clip, and blends layer with alpha opacity Calling restore() discards changes to SkMatrix and clip,
onto prior layer. and blends layer with alpha opacity onto prior layer.
SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(),
setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(),
@ -726,8 +725,8 @@ public:
*/ */
int saveLayer(const SaveLayerRec& layerRec); int saveLayer(const SaveLayerRec& layerRec);
/** Removes changes to SkMatrix and clip since SkCanvas state was last saved. /** Removes changes to SkMatrix and clip since SkCanvas state was
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.
*/ */
@ -751,9 +750,9 @@ public:
*/ */
void restoreToCount(int saveCount); void restoreToCount(int saveCount);
/** Translate SkMatrix by dx along the x-axis and dy along the y-axis. /** Translates SkMatrix by dx along the x-axis and dy along the y-axis.
Mathematically, replace SkMatrix with a translation matrix Mathematically, replaces SkMatrix with a translation matrix
premultiplied with SkMatrix. premultiplied with SkMatrix.
This has the effect of moving the drawing by (dx, dy) before transforming This has the effect of moving the drawing by (dx, dy) before transforming
@ -764,9 +763,9 @@ public:
*/ */
void translate(SkScalar dx, SkScalar dy); void translate(SkScalar dx, SkScalar dy);
/** Scale SkMatrix by sx on the x-axis and sy on the y-axis. /** Scales SkMatrix by sx on the x-axis and sy on the y-axis.
Mathematically, replace SkMatrix with a scale matrix Mathematically, replaces SkMatrix with a scale matrix
premultiplied with SkMatrix. premultiplied with SkMatrix.
This has the effect of scaling the drawing by (sx, sy) before transforming This has the effect of scaling the drawing by (sx, sy) before transforming
@ -777,9 +776,9 @@ public:
*/ */
void scale(SkScalar sx, SkScalar sy); void scale(SkScalar sx, SkScalar sy);
/** Rotate SkMatrix by degrees. Positive degrees rotates clockwise. /** Rotates SkMatrix by degrees. Positive degrees rotates clockwise.
Mathematically, replace SkMatrix with a rotation matrix Mathematically, replaces SkMatrix with a rotation matrix
premultiplied with SkMatrix. premultiplied with SkMatrix.
This has the effect of rotating the drawing by degrees before transforming This has the effect of rotating the drawing by degrees before transforming
@ -789,11 +788,11 @@ public:
*/ */
void rotate(SkScalar degrees); void rotate(SkScalar degrees);
/** Rotate SkMatrix by degrees about a point at (px, py). Positive degrees rotates /** Rotates SkMatrix by degrees about a point at (px, py). Positive degrees rotates
clockwise. clockwise.
Mathematically, construct a rotation matrix. Premultiply the rotation matrix by Mathematically, constructs a rotation matrix; premultiplies the rotation matrix by
a translation matrix, then replace SkMatrix with the resulting matrix a translation matrix; then replaces SkMatrix with the resulting matrix
premultiplied with SkMatrix. premultiplied with SkMatrix.
This has the effect of rotating the drawing about a given point before This has the effect of rotating the drawing about a given point before
@ -805,11 +804,11 @@ public:
*/ */
void rotate(SkScalar degrees, SkScalar px, SkScalar py); void rotate(SkScalar degrees, SkScalar px, SkScalar py);
/** Skew SkMatrix by sx on the x-axis and sy on the y-axis. A positive value of sx /** Skews SkMatrix by sx on the x-axis and sy on the y-axis. A positive value of sx
skews the drawing right as y-axis values increase; a positive value of sy skews skews the drawing right as y-axis values increase; a positive value of sy skews
the drawing down as x-axis values increase. the drawing down as x-axis values increase.
Mathematically, replace SkMatrix with a skew matrix premultiplied with SkMatrix. Mathematically, replaces SkMatrix with a skew matrix premultiplied with SkMatrix.
This has the effect of skewing the drawing by (sx, sy) before transforming This has the effect of skewing the drawing by (sx, sy) before transforming
the result with SkMatrix. the result with SkMatrix.
@ -819,7 +818,7 @@ public:
*/ */
void skew(SkScalar sx, SkScalar sy); void skew(SkScalar sx, SkScalar sy);
/** Replace SkMatrix with matrix premultiplied with existing SkMatrix. /** Replaces SkMatrix with matrix premultiplied with existing SkMatrix.
This has the effect of transforming the drawn geometry by matrix, before This has the effect of transforming the drawn geometry by matrix, before
transforming the result with existing SkMatrix. transforming the result with existing SkMatrix.
@ -828,7 +827,7 @@ public:
*/ */
void concat(const SkMatrix& matrix); void concat(const SkMatrix& matrix);
/** Replace SkMatrix with matrix. /** Replaces SkMatrix with matrix.
Unlike concat(), any prior matrix state is overwritten. Unlike concat(), any prior matrix state is overwritten.
@param matrix matrix to copy, replacing existing SkMatrix @param matrix matrix to copy, replacing existing SkMatrix
@ -840,7 +839,7 @@ public:
*/ */
void resetMatrix(); void resetMatrix();
/** Replace clip with the intersection or difference of clip and rect, /** Replaces clip with the intersection or difference of clip and rect,
with an aliased or anti-aliased clip edge. rect is transformed by SkMatrix with an aliased or anti-aliased clip edge. rect is transformed by SkMatrix
before it is combined with clip. before it is combined with clip.
@ -850,7 +849,7 @@ public:
*/ */
void clipRect(const SkRect& rect, SkClipOp op, bool doAntiAlias); void clipRect(const SkRect& rect, SkClipOp op, bool doAntiAlias);
/** Replace clip with the intersection or difference of clip and rect. /** Replaces clip with the intersection or difference of clip and rect.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
rect is transformed by SkMatrix before it is combined with clip. rect is transformed by SkMatrix before it is combined with clip.
@ -861,7 +860,7 @@ public:
this->clipRect(rect, op, false); this->clipRect(rect, op, false);
} }
/** Replace clip with the intersection of clip and rect. /** Replaces clip with the intersection of clip and rect.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
rect is transformed by SkMatrix rect is transformed by SkMatrix
before it is combined with clip. before it is combined with clip.
@ -885,7 +884,7 @@ public:
*/ */
void androidFramework_setDeviceClipRestriction(const SkIRect& rect); void androidFramework_setDeviceClipRestriction(const SkIRect& rect);
/** Replace clip with the intersection or difference of clip and rrect, /** Replaces clip with the intersection or difference of clip and rrect,
with an aliased or anti-aliased clip edge. with an aliased or anti-aliased clip edge.
rrect is transformed by SkMatrix rrect is transformed by SkMatrix
before it is combined with clip. before it is combined with clip.
@ -896,7 +895,7 @@ public:
*/ */
void clipRRect(const SkRRect& rrect, SkClipOp op, bool doAntiAlias); void clipRRect(const SkRRect& rrect, SkClipOp op, bool doAntiAlias);
/** Replace clip with the intersection or difference of clip and rrect. /** Replaces clip with the intersection or difference of clip and rrect.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
rrect is transformed by SkMatrix before it is combined with clip. rrect is transformed by SkMatrix before it is combined with clip.
@ -907,7 +906,7 @@ public:
this->clipRRect(rrect, op, false); this->clipRRect(rrect, op, false);
} }
/** Replace clip with the intersection of clip and rrect, /** Replaces clip with the intersection of clip and rrect,
with an aliased or anti-aliased clip edge. with an aliased or anti-aliased clip edge.
rrect is transformed by SkMatrix before it is combined with clip. rrect is transformed by SkMatrix before it is combined with clip.
@ -918,7 +917,7 @@ public:
this->clipRRect(rrect, SkClipOp::kIntersect, doAntiAlias); this->clipRRect(rrect, SkClipOp::kIntersect, doAntiAlias);
} }
/** Replace clip with the intersection or difference of clip and path, /** Replaces clip with the intersection or difference of clip and path,
with an aliased or anti-aliased clip edge. SkPath::FillType determines if path with an aliased or anti-aliased clip edge. SkPath::FillType determines if path
describes the area inside or outside its contours; and if path contour overlaps describes the area inside or outside its contours; and if path contour overlaps
itself or another path contour, whether the overlaps form part of the area. itself or another path contour, whether the overlaps form part of the area.
@ -930,7 +929,7 @@ public:
*/ */
void clipPath(const SkPath& path, SkClipOp op, bool doAntiAlias); void clipPath(const SkPath& path, SkClipOp op, bool doAntiAlias);
/** Replace clip with the intersection or difference of clip and path. /** Replaces clip with the intersection or difference of clip and path.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
SkPath::FillType determines if path SkPath::FillType determines if path
describes the area inside or outside its contours; and if path contour overlaps describes the area inside or outside its contours; and if path contour overlaps
@ -945,7 +944,7 @@ public:
this->clipPath(path, op, false); this->clipPath(path, op, false);
} }
/** Replace clip with the intersection of clip and path. /** Replaces clip with the intersection of clip and path.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
SkPath::FillType determines if path SkPath::FillType determines if path
describes the area inside or outside its contours; and if path contour overlaps describes the area inside or outside its contours; and if path contour overlaps
@ -966,7 +965,7 @@ public:
fAllowSimplifyClip = allow; fAllowSimplifyClip = allow;
} }
/** Replace clip with the intersection or difference of clip and SkRegion deviceRgn. /** Replaces clip with the intersection or difference of clip and SkRegion deviceRgn.
Resulting clip is aliased; pixels are fully contained by the clip. Resulting clip is aliased; pixels are fully contained by the clip.
deviceRgn is unaffected by SkMatrix. deviceRgn is unaffected by SkMatrix.
@ -975,7 +974,7 @@ public:
*/ */
void clipRegion(const SkRegion& deviceRgn, SkClipOp op = SkClipOp::kIntersect); void clipRegion(const SkRegion& deviceRgn, SkClipOp op = SkClipOp::kIntersect);
/** Return true if SkRect rect, transformed by SkMatrix, can be quickly determined to be /** Returns true if SkRect rect, transformed by SkMatrix, can be quickly determined to be
outside of clip. May return false even though rect is outside of clip. outside of clip. May return false even though rect is outside of clip.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls. Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@ -985,7 +984,7 @@ public:
*/ */
bool quickReject(const SkRect& rect) const; bool quickReject(const SkRect& rect) const;
/** Return true if path, transformed by SkMatrix, can be quickly determined to be /** Returns true if path, transformed by SkMatrix, can be quickly determined to be
outside of clip. May return false even though path is outside of clip. outside of clip. May return false even though path is outside of clip.
Use to check if an area to be drawn is clipped out, to skip subsequent draw calls. Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.
@ -995,7 +994,7 @@ public:
*/ */
bool quickReject(const SkPath& path) const; bool quickReject(const SkPath& path) const;
/** Return bounds of clip, transformed by inverse of SkMatrix. If clip is empty, /** Returns bounds of clip, transformed by inverse of SkMatrix. If clip is empty,
return SkRect::MakeEmpty, where all SkRect sides equal zero. return SkRect::MakeEmpty, where all SkRect sides equal zero.
SkRect returned is outset by one to account for partial pixel coverage if clip SkRect returned is outset by one to account for partial pixel coverage if clip
@ -1005,7 +1004,7 @@ public:
*/ */
SkRect getLocalClipBounds() const; SkRect getLocalClipBounds() const;
/** Return bounds of clip, transformed by inverse of SkMatrix. If clip is empty, /** Returns bounds of clip, transformed by inverse of SkMatrix. If clip is empty,
return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero. return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero.
bounds is outset by one to account for partial pixel coverage if clip bounds is outset by one to account for partial pixel coverage if clip
@ -1019,7 +1018,7 @@ public:
return !bounds->isEmpty(); return !bounds->isEmpty();
} }
/** Return SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty, /** Returns SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty,
return SkRect::MakeEmpty, where all SkRect sides equal zero. return SkRect::MakeEmpty, where all SkRect sides equal zero.
Unlike getLocalClipBounds(), returned SkIRect is not outset. Unlike getLocalClipBounds(), returned SkIRect is not outset.
@ -1028,7 +1027,7 @@ public:
*/ */
SkIRect getDeviceClipBounds() const; SkIRect getDeviceClipBounds() const;
/** Return SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty, /** Returns SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty,
return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero. return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero.
Unlike getLocalClipBounds(), bounds is not outset. Unlike getLocalClipBounds(), bounds is not outset.
@ -1041,7 +1040,7 @@ public:
return !bounds->isEmpty(); return !bounds->isEmpty();
} }
/** Fill clip with color color. /** Fills clip with color color.
mode determines how ARGB is combined with destination. mode determines how ARGB is combined with destination.
@param color unpremultiplied ARGB @param color unpremultiplied ARGB
@ -1049,7 +1048,7 @@ public:
*/ */
void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver); void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver);
/** Fill clip with color color using SkBlendMode::kSrc. /** Fills clip with color color using SkBlendMode::kSrc.
This has the effect of replacing all pixels contained by clip with color. This has the effect of replacing all pixels contained by clip with color.
@param color unpremultiplied ARGB @param color unpremultiplied ARGB
@ -1058,7 +1057,7 @@ public:
this->drawColor(color, SkBlendMode::kSrc); this->drawColor(color, SkBlendMode::kSrc);
} }
/** Make SkCanvas contents undefined. Subsequent calls that read SkCanvas pixels, /** Makes SkCanvas contents undefined. Subsequent calls that read SkCanvas pixels,
such as drawing with SkBlendMode, return undefined results. discard() does such as drawing with SkBlendMode, return undefined results. discard() does
not change clip or SkMatrix. not change clip or SkMatrix.
@ -1072,7 +1071,7 @@ public:
*/ */
void discard() { this->onDiscard(); } void discard() { this->onDiscard(); }
/** Fill clip with SkPaint paint. SkPaint components SkMaskFilter, SkShader, /** Fills clip with SkPaint paint. SkPaint components SkMaskFilter, SkShader,
SkColorFilter, SkImageFilter, and SkBlendMode affect drawing; SkColorFilter, SkImageFilter, and SkBlendMode affect drawing;
SkPathEffect in paint is ignored. SkPathEffect in paint is ignored.
@ -1090,7 +1089,7 @@ public:
kPolygon_PointMode, //!< draw the array of points as a open polygon kPolygon_PointMode, //!< draw the array of points as a open polygon
}; };
/** Draw pts using clip, SkMatrix and SkPaint paint. /** Draws pts using clip, SkMatrix and SkPaint paint.
count is the number of points; if count is less than one, has no effect. count is the number of points; if count is less than one, has no effect.
mode may be one of: kPoints_PointMode, kLines_PointMode, or kPolygon_PointMode. mode may be one of: kPoints_PointMode, kLines_PointMode, or kPolygon_PointMode.
@ -1121,7 +1120,7 @@ public:
*/ */
void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint); void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint);
/** Draw point at (x, y) using clip, SkMatrix and SkPaint paint. /** Draws point at (x, y) using clip, SkMatrix and SkPaint paint.
The shape of point drawn depends on paint SkPaint::Cap. The shape of point drawn depends on paint SkPaint::Cap.
If paint is set to SkPaint::kRound_Cap, draw a circle of diameter If paint is set to SkPaint::kRound_Cap, draw a circle of diameter
@ -1135,7 +1134,7 @@ public:
*/ */
void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint); void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint);
/** Draw point p using clip, SkMatrix and SkPaint paint. /** Draws point p using clip, SkMatrix and SkPaint paint.
The shape of point drawn depends on paint SkPaint::Cap. The shape of point drawn depends on paint SkPaint::Cap.
If paint is set to SkPaint::kRound_Cap, draw a circle of diameter If paint is set to SkPaint::kRound_Cap, draw a circle of diameter
@ -1176,7 +1175,7 @@ public:
this->drawLine(p0.x(), p0.y(), p1.x(), p1.y(), paint); this->drawLine(p0.x(), p0.y(), p1.x(), p1.y(), paint);
} }
/** Draw SkRect rect using clip, SkMatrix, and SkPaint paint. /** Draws SkRect rect using clip, SkMatrix, and SkPaint paint.
In paint: SkPaint::Style determines if rectangle is stroked or filled; In paint: SkPaint::Style determines if rectangle is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness, and if stroked, SkPaint stroke width describes the line thickness, and
SkPaint::Join draws the corners rounded or square. SkPaint::Join draws the corners rounded or square.
@ -1186,7 +1185,7 @@ public:
*/ */
void drawRect(const SkRect& rect, const SkPaint& paint); void drawRect(const SkRect& rect, const SkPaint& paint);
/** Draw SkIRect rect using clip, SkMatrix, and SkPaint paint. /** Draws SkIRect rect using clip, SkMatrix, and SkPaint paint.
In paint: SkPaint::Style determines if rectangle is stroked or filled; In paint: SkPaint::Style determines if rectangle is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness, and if stroked, SkPaint stroke width describes the line thickness, and
SkPaint::Join draws the corners rounded or square. SkPaint::Join draws the corners rounded or square.
@ -1200,7 +1199,7 @@ public:
this->drawRect(r, paint); this->drawRect(r, paint);
} }
/** Draw SkRegion region using clip, SkMatrix, and SkPaint paint. /** Draws SkRegion region using clip, SkMatrix, and SkPaint paint.
In paint: SkPaint::Style determines if rectangle is stroked or filled; In paint: SkPaint::Style determines if rectangle is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness, and if stroked, SkPaint stroke width describes the line thickness, and
SkPaint::Join draws the corners rounded or square. SkPaint::Join draws the corners rounded or square.
@ -1210,7 +1209,7 @@ public:
*/ */
void drawRegion(const SkRegion& region, const SkPaint& paint); void drawRegion(const SkRegion& region, const SkPaint& paint);
/** Draw oval oval using clip, SkMatrix, and SkPaint. /** Draws oval oval using clip, SkMatrix, and SkPaint.
In paint: SkPaint::Style determines if oval is stroked or filled; In paint: SkPaint::Style determines if oval is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness. if stroked, SkPaint stroke width describes the line thickness.
@ -1219,7 +1218,7 @@ public:
*/ */
void drawOval(const SkRect& oval, const SkPaint& paint); void drawOval(const SkRect& oval, const SkPaint& paint);
/** Draw SkRRect rrect using clip, SkMatrix, and SkPaint paint. /** Draws SkRRect rrect using clip, SkMatrix, and SkPaint paint.
In paint: SkPaint::Style determines if rrect is stroked or filled; In paint: SkPaint::Style determines if rrect is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness. if stroked, SkPaint stroke width describes the line thickness.
@ -1231,7 +1230,7 @@ public:
*/ */
void drawRRect(const SkRRect& rrect, const SkPaint& paint); void drawRRect(const SkRRect& rrect, const SkPaint& paint);
/** Draw SkRRect outer and inner /** Draws SkRRect outer and inner
using clip, SkMatrix, and SkPaint paint. using clip, SkMatrix, and SkPaint paint.
outer must contain inner or the drawing is undefined. outer must contain inner or the drawing is undefined.
In paint: SkPaint::Style determines if SkRRect is stroked or filled; In paint: SkPaint::Style determines if SkRRect is stroked or filled;
@ -1249,7 +1248,7 @@ public:
*/ */
void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint); void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint);
/** Draw circle at (cx, cy) with radius using clip, SkMatrix, and SkPaint paint. /** Draws circle at (cx, cy) with radius using clip, SkMatrix, and SkPaint paint.
If radius is zero or less, nothing is drawn. If radius is zero or less, nothing is drawn.
In paint: SkPaint::Style determines if circle is stroked or filled; In paint: SkPaint::Style determines if circle is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness. if stroked, SkPaint stroke width describes the line thickness.
@ -1261,7 +1260,7 @@ public:
*/ */
void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint); void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint);
/** Draw circle at center with radius using clip, SkMatrix, and SkPaint paint. /** Draws circle at center with radius using clip, SkMatrix, and SkPaint paint.
If radius is zero or less, nothing is drawn. If radius is zero or less, nothing is drawn.
In paint: SkPaint::Style determines if circle is stroked or filled; In paint: SkPaint::Style determines if circle is stroked or filled;
if stroked, SkPaint stroke width describes the line thickness. if stroked, SkPaint stroke width describes the line thickness.
@ -1274,7 +1273,7 @@ public:
this->drawCircle(center.x(), center.y(), radius, paint); this->drawCircle(center.x(), center.y(), radius, paint);
} }
/** Draw arc using clip, SkMatrix, and SkPaint paint. /** Draws arc using clip, SkMatrix, and SkPaint paint.
Arc is part of oval bounded by oval, sweeping from startAngle to startAngle plus Arc is part of oval bounded by oval, sweeping from startAngle to startAngle plus
sweepAngle. startAngle and sweepAngle are in degrees. sweepAngle. startAngle and sweepAngle are in degrees.
@ -1297,7 +1296,7 @@ public:
void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle,
bool useCenter, const SkPaint& paint); bool useCenter, const SkPaint& paint);
/** Draw SkRRect bounded by SkRect rect, with corner radii (rx, ry) using clip, /** Draws SkRRect bounded by SkRect rect, with corner radii (rx, ry) using clip,
SkMatrix, and SkPaint paint. SkMatrix, and SkPaint paint.
In paint: SkPaint::Style determines if SkRRect is stroked or filled; In paint: SkPaint::Style determines if SkRRect is stroked or filled;
@ -1314,7 +1313,7 @@ public:
*/ */
void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint); void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint);
/** Draw SkPath path using clip, SkMatrix, and SkPaint paint. /** Draws SkPath path using clip, SkMatrix, and SkPaint paint.
SkPath contains an array of path contour, each of which may be open or closed. SkPath contains an array of path contour, each of which may be open or closed.
In paint: SkPaint::Style determines if SkRRect is stroked or filled: In paint: SkPaint::Style determines if SkRRect is stroked or filled:
@ -1328,7 +1327,7 @@ public:
*/ */
void drawPath(const SkPath& path, const SkPaint& paint); void drawPath(const SkPath& path, const SkPaint& paint);
/** Draw SkImage image, with its top-left corner at (left, top), /** Draws SkImage image, with its top-left corner at (left, top),
using clip, SkMatrix, and optional SkPaint paint. using clip, SkMatrix, and optional SkPaint paint.
If paint is supplied, apply SkColorFilter, alpha, SkImageFilter, SkBlendMode, If paint is supplied, apply SkColorFilter, alpha, SkImageFilter, SkBlendMode,
@ -1347,7 +1346,7 @@ public:
void drawImage(const SkImage* image, SkScalar left, SkScalar top, void drawImage(const SkImage* image, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr); const SkPaint* paint = nullptr);
/** Draw SkImage image, with its top-left corner at (left, top), /** Draws SkImage image, with its top-left corner at (left, top),
using clip, SkMatrix, and optional SkPaint paint. using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1383,7 +1382,7 @@ public:
kFast_SrcRectConstraint, //!< sample outside bounds; faster kFast_SrcRectConstraint, //!< sample outside bounds; faster
}; };
/** Draw SkRect src of SkImage image, scaled and translated to fill SkRect dst. /** Draws SkRect src of SkImage image, scaled and translated to fill SkRect dst.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1409,7 +1408,7 @@ public:
const SkPaint* paint, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkIRect isrc of SkImage image, scaled and translated to fill SkRect dst. /** Draws SkIRect isrc of SkImage image, scaled and translated to fill SkRect dst.
Note that isrc is on integer pixel boundaries; dst may include fractional Note that isrc is on integer pixel boundaries; dst may include fractional
boundaries. Additionally transform draw using clip, SkMatrix, and optional SkPaint boundaries. Additionally transform draw using clip, SkMatrix, and optional SkPaint
paint. paint.
@ -1437,7 +1436,7 @@ public:
const SkPaint* paint, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkImage image, scaled and translated to fill SkRect dst, using clip, SkMatrix, /** Draws SkImage image, scaled and translated to fill SkRect dst, using clip, SkMatrix,
and optional SkPaint paint. and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1461,7 +1460,7 @@ public:
void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint, void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkRect src of SkImage image, scaled and translated to fill SkRect dst. /** Draws SkRect src of SkImage image, scaled and translated to fill SkRect dst.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1489,7 +1488,7 @@ public:
this->drawImageRect(image.get(), src, dst, paint, constraint); this->drawImageRect(image.get(), src, dst, paint, constraint);
} }
/** Draw SkIRect isrc of SkImage image, scaled and translated to fill SkRect dst. /** Draws SkIRect isrc of SkImage image, scaled and translated to fill SkRect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries. isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
@ -1518,7 +1517,7 @@ public:
this->drawImageRect(image.get(), isrc, dst, paint, constraint); this->drawImageRect(image.get(), isrc, dst, paint, constraint);
} }
/** Draw SkImage image, scaled and translated to fill SkRect dst, /** Draws SkImage image, scaled and translated to fill SkRect dst,
using clip, SkMatrix, and optional SkPaint paint. using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1544,7 +1543,7 @@ public:
this->drawImageRect(image.get(), dst, paint, constraint); this->drawImageRect(image.get(), dst, paint, constraint);
} }
/** Draw SkImage image stretched proportionally to fit into SkRect dst. /** Draws SkImage image stretched proportionally to fit into SkRect dst.
SkIRect center divides the image into nine sections: four sides, four corners, and SkIRect center divides the image into nine sections: four sides, four corners, and
the center. Corners are unmodified or scaled down proportionately if their sides the center. Corners are unmodified or scaled down proportionately if their sides
are larger than dst; center and four sides are scaled to fit remaining space, if any. are larger than dst; center and four sides are scaled to fit remaining space, if any.
@ -1571,7 +1570,7 @@ public:
void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst, void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst,
const SkPaint* paint = nullptr); const SkPaint* paint = nullptr);
/** Draw SkImage image stretched proportionally to fit into SkRect dst. /** Draws SkImage image stretched proportionally to fit into SkRect dst.
SkIRect center divides the image into nine sections: four sides, four corners, and SkIRect center divides the image into nine sections: four sides, four corners, and
the center. Corners are not scaled, or scaled down proportionately if their sides the center. Corners are not scaled, or scaled down proportionately if their sides
are larger than dst; center and four sides are scaled to fit remaining space, if any. are larger than dst; center and four sides are scaled to fit remaining space, if any.
@ -1600,7 +1599,7 @@ public:
this->drawImageNine(image.get(), center, dst, paint); this->drawImageNine(image.get(), center, dst, paint);
} }
/** Draw SkBitmap bitmap, with its top-left corner at (left, top), /** Draws SkBitmap bitmap, with its top-left corner at (left, top),
using clip, SkMatrix, and optional SkPaint paint. using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is not nullptr, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is not nullptr, apply SkColorFilter, alpha, SkImageFilter,
@ -1621,7 +1620,7 @@ public:
void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint = nullptr); const SkPaint* paint = nullptr);
/** Draw SkRect src of SkBitmap bitmap, scaled and translated to fill SkRect dst. /** Draws SkRect src of SkBitmap bitmap, scaled and translated to fill SkRect dst.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter,
@ -1648,7 +1647,7 @@ public:
const SkPaint* paint, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkIRect isrc of SkBitmap bitmap, scaled and translated to fill SkRect dst. /** Draws SkIRect isrc of SkBitmap bitmap, scaled and translated to fill SkRect dst.
isrc is on integer pixel boundaries; dst may include fractional boundaries. isrc is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
@ -1676,7 +1675,7 @@ public:
const SkPaint* paint, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkBitmap bitmap, scaled and translated to fill SkRect dst. /** Draws SkBitmap bitmap, scaled and translated to fill SkRect dst.
bitmap bounds is on integer pixel boundaries; dst may include fractional boundaries. bitmap bounds is on integer pixel boundaries; dst may include fractional boundaries.
Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. Additionally transform draw using clip, SkMatrix, and optional SkPaint paint.
@ -1702,7 +1701,7 @@ public:
void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, const SkPaint* paint, void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst, const SkPaint* paint,
SrcRectConstraint constraint = kStrict_SrcRectConstraint); SrcRectConstraint constraint = kStrict_SrcRectConstraint);
/** Draw SkBitmap bitmap stretched proportionally to fit into SkRect dst. /** Draws SkBitmap bitmap stretched proportionally to fit into SkRect dst.
SkIRect center divides the bitmap into nine sections: four sides, four corners, SkIRect center divides the bitmap into nine sections: four sides, four corners,
and the center. Corners are not scaled, or scaled down proportionately if their and the center. Corners are not scaled, or scaled down proportionately if their
sides are larger than dst; center and four sides are scaled to fit remaining sides are larger than dst; center and four sides are scaled to fit remaining
@ -1761,7 +1760,7 @@ public:
const SkColor* fColors; //!< array of colors const SkColor* fColors; //!< array of colors
}; };
/** Draw SkBitmap bitmap stretched proportionally to fit into SkRect dst. /** Draws SkBitmap bitmap stretched proportionally to fit into SkRect dst.
SkCanvas::Lattice lattice divides bitmap into a rectangular grid. SkCanvas::Lattice lattice divides bitmap into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners Each intersection of an even-numbered row and column is fixed; like the corners
@ -1792,7 +1791,7 @@ public:
void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkRect& dst, void drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, const SkRect& dst,
const SkPaint* paint = nullptr); const SkPaint* paint = nullptr);
/** Draw SkImage image stretched proportionally to fit into SkRect dst. /** Draws SkImage image stretched proportionally to fit into SkRect dst.
SkCanvas::Lattice lattice divides image into a rectangular grid. SkCanvas::Lattice lattice divides image into a rectangular grid.
Each intersection of an even-numbered row and column is fixed; like the corners Each intersection of an even-numbered row and column is fixed; like the corners
@ -1823,7 +1822,7 @@ public:
void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst, void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst,
const SkPaint* paint = nullptr); const SkPaint* paint = nullptr);
/** Draw text, with origin at (x, y), using clip, SkMatrix, and SkPaint paint. /** Draws text, with origin at (x, y), using clip, SkMatrix, and SkPaint paint.
text meaning depends on SkPaint::TextEncoding; by default, text is encoded as text meaning depends on SkPaint::TextEncoding; by default, text is encoded as
UTF-8. UTF-8.
@ -1873,7 +1872,7 @@ public:
this->drawText(string, strlen(string), x, y, paint); this->drawText(string, strlen(string), x, y, paint);
} }
/** Draw null terminated string, with origin at (x, y), using clip, SkMatrix, and /** Draws null terminated string, with origin at (x, y), using clip, SkMatrix, and
SkPaint paint. SkPaint paint.
string meaning depends on SkPaint::TextEncoding; by default, strings are encoded string meaning depends on SkPaint::TextEncoding; by default, strings are encoded
@ -1896,7 +1895,7 @@ public:
*/ */
void drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint); void drawString(const SkString& string, SkScalar x, SkScalar y, const SkPaint& paint);
/** Draw each glyph in text with the origin in pos array, using clip, SkMatrix, and /** Draws each glyph in text with the origin in pos array, using clip, SkMatrix, and
SkPaint paint. The number of entries in pos array must match the number of glyphs SkPaint paint. The number of entries in pos array must match the number of glyphs
described by byteLength of text. described by byteLength of text.
@ -1920,7 +1919,7 @@ public:
void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], void drawPosText(const void* text, size_t byteLength, const SkPoint pos[],
const SkPaint& paint); const SkPaint& paint);
/** Draw each glyph in text with its (x, y) origin composed from xpos array and /** Draws each glyph in text with its (x, y) origin composed from xpos array and
constY, using clip, SkMatrix, and SkPaint paint. The number of entries in xpos array constY, using clip, SkMatrix, and SkPaint paint. The number of entries in xpos array
must match the number of glyphs described by byteLength of text. must match the number of glyphs described by byteLength of text.
@ -1947,7 +1946,7 @@ public:
void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY,
const SkPaint& paint); const SkPaint& paint);
/** Draw text on SkPath path, using clip, SkMatrix, and SkPaint paint. /** Draws text on SkPath path, using clip, SkMatrix, and SkPaint paint.
Origin of text is at distance hOffset along the path, offset by a perpendicular Origin of text is at distance hOffset along the path, offset by a perpendicular
vector of length vOffset. If the path section corresponding the glyph advance is vector of length vOffset. If the path section corresponding the glyph advance is
@ -1974,7 +1973,7 @@ public:
void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, SkScalar hOffset, void drawTextOnPathHV(const void* text, size_t byteLength, const SkPath& path, SkScalar hOffset,
SkScalar vOffset, const SkPaint& paint); SkScalar vOffset, const SkPaint& paint);
/** Draw text on SkPath path, using clip, SkMatrix, and SkPaint paint. /** Draws text on SkPath path, using clip, SkMatrix, and SkPaint paint.
Origin of text is at beginning of path offset by matrix, if not nullptr. Origin of text is at beginning of path offset by matrix, if not nullptr.
matrix transforms text before text is mapped to path. If the path section matrix transforms text before text is mapped to path. If the path section
@ -2004,7 +2003,7 @@ public:
void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, void drawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
const SkMatrix* matrix, const SkPaint& paint); const SkMatrix* matrix, const SkPaint& paint);
/** Draw text, transforming each glyph by the corresponding SkRSXform, /** Draws text, transforming each glyph by the corresponding SkRSXform,
using clip, SkMatrix, and SkPaint paint. using clip, SkMatrix, and SkPaint paint.
SkRSXform xform array specifies a separate square scale, rotation, and translation SkRSXform xform array specifies a separate square scale, rotation, and translation
@ -2026,7 +2025,7 @@ public:
void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[], void drawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[],
const SkRect* cullRect, const SkPaint& paint); const SkRect* cullRect, const SkPaint& paint);
/** Draw SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint. /** Draws SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint.
blob contains glyphs, their positions, and paint attributes specific to text: blob contains glyphs, their positions, and paint attributes specific to text:
SkTypeface, SkPaint text size, SkPaint text scale x, SkPaint text skew x, SkTypeface, SkPaint text size, SkPaint text scale x, SkPaint text skew x,
@ -2046,7 +2045,7 @@ public:
*/ */
void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint); void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint);
/** Draw SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint. /** Draws SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint.
blob contains glyphs, their positions, and paint attributes specific to text: blob contains glyphs, their positions, and paint attributes specific to text:
SkTypeface, SkPaint text size, SkPaint text scale x, SkPaint text skew x, SkTypeface, SkPaint text size, SkPaint text scale x, SkPaint text skew x,
@ -2068,7 +2067,7 @@ public:
this->drawTextBlob(blob.get(), x, y, paint); this->drawTextBlob(blob.get(), x, y, paint);
} }
/** Draw SkPicture picture, using clip and SkMatrix. /** Draws SkPicture picture, using clip and SkMatrix.
Clip and SkMatrix are unchanged by picture contents, as if Clip and SkMatrix are unchanged by picture contents, as if
save() was called before and restore() was called after drawPicture(). save() was called before and restore() was called after drawPicture().
@ -2080,7 +2079,7 @@ public:
this->drawPicture(picture, nullptr, nullptr); this->drawPicture(picture, nullptr, nullptr);
} }
/** Draw SkPicture picture, using clip and SkMatrix. /** Draws SkPicture picture, using clip and SkMatrix.
Clip and SkMatrix are unchanged by picture contents, as if Clip and SkMatrix are unchanged by picture contents, as if
save() was called before and restore() was called after drawPicture(). save() was called before and restore() was called after drawPicture().
@ -2092,7 +2091,7 @@ public:
this->drawPicture(picture.get()); this->drawPicture(picture.get());
} }
/** Draw SkPicture picture, using clip and SkMatrix; transforming picture with /** Draws SkPicture picture, using clip and SkMatrix; transforming picture with
SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter, SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter,
SkImageFilter, and SkBlendMode, if provided. SkImageFilter, and SkBlendMode, if provided.
@ -2105,7 +2104,7 @@ public:
*/ */
void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint); void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint);
/** Draw SkPicture picture, using clip and SkMatrix; transforming picture with /** Draws SkPicture picture, using clip and SkMatrix; transforming picture with
SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter, SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter,
SkImageFilter, and SkBlendMode, if provided. SkImageFilter, and SkBlendMode, if provided.
@ -2120,7 +2119,7 @@ public:
this->drawPicture(picture.get(), matrix, paint); this->drawPicture(picture.get(), matrix, paint);
} }
/** Draw SkVertices vertices, a triangle mesh, using clip and SkMatrix. /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix.
If vertices texs and vertices colors are defined in vertices, and SkPaint paint If vertices texs and vertices colors are defined in vertices, and SkPaint paint
contains SkShader, SkBlendMode mode combines vertices colors with SkShader. contains SkShader, SkBlendMode mode combines vertices colors with SkShader.
@ -2130,7 +2129,7 @@ public:
*/ */
void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint); void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint);
/** Draw SkVertices vertices, a triangle mesh, using clip and SkMatrix. /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix.
If vertices texs and vertices colors are defined in vertices, and SkPaint paint If vertices texs and vertices colors are defined in vertices, and SkPaint paint
contains SkShader, SkBlendMode mode combines vertices colors with SkShader. contains SkShader, SkBlendMode mode combines vertices colors with SkShader.
@ -2140,7 +2139,7 @@ public:
*/ */
void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint); void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint);
/** Draw SkVertices vertices, a triangle mesh, using clip and SkMatrix. Bone data is used to /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix. Bone data is used to
deform vertices with bone weights. deform vertices with bone weights.
If vertices texs and vertices colors are defined in vertices, and SkPaint paint If vertices texs and vertices colors are defined in vertices, and SkPaint paint
contains SkShader, SkBlendMode mode combines vertices colors with SkShader. contains SkShader, SkBlendMode mode combines vertices colors with SkShader.
@ -2158,7 +2157,7 @@ public:
void drawVertices(const SkVertices* vertices, const SkMatrix* bones, int boneCount, void drawVertices(const SkVertices* vertices, const SkMatrix* bones, int boneCount,
SkBlendMode mode, const SkPaint& paint); SkBlendMode mode, const SkPaint& paint);
/** Draw SkVertices vertices, a triangle mesh, using clip and SkMatrix. Bone data is used to /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix. Bone data is used to
deform vertices with bone weights. deform vertices with bone weights.
If vertices texs and vertices colors are defined in vertices, and SkPaint paint If vertices texs and vertices colors are defined in vertices, and SkPaint paint
contains SkShader, SkBlendMode mode combines vertices colors with SkShader. contains SkShader, SkBlendMode mode combines vertices colors with SkShader.
@ -2233,7 +2232,7 @@ public:
this->drawPatch(cubics, colors, texCoords, SkBlendMode::kModulate, paint); this->drawPatch(cubics, colors, texCoords, SkBlendMode::kModulate, paint);
} }
/** Draw a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint.
paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode
to draw, if present. For each entry in the array, SkRect tex locates sprite in to draw, if present. For each entry in the array, SkRect tex locates sprite in
atlas, and SkRSXform xform transforms it into destination space. atlas, and SkRSXform xform transforms it into destination space.
@ -2257,7 +2256,7 @@ public:
const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect, const SkColor colors[], int count, SkBlendMode mode, const SkRect* cullRect,
const SkPaint* paint); const SkPaint* paint);
/** Draw a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint.
paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode
to draw, if present. For each entry in the array, SkRect tex locates sprite in to draw, if present. For each entry in the array, SkRect tex locates sprite in
atlas, and SkRSXform xform transforms it into destination space. atlas, and SkRSXform xform transforms it into destination space.
@ -2282,7 +2281,7 @@ public:
this->drawAtlas(atlas.get(), xform, tex, colors, count, mode, cullRect, paint); this->drawAtlas(atlas.get(), xform, tex, colors, count, mode, cullRect, paint);
} }
/** Draw a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint.
paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode
to draw, if present. For each entry in the array, SkRect tex locates sprite in to draw, if present. For each entry in the array, SkRect tex locates sprite in
atlas, and SkRSXform xform transforms it into destination space. atlas, and SkRSXform xform transforms it into destination space.
@ -2303,7 +2302,7 @@ public:
this->drawAtlas(atlas, xform, tex, nullptr, count, SkBlendMode::kDst, cullRect, paint); this->drawAtlas(atlas, xform, tex, nullptr, count, SkBlendMode::kDst, cullRect, paint);
} }
/** Draw a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint.
paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode
to draw, if present. For each entry in the array, SkRect tex locates sprite in to draw, if present. For each entry in the array, SkRect tex locates sprite in
atlas, and SkRSXform xform transforms it into destination space. atlas, and SkRSXform xform transforms it into destination space.
@ -2325,7 +2324,7 @@ public:
cullRect, paint); cullRect, paint);
} }
/** Draw SkDrawable drawable using clip and SkMatrix, concatenated with /** Draws SkDrawable drawable using clip and SkMatrix, concatenated with
optional matrix. optional matrix.
If SkCanvas has an asynchronous implementation, as is the case If SkCanvas has an asynchronous implementation, as is the case
@ -2338,7 +2337,7 @@ public:
*/ */
void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr); void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr);
/** Draw SkDrawable drawable using clip and SkMatrix, offset by (x, y). /** Draws SkDrawable drawable using clip and SkMatrix, offset by (x, y).
If SkCanvas has an asynchronous implementation, as is the case If SkCanvas has an asynchronous implementation, as is the case
when it is recording into SkPicture, then drawable will be referenced, when it is recording into SkPicture, then drawable will be referenced,
@ -2351,7 +2350,7 @@ public:
*/ */
void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y); void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y);
/** Associate SkRect on SkCanvas with an annotation; a key-value pair, where the key is /** Associates SkRect on SkCanvas with an annotation; a key-value pair, where the key is
a null-terminated utf8 string, and optional value is stored as SkData. a null-terminated utf8 string, and optional value is stored as SkData.
Only some canvas implementations, such as recording to SkPicture, or drawing to Only some canvas implementations, such as recording to SkPicture, or drawing to
@ -2363,7 +2362,7 @@ public:
*/ */
void drawAnnotation(const SkRect& rect, const char key[], SkData* value); void drawAnnotation(const SkRect& rect, const char key[], SkData* value);
/** Associate SkRect on SkCanvas when an annotation; a key-value pair, where the key is /** Associates SkRect on SkCanvas when an annotation; a key-value pair, where the key is
a null-terminated utf8 string, and optional value is stored as SkData. a null-terminated utf8 string, and optional value is stored as SkData.
Only some canvas implementations, such as recording to SkPicture, or drawing to Only some canvas implementations, such as recording to SkPicture, or drawing to
@ -2377,8 +2376,6 @@ public:
this->drawAnnotation(rect, key, value.get()); this->drawAnnotation(rect, key, value.get());
} }
//////////////////////////////////////////////////////////////////////////
/** Returns true if clip is empty; that is, nothing will draw. /** Returns true if clip is empty; that is, nothing will draw.
May do work when called; it should not be called May do work when called; it should not be called

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkImage.h and docs/SkImage_Reference.bmh /* Generated by tools/bookmaker from include/core/SkImage.h and docs/SkImage_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkImage_Reference https://skia.org/user/api/SkImage_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -870,7 +870,8 @@ public:
Set premulBehavior to SkTransferFunctionBehavior::kIgnore to treat SkImage Set premulBehavior to SkTransferFunctionBehavior::kIgnore to treat SkImage
pixels as linear, when converting to destination SkColorType pixels as linear, when converting to destination SkColorType
and SkColorSpace, ignoring pixel encoding. and SkColorSpace, ignoring pixel encoding. premulBehavior is
SkTransferFunctionBehavior::kIgnore by default.
@param target SkColorSpace describing color range of returned SkImage @param target SkColorSpace describing color range of returned SkImage
@param premulBehavior one of: SkTransferFunctionBehavior::kRespect, @param premulBehavior one of: SkTransferFunctionBehavior::kRespect,

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkImageInfo.h and docs/SkImageInfo_Reference.bmh /* Generated by tools/bookmaker from include/core/SkImageInfo.h and docs/SkImageInfo_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkImageInfo_Reference https://skia.org/user/api/SkImageInfo_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -93,7 +93,7 @@ enum SkColorType {
kRGB_101010x_SkColorType, //!< pixel with 10 bits each for red, green, blue; in 32-bit word kRGB_101010x_SkColorType, //!< pixel with 10 bits each for red, green, blue; in 32-bit word
kGray_8_SkColorType, //!< pixel with grayscale level in 8-bit byte kGray_8_SkColorType, //!< pixel with grayscale level in 8-bit byte
kRGBA_F16_SkColorType, //!< pixel with half floats for red, green, blue, alpha; in 64-bit word kRGBA_F16_SkColorType, //!< pixel with half floats for red, green, blue, alpha; in 64-bit word
kRGBA_F32_SkColorType, //!< pixel with single floats for red, green, blue, alpha kRGBA_F32_SkColorType, //!< pixel using C float for red, green, blue, alpha; in 128-bit word
kLastEnum_SkColorType = kRGBA_F32_SkColorType,//!< last valid value kLastEnum_SkColorType = kRGBA_F32_SkColorType,//!< last valid value
#if SK_PMCOLOR_BYTE_ORDER(B,G,R,A) #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkMatrix.h and docs/SkMatrix_Reference.bmh /* Generated by tools/bookmaker from include/core/SkMatrix.h and docs/SkMatrix_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkMatrix_Reference https://skia.org/user/api/SkMatrix_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -1609,7 +1609,7 @@ public:
are nearly zero. are nearly zero.
On success On success
Matrix = scale * Remaining Matrix = scale * Remaining.
@param scale axes scaling factors; may be nullptr @param scale axes scaling factors; may be nullptr
@param remaining SkMatrix without scaling; may be nullptr @param remaining SkMatrix without scaling; may be nullptr

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkPaint.h and docs/SkPaint_Reference.bmh /* Generated by tools/bookmaker from include/core/SkPaint.h and docs/SkPaint_Reference.bmh
on 2018-06-14 13:13:33. Additional documentation and examples can be found at: on 2018-07-13 08:15:10. Additional documentation and examples can be found at:
https://skia.org/user/api/SkPaint_Reference https://skia.org/user/api/SkPaint_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -245,7 +245,7 @@ public:
*/ */
void setFlags(uint32_t flags); void setFlags(uint32_t flags);
/** If true, pixels on the active edges of SkPath may be drawn with partial transparency. /** Returns true if pixels on the active edges of SkPath may be drawn with partial transparency.
Equivalent to getFlags() masked with kAntiAlias_Flag. Equivalent to getFlags() masked with kAntiAlias_Flag.
@ -265,7 +265,7 @@ public:
*/ */
void setAntiAlias(bool aa); void setAntiAlias(bool aa);
/** If true, color error may be distributed to smooth color transition. /** Returns true if color error may be distributed to smooth color transition.
Equivalent to getFlags() masked with kDither_Flag. Equivalent to getFlags() masked with kDither_Flag.
@ -284,7 +284,7 @@ public:
*/ */
void setDither(bool dither); void setDither(bool dither);
/** If true, text is converted to SkPath before drawing and measuring. /** Returns true if text is converted to SkPath before drawing and measuring.
Equivalent to getFlags() masked with kLinearText_Flag. Equivalent to getFlags() masked with kLinearText_Flag.
@ -294,7 +294,7 @@ public:
return SkToBool(this->getFlags() & kLinearText_Flag); return SkToBool(this->getFlags() & kLinearText_Flag);
} }
/** If true, text is converted to SkPath before drawing and measuring. /** Returns true if text is converted to SkPath before drawing and measuring.
By default, kLinearText_Flag is clear. By default, kLinearText_Flag is clear.
Sets kLinearText_Flag if linearText is true. Sets kLinearText_Flag if linearText is true.
@ -304,7 +304,7 @@ public:
*/ */
void setLinearText(bool linearText); void setLinearText(bool linearText);
/** If true, glyphs at different sub-pixel positions may differ on pixel edge coverage. /** Returns true if glyphs at different sub-pixel positions may differ on pixel edge coverage.
Equivalent to getFlags() masked with kSubpixelText_Flag. Equivalent to getFlags() masked with kSubpixelText_Flag.
@ -323,7 +323,7 @@ public:
*/ */
void setSubpixelText(bool subpixelText); void setSubpixelText(bool subpixelText);
/** If true, glyphs may use LCD striping to improve glyph edges. /** Returns true if glyphs may use LCD striping to improve glyph edges.
Returns true if SkPaint::Flags kLCDRenderText_Flag is set. Returns true if SkPaint::Flags kLCDRenderText_Flag is set.
@ -342,7 +342,7 @@ public:
*/ */
void setLCDRenderText(bool lcdText); void setLCDRenderText(bool lcdText);
/** If true, font engine may return glyphs from font bitmaps instead of from outlines. /** Returns true if font engine may return glyphs from font bitmaps instead of from outlines.
Equivalent to getFlags() masked with kEmbeddedBitmapText_Flag. Equivalent to getFlags() masked with kEmbeddedBitmapText_Flag.
@ -361,9 +361,9 @@ public:
*/ */
void setEmbeddedBitmapText(bool useEmbeddedBitmapText); void setEmbeddedBitmapText(bool useEmbeddedBitmapText);
/** If true, and if SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting, and if /** Returns true if SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting, and if
platform uses FreeType as the font manager, instruct the font manager to always hint platform uses FreeType as the font manager. If true, instructs
glyphs. the font manager to always hint glyphs.
Equivalent to getFlags() masked with kAutoHinting_Flag. Equivalent to getFlags() masked with kAutoHinting_Flag.
@ -373,8 +373,9 @@ public:
return SkToBool(this->getFlags() & kAutoHinting_Flag); return SkToBool(this->getFlags() & kAutoHinting_Flag);
} }
/** If SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting and useAutohinter is set, /** Sets whether to always hint glyphs.
instruct the font manager to always hint glyphs. If SkPaint::Hinting is set to kNormal_Hinting or kFull_Hinting and useAutohinter is set,
instructs the font manager to always hint glyphs.
auto-hinting has no effect if SkPaint::Hinting is set to kNo_Hinting or auto-hinting has no effect if SkPaint::Hinting is set to kNo_Hinting or
kSlight_Hinting. kSlight_Hinting.
@ -387,7 +388,7 @@ public:
*/ */
void setAutohinted(bool useAutohinter); void setAutohinted(bool useAutohinter);
/** If true, glyphs are drawn top to bottom instead of left to right. /** Returns true if glyphs are drawn top to bottom instead of left to right.
Equivalent to getFlags() masked with kVerticalText_Flag. Equivalent to getFlags() masked with kVerticalText_Flag.
@ -397,7 +398,7 @@ public:
return SkToBool(this->getFlags() & kVerticalText_Flag); return SkToBool(this->getFlags() & kVerticalText_Flag);
} }
/** If true, text advance positions the next glyph below the previous glyph instead of to the /** Returns true if text advance positions the next glyph below the previous glyph instead of to the
right of previous glyph. right of previous glyph.
Sets kVerticalText_Flag if vertical is true. Sets kVerticalText_Flag if vertical is true.
@ -407,7 +408,7 @@ public:
*/ */
void setVerticalText(bool verticalText); void setVerticalText(bool verticalText);
/** If true, approximate bold by increasing the stroke width when creating glyph bitmaps /** Returns true if approximate bold by increasing the stroke width when creating glyph bitmaps
from outlines. from outlines.
Equivalent to getFlags() masked with kFakeBoldText_Flag. Equivalent to getFlags() masked with kFakeBoldText_Flag.
@ -418,7 +419,7 @@ public:
return SkToBool(this->getFlags() & kFakeBoldText_Flag); return SkToBool(this->getFlags() & kFakeBoldText_Flag);
} }
/** Use increased stroke width when creating glyph bitmaps to approximate a bold typeface. /** Increases stroke width when creating glyph bitmaps to approximate a bold typeface.
Sets kFakeBoldText_Flag if fakeBoldText is true. Sets kFakeBoldText_Flag if fakeBoldText is true.
Clears kFakeBoldText_Flag if fakeBoldText is false. Clears kFakeBoldText_Flag if fakeBoldText is false.
@ -472,7 +473,7 @@ public:
*/ */
static constexpr int kStyleCount = kStrokeAndFill_Style + 1; static constexpr int kStyleCount = kStrokeAndFill_Style + 1;
/** Whether the geometry is filled, stroked, or filled and stroked. /** Returns whether the geometry is filled, stroked, or filled and stroked.
@return one of:kFill_Style, kStroke_Style, kStrokeAndFill_Style @return one of:kFill_Style, kStroke_Style, kStrokeAndFill_Style
*/ */
@ -541,13 +542,13 @@ public:
*/ */
void setStrokeWidth(SkScalar width); void setStrokeWidth(SkScalar width);
/** The limit at which a sharp corner is drawn beveled. /** Returns the limit at which a sharp corner is drawn beveled.
@return zero and greater miter limit @return zero and greater miter limit
*/ */
SkScalar getStrokeMiter() const { return fMiterLimit; } SkScalar getStrokeMiter() const { return fMiterLimit; }
/** The limit at which a sharp corner is drawn beveled. /** Sets the limit at which a sharp corner is drawn beveled.
Valid values are zero and greater. Valid values are zero and greater.
Has no effect if miter is less than zero. Has no effect if miter is less than zero.
@ -595,33 +596,33 @@ public:
*/ */
static constexpr int kJoinCount = kLast_Join + 1; static constexpr int kJoinCount = kLast_Join + 1;
/** The geometry drawn at the beginning and end of strokes. /** Returns the geometry drawn at the beginning and end of strokes.
@return one of: kButt_Cap, kRound_Cap, kSquare_Cap @return one of: kButt_Cap, kRound_Cap, kSquare_Cap
*/ */
Cap getStrokeCap() const { return (Cap)fBitfields.fCapType; } Cap getStrokeCap() const { return (Cap)fBitfields.fCapType; }
/** The geometry drawn at the beginning and end of strokes. /** Sets the geometry drawn at the beginning and end of strokes.
@param cap one of: kButt_Cap, kRound_Cap, kSquare_Cap; @param cap one of: kButt_Cap, kRound_Cap, kSquare_Cap;
has no effect if cap is not valid has no effect if cap is not valid
*/ */
void setStrokeCap(Cap cap); void setStrokeCap(Cap cap);
/** The geometry drawn at the corners of strokes. /** Returns the geometry drawn at the corners of strokes.
@return one of: kMiter_Join, kRound_Join, kBevel_Join @return one of: kMiter_Join, kRound_Join, kBevel_Join
*/ */
Join getStrokeJoin() const { return (Join)fBitfields.fJoinType; } Join getStrokeJoin() const { return (Join)fBitfields.fJoinType; }
/** The geometry drawn at the corners of strokes. /** Sets the geometry drawn at the corners of strokes.
@param join one of: kMiter_Join, kRound_Join, kBevel_Join; @param join one of: kMiter_Join, kRound_Join, kBevel_Join;
otherwise, has no effect otherwise, has no effect
*/ */
void setStrokeJoin(Join join); void setStrokeJoin(Join join);
/** The filled equivalent of the stroked path. /** Returns the filled equivalent of the stroked path.
@param src SkPath read to create a filled version @param src SkPath read to create a filled version
@param dst resulting SkPath; may be the same as src, but may not be nullptr @param dst resulting SkPath; may be the same as src, but may not be nullptr
@ -633,7 +634,7 @@ public:
bool getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect, bool getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect,
SkScalar resScale = 1) const; SkScalar resScale = 1) const;
/** The filled equivalent of the stroked path. /** Returns the filled equivalent of the stroked path.
Replaces dst with the src path modified by SkPathEffect and style stroke. Replaces dst with the src path modified by SkPathEffect and style stroke.
SkPathEffect, if any, is not culled. stroke width is created with default precision. SkPathEffect, if any, is not culled. stroke width is created with default precision.
@ -646,7 +647,7 @@ public:
return this->getFillPath(src, dst, nullptr, 1); return this->getFillPath(src, dst, nullptr, 1);
} }
/** Optional colors used when filling a path, such as a gradient. /** Returns optional colors used when filling a path, such as a gradient.
Does not alter SkShader SkRefCnt. Does not alter SkShader SkRefCnt.
@ -654,7 +655,7 @@ public:
*/ */
SkShader* getShader() const { return fShader.get(); } SkShader* getShader() const { return fShader.get(); }
/** Optional colors used when filling a path, such as a gradient. /** Returns optional colors used when filling a path, such as a gradient.
Increases SkShader SkRefCnt by one. Increases SkShader SkRefCnt by one.
@ -662,7 +663,7 @@ public:
*/ */
sk_sp<SkShader> refShader() const; sk_sp<SkShader> refShader() const;
/** Optional colors used when filling a path, such as a gradient. /** Sets optional colors used when filling a path, such as a gradient.
Sets SkShader to shader, decreasing SkRefCnt of the previous SkShader. Sets SkShader to shader, decreasing SkRefCnt of the previous SkShader.
Increments shader SkRefCnt by one. Increments shader SkRefCnt by one.
@ -1015,7 +1016,7 @@ public:
SkScalar fStrikeoutThickness; //!< strikeout thickness SkScalar fStrikeoutThickness; //!< strikeout thickness
SkScalar fStrikeoutPosition; //!< strikeout position relative to baseline SkScalar fStrikeoutPosition; //!< strikeout position relative to baseline
/** If SkPaint::FontMetrics has a valid underline thickness, return true, and set /** Returns true if SkPaint::FontMetrics has a valid underline thickness, and sets
thickness to that value. If the underline thickness is not valid, thickness to that value. If the underline thickness is not valid,
return false, and ignore thickness. return false, and ignore thickness.
@ -1030,7 +1031,7 @@ public:
return false; return false;
} }
/** If SkPaint::FontMetrics has a valid underline position, return true, and set /** Returns true if SkPaint::FontMetrics has a valid underline position, and sets
position to that value. If the underline position is not valid, position to that value. If the underline position is not valid,
return false, and ignore position. return false, and ignore position.
@ -1045,7 +1046,7 @@ public:
return false; return false;
} }
/** If SkPaint::FontMetrics has a valid strikeout thickness, return true, and set /** Returns true if SkPaint::FontMetrics has a valid strikeout thickness, and sets
thickness to that value. If the underline thickness is not valid, thickness to that value. If the underline thickness is not valid,
return false, and ignore thickness. return false, and ignore thickness.
@ -1060,7 +1061,7 @@ public:
return false; return false;
} }
/** If SkPaint::FontMetrics has a valid strikeout position, return true, and set /** Returns true if SkPaint::FontMetrics has a valid strikeout position, and sets
position to that value. If the underline position is not valid, position to that value. If the underline position is not valid,
return false, and ignore position. return false, and ignore position.

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkPath.h and docs/SkPath_Reference.bmh /* Generated by tools/bookmaker from include/core/SkPath.h and docs/SkPath_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkPath_Reference https://skia.org/user/api/SkPath_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -66,14 +66,15 @@ public:
kCCW_Direction, //!< contour travels counterclockwise kCCW_Direction, //!< contour travels counterclockwise
}; };
/** By default, SkPath has no verbs, no SkPoint, and no weights. /** Constucts an empty path. By default, SkPath has no verbs, no SkPoint, and no weights.
SkPath::FillType is set to kWinding_FillType. SkPath::FillType is set to kWinding_FillType.
@return empty SkPath @return empty SkPath
*/ */
SkPath(); SkPath();
/** Copy constructor makes two paths identical by value. Internally, path and /** Constructs a copy of an existing path.
Copy constructor makes two paths identical by value. Internally, path and
the returned result share pointer values. The underlying verb array, SkPoint array the returned result share pointer values. The underlying verb array, SkPoint array
and weights are copied when modified. and weights are copied when modified.
@ -90,7 +91,8 @@ public:
*/ */
~SkPath(); ~SkPath();
/** SkPath assignment makes two paths identical by value. Internally, assignment /** Constructs a copy of an existing path.
SkPath assignment makes two paths identical by value. Internally, assignment
shares pointer values. The underlying verb array, SkPoint array and weights shares pointer values. The underlying verb array, SkPoint array and weights
are copied when modified. are copied when modified.
@ -123,7 +125,7 @@ public:
return !(a == b); return !(a == b);
} }
/** Return true if SkPath contain equal verbs and equal weights. /** Returns true if SkPath contain equal verbs and equal weights.
If SkPath contain one or more conics, the weights must match. If SkPath contain one or more conics, the weights must match.
conicTo() may add different verbs depending on conic weight, so it is not conicTo() may add different verbs depending on conic weight, so it is not
@ -135,7 +137,7 @@ public:
*/ */
bool isInterpolatable(const SkPath& compare) const; bool isInterpolatable(const SkPath& compare) const;
/** Interpolate between SkPath with SkPoint array of equal size. /** Interpolates between SkPath with SkPoint array of equal size.
Copy verb array and weights to out, and set out SkPoint array to a weighted Copy verb array and weights to out, and set out SkPoint array to a weighted
average of this SkPoint array and ending SkPoint array, using the formula: (Path Point * weight) + ending Point * (1 - weight). average of this SkPoint array and ending SkPoint array, using the formula: (Path Point * weight) + ending Point * (1 - weight).
@ -203,7 +205,7 @@ public:
*/ */
bool isInverseFillType() const { return IsInverseFillType((FillType)fFillType); } bool isInverseFillType() const { return IsInverseFillType((FillType)fFillType); }
/** Replace FillType with its inverse. The inverse of FillType describes the area /** Replaces FillType with its inverse. The inverse of FillType describes the area
unmodified by the original FillType. unmodified by the original FillType.
*/ */
void toggleInverseFillType() { void toggleInverseFillType() {
@ -310,7 +312,8 @@ public:
*/ */
void rewind(); void rewind();
/** Empty SkPath may have FillType but has no SkPoint, SkPath::Verb, or conic weight. /** Returns if SkPath is empty.
Empty SkPath may have FillType but has no SkPoint, SkPath::Verb, or conic weight.
SkPath() constructs empty SkPath; reset() and (rewind) make SkPath empty. SkPath() constructs empty SkPath; reset() and (rewind) make SkPath empty.
@return true if the path contains no SkPath::Verb array @return true if the path contains no SkPath::Verb array
@ -320,7 +323,8 @@ public:
return 0 == fPathRef->countVerbs(); return 0 == fPathRef->countVerbs();
} }
/** Contour is closed if SkPath SkPath::Verb array was last modified by close(). When stroked, /** Returns if contour is closed.
Contour is closed if SkPath SkPath::Verb array was last modified by close(). When stroked,
closed contour draws SkPaint::Join instead of SkPaint::Cap at first and last SkPoint. closed contour draws SkPaint::Join instead of SkPaint::Cap at first and last SkPoint.
@return true if the last contour ends with a kClose_Verb @return true if the last contour ends with a kClose_Verb
@ -349,7 +353,7 @@ public:
return SkToBool(fIsVolatile); return SkToBool(fIsVolatile);
} }
/** Specify whether SkPath is volatile; whether it will be altered or discarded /** Specifies whether SkPath is volatile; whether it will be altered or discarded
by the caller after it is drawn. SkPath by default have volatile set false, allowing by the caller after it is drawn. SkPath by default have volatile set false, allowing
SkBaseDevice to attach a cache of data which speeds repeated drawing. SkBaseDevice to attach a cache of data which speeds repeated drawing.
@ -368,7 +372,7 @@ public:
fIsVolatile = isVolatile; fIsVolatile = isVolatile;
} }
/** Test if line between SkPoint pair is degenerate. /** Tests if line between SkPoint pair is degenerate.
Line with no length or that moves a very short distance is degenerate; it is Line with no length or that moves a very short distance is degenerate; it is
treated as a point. treated as a point.
@ -382,7 +386,7 @@ public:
*/ */
static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact); static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact);
/** Test if quad is degenerate. /** Tests if quad is degenerate.
Quad with no length or that moves a very short distance is degenerate; it is Quad with no length or that moves a very short distance is degenerate; it is
treated as a point. treated as a point.
@ -396,7 +400,7 @@ public:
static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2, static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2,
const SkPoint& p3, bool exact); const SkPoint& p3, bool exact);
/** Test if cubic is degenerate. /** Tests if cubic is degenerate.
Cubic with no length or that moves a very short distance is degenerate; it is Cubic with no length or that moves a very short distance is degenerate; it is
treated as a point. treated as a point.
@ -489,7 +493,7 @@ public:
return fPathRef->getBounds(); return fPathRef->getBounds();
} }
/** Update internal bounds so that subsequent calls to getBounds() are instantaneous. /** Updates internal bounds so that subsequent calls to getBounds() are instantaneous.
Unaltered copies of SkPath may also access cached bounds through getBounds(). Unaltered copies of SkPath may also access cached bounds through getBounds().
For now, identical to calling getBounds() and ignoring the returned value. For now, identical to calling getBounds() and ignoring the returned value.
@ -532,7 +536,7 @@ public:
*/ */
bool conservativelyContainsRect(const SkRect& rect) const; bool conservativelyContainsRect(const SkRect& rect) const;
/** grows SkPath verb array and SkPoint array to contain extraPtCount additional SkPoint. /** Grows SkPath verb array and SkPoint array to contain extraPtCount additional SkPoint.
May improve performance and use less memory by May improve performance and use less memory by
reducing the number and size of allocations when creating SkPath. reducing the number and size of allocations when creating SkPath.
@ -779,7 +783,7 @@ public:
void rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, void rCubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2,
SkScalar x3, SkScalar y3); SkScalar x3, SkScalar y3);
/** Append arc to SkPath. Arc added is part of ellipse /** Appends arc to SkPath. Arc added is part of ellipse
bounded by oval, from startAngle through sweepAngle. Both startAngle and bounded by oval, from startAngle through sweepAngle. Both startAngle and
sweepAngle are measured in degrees, where zero degrees is aligned with the sweepAngle are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends arc clockwise. positive x-axis, and positive sweeps extends arc clockwise.
@ -795,7 +799,7 @@ public:
*/ */
void arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool forceMoveTo); void arcTo(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool forceMoveTo);
/** Append arc to SkPath, after appending line if needed. Arc is implemented by conic /** Appends arc to SkPath, after appending line if needed. Arc is implemented by conic
weighted to describe part of circle. Arc is contained by tangent from weighted to describe part of circle. Arc is contained by tangent from
last SkPath point (x0, y0) to (x1, y1), and tangent from (x1, y1) to (x2, y2). Arc last SkPath point (x0, y0) to (x1, y1), and tangent from (x1, y1) to (x2, y2). Arc
is part of circle sized to radius, positioned so it touches both tangent lines. is part of circle sized to radius, positioned so it touches both tangent lines.
@ -808,7 +812,7 @@ public:
*/ */
void arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius); void arcTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar radius);
/** Append arc to SkPath, after appending line if needed. Arc is implemented by conic /** Appends arc to SkPath, after appending line if needed. Arc is implemented by conic
weighted to describe part of circle. Arc is contained by tangent from weighted to describe part of circle. Arc is contained by tangent from
last SkPath point to p1, and tangent from p1 to p2. Arc last SkPath point to p1, and tangent from p1 to p2. Arc
is part of circle sized to radius, positioned so it touches both tangent lines. is part of circle sized to radius, positioned so it touches both tangent lines.
@ -839,7 +843,7 @@ public:
kLarge_ArcSize, //!< larger of arc pair kLarge_ArcSize, //!< larger of arc pair
}; };
/** Append arc to SkPath. Arc is implemented by one or more conics weighted to /** Appends arc to SkPath. Arc is implemented by one or more conics weighted to
describe part of oval with radii (rx, ry) rotated by xAxisRotate degrees. Arc describe part of oval with radii (rx, ry) rotated by xAxisRotate degrees. Arc
curves from last SkPath SkPoint to (x, y), choosing one of four possible routes: curves from last SkPath SkPoint to (x, y), choosing one of four possible routes:
clockwise or counterclockwise, and smaller or larger. clockwise or counterclockwise, and smaller or larger.
@ -865,7 +869,7 @@ public:
void arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, void arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc,
Direction sweep, SkScalar x, SkScalar y); Direction sweep, SkScalar x, SkScalar y);
/** Append arc to SkPath. Arc is implemented by one or more conic weighted to describe part of oval /** Appends arc to SkPath. Arc is implemented by one or more conic weighted to describe part of oval
with radii (r.fX, r.fY) rotated by xAxisRotate degrees. Arc curves from last SkPath SkPoint to with radii (r.fX, r.fY) rotated by xAxisRotate degrees. Arc curves from last SkPath SkPoint to
(xy.fX, xy.fY), choosing one of four possible routes: clockwise or counterclockwise, (xy.fX, xy.fY), choosing one of four possible routes: clockwise or counterclockwise,
and smaller or larger. and smaller or larger.
@ -890,7 +894,7 @@ public:
this->arcTo(r.fX, r.fY, xAxisRotate, largeArc, sweep, xy.fX, xy.fY); this->arcTo(r.fX, r.fY, xAxisRotate, largeArc, sweep, xy.fX, xy.fY);
} }
/** Append arc to SkPath, relative to last SkPath SkPoint. Arc is implemented by one or /** Appends arc to SkPath, relative to last SkPath SkPoint. Arc is implemented by one or
more conic, weighted to describe part of oval with radii (rx, ry) rotated by more conic, weighted to describe part of oval with radii (rx, ry) rotated by
xAxisRotate degrees. Arc curves from last SkPath SkPoint (x0, y0) to end SkPoint: xAxisRotate degrees. Arc curves from last SkPath SkPoint (x0, y0) to end SkPoint:
(x0 + dx, y0 + dy), choosing one of four possible routes: clockwise or (x0 + dx, y0 + dy), choosing one of four possible routes: clockwise or
@ -918,7 +922,7 @@ public:
void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc,
Direction sweep, SkScalar dx, SkScalar dy); Direction sweep, SkScalar dx, SkScalar dy);
/** Append kClose_Verb to SkPath. A closed contour connects the first and last SkPoint /** Appends kClose_Verb to SkPath. A closed contour connects the first and last SkPoint
with line, forming a continuous loop. Open and closed contour draw the same with line, forming a continuous loop. Open and closed contour draw the same
with SkPaint::kFill_Style. With SkPaint::kStroke_Style, open contour draws with SkPaint::kFill_Style. With SkPaint::kStroke_Style, open contour draws
SkPaint::Cap at contour start and end; closed contour draws SkPaint::Cap at contour start and end; closed contour draws
@ -1013,7 +1017,7 @@ public:
*/ */
bool isNestedFillRects(SkRect rect[2], Direction dirs[2] = nullptr) const; bool isNestedFillRects(SkRect rect[2], Direction dirs[2] = nullptr) const;
/** Add SkRect to SkPath, appending kMove_Verb, three kLine_Verb, and kClose_Verb, /** Adds SkRect to SkPath, appending kMove_Verb, three kLine_Verb, and kClose_Verb,
starting with top-left corner of SkRect; followed by top-right, bottom-right, starting with top-left corner of SkRect; followed by top-right, bottom-right,
and bottom-left if dir is kCW_Direction; or followed by bottom-left, and bottom-left if dir is kCW_Direction; or followed by bottom-left,
bottom-right, and top-right if dir is kCCW_Direction. bottom-right, and top-right if dir is kCCW_Direction.
@ -1023,7 +1027,7 @@ public:
*/ */
void addRect(const SkRect& rect, Direction dir = kCW_Direction); void addRect(const SkRect& rect, Direction dir = kCW_Direction);
/** Add SkRect to SkPath, appending kMove_Verb, three kLine_Verb, and kClose_Verb. /** Adds SkRect to SkPath, appending kMove_Verb, three kLine_Verb, and kClose_Verb.
If dir is kCW_Direction, SkRect corners are added clockwise; if dir is If dir is kCW_Direction, SkRect corners are added clockwise; if dir is
kCCW_Direction, SkRect corners are added counterclockwise. kCCW_Direction, SkRect corners are added counterclockwise.
start determines the first corner added. start determines the first corner added.
@ -1034,7 +1038,7 @@ public:
*/ */
void addRect(const SkRect& rect, Direction dir, unsigned start); void addRect(const SkRect& rect, Direction dir, unsigned start);
/** Add SkRect (left, top, right, bottom) to SkPath, /** Adds SkRect (left, top, right, bottom) to SkPath,
appending kMove_Verb, three kLine_Verb, and kClose_Verb, appending kMove_Verb, three kLine_Verb, and kClose_Verb,
starting with top-left corner of SkRect; followed by top-right, bottom-right, starting with top-left corner of SkRect; followed by top-right, bottom-right,
and bottom-left if dir is kCW_Direction; or followed by bottom-left, and bottom-left if dir is kCW_Direction; or followed by bottom-left,
@ -1049,7 +1053,7 @@ public:
void addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom, void addRect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom,
Direction dir = kCW_Direction); Direction dir = kCW_Direction);
/** Add oval to path, appending kMove_Verb, four kConic_Verb, and kClose_Verb. /** Adds oval to path, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width
and half oval height. Oval begins at (oval.fRight, oval.centerY()) and continues and half oval height. Oval begins at (oval.fRight, oval.centerY()) and continues
clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction. clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction.
@ -1059,7 +1063,7 @@ public:
*/ */
void addOval(const SkRect& oval, Direction dir = kCW_Direction); void addOval(const SkRect& oval, Direction dir = kCW_Direction);
/** Add oval to SkPath, appending kMove_Verb, four kConic_Verb, and kClose_Verb. /** Adds oval to SkPath, appending kMove_Verb, four kConic_Verb, and kClose_Verb.
Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width
and half oval height. Oval begins at start and continues and half oval height. Oval begins at start and continues
clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction. clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction.
@ -1070,7 +1074,7 @@ public:
*/ */
void addOval(const SkRect& oval, Direction dir, unsigned start); void addOval(const SkRect& oval, Direction dir, unsigned start);
/** Add circle centered at (x, y) of size radius to SkPath, appending kMove_Verb, /** Adds circle centered at (x, y) of size radius to SkPath, appending kMove_Verb,
four kConic_Verb, and kClose_Verb. Circle begins at: (x + radius, y), continuing four kConic_Verb, and kClose_Verb. Circle begins at: (x + radius, y), continuing
clockwise if dir is kCW_Direction, and counterclockwise if dir is kCCW_Direction. clockwise if dir is kCW_Direction, and counterclockwise if dir is kCCW_Direction.
@ -1084,7 +1088,7 @@ public:
void addCircle(SkScalar x, SkScalar y, SkScalar radius, void addCircle(SkScalar x, SkScalar y, SkScalar radius,
Direction dir = kCW_Direction); Direction dir = kCW_Direction);
/** Append arc to SkPath, as the start of new contour. Arc added is part of ellipse /** Appends arc to SkPath, as the start of new contour. Arc added is part of ellipse
bounded by oval, from startAngle through sweepAngle. Both startAngle and bounded by oval, from startAngle through sweepAngle. Both startAngle and
sweepAngle are measured in degrees, where zero degrees is aligned with the sweepAngle are measured in degrees, where zero degrees is aligned with the
positive x-axis, and positive sweeps extends arc clockwise. positive x-axis, and positive sweeps extends arc clockwise.
@ -1099,7 +1103,7 @@ public:
*/ */
void addArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle); void addArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle);
/** Append SkRRect to SkPath, creating a new closed contour. SkRRect has bounds /** Appends SkRRect to SkPath, creating a new closed contour. SkRRect has bounds
equal to rect; each corner is 90 degrees of an ellipse with radii (rx, ry). If equal to rect; each corner is 90 degrees of an ellipse with radii (rx, ry). If
dir is kCW_Direction, SkRRect starts at top-left of the lower-left corner and dir is kCW_Direction, SkRRect starts at top-left of the lower-left corner and
winds clockwise. If dir is kCCW_Direction, SkRRect starts at the bottom-left winds clockwise. If dir is kCCW_Direction, SkRRect starts at the bottom-left
@ -1119,7 +1123,7 @@ public:
void addRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, void addRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry,
Direction dir = kCW_Direction); Direction dir = kCW_Direction);
/** Append SkRRect to SkPath, creating a new closed contour. SkRRect has bounds /** Appends SkRRect to SkPath, creating a new closed contour. SkRRect has bounds
equal to rect; each corner is 90 degrees of an ellipse with radii from the equal to rect; each corner is 90 degrees of an ellipse with radii from the
array. array.
@ -1130,7 +1134,7 @@ public:
void addRoundRect(const SkRect& rect, const SkScalar radii[], void addRoundRect(const SkRect& rect, const SkScalar radii[],
Direction dir = kCW_Direction); Direction dir = kCW_Direction);
/** Add rrect to SkPath, creating a new closed contour. If /** Adds rrect to SkPath, creating a new closed contour. If
dir is kCW_Direction, rrect starts at top-left of the lower-left corner and dir is kCW_Direction, rrect starts at top-left of the lower-left corner and
winds clockwise. If dir is kCCW_Direction, rrect starts at the bottom-left winds clockwise. If dir is kCCW_Direction, rrect starts at the bottom-left
of the upper-left corner and winds counterclockwise. of the upper-left corner and winds counterclockwise.
@ -1142,7 +1146,7 @@ public:
*/ */
void addRRect(const SkRRect& rrect, Direction dir = kCW_Direction); void addRRect(const SkRRect& rrect, Direction dir = kCW_Direction);
/** Add rrect to SkPath, creating a new closed contour. If dir is kCW_Direction, rrect /** Adds rrect to SkPath, creating a new closed contour. If dir is kCW_Direction, rrect
winds clockwise; if dir is kCCW_Direction, rrect winds counterclockwise. winds clockwise; if dir is kCCW_Direction, rrect winds counterclockwise.
start determines the first point of rrect to add. start determines the first point of rrect to add.
@ -1152,7 +1156,7 @@ public:
*/ */
void addRRect(const SkRRect& rrect, Direction dir, unsigned start); void addRRect(const SkRRect& rrect, Direction dir, unsigned start);
/** Add contour created from line array, adding (count - 1) line segments. /** Adds contour created from line array, adding (count - 1) line segments.
Contour added starts at pts[0], then adds a line for every additional SkPoint Contour added starts at pts[0], then adds a line for every additional SkPoint
in pts array. If close is true,appends kClose_Verb to SkPath, connecting in pts array. If close is true,appends kClose_Verb to SkPath, connecting
pts[count - 1] and pts[0]. pts[count - 1] and pts[0].
@ -1175,7 +1179,7 @@ public:
kExtend_AddPathMode, //!< add line if prior contour is not closed kExtend_AddPathMode, //!< add line if prior contour is not closed
}; };
/** Append src to SkPath, offset by (dx, dy). /** Appends src to SkPath, offset by (dx, dy).
If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are
added unaltered. If mode is kExtend_AddPathMode, add line before appending added unaltered. If mode is kExtend_AddPathMode, add line before appending
@ -1189,7 +1193,7 @@ public:
void addPath(const SkPath& src, SkScalar dx, SkScalar dy, void addPath(const SkPath& src, SkScalar dx, SkScalar dy,
AddPathMode mode = kAppend_AddPathMode); AddPathMode mode = kAppend_AddPathMode);
/** Append src to SkPath. /** Appends src to SkPath.
If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are
added unaltered. If mode is kExtend_AddPathMode, add line before appending added unaltered. If mode is kExtend_AddPathMode, add line before appending
@ -1204,7 +1208,7 @@ public:
this->addPath(src, m, mode); this->addPath(src, m, mode);
} }
/** Append src to SkPath, transformed by matrix. Transformed curves may have different /** Appends src to SkPath, transformed by matrix. Transformed curves may have different
verbs, SkPoint, and conic weights. verbs, SkPoint, and conic weights.
If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are
@ -1217,14 +1221,14 @@ public:
*/ */
void addPath(const SkPath& src, const SkMatrix& matrix, AddPathMode mode = kAppend_AddPathMode); void addPath(const SkPath& src, const SkMatrix& matrix, AddPathMode mode = kAppend_AddPathMode);
/** Append src to SkPath, from back to front. /** Appends src to SkPath, from back to front.
Reversed src always appends a new contour to SkPath. Reversed src always appends a new contour to SkPath.
@param src SkPath verbs, SkPoint, and conic weights to add @param src SkPath verbs, SkPoint, and conic weights to add
*/ */
void reverseAddPath(const SkPath& src); void reverseAddPath(const SkPath& src);
/** Offset SkPoint array by (dx, dy). Offset SkPath replaces dst. /** Offsets SkPoint array by (dx, dy). Offset SkPath replaces dst.
If dst is nullptr, SkPath is replaced by offset data. If dst is nullptr, SkPath is replaced by offset data.
@param dx offset added to SkPoint array x-axis coordinates @param dx offset added to SkPoint array x-axis coordinates
@ -1233,7 +1237,7 @@ public:
*/ */
void offset(SkScalar dx, SkScalar dy, SkPath* dst) const; void offset(SkScalar dx, SkScalar dy, SkPath* dst) const;
/** Offset SkPoint array by (dx, dy). SkPath is replaced by offset data. /** Offsets SkPoint array by (dx, dy). SkPath is replaced by offset data.
@param dx offset added to SkPoint array x-axis coordinates @param dx offset added to SkPoint array x-axis coordinates
@param dy offset added to SkPoint array y-axis coordinates @param dy offset added to SkPoint array y-axis coordinates
@ -1242,7 +1246,7 @@ public:
this->offset(dx, dy, this); this->offset(dx, dy, this);
} }
/** Transform verb array, SkPoint array, and weight by matrix. /** Transforms verb array, SkPoint array, and weight by matrix.
transform may change verbs and increase their number. transform may change verbs and increase their number.
Transformed SkPath replaces dst; if dst is nullptr, original data Transformed SkPath replaces dst; if dst is nullptr, original data
is replaced. is replaced.
@ -1252,7 +1256,7 @@ public:
*/ */
void transform(const SkMatrix& matrix, SkPath* dst) const; void transform(const SkMatrix& matrix, SkPath* dst) const;
/** Transform verb array, SkPoint array, and weight by matrix. /** Transforms verb array, SkPoint array, and weight by matrix.
transform may change verbs and increase their number. transform may change verbs and increase their number.
SkPath is replaced by transformed data. SkPath is replaced by transformed data.
@ -1270,7 +1274,7 @@ public:
*/ */
bool getLastPt(SkPoint* lastPt) const; bool getLastPt(SkPoint* lastPt) const;
/** Set last point to (x, y). If SkPoint array is empty, append kMove_Verb to /** Sets last point to (x, y). If SkPoint array is empty, append kMove_Verb to
verb array and append (x, y) to SkPoint array. verb array and append (x, y) to SkPoint array.
@param x set x-axis value of last point @param x set x-axis value of last point
@ -1278,7 +1282,7 @@ public:
*/ */
void setLastPt(SkScalar x, SkScalar y); void setLastPt(SkScalar x, SkScalar y);
/** Set the last point on the path. If SkPoint array is empty, append kMove_Verb to /** Sets the last point on the path. If SkPoint array is empty, append kMove_Verb to
verb array and append p to SkPoint array. verb array and append p to SkPoint array.
@param p set value of last point @param p set value of last point
@ -1551,7 +1555,7 @@ public:
*/ */
size_t writeToMemory(void* buffer) const; size_t writeToMemory(void* buffer) const;
/** Write SkPath to buffer, returning the buffer written to, wrapped in SkData. /** Writes SkPath to buffer, returning the buffer written to, wrapped in SkData.
serialize() writes SkPath::FillType, verb array, SkPoint array, conic weight, and serialize() writes SkPath::FillType, verb array, SkPoint array, conic weight, and
additionally writes computed information like SkPath::Convexity and bounds. additionally writes computed information like SkPath::Convexity and bounds.

View File

@ -5,6 +5,16 @@
* found in the LICENSE file. * found in the LICENSE file.
*/ */
/* Generated by tools/bookmaker from include/core/SkPicture.h and docs/SkPicture_Reference.bmh
on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkPicture_Reference
You may edit either file directly. Structural changes to public interfaces require
editing both files. After editing docs/SkPicture_Reference.bmh, run:
bookmaker -b docs -i include/core/SkPicture.h -p
to create an updated version of this file.
*/
#ifndef SkPicture_DEFINED #ifndef SkPicture_DEFINED
#define SkPicture_DEFINED #define SkPicture_DEFINED
@ -21,37 +31,68 @@ class SkStream;
class SkWStream; class SkWStream;
/** \class SkPicture /** \class SkPicture
An SkPicture records drawing commands made to a canvas to be played back at a later time. An SkPicture records drawing commands made to a canvas to be played back at a later time.
This base class handles serialization and a few other miscellany. This base class handles serialization and a few other miscellany.
*/ */
class SK_API SkPicture : public SkRefCnt { class SK_API SkPicture : public SkRefCnt {
public: public:
/**
* Recreate a picture that was serialized into a stream or data.
*/
/** Recreates a picture that was serialized into a stream.
@param stream container for serial data
@param procs custom serial data decoders; may be nullptr
@return SkPicture constructed from stream data
*/
static sk_sp<SkPicture> MakeFromStream(SkStream* stream, static sk_sp<SkPicture> MakeFromStream(SkStream* stream,
const SkDeserialProcs* procs = nullptr); const SkDeserialProcs* procs = nullptr);
/** Recreates a picture that was serialized into data.
@param data container for serial data
@param procs custom serial data decoders; may be nullptr
@return SkPicture constructed from data
*/
static sk_sp<SkPicture> MakeFromData(const SkData* data, static sk_sp<SkPicture> MakeFromData(const SkData* data,
const SkDeserialProcs* procs = nullptr); const SkDeserialProcs* procs = nullptr);
/**
@param data pointer to serial data
@param size size of data
@param procs custom serial data decoders; may be nullptr
@return SkPicture constructed from data
*/
static sk_sp<SkPicture> MakeFromData(const void* data, size_t size, static sk_sp<SkPicture> MakeFromData(const void* data, size_t size,
const SkDeserialProcs* procs = nullptr); const SkDeserialProcs* procs = nullptr);
/** /** \class SkPicture::AbortCallback
* Subclasses of this can be passed to playback(). During the playback Subclasses of this can be passed to playback(). During the playback
* of the picture, this callback will periodically be invoked. If its of the picture, this callback will periodically be invoked. If its
* abort() returns true, then picture playback will be interrupted. abort() returns true, then picture playback will be interrupted.
* The resulting drawing is undefined, as there is no guarantee how often the
* The resulting drawing is undefined, as there is no guarantee how often the callback will be invoked. If the abort happens inside some level of nested
* callback will be invoked. If the abort happens inside some level of nested calls to save(), restore will automatically be called to return the state
* calls to save(), restore will automatically be called to return the state to the same level it was before the playback call was made.
* to the same level it was before the playback call was made.
*/ */
class SK_API AbortCallback { class SK_API AbortCallback {
public: public:
/** Has no effect.
@return abstract class cannot be instantiated
*/
AbortCallback() {} AbortCallback() {}
/** Has no effect.
*/
virtual ~AbortCallback() {} virtual ~AbortCallback() {}
/** Stops SkPicture playback when some condition is met. A subclass of
AbortCallback provides an override for abort() that can stop playback() from
drawing the entire picture.
@return true to stop playback
*/
virtual bool abort() = 0; virtual bool abort() = 0;
}; };
@ -59,38 +100,62 @@ public:
this has the effect of unfurling this picture into the destination this has the effect of unfurling this picture into the destination
canvas. Using the SkCanvas::drawPicture entry point gives the destination canvas. Using the SkCanvas::drawPicture entry point gives the destination
canvas the option of just taking a ref. canvas the option of just taking a ref.
@param canvas the canvas receiving the drawing commands.
@param callback a callback that allows interruption of playback @param canvas receiver of drawing commands
@param callback allows interruption of playback
*/ */
virtual void playback(SkCanvas* canvas, AbortCallback* callback = nullptr) const = 0; virtual void playback(SkCanvas* canvas, AbortCallback* callback = nullptr) const = 0;
/** Return a cull rect for this picture. /** Returns cull SkRect for this picture.
Ops recorded into this picture that attempt to draw outside the cull might not be drawn. Ops recorded into this picture that attempt to draw outside the cull might not be drawn.
*/
@return bounds passed when SkPicture was created
*/
virtual SkRect cullRect() const = 0; virtual SkRect cullRect() const = 0;
/** Returns a non-zero value unique among all pictures. */ /** Returns a non-zero value unique among all pictures.
@return identifier for SkPicture
*/
uint32_t uniqueID() const; uint32_t uniqueID() const;
/** Returns storage containing data describing SkPicture, using optional custom encoders.
@param procs custom serial data encoders; may be nullptr
@return storage containing serialized SkPicture
*/
sk_sp<SkData> serialize(const SkSerialProcs* procs = nullptr) const; sk_sp<SkData> serialize(const SkSerialProcs* procs = nullptr) const;
/** Writes picture to stream, using optional custom encoders.
@param stream writable serial data stream
@param procs custom serial data encoders; may be nullptr
*/
void serialize(SkWStream* stream, const SkSerialProcs* procs = nullptr) const; void serialize(SkWStream* stream, const SkSerialProcs* procs = nullptr) const;
/** /** Returns a placeholder SkPicture.
* Return a placeholder SkPicture. This placeholder does not draw anything itself. It has a distinct uniqueID()
* This placeholder does not draw anything itself. It has a distinct uniqueID() (just like all SkPicture) and will always be visible to SkSerialProcs.
* (just like all SkPictures) and will always be visible to SkSerialProcs.
* @param cull the placeholder's dimensions @param cull placeholder dimensions
*/ @return placeholder with unique identifier
*/
static sk_sp<SkPicture> MakePlaceholder(SkRect cull); static sk_sp<SkPicture> MakePlaceholder(SkRect cull);
/** Return the approximate number of operations in this picture. This /** Returns the approximate number of operations in this picture. This
* number may be greater or less than the number of SkCanvas calls number may be greater or less than the number of SkCanvas calls
* recorded: some calls may be recorded as more than one operation, or some recorded: some calls may be recorded as more than one operation, or some
* calls may be optimized away. calls may be optimized away.
*/
@return approximate operation count
*/
virtual int approximateOpCount() const = 0; virtual int approximateOpCount() const = 0;
/** Returns the approximate byte size of this picture, not including large ref'd objects. */ /** Returns the approximate byte size of SkPicture. Does not include large objects
referenced SkPicture.
@return approximate size
*/
virtual size_t approximateBytesUsed() const = 0; virtual size_t approximateBytesUsed() const = 0;
private: private:

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkPoint.h and docs/SkPoint_Reference.bmh /* Generated by tools/bookmaker from include/core/SkPoint.h and docs/SkPoint_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkPoint_Reference https://skia.org/user/api/SkPoint_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -390,7 +390,7 @@ struct SK_API SkPoint {
return {fX * scale, fY * scale}; return {fX * scale, fY * scale};
} }
/** Multiplies SkPoint by scale. Sets SkPoint to: (fX * scale, fY * scale) /** Multiplies SkPoint by scale. Sets SkPoint to: (fX * scale, fY * scale).
@param scale scalar to multiply by @param scale scalar to multiply by
@return reference to SkPoint @return reference to SkPoint

View File

@ -5,6 +5,16 @@
* found in the LICENSE file. * found in the LICENSE file.
*/ */
/* Generated by tools/bookmaker from include/core/SkRRect.h and docs/SkRRect_Reference.bmh
on 2018-07-13 08:15:10. Additional documentation and examples can be found at:
https://skia.org/user/api/SkRRect_Reference
You may edit either file directly. Structural changes to public interfaces require
editing both files. After editing docs/SkRRect_Reference.bmh, run:
bookmaker -b docs -i include/core/SkRRect.h -p
to create an updated version of this file.
*/
#ifndef SkRRect_DEFINED #ifndef SkRRect_DEFINED
#define SkRRect_DEFINED #define SkRRect_DEFINED
@ -14,89 +24,77 @@
class SkPath; class SkPath;
class SkMatrix; class SkMatrix;
// Path forward:
// core work
// add contains(SkRect&) - for clip stack
// add contains(SkRRect&) - for clip stack
// add heart rect computation (max rect inside RR)
// add 9patch rect computation
// add growToInclude(SkPath&)
// analysis
// use growToInclude to fit skp round rects & generate stats (RRs vs. real paths)
// check on # of rectorus's the RRs could handle
// rendering work
// update SkPath.addRRect() to only use quads
// add GM and bench
// further out
// detect and triangulate RRectorii rather than falling back to SW in Ganesh
//
/** \class SkRRect /** \class SkRRect
SkRRect describes a rounded rectangle with a bounds and a pair of radii for each corner.
The bounds and radii can be set so that SkRRect describes a rectangle with sharp corners,
a circle, an oval, or a rectangle with one or more rounded corners.
The SkRRect class represents a rounded rect with a potentially different SkRRect allows implementing CSS properties that describe rounded corners.
radii for each corner. It does not have a constructor so must be SkRRect may have up to eight different radii, one for each axis on each of its four
initialized with one of the initialization functions (e.g., setEmpty, corners.
setRectRadii, etc.)
This class is intended to roughly match CSS' border-*-*-radius capabilities. SkRRect may modify the provided parameters when initializing bounds and radii.
This means: If either axis radii is zero or less, radii are stored as zero; corner is square.
If either of a corner's radii are 0 the corner will be square. If corner curves overlap, radii are proportionally reduced to fit within bounds.
Negative radii are not allowed (they are clamped to zero).
If the corner curves overlap they will be proportionally reduced to fit.
*/ */
class SK_API SkRRect { class SK_API SkRRect {
public: public:
/** Default initialized to a rrect at the origin with zero width and height. */
/** Initializes bounds at (0, 0), the origin, with zero width and height.
Initializes corner radii to (0, 0), and sets type of kEmpty_Type.
@return empty SkRRect
*/
SkRRect() = default; SkRRect() = default;
/** Initializes to copy of rrect bounds and corner radii.
@param rrect bounds and corner to copy
@return copy of rrect
*/
SkRRect(const SkRRect& rrect) = default; SkRRect(const SkRRect& rrect) = default;
/** Copies rrect bounds and corner radii.
@param rrect bounds and corner to copy
@return copy of rrect
*/
SkRRect& operator=(const SkRRect& rrect) = default; SkRRect& operator=(const SkRRect& rrect) = default;
/** /** \enum SkRRect::Type
* Enum to capture the various possible subtypes of RR. Accessed Type describes possible specializations of SkRRect. Each Type is
* by type(). The subtypes become progressively less restrictive. exclusive; a SkRRect may only have one type.
*/
Type members become progressively less restrictive; larger values of
Type have more degrees of freedom than smaller values.
*/
enum Type { enum Type {
// !< The RR has zero width and/or zero height. All radii are zero. kEmpty_Type, //!< zero width or height
kEmpty_Type, kRect_Type, //!< non-zero width and height, and zeroed radii
kOval_Type, //!< non-zero width and height filled with radii
//!< The RR is actually a (non-empty) rect (i.e., at least one radius kSimple_Type, //!< non-zero width and height with equal radii
//!< at each corner is zero) kNinePatch_Type, //!< non-zero width and height with axis-aligned radii
kRect_Type, kComplex_Type, //!< non-zero width and height with arbitrary radii
kLastType = kComplex_Type, //!< largest Type value
//!< The RR is actually a (non-empty) oval (i.e., all x radii are equal
//!< and >= width/2 and all the y radii are equal and >= height/2
kOval_Type,
//!< The RR is non-empty and all the x radii are equal & all y radii
//!< are equal but it is not an oval (i.e., there are lines between
//!< the curves) nor a rect (i.e., both radii are non-zero)
kSimple_Type,
//!< The RR is non-empty and the two left x radii are equal, the two top
//!< y radii are equal, and the same for the right and bottom but it is
//!< neither an rect, oval, nor a simple RR. It is called "nine patch"
//!< because the centers of the corner ellipses form an axis aligned
//!< rect with edges that divide the RR into an 9 rectangular patches:
//!< an interior patch, four edge patches, and four corner patches.
kNinePatch_Type,
//!< A fully general (non-empty) RR. Some of the x and/or y radii are
//!< different from the others and there must be one corner where
//!< both radii are non-zero.
kComplex_Type,
kLastType = kComplex_Type,
}; };
/** /** Returns SkRRect::Type, one of:
* Returns the RR's sub type. kEmpty_Type, kRect_Type, kOval_Type, kSimple_Type, kNinePatch_Type,
*/ kComplex_Type.
@return SkRRect::Type
*/
Type getType() const { Type getType() const {
SkASSERT(this->isValid()); SkASSERT(this->isValid());
return static_cast<Type>(fType); return static_cast<Type>(fType);
} }
/** Returns SkRRect::Type, one of:
kEmpty_Type, kRect_Type, kOval_Type, kSimple_Type, kNinePatch_Type,
kComplex_Type.
@return SkRRect::Type
*/
Type type() const { return this->getType(); } Type type() const { return this->getType(); }
inline bool isEmpty() const { return kEmpty_Type == this->getType(); } inline bool isEmpty() const { return kEmpty_Type == this->getType(); }
@ -106,26 +104,42 @@ public:
inline bool isNinePatch() const { return kNinePatch_Type == this->getType(); } inline bool isNinePatch() const { return kNinePatch_Type == this->getType(); }
inline bool isComplex() const { return kComplex_Type == this->getType(); } inline bool isComplex() const { return kComplex_Type == this->getType(); }
/** Returns span on the x-axis. This does not check if result fits in 32-bit float;
result may be infinity.
@return bounds().fRight minus bounds().fLeft
*/
SkScalar width() const { return fRect.width(); } SkScalar width() const { return fRect.width(); }
/** Returns span on the y-axis. This does not check if result fits in 32-bit float;
result may be infinity.
@return bounds().fBottom minus bounds().fTop
*/
SkScalar height() const { return fRect.height(); } SkScalar height() const { return fRect.height(); }
/** /** Returns top-left corner x-radii. If type() returns kEmpty_Type, kRect_Type,
* kSimple means that all corners have the same x,y radii. This returns the top/left kOval_Type, or kSimple_Type, returns a value representative of all corner radii.
* corner's radii as representative of all corners. If the RRect is kComplex, then If type() returns kNinePatch_Type or kComplex_Type, at least one of the
* this still returns that corner's radii, but it is not indicative of the other corners. remaining three corners has a different value.
*/
@return corner radii for simple types
*/
SkVector getSimpleRadii() const { SkVector getSimpleRadii() const {
return fRadii[0]; return fRadii[0];
} }
/** /** Sets bounds to zero width and height at (0, 0), the origin. Sets
* Same as default initialized - zero width and height at the origin. corner radii to zero and sets type to kEmpty_Type.
*/ */
void setEmpty() { *this = SkRRect(); } void setEmpty() { *this = SkRRect(); }
/** /** Sets bounds to sorted rect, and sets corner radii to zero.
* Set this RR to match the supplied rect. All radii will be 0. If set bounds has width and height, and sets type to kRect_Type;
*/ otherwise, sets type to kEmpty_Type.
@param rect bounds to set
*/
void setRect(const SkRect& rect) { void setRect(const SkRect& rect) {
if (!this->initializeRect(rect)) { if (!this->initializeRect(rect)) {
return; return;
@ -137,31 +151,61 @@ public:
SkASSERT(this->isValid()); SkASSERT(this->isValid());
} }
/** Makes an empty rrect at the origin with zero width and height. */ /** Initializes bounds at (0, 0), the origin, with zero width and height.
Initializes corner radii to (0, 0), and sets type of kEmpty_Type.
@return empty SkRRect
*/
static SkRRect MakeEmpty() { return SkRRect(); } static SkRRect MakeEmpty() { return SkRRect(); }
/** Initializes to copy of r bounds and zeroes corner radii.
@param r bounds to copy
@return copy of r
*/
static SkRRect MakeRect(const SkRect& r) { static SkRRect MakeRect(const SkRect& r) {
SkRRect rr; SkRRect rr;
rr.setRect(r); rr.setRect(r);
return rr; return rr;
} }
/** Sets bounds to oval, x-axis radii to half oval.width(), and all y-axis radii
to half oval.height(). If oval bounds is empty, sets to kEmpty_Type.
Otherwise, sets to kOval_Type.
@param oval bounds of oval
@return oval
*/
static SkRRect MakeOval(const SkRect& oval) { static SkRRect MakeOval(const SkRect& oval) {
SkRRect rr; SkRRect rr;
rr.setOval(oval); rr.setOval(oval);
return rr; return rr;
} }
/** Sets to rounded rectangle with the same radii for all four corners.
If rect is empty, sets to kEmpty_Type.
Otherwise, if xRad and yRad are zero, sets to kRect_Type.
Otherwise, if xRad is at least half rect.width() and yRad is at least half
rect.height(), sets to kOval_Type.
Otherwise, sets to kSimple_Type.
@param rect bounds of rounded rectangle
@param xRad x-axis radius of corners
@param yRad y-axis radius of corners
@return rounded rectangle
*/
static SkRRect MakeRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad) { static SkRRect MakeRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad) {
SkRRect rr; SkRRect rr;
rr.setRectXY(rect, xRad, yRad); rr.setRectXY(rect, xRad, yRad);
return rr; return rr;
} }
/** /** Sets bounds to oval, x-axis radii to half oval.width(), and all y-axis radii
* Set this RR to match the supplied oval. All x radii will equal half the to half oval.height(). If oval bounds is empty, sets to kEmpty_Type.
* width and all y radii will equal half the height. Otherwise, sets to kOval_Type.
*/
@param oval bounds of oval
*/
void setOval(const SkRect& oval) { void setOval(const SkRect& oval) {
if (!this->initializeRect(oval)) { if (!this->initializeRect(oval)) {
return; return;
@ -178,131 +222,278 @@ public:
SkASSERT(this->isValid()); SkASSERT(this->isValid());
} }
/** /** Sets to rounded rectangle with the same radii for all four corners.
* Initialize the RR with the same radii for all four corners. If rect is empty, sets to kEmpty_Type.
*/ Otherwise, if xRad or yRad is zero, sets to kRect_Type.
Otherwise, if xRad is at least half rect.width() and yRad is at least half
rect.height(), sets to kOval_Type.
Otherwise, sets to kSimple_Type.
@param rect bounds of rounded rectangle
@param xRad x-axis radius of corners
@param yRad y-axis radius of corners
*/
void setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad); void setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad);
/** /** Sets bounds to rect. Sets radii to (leftRad, topRad), (rightRad, topRad),
* Initialize the rr with one radius per-side. (rightRad, bottomRad), (leftRad, bottomRad).
*/
If rect is empty, sets to kEmpty_Type.
Otherwise, if leftRad and rightRad are zero, sets to kRect_Type.
Otherwise, if topRad and bottomRad are zero, sets to kRect_Type.
Otherwise, if leftRad and rightRad are equal and at least half rect.width(), and
topRad and bottomRad are equal at least half rect.height(), sets to kOval_Type.
Otherwise, if leftRad and rightRad are equal, and topRad and bottomRad are equal,
sets to kSimple_Type. Otherwise, sets to kNinePatch_Type.
Nine patch refers to the nine parts defined by the radii: one center rectangle,
four edge patches, and four corner patches.
@param rect bounds of rounded rectangle
@param leftRad left-top and left-bottom x-axis radius
@param topRad left-top and right-top y-axis radius
@param rightRad right-top and right-bottom x-axis radius
@param bottomRad left-bottom and right-bottom y-axis radius
*/
void setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad, void setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad,
SkScalar rightRad, SkScalar bottomRad); SkScalar rightRad, SkScalar bottomRad);
/** /** Sets bounds to rect. Sets radii array for individual control of all for corners.
* Initialize the RR with potentially different radii for all four corners.
*/ If rect is empty, sets to kEmpty_Type.
Otherwise, if one of each corner radii are zero, sets to kRect_Type.
Otherwise, if all x-axis radii are equal and at least half rect.width(), and
all y-axis radii are equal at least half rect.height(), sets to kOval_Type.
Otherwise, if all x-axis radii are equal, and all y-axis radii are equal,
sets to kSimple_Type. Otherwise, sets to kNinePatch_Type.
@param rect bounds of rounded rectangle
@param radii corner x-axis and y-axis radii
*/
void setRectRadii(const SkRect& rect, const SkVector radii[4]); void setRectRadii(const SkRect& rect, const SkVector radii[4]);
// The radii are stored in UL, UR, LR, LL order. /** \enum SkRRect::Corner
The radii are stored: top-left, top-right, bottom-right, bottom-left.
*/
enum Corner { enum Corner {
kUpperLeft_Corner, kUpperLeft_Corner, //!< index of top-left corner radii
kUpperRight_Corner, kUpperRight_Corner, //!< index of top-right corner radii
kLowerRight_Corner, kLowerRight_Corner, //!< index of bottom-right corner radii
kLowerLeft_Corner, kLowerLeft_Corner, //!< index of bottom-left corner radii
}; };
/** Returns bounds. Bounds may have zero width or zero height. Bounds right is
greater than or equal to left; bounds bottom is greater than or equal to top.
Result is identical to getBounds().
@return bounding box
*/
const SkRect& rect() const { return fRect; } const SkRect& rect() const { return fRect; }
/** Returns scalar pair for radius of curve on x-axis and y-axis for one corner.
Both radii may be zero. If not zero, both are positive and finite.
@param corner one of: kUpperLeft_Corner, kUpperRight_Corner,
kLowerRight_Corner, kLowerLeft_Corner
@return x-axis and y-axis radii for one corner
*/
SkVector radii(Corner corner) const { return fRadii[corner]; } SkVector radii(Corner corner) const { return fRadii[corner]; }
/** Returns bounds. Bounds may have zero width or zero height. Bounds right is
greater than or equal to left; bounds bottom is greater than or equal to top.
Result is identical to rect().
@return bounding box
*/
const SkRect& getBounds() const { return fRect; } const SkRect& getBounds() const { return fRect; }
/** Returns true if bounds and radii in a are equal to bounds and radii in b.
a and b are not equal if either contain NaN. a and b are equal if members
contain zeroes width different signs.
@param a SkRect bounds and radii to compare
@param b SkRect bounds and radii to compare
@return true if members are equal
*/
friend bool operator==(const SkRRect& a, const SkRRect& b) { friend bool operator==(const SkRRect& a, const SkRRect& b) {
return a.fRect == b.fRect && SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8); return a.fRect == b.fRect && SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8);
} }
/** Returns true if bounds and radii in a are not equal to bounds and radii in b.
a and b are not equal if either contain NaN. a and b are equal if members
contain zeroes width different signs.
@param a SkRect bounds and radii to compare
@param b SkRect bounds and radii to compare
@return true if members are not equal
*/
friend bool operator!=(const SkRRect& a, const SkRRect& b) { friend bool operator!=(const SkRRect& a, const SkRRect& b) {
return a.fRect != b.fRect || !SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8); return a.fRect != b.fRect || !SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8);
} }
/** /** Copies SkRRect to dst, then insets dst bounds by dx and dy, and adjusts dst
* Call inset on the bounds, and adjust the radii to reflect what happens radii by dx and dy. dx and dy may be positive, negative, or zero. dst may be
* in stroking: If the corner is sharp (no curvature), leave it alone, SkRRect.
* otherwise we grow/shrink the radii by the amount of the inset. If a
* given radius becomes negative, it is pinned to 0. If either corner radius is zero, the corner has no curvature and is unchanged.
* Otherwise, if adjusted radius becomes negative, pins radius to zero.
* If the inset amount is larger than the width/height then the rrect collapses to If dx exceeds half dst bounds width, dst bounds left and right are set to
* a degenerate line or point. bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and
* bottom are set to bounds y-axis center.
* If the inset is sufficiently negative to cause the bounds to become infinite then
* the result is a default initialized rrect. If dx or dy cause the bounds to become infinite, dst bounds is zeroed.
*
* It is valid for dst == this. @param dx added to rect().fLeft, and subtracted from rect().fRight
*/ @param dy added to rect().fTop, and subtracted from rect().fBottom
@param dst insets bounds and radii
*/
void inset(SkScalar dx, SkScalar dy, SkRRect* dst) const; void inset(SkScalar dx, SkScalar dy, SkRRect* dst) const;
/** Insets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
positive, negative, or zero.
If either corner radius is zero, the corner has no curvature and is unchanged.
Otherwise, if adjusted radius becomes negative, pins radius to zero.
If dx exceeds half bounds width, bounds left and right are set to
bounds x-axis center. If dy exceeds half bounds height, bounds top and
bottom are set to bounds y-axis center.
If dx or dy cause the bounds to become infinite, bounds is zeroed.
@param dx added to rect().fLeft, and subtracted from rect().fRight
@param dy added to rect().fTop, and subtracted from rect().fBottom
*/
void inset(SkScalar dx, SkScalar dy) { void inset(SkScalar dx, SkScalar dy) {
this->inset(dx, dy, this); this->inset(dx, dy, this);
} }
/** /** Outsets dst bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
* Call outset on the bounds, and adjust the radii to reflect what happens positive, negative, or zero.
* in stroking: If the corner is sharp (no curvature), leave it alone,
* otherwise we grow/shrink the radii by the amount of the inset. If a If either corner radius is zero, the corner has no curvature and is unchanged.
* given radius becomes negative, it is pinned to 0. Otherwise, if adjusted radius becomes negative, pins radius to zero.
* If dx exceeds half dst bounds width, dst bounds left and right are set to
* It is valid for dst == this. bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and
*/ bottom are set to bounds y-axis center.
If dx or dy cause the bounds to become infinite, dst bounds is zeroed.
@param dx subtracted from rect().fLeft, and added to rect().fRight
@param dy subtracted from rect().fTop, and added to rect().fBottom
@param dst outset bounds and radii
*/
void outset(SkScalar dx, SkScalar dy, SkRRect* dst) const { void outset(SkScalar dx, SkScalar dy, SkRRect* dst) const {
this->inset(-dx, -dy, dst); this->inset(-dx, -dy, dst);
} }
/** Outsets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be
positive, negative, or zero.
If either corner radius is zero, the corner has no curvature and is unchanged.
Otherwise, if adjusted radius becomes negative, pins radius to zero.
If dx exceeds half bounds width, bounds left and right are set to
bounds x-axis center. If dy exceeds half bounds height, bounds top and
bottom are set to bounds y-axis center.
If dx or dy cause the bounds to become infinite, bounds is zeroed.
@param dx subtracted from rect().fLeft, and added to rect().fRight
@param dy subtracted from rect().fTop, and added to rect().fBottom
*/
void outset(SkScalar dx, SkScalar dy) { void outset(SkScalar dx, SkScalar dy) {
this->inset(-dx, -dy, this); this->inset(-dx, -dy, this);
} }
/** /** Translates SkRRect by (dx, dy).
* Translate the rrect by (dx, dy).
*/ @param dx offset added to rect().fLeft and rect().fRight
@param dy offset added to rect().fTop and rect().fBottom
*/
void offset(SkScalar dx, SkScalar dy) { void offset(SkScalar dx, SkScalar dy) {
fRect.offset(dx, dy); fRect.offset(dx, dy);
} }
/** Returns SkRRect translated by (dx, dy).
@param dx offset added to rect().fLeft and rect().fRight
@param dy offset added to rect().fTop and rect().fBottom
@return SkRRect bounds offset by (dx, dy), with unchanged corner radii
*/
SkRRect SK_WARN_UNUSED_RESULT makeOffset(SkScalar dx, SkScalar dy) const { SkRRect SK_WARN_UNUSED_RESULT makeOffset(SkScalar dx, SkScalar dy) const {
return SkRRect(fRect.makeOffset(dx, dy), fRadii, fType); return SkRRect(fRect.makeOffset(dx, dy), fRadii, fType);
} }
/** /** Returns true if rect is inside the bounds and corner radii, and if
* Returns true if 'rect' is wholy inside the RR, and both SkRRect and rect are not empty.
* are not empty.
*/ @param rect area tested for containment
@return true if SkRRect contains rect
*/
bool contains(const SkRect& rect) const; bool contains(const SkRect& rect) const;
/** Returns true if bounds and radii values are finite and describe a SkRRect
SkRRect::Type that matches getType(). All SkRRect methods construct valid types,
even if the input values are not valid. Invalid SkRRect data can only
be generated by corrupting memory.
@return true if bounds and radii match type()
*/
bool isValid() const; bool isValid() const;
static constexpr size_t kSizeInMemory = 12 * sizeof(SkScalar); static constexpr size_t kSizeInMemory = 12 * sizeof(SkScalar);
/** /** Writes SkRRect to buffer. Writes kSizeInMemory bytes, and returns
* Write the rrect into the specified buffer. This is guaranteed to always kSizeInMemory, the number of bytes written.
* write kSizeInMemory bytes, and that value is guaranteed to always be
* a multiple of 4. Return kSizeInMemory. @param buffer storage for SkRRect
*/ @return bytes written, kSizeInMemory
*/
size_t writeToMemory(void* buffer) const; size_t writeToMemory(void* buffer) const;
/** /** Reads SkRRect from buffer, reading kSizeInMemory bytes.
* Reads the rrect from the specified buffer Returns kSizeInMemory, bytes read if length is at least kSizeInMemory.
* Otherwise, returns zero.
* If the specified buffer is large enough, this will read kSizeInMemory bytes,
* and that value is guaranteed to always be a multiple of 4. @param buffer memory to read from
* @param length size of buffer
* @param buffer Memory to read from @return bytes read, or 0 if length is less than kSizeInMemory
* @param length Amount of memory available in the buffer */
* @return number of bytes read (must be a multiple of 4) or
* 0 if there was not enough memory available
*/
size_t readFromMemory(const void* buffer, size_t length); size_t readFromMemory(const void* buffer, size_t length);
/** /** Transforms by SkRRect by matrix, storing result in dst.
* Transform by the specified matrix, and put the result in dst. Returns true if SkRRect transformed can be represented by another SkRRect.
* Returns false if matrix contains transformations other than scale and translate.
* @param matrix SkMatrix specifying the transform. Must only contain
* scale and/or translate, or this call will fail. Asserts in debug builds if SkRRect equals dst.
* @param dst SkRRect to store the result. It is an error to use this,
* which would make this function no longer const. @param matrix SkMatrix specifying the transform
* @return true on success, false on failure. @param dst SkRRect to store the result
*/ @return true if transformation succeeded.
*/
bool transform(const SkMatrix& matrix, SkRRect* dst) const; bool transform(const SkMatrix& matrix, SkRRect* dst) const;
/** Writes text representation of SkRRect to standard output.
Set asHex true to generate exact binary representations
of floating point numbers.
@param asHex true if SkScalar values are written as hexadecimal
*/
void dump(bool asHex) const; void dump(bool asHex) const;
/** Writes text representation of SkRRect to standard output. The representation
may be directly compiled as C++ code. Floating point values are written
with limited precision; it may not be possible to reconstruct original
SkRRect from output.
*/
void dump() const { this->dump(false); } void dump() const { this->dump(false); }
/** Writes text representation of SkRRect to standard output. The representation
may be directly compiled as C++ code. Floating point values are written
in hexadecimal to preserve their exact bit pattern. The output reconstructs the
original SkRRect.
*/
void dumpHex() const { this->dump(true); } void dumpHex() const { this->dump(true); }
private: private:

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkRect.h and docs/SkRect_Reference.bmh /* Generated by tools/bookmaker from include/core/SkRect.h and docs/SkRect_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkRect_Reference https://skia.org/user/api/SkRect_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -904,7 +904,7 @@ struct SK_API SkRect {
*/ */
SkScalar width() const { return fRight - fLeft; } SkScalar width() const { return fRight - fLeft; }
/** Returns span on the y-axis. This does not check if SkIRect is sorted, or if /** Returns span on the y-axis. This does not check if SkRect is sorted, or if
result fits in 32-bit float; result may be negative or infinity. result fits in 32-bit float; result may be negative or infinity.
@return fBottom minus fTop @return fBottom minus fTop
@ -922,7 +922,7 @@ struct SK_API SkRect {
} }
/** Returns average of top edge and bottom edge. Result does not change if SkRect /** Returns average of top edge and bottom edge. Result does not change if SkRect
is sorted. Result may overflow to infinity if SkRect is far from the origin. is sorted.
@return midpoint in y @return midpoint in y
*/ */

View File

@ -6,7 +6,7 @@
*/ */
/* Generated by tools/bookmaker from include/core/SkSurface.h and docs/SkSurface_Reference.bmh /* Generated by tools/bookmaker from include/core/SkSurface.h and docs/SkSurface_Reference.bmh
on 2018-06-14 13:13:34. Additional documentation and examples can be found at: on 2018-07-13 08:15:11. Additional documentation and examples can be found at:
https://skia.org/user/api/SkSurface_Reference https://skia.org/user/api/SkSurface_Reference
You may edit either file directly. Structural changes to public interfaces require You may edit either file directly. Structural changes to public interfaces require
@ -609,6 +609,7 @@ public:
Source SkRect corners are (0, 0) and (src.width(), src.height()). Source SkRect corners are (0, 0) and (src.width(), src.height()).
Destination SkRect corners are (dstX, dstY) and (dstX + Surface width(), dstY + Surface height()). Destination SkRect corners are (dstX, dstY) and (dstX + Surface width(), dstY + Surface height()).
Copies each readable pixel intersecting both rectangles, without scaling, Copies each readable pixel intersecting both rectangles, without scaling,
converting to SkSurface colorType() and SkSurface alphaType() if required. converting to SkSurface colorType() and SkSurface alphaType() if required.
@ -622,6 +623,7 @@ public:
Source SkRect corners are (0, 0) and (src.width(), src.height()). Source SkRect corners are (0, 0) and (src.width(), src.height()).
Destination SkRect corners are (dstX, dstY) and (dstX + Surface width(), dstY + Surface height()). Destination SkRect corners are (dstX, dstY) and (dstX + Surface width(), dstY + Surface height()).
Copies each readable pixel intersecting both rectangles, without scaling, Copies each readable pixel intersecting both rectangles, without scaling,
converting to SkSurface colorType() and SkSurface alphaType() if required. converting to SkSurface colorType() and SkSurface alphaType() if required.