bookmaker does deprecated
Bookmaker does not require documentation for public symbols
described as "deprecated", "private", or "experimental".
Adding one of these words (case-insensitive) to the symbol
description in the include file tells bookmaker that the bmh file
should not include documentation, and the generated markdown
should omit it in its indices and descriptions.
Symbols marked as "to be deprecated" or "may be deprecated"
are still regarded as public and documented.
Private notes in the includes that start with TODO: are
omitted as well.
This CL updated generated includes to describe its symbols
accordingly. The includes will be fully regenerated in a future
CL. The corresponding documentation has been deleted from the
bmh files, and the web markup has been regenerated.
TBR=reed@google.com
Docs-Preview: https://skia.org/?cl=169830
Bug: skia:
Change-Id: Ie6ec3ccdadb7be9ac15db4811823a30948c4af25
Reviewed-on: https://skia-review.googlesource.com/c/169830
Commit-Queue: Cary Clark <caryclark@skia.org>
Auto-Submit: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
diff --git a/docs/SkBitmap_Reference.bmh b/docs/SkBitmap_Reference.bmh
index 7a44af5..f0b50f9 100644
--- a/docs/SkBitmap_Reference.bmh
+++ b/docs/SkBitmap_Reference.bmh
@@ -1539,12 +1539,6 @@
##
# ------------------------------------------------------------------------------
-
-#Method bool installMaskPixels(const SkMask& mask)
-#Deprecated soon
-##
-
-# ------------------------------------------------------------------------------
#Subtopic Pixels
#Line # read and write pixel values ##
##
@@ -1951,12 +1945,6 @@
# ------------------------------------------------------------------------------
-#Method void eraseArea(const SkIRect& area, SkColor c) const
-#Deprecated
-##
-
-# ------------------------------------------------------------------------------
-
#Method SkColor getColor(int x, int y) const
#In Property
#In Pixels
diff --git a/docs/SkCanvas_Reference.bmh b/docs/SkCanvas_Reference.bmh
index 11eb24c..468a903 100644
--- a/docs/SkCanvas_Reference.bmh
+++ b/docs/SkCanvas_Reference.bmh
@@ -189,12 +189,6 @@
# ------------------------------------------------------------------------------
-#Method explicit SkCanvas(sk_sp<SkBaseDevice> device)
-#Deprecated soon
-##
-
-# ------------------------------------------------------------------------------
-
#Method explicit SkCanvas(const SkBitmap& bitmap)
#Line # uses existing Bitmap ##
@@ -243,30 +237,6 @@
##
-#EnumClass ColorBehavior
-#Line # exists for Android framework only ##
-#Private
-Android framework only.
-##
-
-#Code
-#Populate
-##
-#Const kLegacy 0
-#Line # placeholder ##
- Is a placeholder to allow specialized constructor; has no meaning.
-##
-##
-
-#Method SkCanvas(const SkBitmap& bitmap, ColorBehavior behavior)
-
-#Line # exists for Android framework only ##
-#Populate
-
-#NoExample
-##
-##
-
# ------------------------------------------------------------------------------
#Method SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)
@@ -446,7 +416,7 @@
#NoExample
##
-#SeeAlso peekPixels SkSurface::flush GrContext::flush SkSurface::prepareForExternalIO GrContext::abandonContext
+#SeeAlso peekPixels SkSurface::flush GrContext::flush GrContext::abandonContext
##
@@ -1374,14 +1344,6 @@
Initializes Layer with the contents of the previous Layer.
##
-#Const kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag 8
-#Experimental do not use
-##
-
-#Const kDontClipToLayer_Legacy_SaveLayerFlag 0x80000000
-#Deprecated soon
-##
-
#Example
#Height 160
#Description
@@ -1550,37 +1512,6 @@
##
-#Method SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop,
- const SkImage* clipMask, const SkMatrix* clipMatrix,
- SaveLayerFlags saveLayerFlags)
-
-#Experimental not ready
-
-Sets fBounds, fPaint, fBackdrop, fClipMask, fClipMatrix, and fSaveLayerFlags.
-clipMatrix uses Color_Alpha channel of image, transformed by clipMatrix, to clip
-Layer when drawn to Canvas.
-
-Implementation is not complete; has no effect if Device is GPU-backed.
-
-#Param bounds Layer dimensions; may be nullptr ##
-#Param paint graphics state applied to Layer when overlaying prior
- Layer; may be nullptr
-##
-#Param backdrop prior Layer copied with Image_Filter;
- may be nullptr
-##
-#Param clipMask clip applied to Layer; may be nullptr ##
-#Param clipMatrix matrix applied to clipMask; may be nullptr to use
- identity matrix
-##
-#Param saveLayerFlags SaveLayerRec options to modify Layer ##
-
-#Return SaveLayerRec fully specified ##
-
-#SeeAlso save restore saveLayer saveLayerPreserveLCDTextRequests saveLayerAlpha
-
-##
-
#Struct ##
#Subtopic ##
@@ -2025,26 +1956,6 @@
##
-#Method void androidFramework_setDeviceClipRestriction(const SkIRect& rect)
-
-#In Clip
-#Line # exists for use by Android framework ##
-Sets the maximum clip rectangle, which can be set by clipRect, clipRRect and
-clipPath and intersect the current clip with the specified rect.
-The maximum clip affects only future clipping operations; it is not retroactive.
-The clip restriction is not recorded in pictures.
-
-Pass an empty rect to disable maximum clip.
-
-#Private
-This private API is for use by Android framework only.
-##
-
-#Param rect maximum allowed clip in device coordinates
-#Param ##
-
-##
-
#Method void clipRRect(const SkRRect& rrect, SkClipOp op, bool doAntiAlias)
#In Clip
@@ -2214,17 +2125,6 @@
# ------------------------------------------------------------------------------
-#Method void setAllowSimplifyClip(bool allow)
-
-#In Clip
-#Experimental testing
-
-Set to simplify clip stack using PathOps.
-
-##
-
-# ------------------------------------------------------------------------------
-
#Method void clipRegion(const SkRegion& deviceRgn, SkClipOp op = SkClipOp::kIntersect)
#In Clip
@@ -2520,7 +2420,7 @@
#NoExample
##
-#SeeAlso flush() SkSurface::prepareForExternalIO GrContext::abandonContext
+#SeeAlso flush() GrContext::abandonContext
##
@@ -4012,104 +3912,6 @@
#Subtopic Lattice ##
-# ------------------------------------------------------------------------------
-
-#Enum QuadAAFlags
-#Line # do not use this ##
-#Code
-#Populate
-##
-
-#Private
-Do not use.
-##
-
-#Const kLeft_QuadAAFlag 1
-#Line # antialias the left edge ##
-##
-
-#Const kTop_QuadAAFlag 2
-#Line # antialias the top edge ##
-##
-
-#Const kRight_QuadAAFlag 4
-#Line # antialias the right edge ##
-##
-
-#Const kBottom_QuadAAFlag 8
-#Line # antialias the bottom edge ##
-##
-
-#Const kNone_QuadAAFlags 0
-#Line # antialias none of the edges ##
-##
-
-#Const kAll_QuadAAFlags 15
-#Line # antialias all of the edges ##
-##
-
-#NoExample
-##
-##
-
-# ------------------------------------------------------------------------------
-
-#Struct ImageSetEntry
-#Line # do not use this ##
-
-#Code
-#Populate
-##
-
-#Private
-Do not use.
-##
-
-#Member SkImage* fImage
-#Line # image to draw ##
-##
-
-#Member SkRect fSrcRect
-#Line # image src rectangle ##
-##
-
-#Member SkRect fDstRect
-#Line # local space rectangle ##
-##
-
-#Member unsigned fAAFlags
-#Line # antialiasing flags ##
-##
-
-#NoExample
-##
-
-##
-
-# ------------------------------------------------------------------------------
-
-#Method void experimental_DrawImageSetV0(const ImageSetEntry imageSet[], int cnt, float alpha,
- SkFilterQuality quality, SkBlendMode mode);
-#Private
-Do not use.
-##
-#In Draw_Image
-#In Draw
-#Line # draws a set a of images; do not call this ##
-
-Draws a set of images. Do not use this method.
-
-#Param imageSet images ##
-#Param cnt number of images ##
-#Param alpha alpha ##
-#Param quality filter quality ##
-#Param mode blend mode ##
-
-#NoExample
-##
-
-##
-
#Subtopic Draw_Image ##
# ------------------------------------------------------------------------------
diff --git a/docs/SkImage_Reference.bmh b/docs/SkImage_Reference.bmh
index 9a68740..97538cd 100644
--- a/docs/SkImage_Reference.bmh
+++ b/docs/SkImage_Reference.bmh
@@ -999,12 +999,6 @@
# ------------------------------------------------------------------------------
-#Method GrTexture* getTexture() const
-#Deprecated
-#Method ##
-
-# ------------------------------------------------------------------------------
-
#Method bool isTextureBacked() const
#In Property
#Line # returns if Image was created from GPU_Texture ##
@@ -1624,51 +1618,6 @@
# ------------------------------------------------------------------------------
-#Enum LegacyBitmapMode
-#Deprecated soon
-#Code
-#Populate
-##
-
-#Const kRO_LegacyBitmapMode 0
-#Line # returned bitmap is read-only and immutable ##
-##
-
-#Enum ##
-
-# ------------------------------------------------------------------------------
-
-#Method bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode = kRO_LegacyBitmapMode) const
-#In Constructors
-#Line # returns as Raster_Bitmap ##
-#Populate
-
-#Example
-#Image 4
-#Platform gpu
- SkBitmap bitImage;
- if (image->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {
- canvas->drawBitmap(bitImage, 0, 0);
- }
- GrContext* grContext = canvas->getGrContext();
- if (!grContext) {
- return;
- }
- sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(grContext, backEndTexture,
- kTopLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType,
- kOpaque_SkAlphaType, nullptr));
- canvas->drawImage(textureImage, 45, 45);
- if (textureImage->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {
- canvas->drawBitmap(bitImage, 90, 90);
- }
-##
-
-#SeeAlso MakeRasterData makeRasterImage makeNonTextureImage
-
-#Method ##
-
-# ------------------------------------------------------------------------------
-
#Method bool isLazyGenerated() const
#In Property
#Line # returns if Image is created as needed ##
diff --git a/docs/SkMemoryStream_Reference.bmh b/docs/SkMemoryStream_Reference.bmh
index 3bcbe67..b7e86b0 100644
--- a/docs/SkMemoryStream_Reference.bmh
+++ b/docs/SkMemoryStream_Reference.bmh
@@ -173,27 +173,6 @@
# ------------------------------------------------------------------------------
-#Method void setMemoryOwned(const void* data, size_t length)
-#In incomplete
-#Line # incomplete ##
-
-#Private
-Internal use only.
-##
-
-#Param data incomplete ##
-#Param length incomplete ##
-
-#Example
-// incomplete
-##
-
-#SeeAlso incomplete
-
-#Method ##
-
-# ------------------------------------------------------------------------------
-
#Method sk_sp<SkData> asData() const
#In incomplete
#Line # incomplete ##
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 373be0e..98067ae 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -296,28 +296,6 @@
#Line # glyph outline adjustment ##
##
-#Enum Hinting
-#Line # level of glyph outline adjustment ##
-
-#Code
-#Populate
-##
-
-#Const kNo_Hinting 0
-#Deprecated
-##
-#Const kSlight_Hinting 1
-#Deprecated
-##
-#Const kNormal_Hinting 2
-#Deprecated
-##
-#Const kFull_Hinting 3
-#Deprecated
-##
-
-##
-
#Method void setHinting(SkFontHinting hintingLevel)
#In Hinting
#Line # sets Hinting, glyph outline adjustment level ##
@@ -334,26 +312,6 @@
##
##
-#Method Hinting getHinting() const
-#In Hinting
-#Line # returns Hinting, glyph outline adjustment level ##
-#Populate
-#NoExample
-##
-##
-
-#Method void setHinting(Hinting h)
-#In Hinting
-#Line # returns Hinting, glyph outline adjustment level ##
-#Populate
-#NoExample
-##
-##
-
-# Disable for now
-#ToDo no spelling errors
-###$ block comment
-
#Method SkFontHinting getHinting() const
#In Hinting
#Line # returns Hinting, glyph outline adjustment level ##
@@ -370,9 +328,6 @@
##
##
-$$$# end of block comment
-#ToDo ##
-
# ------------------------------------------------------------------------------
#Subtopic Flags
#Line # attributes represented by single bits ##
@@ -424,23 +379,6 @@
#Enum ##
-#Enum ReserveFlags
-#Deprecated soon
-
-Only valid for Android framework.
-
-#Code
-#Populate
-##
-
-#Const kUnderlineText_ReserveFlag 0x0008
-#Deprecated soon
-##
-#Const kStrikeThruText_ReserveFlag 0x0010
-#Deprecated soon
-##
-##
-
#Method uint32_t getFlags() const
#In Flags
#Line # returns Flags stored in a bit field ##
@@ -2893,11 +2831,6 @@
##
-#Method SkDrawLooper* getLooper() const
-#Bug 6259
-#Deprecated
-##
-
#Method void setDrawLooper(sk_sp<SkDrawLooper> drawLooper)
#In Draw_Looper_Methods
#Line # sets Draw_Looper, multiple layers ##
@@ -2918,11 +2851,6 @@
##
-#Method void setLooper(sk_sp<SkDrawLooper> drawLooper)
-#Bug 6259
-#Deprecated
-##
-
#Subtopic Draw_Looper_Methods ##
#Subtopic Text_Size
@@ -3779,102 +3707,6 @@
##
# ------------------------------------------------------------------------------
-#Subtopic Fast_Bounds
-#Line # approximate area required by Paint ##
- #Private
- To be made private.
- ##
-
-Fast_Bounds functions conservatively outset a drawing bounds by additional area
-Paint may draw to.
-
-#Method bool canComputeFastBounds() const
-
-#In Fast_Bounds
-#Line # returns true if settings allow for fast bounds computation ##
- #Private
- (to be made private)
- ##
-
- Returns true if Paint does not include elements requiring extensive computation
- to compute Device bounds of drawn geometry. For instance, Paint with Path_Effect
- always returns false.
-
- #Return true if Paint allows for fast computation of bounds ##
-##
-
-#Method const SkRect& computeFastBounds(const SkRect& orig, SkRect* storage) const
-
-#In Fast_Bounds
-#Line # returns fill bounds for quick reject tests ##
- #Private
- (to be made private)
- ##
-
- Only call if canComputeFastBounds returned true. This takes a
- raw rectangle, the raw bounds of a shape; and adjusts it for stylistic
- effects in the paint, such as stroking. If needed, it uses the storage
- parameter. It returns the adjusted bounds that can then be used
- for SkCanvas::quickReject tests.
-
- The returned Rect will either be orig or storage, thus the caller
- should not rely on storage being set to the result, but should always
- use the returned value. It is legal for orig and storage to be the same
- Rect.
-
- #Private
- For example:
- if (!path.isInverseFillType() && paint.canComputeFastBounds()) {
- SkRect storage;
- if (canvas->quickReject(paint.computeFastBounds(path.getBounds(), &storage))) {
- return; // do not draw the path
- }
- }
- // draw the path
- ##
-
- #Param orig geometry modified by Paint when drawn ##
- #Param storage computed bounds of geometry; may not be nullptr ##
-
- #Return fast computed bounds ##
-##
-
-#Method const SkRect& computeFastStrokeBounds(const SkRect& orig,
- SkRect* storage) const
-#In Fast_Bounds
-#Line # returns stroke bounds for quick reject tests ##
- #Private
- (to be made private)
- ##
-
- #Param orig geometry modified by Paint when drawn ##
- #Param storage computed bounds of geometry ##
-
- #Return fast computed bounds ##
-##
-
-#Method const SkRect& doComputeFastBounds(const SkRect& orig, SkRect* storage,
- Style style) const
-#In Fast_Bounds
-#Line # returns bounds for quick reject tests ##
- #Private
- (to be made private)
- ##
-
- Computes the bounds, overriding the Paint Style. This can be used to
- account for additional width required by stroking orig, without
- altering Style set to fill.
-
- #Param orig geometry modified by Paint when drawn ##
- #Param storage computed bounds of geometry ##
- #Param style overrides Style ##
-
- #Return fast computed bounds ##
-##
-
-#Subtopic Fast_Bounds ##
-
-# ------------------------------------------------------------------------------
#Subtopic Utility
#Line # rarely called management functions ##
##
diff --git a/docs/SkPath_Reference.bmh b/docs/SkPath_Reference.bmh
index 3352832..11d0b53 100644
--- a/docs/SkPath_Reference.bmh
+++ b/docs/SkPath_Reference.bmh
@@ -4350,10 +4350,6 @@
##
-#Method bool pathRefIsValid() const
-#Deprecated soon
-##
-
# ------------------------------------------------------------------------------
#Class Iter
diff --git a/docs/SkPixmap_Reference.bmh b/docs/SkPixmap_Reference.bmh
index 1b38cc3..b012f34 100644
--- a/docs/SkPixmap_Reference.bmh
+++ b/docs/SkPixmap_Reference.bmh
@@ -177,12 +177,6 @@
# ------------------------------------------------------------------------------
-#Method bool reset(const SkMask& mask)
-#Deprecated soon
-##
-
-# ------------------------------------------------------------------------------
-
#Method bool extractSubset(SkPixmap* subset, const SkIRect& area) const
#In Initialization
diff --git a/docs/SkRect_Reference.bmh b/docs/SkRect_Reference.bmh
index a776adc..fa34825 100644
--- a/docs/SkRect_Reference.bmh
+++ b/docs/SkRect_Reference.bmh
@@ -639,14 +639,7 @@
#In As_Points
#Line # returns four corners as Point ##
-Returns four points in quad that enclose Rect ordered as: top-left, top-right,
-bottom-right, bottom-left.
-
-#Private
-Consider adding param to control whether quad is clockwise or counterclockwise.
-##
-
-#Param quad storage for corners of Rect ##
+#Populate
#Example
SkRect rect = {1, 2, 3, 4};
diff --git a/docs/SkRegion_Reference.bmh b/docs/SkRegion_Reference.bmh
index 7e72f6a..50ada67 100644
--- a/docs/SkRegion_Reference.bmh
+++ b/docs/SkRegion_Reference.bmh
@@ -1530,18 +1530,6 @@
# ------------------------------------------------------------------------------
-#Method char* toString()
-#In Utility
-#Line # exists for Android framework only ##
-#Private
-Android framework only.
-##
-#Return string representation of Region ##
-
-#Method ##
-
-# ------------------------------------------------------------------------------
-
#Method size_t writeToMemory(void* buffer) const
#In Utility
#Line # writes to buffer ##
diff --git a/docs/SkStream_Reference.bmh b/docs/SkStream_Reference.bmh
index a927639..c94b6f9 100644
--- a/docs/SkStream_Reference.bmh
+++ b/docs/SkStream_Reference.bmh
@@ -505,10 +505,6 @@
Returns the starting address for the data. If this cannot be done, returns nullptr.
-#Private
-TODO: replace with virtual const SkData* getData()
-##
-
#Return incomplete ##
#Example
diff --git a/docs/SkSurface_Reference.bmh b/docs/SkSurface_Reference.bmh
index ee2e93f..32999c5 100644
--- a/docs/SkSurface_Reference.bmh
+++ b/docs/SkSurface_Reference.bmh
@@ -606,16 +606,7 @@
#Method void notifyContentWillChange(ContentChangeMode mode)
#In Miscellaneous
#Line # notifies that contents will be changed outside of Skia ##
-Notifies that Surface contents will be changed by code outside of Skia.
-Subsequent calls to generationID return a different value.
-
-mode is normally passed as kRetain_ContentChangeMode.
-
-#Private
-Can we deprecate this?
-##
-
-#Param mode one of: kDiscard_ContentChangeMode, kRetain_ContentChangeMode ##
+#Populate
#Example
auto surface = SkSurface::MakeRasterN32Premul(1, 1);
@@ -665,16 +656,6 @@
Caller must overwrite the entire back-end object.
##
-#Const kFlushRead_TextureHandleAccess 0
-#Deprecated
-##
-#Const kFlushWrite_TextureHandleAccess 1
-#Deprecated
-##
-#Const kDiscardWrite_TextureHandleAccess 2
-#Deprecated
-##
-
#NoExample
// todo: need to update example to use GrBackendTexture instead of GrBackendObject
#Platform gpu
@@ -1144,12 +1125,6 @@
#Method ##
# ------------------------------------------------------------------------------
-
-#Method void prepareForExternalIO()
-#Deprecated soon
-#Method ##
-
-# ------------------------------------------------------------------------------
#Subtopic Utility
#Line # rarely called management functions ##
##
diff --git a/docs/SkTextBlobBuilder_Reference.bmh b/docs/SkTextBlobBuilder_Reference.bmh
index 9ca937d..1e9fd92 100644
--- a/docs/SkTextBlobBuilder_Reference.bmh
+++ b/docs/SkTextBlobBuilder_Reference.bmh
@@ -196,27 +196,6 @@
#Method ##
-# ------------------------------------------------------------------------------
-
-#Method const RunBuffer& allocRun(const SkPaint& font, int count, SkScalar x, SkScalar y,
- const SkRect* bounds = nullptr)
-#Deprecated
-#Method ##
-
-# ------------------------------------------------------------------------------
-
-#Method const RunBuffer& allocRunPosH(const SkPaint& font, int count, SkScalar y,
- const SkRect* bounds = nullptr)
-#Deprecated
-#Method ##
-
-# ------------------------------------------------------------------------------
-
-#Method const RunBuffer& allocRunPos(const SkPaint& font, int count,
- const SkRect* bounds = nullptr)
-#Deprecated
-#Method ##
-
#Class SkTextBlobBuilder ##
#Topic Text_Blob_Builder ##
diff --git a/docs/spelling.txt b/docs/spelling.txt
index 5d9075e..7caf9ef 100644
--- a/docs/spelling.txt
+++ b/docs/spelling.txt
@@ -35,7 +35,7 @@
complexity complicated component components composed composite compositing composition
compressed computation computations compute computed computes computing concatenated
concatenates concatenation concave concert condensed condition configuration conical
-connect connected connecting connects consecutive conservative conservatively
+connect connected connecting connects consecutive conservative conservatively consider
consideration considered considers consistent consists const constant constants constrained
constraint
construct constructed constructing construction constructions constructor constructs
@@ -51,8 +51,8 @@
dark darken darkening darker dashed dashes dashing debug decimal decimated declaring
decode decoded decoders decodes decoding
-decomposed decomposes decomposing decrease decreased decreases decreasing decrements default defaults
-defer deferred
+decomposed decomposes decomposing decrease decreased decreases decreasing decrements default
+defaults defer deferred
defers define defined defines defining definition deform deformations degenerate degree
degrees delete deleted deletes deleting dependent depending depends deprecated depth
descent describe described describes describing description descriptions descriptor
@@ -76,7 +76,8 @@
execution exhausted existing expanded expansion expected expecting explicit explicitly exponent
exposed expression extend extended extends extension extensive extent extra extract eye
-face faces factor factored factors fail failing fails failure fake fall false far fast faster fastest
+face faces factor factored factors fail failing fails failure fake fall false far fast faster
+fastest
favor feature features fewer fidelity field fields figure file fill filled filling fills
filter filtered filtering filters final finalized finally find fine finite first fit fits
fitted five fix
@@ -91,7 +92,8 @@
good gradient gradients graphics gray gray-level greater greatest green grid grows guarantee
guaranteed guard
-had hairline hairlines half half-precision halved hand handle handling hands happens hard hardware has hash
+had hairline hairlines half half-precision halved hand handle handling hands happens hard hardware
+has hash
hashes have heap height help helper helpers helpful here hexadecimal hidden hierarchical
high higher highest hint hinted hinting hints hit hitting hold holding holds hole holes
horizontal horizontally host hosts hour how however hue hyperbola hyperbolic
@@ -223,7 +225,8 @@
those though thought thread threads three three-dimensional through thus tight tile
tiles tiling time times
to together toggled too top top-left top-right total totaling touches towards tracked tracks
-trades trading traditional transferred transferring transfers transform transformation transformations
+trades trading traditional transferred transferring transfers transform transformation
+transformations
transformed transforming transforms transition transitions translate translated translates
translating translation translucent transparency transparent travel traveled treat treated
treating treats triangle trigger triggered triggers trivial true try turned turns twice two
diff --git a/docs/undocumented.bmh b/docs/undocumented.bmh
index 2c5d965..68fdc4b 100644
--- a/docs/undocumented.bmh
+++ b/docs/undocumented.bmh
@@ -16,6 +16,7 @@
malloc() calloc() assert() std::move()
C C++ SIZE_MAX C_FILE FILE
CSS HTML
+
affine destructor multitexturing representable subclasses descender descenders grayscale kerning
unhinted
diff --git a/docs/usingBookmaker.bmh b/docs/usingBookmaker.bmh
index 02256a2..a3413b2 100644
--- a/docs/usingBookmaker.bmh
+++ b/docs/usingBookmaker.bmh
@@ -107,25 +107,9 @@
For instance, if the change was made to SkIRect, edit docs/SkIRect_Reference.bmh.
Checking in the edited docs/SkIRect_Reference.bmh will fix the bot.
-If the interface is deprecated, but still present in the interface, mark-up the
-documentation to be deprecated as well.
-
-#Code
-###$
-#Method void someMethodThatIsNowDeprecated()
-#Deprecated
-##
-$$
-
-Use
-
-$Code
-#Deprecated soon
-$$
-
-if the change is soon to be deprecated.
-
-$$$#
+If the interface is deprecated, private, or experimental, documentation is not
+required. Put the word "Deprecated", "Private", or "Experimental"; upper or lower
+case, in a comment just before the symbol to be ignored.
If
#A Housekeeper-Nightly-Bookmaker # https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker ##
diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h
index 1fd19f0..0b7339d 100644
--- a/include/core/SkBitmap.h
+++ b/include/core/SkBitmap.h
@@ -654,7 +654,7 @@
*/
bool installPixels(const SkPixmap& pixmap);
- /** To be deprecated soon.
+ /** Deprecated.
*/
bool installMaskPixels(const SkMask& mask);
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 6b42b42..7161f99 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -162,7 +162,7 @@
*/
SkCanvas(int width, int height, const SkSurfaceProps* props = nullptr);
- /** To be deprecated soon.
+ /** Deprecated.
*/
explicit SkCanvas(sk_sp<SkBaseDevice> device);
@@ -181,11 +181,13 @@
explicit SkCanvas(const SkBitmap& bitmap);
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+ /** Private.
+ */
enum class ColorBehavior {
kLegacy, //!< placeholder
};
- /** For use by Android framework only.
+ /** Private. For use by Android framework only.
@param bitmap specifies a bitmap for the canvas to draw into
@param behavior specializes this constructor; value is unused
@@ -610,7 +612,7 @@
#ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
kDontClipToLayer_Legacy_SaveLayerFlag =
- kDontClipToLayer_PrivateSaveLayerFlag, //!< to be deprecated soon
+ kDontClipToLayer_PrivateSaveLayerFlag, //!< deprecated
#endif
};
@@ -1809,7 +1811,7 @@
const SkPaint* paint = nullptr);
/**
- * Controls anti-aliasing of each edge of images in an image-set.
+ * Experimental. Controls anti-aliasing of each edge of images in an image-set.
*/
enum QuadAAFlags : unsigned {
kLeft_QuadAAFlag = 0b0001,
diff --git a/include/core/SkImage.h b/include/core/SkImage.h
index b76130c..79067af 100644
--- a/include/core/SkImage.h
+++ b/include/core/SkImage.h
@@ -964,17 +964,20 @@
GrBackendTexture* backendTexture,
BackendTextureReleaseProc* backendTextureReleaseProc);
+ /** Deprecated.
+ */
enum LegacyBitmapMode {
kRO_LegacyBitmapMode, //!< returned bitmap is read-only and immutable
};
- /** Creates raster SkBitmap with same pixels as SkImage. If legacyBitmapMode is
+ /** Deprecated.
+ Creates raster SkBitmap with same pixels as SkImage. If legacyBitmapMode is
kRO_LegacyBitmapMode, returned bitmap is read-only and immutable.
Returns true if SkBitmap is stored in bitmap. Returns false and resets bitmap if
SkBitmap write did not succeed.
@param bitmap storage for legacy SkBitmap
- @param legacyBitmapMode to be deprecated
+ @param legacyBitmapMode bitmap is read-only and immutable
@return true if SkBitmap was created
*/
bool asLegacyBitmap(SkBitmap* bitmap,
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 3ae2a66..b43ecc6 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -186,6 +186,7 @@
void reset();
/** \enum SkPaint::Hinting
+ Deprecated.
Hinting adjusts the glyph outlines so that the shape provides a uniform
look at a given point size on font engines that support it. Hinting may have a
muted effect or no effect at all depending on the platform.
@@ -209,13 +210,13 @@
void setHinting(SkFontHinting hintingLevel);
#ifdef SK_SUPPORT_LEGACY_NESTED_HINTINGENUM
- /** Returns level of glyph outline adjustment.
+ /** Deprecated. Returns level of glyph outline adjustment.
@return one of: kNo_Hinting, kSlight_Hinting, kNormal_Hinting, kFull_Hinting
*/
Hinting getHinting() const { return (Hinting)fBitfields.fHinting; }
- /** Sets level of glyph outline adjustment.
+ /** Deprecated. Sets level of glyph outline adjustment.
Does not check for valid values of h.
@param h one of: kNo_Hinting, kSlight_Hinting, kNormal_Hinting, kFull_Hinting
@@ -253,6 +254,8 @@
};
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
+ /** Private.
+ */
enum ReserveFlags {
kUnderlineText_ReserveFlag = 0x08, //!< to be deprecated soon
kStrikeThruText_ReserveFlag = 0x10, //!< to be deprecated soon
diff --git a/include/core/SkPath.h b/include/core/SkPath.h
index 9b1e324..9192419 100644
--- a/include/core/SkPath.h
+++ b/include/core/SkPath.h
@@ -1678,7 +1678,11 @@
*/
bool isValid() const { return this->isValidImpl() && fPathRef->isValid(); }
#else
+ /** Deprecated.
+ */
bool isValid() const { return this->isValidImpl(); }
+ /** Deprecated.
+ */
bool pathRefIsValid() const { return fPathRef->isValid(); }
#endif
diff --git a/include/core/SkPixmap.h b/include/core/SkPixmap.h
index 94c7e98..5c15876 100644
--- a/include/core/SkPixmap.h
+++ b/include/core/SkPixmap.h
@@ -106,7 +106,7 @@
*/
void setColorSpace(sk_sp<SkColorSpace> colorSpace);
- /** To be deprecated soon.
+ /** Deprecated.
*/
bool SK_WARN_UNUSED_RESULT reset(const SkMask& mask);
diff --git a/include/core/SkRect.h b/include/core/SkRect.h
index cf309cd..1748955 100644
--- a/include/core/SkRect.h
+++ b/include/core/SkRect.h
@@ -934,7 +934,8 @@
/** Returns four points in quad that enclose SkRect ordered as: top-left, top-right,
bottom-right, bottom-left.
- Consider adding param to control whether quad is clockwise or counterclockwise.
+
+ TODO: Consider adding parameter to control whether quad is clockwise or counterclockwise.
@param quad storage for corners of SkRect
*/
diff --git a/include/core/SkRegion.h b/include/core/SkRegion.h
index b353484..c5bd825 100644
--- a/include/core/SkRegion.h
+++ b/include/core/SkRegion.h
@@ -453,7 +453,7 @@
bool op(const SkRegion& rgna, const SkRegion& rgnb, Op op);
#ifdef SK_BUILD_FOR_ANDROID
- /** Android framework only.
+ /** Private. Android framework only.
@return string representation of SkRegion
*/
diff --git a/include/core/SkSurface.h b/include/core/SkSurface.h
index 1936f44..0c7d36a 100644
--- a/include/core/SkSurface.h
+++ b/include/core/SkSurface.h
@@ -412,8 +412,7 @@
/** Notifies that SkSurface contents will be changed by code outside of Skia.
Subsequent calls to generationID() return a different value.
- mode is normally passed as kRetain_ContentChangeMode.
- Can we deprecate this?
+ TODO: Can kRetain_ContentChangeMode be deprecated?
@param mode one of: kDiscard_ContentChangeMode, kRetain_ContentChangeMode
*/
@@ -647,7 +646,7 @@
*/
const SkSurfaceProps& props() const { return fProps; }
- /** To be deprecated soon.
+ /** Deprecated.
*/
void prepareForExternalIO();
diff --git a/site/user/api/SkBitmap_Reference.md b/site/user/api/SkBitmap_Reference.md
index fc05ed2..c41a0a7 100644
--- a/site/user/api/SkBitmap_Reference.md
+++ b/site/user/api/SkBitmap_Reference.md
@@ -64,7 +64,7 @@
void (*releaseProc)(void* addr, void* context), void* context);
bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>& info, void* pixels, size_t <a href='#SkBitmap_rowBytes'>rowBytes</a>);
bool <a href='#SkBitmap_installPixels'>installPixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& <a href='SkPixmap_Reference#Pixmap'>pixmap</a>);
- bool <a href='#SkBitmap_installMaskPixels'>installMaskPixels</a>(const <a href='undocumented#SkMask'>SkMask</a>& mask);
+ bool installMaskPixels(const <a href='undocumented#SkMask'>SkMask</a>& mask);
void <a href='#SkBitmap_setPixels'>setPixels</a>(void* pixels);
bool <a href='#SkBitmap_tryAllocPixels'>tryAllocPixels</a>();
void <a href='#SkBitmap_allocPixels'>allocPixels</a>();
@@ -79,7 +79,7 @@
void <a href='#SkBitmap_eraseColor'>eraseColor</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c) const;
void <a href='#SkBitmap_eraseARGB'>eraseARGB</a>(<a href='undocumented#U8CPU'>U8CPU</a> a, <a href='undocumented#U8CPU'>U8CPU</a> r, <a href='undocumented#U8CPU'>U8CPU</a> g, <a href='undocumented#U8CPU'>U8CPU</a> b) const;
void <a href='#SkBitmap_erase'>erase</a>(<a href='SkColor_Reference#SkColor'>SkColor</a> c, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area) const;
- void <a href='#SkBitmap_eraseArea'>eraseArea</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area, <a href='SkColor_Reference#SkColor'>SkColor</a> c) const;
+ void eraseArea(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area, <a href='SkColor_Reference#SkColor'>SkColor</a> c) const;
<a href='SkColor_Reference#SkColor'>SkColor</a> <a href='#SkBitmap_getColor'>getColor</a>(int x, int y) const;
float <a href='#SkBitmap_getAlphaf'>getAlphaf</a>(int x, int y) const;
void* <a href='#SkBitmap_getAddr'>getAddr</a>(int x, int y) const;
@@ -2101,16 +2101,6 @@
<a href='#SkBitmap_allocPixels'>allocPixels</a>
-<a name='SkBitmap_installMaskPixels'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool <a href='#SkBitmap_installMaskPixels'>installMaskPixels</a>(const <a href='undocumented#SkMask'>SkMask</a>& mask)
-</pre>
-
-To be deprecated soon.
-
<a name='Pixels'></a>
<a name='SkBitmap_setPixels'></a>
@@ -2549,16 +2539,6 @@
<a href='#SkBitmap_eraseColor'>eraseColor</a> <a href='#SkBitmap_eraseARGB'>eraseARGB</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawRect'>drawRect</a>
-<a name='SkBitmap_eraseArea'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkBitmap_eraseArea'>eraseArea</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area, <a href='SkColor_Reference#SkColor'>SkColor</a> c) const
-</pre>
-
-Deprecated.
-
<a name='SkBitmap_getColor'></a>
---
diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md
index 5885058..6bf9d4d 100644
--- a/site/user/api/SkCanvas_Reference.md
+++ b/site/user/api/SkCanvas_Reference.md
@@ -19,11 +19,11 @@
explicit <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkBaseDevice'>SkBaseDevice</a>> <a href='undocumented#Device'>device</a>);
explicit <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='SkBitmap_Reference#Bitmap'>bitmap</a>);
- enum class <a href='#SkCanvas_ColorBehavior'>ColorBehavior</a> {
+ enum class ColorBehavior {
kLegacy,
};
- <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, <a href='#SkCanvas_ColorBehavior'>ColorBehavior</a> behavior);
+ <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, ColorBehavior behavior);
<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, const <a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a>& props);
virtual ~<a href='#SkCanvas_empty_constructor'>SkCanvas()</a>;
<a href='undocumented#SkMetaData'>SkMetaData</a>& <a href='#SkCanvas_getMetaData'>getMetaData</a>();
@@ -51,9 +51,9 @@
enum <a href='#SkCanvas_SaveLayerFlagsSet'>SaveLayerFlagsSet</a> {
<a href='#SkCanvas_kPreserveLCDText_SaveLayerFlag'>kPreserveLCDText_SaveLayerFlag</a> = 1 << 1,
<a href='#SkCanvas_kInitWithPrevious_SaveLayerFlag'>kInitWithPrevious_SaveLayerFlag</a> = 1 << 2,
- <a href='#SkCanvas_kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag'>kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag</a> =
+ kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag =
1 << 3,
- <a href='#SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag'>kDontClipToLayer_Legacy_SaveLayerFlag</a> =
+ kDontClipToLayer_Legacy_SaveLayerFlag =
kDontClipToLayer_PrivateSaveLayerFlag,
};
@@ -90,14 +90,14 @@
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias);
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='undocumented#SkClipOp'>SkClipOp</a> op);
void <a href='#SkCanvas_clipRect'>clipRect</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, bool doAntiAlias = false);
- void <a href='#SkCanvas_androidFramework_setDeviceClipRestriction'>androidFramework_setDeviceClipRestriction</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& <a href='SkRect_Reference#Rect'>rect</a>);
+ void androidFramework_setDeviceClipRestriction(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& <a href='SkRect_Reference#Rect'>rect</a>);
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias);
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, <a href='undocumented#SkClipOp'>SkClipOp</a> op);
void <a href='#SkCanvas_clipRRect'>clipRRect</a>(const <a href='SkRRect_Reference#SkRRect'>SkRRect</a>& rrect, bool doAntiAlias = false);
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& <a href='SkPath_Reference#Path'>path</a>, <a href='undocumented#SkClipOp'>SkClipOp</a> op, bool doAntiAlias);
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& <a href='SkPath_Reference#Path'>path</a>, <a href='undocumented#SkClipOp'>SkClipOp</a> op);
void <a href='#SkCanvas_clipPath'>clipPath</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& <a href='SkPath_Reference#Path'>path</a>, bool doAntiAlias = false);
- void <a href='#SkCanvas_setAllowSimplifyClip'>setAllowSimplifyClip</a>(bool allow);
+ void setAllowSimplifyClip(bool allow);
void <a href='#SkCanvas_clipRegion'>clipRegion</a>(const <a href='SkRegion_Reference#SkRegion'>SkRegion</a>& deviceRgn, <a href='undocumented#SkClipOp'>SkClipOp</a> op = <a href='undocumented#SkClipOp'>SkClipOp</a>::<a href='#SkClipOp_kIntersect'>kIntersect</a>);
bool <a href='#SkCanvas_quickReject'>quickReject</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='SkRect_Reference#Rect'>rect</a>) const;
bool <a href='#SkCanvas_quickReject'>quickReject</a>(const <a href='SkPath_Reference#SkPath'>SkPath</a>& <a href='SkPath_Reference#Path'>path</a>) const;
@@ -196,23 +196,23 @@
void <a href='#SkCanvas_drawImageLattice'>drawImageLattice</a>(const <a href='SkImage_Reference#SkImage'>SkImage</a>* <a href='SkImage_Reference#Image'>image</a>, const <a href='#SkCanvas_Lattice'>Lattice</a>& lattice, const <a href='SkRect_Reference#SkRect'>SkRect</a>& dst,
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a> = nullptr);
- enum <a href='#SkCanvas_QuadAAFlags'>QuadAAFlags</a> : unsigned {
- <a href='#SkCanvas_kLeft_QuadAAFlag'>kLeft_QuadAAFlag</a> = 0b0001,
- <a href='#SkCanvas_kTop_QuadAAFlag'>kTop_QuadAAFlag</a> = 0b0010,
- <a href='#SkCanvas_kRight_QuadAAFlag'>kRight_QuadAAFlag</a> = 0b0100,
- <a href='#SkCanvas_kBottom_QuadAAFlag'>kBottom_QuadAAFlag</a> = 0b1000,
- <a href='#SkCanvas_kNone_QuadAAFlags'>kNone_QuadAAFlags</a> = 0b0000,
- <a href='#SkCanvas_kAll_QuadAAFlags'>kAll_QuadAAFlags</a> = 0b1111,
+ enum QuadAAFlags : unsigned {
+ kLeft_QuadAAFlag = 0b0001,
+ kTop_QuadAAFlag = 0b0010,
+ kRight_QuadAAFlag = 0b0100,
+ kBottom_QuadAAFlag = 0b1000,
+ kNone_QuadAAFlags = 0b0000,
+ kAll_QuadAAFlags = 0b1111,
};
- struct <a href='#SkCanvas_ImageSetEntry'>ImageSetEntry</a> {
+ struct ImageSetEntry {
<a href='undocumented#sk_sp'>sk_sp</a><const <a href='SkImage_Reference#SkImage'>SkImage</a>> fImage;
<a href='SkRect_Reference#SkRect'>SkRect</a> fSrcRect;
<a href='SkRect_Reference#SkRect'>SkRect</a> fDstRect;
unsigned fAAFlags;
};
- void <a href='#SkCanvas_experimental_DrawImageSetV0'>experimental_DrawImageSetV0</a>(const <a href='#SkCanvas_ImageSetEntry'>ImageSetEntry</a> imageSet[], int cnt, float <a href='SkColor_Reference#Alpha'>alpha</a>,
+ void experimental_DrawImageSetV0(const ImageSetEntry imageSet[], int cnt, float <a href='SkColor_Reference#Alpha'>alpha</a>,
<a href='undocumented#SkFilterQuality'>SkFilterQuality</a> quality, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode);
void <a href='#SkCanvas_drawText'>drawText</a>(const void* <a href='undocumented#Text'>text</a>, size_t byteLength, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='SkPaint_Reference#Paint'>paint</a>);
@@ -519,16 +519,6 @@
<a href='#SkCanvas_MakeRasterDirect'>MakeRasterDirect</a> <a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a> <a href='undocumented#SkPixelGeometry'>SkPixelGeometry</a> <a href='undocumented#SkCreateColorSpaceXformCanvas'>SkCreateColorSpaceXformCanvas</a>
-<a name='SkCanvas_copy_SkBaseDevice'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-explicit <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkBaseDevice'>SkBaseDevice</a>> <a href='undocumented#Device'>device</a>)
-</pre>
-
-To be deprecated soon.
-
<a name='SkCanvas_copy_const_SkBitmap'></a>
---
@@ -585,57 +575,6 @@
<a href='#SkCanvas_MakeRasterDirect'>MakeRasterDirect</a> <a href='undocumented#SkRasterHandleAllocator'>SkRasterHandleAllocator</a>::<a href='#SkRasterHandleAllocator_MakeCanvas'>MakeCanvas</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_getCanvas'>getCanvas</a> <a href='undocumented#SkCreateColorSpaceXformCanvas'>SkCreateColorSpaceXformCanvas</a>
-<a name='SkCanvas_ColorBehavior'></a>
-
----
-
-Private: Android framework only.
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- enum class <a href='#SkCanvas_ColorBehavior'>ColorBehavior</a> {
- <a href='#SkCanvas_ColorBehavior_kLegacy'>kLegacy</a>,
- };
-</pre>
-
-### Constants
-
-<table style='border-collapse: collapse; width: 62.5em'>
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
-<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_ColorBehavior_kLegacy'><code>SkCanvas::ColorBehavior::kLegacy</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Is a placeholder to allow specialized constructor; has no meaning.
-</td>
- </tr>
-</table>
-
-<a name='SkCanvas_const_SkBitmap'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, <a href='#SkCanvas_ColorBehavior'>ColorBehavior</a> behavior)
-</pre>
-
-For use by Android framework only.
-
-### Parameters
-
-<table> <tr> <td><a name='SkCanvas_const_SkBitmap_bitmap'><code><strong>bitmap</strong></code></a></td>
- <td>specifies a <a href='#SkCanvas_const_SkBitmap_bitmap'>bitmap</a> for the <a href='SkCanvas_Reference#Canvas'>canvas</a> to draw into</td>
- </tr>
- <tr> <td><a name='SkCanvas_const_SkBitmap_behavior'><code><strong>behavior</strong></code></a></td>
- <td>specializes this constructor; value is unused</td>
- </tr>
-</table>
-
-### Return Value
-
-<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a> that can be used to draw into <a href='#SkCanvas_const_SkBitmap_bitmap'>bitmap</a>
-
<a name='SkCanvas_const_SkBitmap_const_SkSurfaceProps'></a>
---
@@ -844,7 +783,7 @@
### See Also
-<a href='#SkCanvas_peekPixels'>peekPixels</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_flush'>flush</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_flush'>flush</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_prepareForExternalIO'>prepareForExternalIO</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_abandonContext'>abandonContext</a>
+<a href='#SkCanvas_peekPixels'>peekPixels</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_flush'>flush</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_flush'>flush</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_abandonContext'>abandonContext</a>
<a name='SkCanvas_getBaseLayerSize'></a>
@@ -1867,9 +1806,9 @@
enum <a href='#SkCanvas_SaveLayerFlagsSet'>SaveLayerFlagsSet</a> {
<a href='#SkCanvas_kPreserveLCDText_SaveLayerFlag'>kPreserveLCDText_SaveLayerFlag</a> = 1 << 1,
<a href='#SkCanvas_kInitWithPrevious_SaveLayerFlag'>kInitWithPrevious_SaveLayerFlag</a> = 1 << 2,
- <a href='#SkCanvas_kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag'>kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag</a> =
+ kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag =
1 << 3,
- <a href='#SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag'>kDontClipToLayer_Legacy_SaveLayerFlag</a> =
+ kDontClipToLayer_Legacy_SaveLayerFlag =
kDontClipToLayer_PrivateSaveLayerFlag,
};
</pre>
@@ -1903,22 +1842,6 @@
Initializes <a href='SkCanvas_Reference#Layer'>Layer</a> with the contents of the previous <a href='SkCanvas_Reference#Layer'>Layer</a>.
</td>
</tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag'><code>SkCanvas::kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Experimental. Do not use.
-
-</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kDontClipToLayer_Legacy_SaveLayerFlag'><code>SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x80000000</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-To be deprecated soon.
-
-</td>
- </tr>
</table>
### Example
@@ -2150,59 +2073,6 @@
<a href='#SkCanvas_save'>save</a> <a href='#SkCanvas_restore'>restore</a> <a href='#SkCanvas_saveLayer'>saveLayer</a> <a href='#SkCanvas_saveLayerPreserveLCDTextRequests'>saveLayerPreserveLCDTextRequests</a> <a href='#SkCanvas_saveLayerAlpha'>saveLayerAlpha</a>
-<a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-<a href='#SkCanvas_SaveLayerRec'>SaveLayerRec</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds, const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>* <a href='SkPaint_Reference#Paint'>paint</a>, const <a href='undocumented#SkImageFilter'>SkImageFilter</a>* backdrop,
- const <a href='SkImage_Reference#SkImage'>SkImage</a>* clipMask, const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* clipMatrix, <a href='#SkCanvas_SaveLayerFlags'>SaveLayerFlags</a> saveLayerFlags)
-</pre>
-
-Experimental. Not ready for general use.
-
-Sets <a href='#SkCanvas_SaveLayerRec_fBounds'>fBounds</a>, <a href='#SkCanvas_SaveLayerRec_fPaint'>fPaint</a>, <a href='#SkCanvas_SaveLayerRec_fBackdrop'>fBackdrop</a>, <a href='#SkCanvas_SaveLayerRec_fClipMask'>fClipMask</a>, <a href='#SkCanvas_SaveLayerRec_fClipMatrix'>fClipMatrix</a>, and <a href='#SkCanvas_SaveLayerRec_fSaveLayerFlags'>fSaveLayerFlags</a>.
-<a href='#SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMatrix'>clipMatrix</a> uses <a href='#Color_Alpha'>Color_Alpha</a> channel of <a href='SkImage_Reference#Image'>image</a>, transformed by <a href='#SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMatrix'>clipMatrix</a>, to clip
-<a href='SkCanvas_Reference#Layer'>Layer</a> when drawn to <a href='SkCanvas_Reference#Canvas'>Canvas</a>.
-
-Implementation is not complete; has no effect if <a href='undocumented#Device'>Device</a> is GPU-backed.
-
-### Parameters
-
-<table> <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_bounds'><code><strong>bounds</strong></code></a></td>
- <td><a href='SkCanvas_Reference#Layer'>Layer</a> dimensions; may be nullptr</td>
- </tr>
- <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_paint'><code><strong>paint</strong></code></a></td>
- <td>graphics state applied to <a href='SkCanvas_Reference#Layer'>Layer</a> when overlaying prior
-<a href='SkCanvas_Reference#Layer'>Layer</a>; may be nullptr
-</td>
- </tr>
- <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_backdrop'><code><strong>backdrop</strong></code></a></td>
- <td>prior <a href='SkCanvas_Reference#Layer'>Layer</a> copied with <a href='#Image_Filter'>Image_Filter</a>;
-may be nullptr
-</td>
- </tr>
- <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMask'><code><strong>clipMask</strong></code></a></td>
- <td>clip applied to <a href='SkCanvas_Reference#Layer'>Layer</a>; may be nullptr</td>
- </tr>
- <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMatrix'><code><strong>clipMatrix</strong></code></a></td>
- <td><a href='SkMatrix_Reference#Matrix'>matrix</a> applied to <a href='#SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_clipMask'>clipMask</a>; may be nullptr to use
-identity <a href='SkMatrix_Reference#Matrix'>matrix </a>
-</td>
- </tr>
- <tr> <td><a name='SkCanvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_const_SkImage_star_const_SkMatrix_star_saveLayerFlags'><code><strong>saveLayerFlags</strong></code></a></td>
- <td><a href='#SkCanvas_SaveLayerRec'>SaveLayerRec</a> options to modify <a href='SkCanvas_Reference#Layer'>Layer</a></td>
- </tr>
-</table>
-
-### Return Value
-
-<a href='#SkCanvas_SaveLayerRec'>SaveLayerRec</a> fully specified
-
-### See Also
-
-<a href='#SkCanvas_save'>save</a> <a href='#SkCanvas_restore'>restore</a> <a href='#SkCanvas_saveLayer'>saveLayer</a> <a href='#SkCanvas_saveLayerPreserveLCDTextRequests'>saveLayerPreserveLCDTextRequests</a> <a href='#SkCanvas_saveLayerAlpha'>saveLayerAlpha</a>
-
<a name='SkCanvas_saveLayer_3'></a>
---
@@ -2676,30 +2546,6 @@
<a href='#SkCanvas_clipRRect'>clipRRect</a> <a href='#SkCanvas_clipPath'>clipPath</a> <a href='#SkCanvas_clipRegion'>clipRegion</a>
-<a name='SkCanvas_androidFramework_setDeviceClipRestriction'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkCanvas_androidFramework_setDeviceClipRestriction'>androidFramework_setDeviceClipRestriction</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& <a href='SkRect_Reference#Rect'>rect</a>)
-</pre>
-
-Sets the maximum clip rectangle, which can be set by <a href='#SkCanvas_clipRect'>clipRect</a>, <a href='#SkCanvas_clipRRect'>clipRRect</a> and
-<a href='#SkCanvas_clipPath'>clipPath</a> and intersect the current clip with the specified <a href='#SkCanvas_androidFramework_setDeviceClipRestriction_rect'>rect</a>.
-The maximum clip affects only future clipping operations; it is not retroactive.
-The clip restriction is not recorded in <a href='SkPicture_Reference#Picture'>pictures</a>.
-
-Pass an empty <a href='#SkCanvas_androidFramework_setDeviceClipRestriction_rect'>rect</a> to disable maximum clip.
-
-Private: This private API is for use by Android framework only.
-
-### Parameters
-
-<table> <tr> <td><a name='SkCanvas_androidFramework_setDeviceClipRestriction_rect'><code><strong>rect</strong></code></a></td>
- <td>maximum allowed clip in <a href='undocumented#Device'>device</a> coordinates</td>
- </tr>
-#
-
<a name='SkCanvas_clipRRect'></a>
---
@@ -2907,18 +2753,6 @@
<a href='#SkCanvas_clipRect'>clipRect</a> <a href='#SkCanvas_clipRRect'>clipRRect</a> <a href='#SkCanvas_clipRegion'>clipRegion</a>
-<a name='SkCanvas_setAllowSimplifyClip'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkCanvas_setAllowSimplifyClip'>setAllowSimplifyClip</a>(bool allow)
-</pre>
-
-Experimental. For testing only.
-
-Set to simplify clip stack using <a href='undocumented#PathOps'>PathOps</a>.
-
<a name='SkCanvas_clipRegion'></a>
---
@@ -3275,7 +3109,7 @@
### See Also
-<a href='#SkCanvas_flush'>flush()</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_prepareForExternalIO'>prepareForExternalIO</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_abandonContext'>abandonContext</a>
+<a href='#SkCanvas_flush'>flush()</a> <a href='undocumented#GrContext'>GrContext</a>::<a href='#GrContext_abandonContext'>abandonContext</a>
<a name='SkCanvas_drawPaint'></a>
@@ -5130,144 +4964,6 @@
<a href='#SkCanvas_drawBitmapLattice'>drawBitmapLattice</a> <a href='#SkCanvas_drawImage'>drawImage</a> <a href='#SkCanvas_drawImageNine'>drawImageNine</a> <a href='#SkCanvas_Lattice'>Lattice</a>
-<a name='SkCanvas_QuadAAFlags'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- enum <a href='#SkCanvas_QuadAAFlags'>QuadAAFlags</a> : unsigned {
- <a href='#SkCanvas_kLeft_QuadAAFlag'>kLeft_QuadAAFlag</a> = 0b0001,
- <a href='#SkCanvas_kTop_QuadAAFlag'>kTop_QuadAAFlag</a> = 0b0010,
- <a href='#SkCanvas_kRight_QuadAAFlag'>kRight_QuadAAFlag</a> = 0b0100,
- <a href='#SkCanvas_kBottom_QuadAAFlag'>kBottom_QuadAAFlag</a> = 0b1000,
- <a href='#SkCanvas_kNone_QuadAAFlags'>kNone_QuadAAFlags</a> = 0b0000,
- <a href='#SkCanvas_kAll_QuadAAFlags'>kAll_QuadAAFlags</a> = 0b1111,
- };
-</pre>
-
-Private: Do not use.
-
-### Constants
-
-<table style='border-collapse: collapse; width: 62.5em'>
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
-<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kLeft_QuadAAFlag'><code>SkCanvas::kLeft_QuadAAFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias the left edge</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kTop_QuadAAFlag'><code>SkCanvas::kTop_QuadAAFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias the top edge</td>
- </tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kRight_QuadAAFlag'><code>SkCanvas::kRight_QuadAAFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias the right edge</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kBottom_QuadAAFlag'><code>SkCanvas::kBottom_QuadAAFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias the bottom edge</td>
- </tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kNone_QuadAAFlags'><code>SkCanvas::kNone_QuadAAFlags</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias none of the edges</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_kAll_QuadAAFlags'><code>SkCanvas::kAll_QuadAAFlags</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>15</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialias all of the edges</td>
- </tr>
-</table>
-
-<a name='SkCanvas_ImageSetEntry'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- struct <a href='#SkCanvas_ImageSetEntry'>ImageSetEntry</a> {
- <a href='undocumented#sk_sp'>sk_sp</a><const <a href='SkImage_Reference#SkImage'>SkImage</a>> <a href='#SkCanvas_ImageSetEntry_fImage'>fImage</a>;
- <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkCanvas_ImageSetEntry_fSrcRect'>fSrcRect</a>;
- <a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkCanvas_ImageSetEntry_fDstRect'>fDstRect</a>;
- unsigned <a href='#SkCanvas_ImageSetEntry_fAAFlags'>fAAFlags</a>;
-
- };
-</pre>
-
-Private: Do not use.<table style='border-collapse: collapse; width: 62.5em'>
-
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Type</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Member</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkImage*</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_ImageSetEntry_fImage'><code>fImage</code></a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-image to draw</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkRect</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_ImageSetEntry_fSrcRect'><code>fSrcRect</code></a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-image src rectangle</td>
- </tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>SkRect</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_ImageSetEntry_fDstRect'><code>fDstRect</code></a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-local space rectangle</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>unsigned</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkCanvas_ImageSetEntry_fAAFlags'><code>fAAFlags</code></a></td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-antialiasing flags</td>
- </tr>
-</table>
-
-<a name='SkCanvas_experimental_DrawImageSetV0'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkCanvas_experimental_DrawImageSetV0'>experimental_DrawImageSetV0</a>(const <a href='#SkCanvas_ImageSetEntry'>ImageSetEntry</a> imageSet[], int cnt, float <a href='SkColor_Reference#Alpha'>alpha</a>,
- <a href='undocumented#SkFilterQuality'>SkFilterQuality</a> quality, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> mode) ;
-</pre>
-
-Private: Do not use.
-
-Draws a set of images. Do not use this method.
-
-### Parameters
-
-<table> <tr> <td><a name='SkCanvas_experimental_DrawImageSetV0_imageSet'><code><strong>imageSet</strong></code></a></td>
- <td>images</td>
- </tr>
- <tr> <td><a name='SkCanvas_experimental_DrawImageSetV0_cnt'><code><strong>cnt</strong></code></a></td>
- <td>number of images</td>
- </tr>
- <tr> <td><a name='SkCanvas_experimental_DrawImageSetV0_alpha'><code><strong>alpha</strong></code></a></td>
- <td><a href='SkColor_Reference#Alpha'>alpha</a></td>
- </tr>
- <tr> <td><a name='SkCanvas_experimental_DrawImageSetV0_quality'><code><strong>quality</strong></code></a></td>
- <td>filter quality</td>
- </tr>
- <tr> <td><a name='SkCanvas_experimental_DrawImageSetV0_mode'><code><strong>mode</strong></code></a></td>
- <td>blend mode</td>
- </tr>
-</table>
-
<a name='Draw_Text'></a>
<a name='SkCanvas_drawText'></a>
diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md
index e47886c..38927de 100644
--- a/site/user/api/SkImage_Reference.md
+++ b/site/user/api/SkImage_Reference.md
@@ -126,7 +126,7 @@
const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* localMatrix = nullptr) const;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkShader'>SkShader</a>> <a href='#SkImage_makeShader'>makeShader</a>(const <a href='SkMatrix_Reference#SkMatrix'>SkMatrix</a>* localMatrix = nullptr) const;
bool <a href='#SkImage_peekPixels'>peekPixels</a>(<a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>* <a href='SkPixmap_Reference#Pixmap'>pixmap</a>) const;
- GrTexture* <a href='#SkImage_getTexture'>getTexture</a>() const;
+ GrTexture* getTexture() const;
bool <a href='#SkImage_isTextureBacked'>isTextureBacked</a>() const;
bool <a href='#SkImage_isValid'>isValid</a>(<a href='undocumented#GrContext'>GrContext</a>* context) const;
<a href='undocumented#GrBackendTexture'>GrBackendTexture</a> <a href='#SkImage_getBackendTexture'>getBackendTexture</a>(bool flushPendingGrContextIO,
@@ -162,12 +162,12 @@
<a href='undocumented#GrBackendTexture'>GrBackendTexture</a>* backendTexture,
<a href='#SkImage_BackendTextureReleaseProc'>BackendTextureReleaseProc</a>* backendTextureReleaseProc);
- enum <a href='#SkImage_LegacyBitmapMode'>LegacyBitmapMode</a> {
- <a href='#SkImage_kRO_LegacyBitmapMode'>kRO_LegacyBitmapMode</a>,
+ enum LegacyBitmapMode {
+ kRO_LegacyBitmapMode,
};
- bool <a href='#SkImage_asLegacyBitmap'>asLegacyBitmap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>,
- <a href='#SkImage_LegacyBitmapMode'>LegacyBitmapMode</a> legacyBitmapMode = <a href='#SkImage_kRO_LegacyBitmapMode'>kRO_LegacyBitmapMode</a>) const;
+ bool asLegacyBitmap(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>,
+ LegacyBitmapMode legacyBitmapMode = kRO_LegacyBitmapMode) const;
bool <a href='#SkImage_isLazyGenerated'>isLazyGenerated</a>() const;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='SkImage_Reference#SkImage'>SkImage</a>> <a href='#SkImage_makeColorSpace'>makeColorSpace</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkColorSpace'>SkColorSpace</a>> target) const;
};
@@ -1834,16 +1834,6 @@
<a href='#SkImage_readPixels'>readPixels</a>
-<a name='SkImage_getTexture'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-GrTexture* <a href='#SkImage_getTexture'>getTexture</a>() const
-</pre>
-
-Deprecated.
-
<a name='SkImage_isTextureBacked'></a>
---
@@ -2547,67 +2537,6 @@
<a href='#SkImage_MakeFromTexture'>MakeFromTexture</a> <a href='#SkImage_makeTextureImage'>makeTextureImage</a>
-<a name='SkImage_LegacyBitmapMode'></a>
-
----
-
-To be deprecated soon.
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- enum <a href='#SkImage_LegacyBitmapMode'>LegacyBitmapMode</a> {
- <a href='#SkImage_kRO_LegacyBitmapMode'>kRO_LegacyBitmapMode</a>,
- };
-</pre>
-
-### Constants
-
-<table style='border-collapse: collapse; width: 62.5em'>
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
-<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkImage_kRO_LegacyBitmapMode'><code>SkImage::kRO_LegacyBitmapMode</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-returned bitmap is read-only and immutable</td>
- </tr>
-</table>
-
-<a name='SkImage_asLegacyBitmap'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool <a href='#SkImage_asLegacyBitmap'>asLegacyBitmap</a>(<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>* <a href='SkBitmap_Reference#Bitmap'>bitmap</a>, <a href='#SkImage_LegacyBitmapMode'>LegacyBitmapMode</a> legacyBitmapMode = <a href='#SkImage_kRO_LegacyBitmapMode'>kRO_LegacyBitmapMode</a>) const
-</pre>
-
-Creates raster <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> with same pixels as <a href='SkImage_Reference#SkImage'>SkImage</a>. If <a href='#SkImage_asLegacyBitmap_legacyBitmapMode'>legacyBitmapMode</a> is
-<a href='#SkImage_kRO_LegacyBitmapMode'>kRO_LegacyBitmapMode</a>, returned <a href='#SkImage_asLegacyBitmap_bitmap'>bitmap</a> is read-only and immutable.
-Returns true if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> is stored in <a href='#SkImage_asLegacyBitmap_bitmap'>bitmap</a>. Returns false and resets <a href='#SkImage_asLegacyBitmap_bitmap'>bitmap</a> if
-<a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> write did not succeed.
-
-### Parameters
-
-<table> <tr> <td><a name='SkImage_asLegacyBitmap_bitmap'><code><strong>bitmap</strong></code></a></td>
- <td>storage for legacy <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a></td>
- </tr>
- <tr> <td><a name='SkImage_asLegacyBitmap_legacyBitmapMode'><code><strong>legacyBitmapMode</strong></code></a></td>
- <td>to be deprecated</td>
- </tr>
-</table>
-
-### Return Value
-
-true if <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a> was created
-
-### Example
-
-<div><fiddle-embed name="78374702fa113076ddc6070053ab5cd4" gpu="true"></fiddle-embed></div>
-
-### See Also
-
-<a href='#SkImage_MakeRasterData'>MakeRasterData</a> <a href='#SkImage_makeRasterImage'>makeRasterImage</a> <a href='#SkImage_makeNonTextureImage'>makeNonTextureImage</a>
-
<a name='SkImage_isLazyGenerated'></a>
---
diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md
index 60247fe..0383d5a 100644
--- a/site/user/api/SkPaint_Reference.md
+++ b/site/user/api/SkPaint_Reference.md
@@ -20,16 +20,16 @@
uint32_t <a href='#SkPaint_getHash'>getHash</a>() const;
void <a href='#SkPaint_reset'>reset()</a>;
- enum <a href='#SkPaint_Hinting'>Hinting</a> : uint8_t {
- <a href='#SkPaint_kNo_Hinting'>kNo_Hinting</a> = 0,
- <a href='#SkPaint_kSlight_Hinting'>kSlight_Hinting</a> = 1,
- <a href='#SkPaint_kNormal_Hinting'>kNormal_Hinting</a> = 2,
- <a href='#SkPaint_kFull_Hinting'>kFull_Hinting</a> = 3,
+ enum Hinting : uint8_t {
+ kNo_Hinting = 0,
+ kSlight_Hinting = 1,
+ kNormal_Hinting = 2,
+ kFull_Hinting = 3,
};
void <a href='#SkPaint_setHinting'>setHinting</a>(<a href='undocumented#SkFontHinting'>SkFontHinting</a> hintingLevel);
- <a href='#SkPaint_Hinting'>Hinting</a> <a href='#SkPaint_getHinting'>getHinting</a>() const;
- void <a href='#SkPaint_setHinting'>setHinting</a>(<a href='#SkPaint_Hinting'>Hinting</a> h);
+ Hinting <a href='#SkPaint_getHinting'>getHinting</a>() const;
+ void <a href='#SkPaint_setHinting'>setHinting</a>(Hinting h);
<a href='undocumented#SkFontHinting'>SkFontHinting</a> <a href='#SkPaint_getHinting'>getHinting</a>() const;
enum <a href='#SkPaint_Flags'>Flags</a> {
@@ -44,9 +44,9 @@
<a href='#SkPaint_kAllFlags'>kAllFlags</a> = 0xFFFF,
};
- enum <a href='#SkPaint_ReserveFlags'>ReserveFlags</a> {
- <a href='#SkPaint_kUnderlineText_ReserveFlag'>kUnderlineText_ReserveFlag</a> = 0x08,
- <a href='#SkPaint_kStrikeThruText_ReserveFlag'>kStrikeThruText_ReserveFlag</a> = 0x10,
+ enum ReserveFlags {
+ kUnderlineText_ReserveFlag = 0x08,
+ kStrikeThruText_ReserveFlag = 0x10,
};
uint32_t <a href='#SkPaint_getFlags'>getFlags</a>() const;
@@ -142,9 +142,9 @@
void <a href='#SkPaint_setImageFilter'>setImageFilter</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkImageFilter'>SkImageFilter</a>> imageFilter);
<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>* <a href='#SkPaint_getDrawLooper'>getDrawLooper</a>() const;
<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> <a href='#SkPaint_refDrawLooper'>refDrawLooper</a>() const;
- <a href='undocumented#SkDrawLooper'>SkDrawLooper</a>* <a href='#SkPaint_getLooper'>getLooper</a>() const;
+ <a href='undocumented#SkDrawLooper'>SkDrawLooper</a>* getLooper() const;
void <a href='#SkPaint_setDrawLooper'>setDrawLooper</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper);
- void <a href='#SkPaint_setLooper'>setLooper</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper);
+ void setLooper(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPaint_getTextSize'>getTextSize</a>() const;
void <a href='#SkPaint_setTextSize'>setTextSize</a>(<a href='undocumented#SkScalar'>SkScalar</a> textSize);
<a href='undocumented#SkScalar'>SkScalar</a> <a href='#SkPaint_getTextScaleX'>getTextScaleX</a>() const;
@@ -191,11 +191,11 @@
<a href='undocumented#SkScalar'>SkScalar</a>* intervals) const;
<a href='SkRect_Reference#SkRect'>SkRect</a> <a href='#SkPaint_getFontBounds'>getFontBounds</a>() const;
bool <a href='#SkPaint_nothingToDraw'>nothingToDraw</a>() const;
- bool <a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a>() const;
- const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastBounds'>computeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const;
- const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastStrokeBounds'>computeFastStrokeBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig,
+ bool canComputeFastBounds() const;
+ const <a href='SkRect_Reference#SkRect'>SkRect</a>& computeFastBounds(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const;
+ const <a href='SkRect_Reference#SkRect'>SkRect</a>& computeFastStrokeBounds(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig,
<a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const;
- const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_doComputeFastBounds'>doComputeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage,
+ const <a href='SkRect_Reference#SkRect'>SkRect</a>& doComputeFastBounds(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage,
<a href='#SkPaint_Style'>Style</a> style) const;
};
</pre>
@@ -250,7 +250,7 @@
| <a href='#Paint_Font_Embedded_Bitmaps'>Font_Embedded_Bitmaps</a> | false |
| <a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a> | false |
| <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a> | false |
-| <a href='#SkPaint_Hinting'>Hinting</a> | <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> |
+| Hinting | <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> |
| <a href='#Image_Filter'>Image_Filter</a> | nullptr |
| <a href='#Paint_LCD_Text'>LCD_Text</a> | false |
| <a href='#Paint_Linear_Text'>Linear_Text</a> | false |
@@ -595,59 +595,6 @@
<a name='Hinting'></a>
-<a name='SkPaint_Hinting'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- enum <a href='#SkPaint_Hinting'>Hinting</a> : uint8_t {
- <a href='#SkPaint_kNo_Hinting'>kNo_Hinting</a> = 0,
- <a href='#SkPaint_kSlight_Hinting'>kSlight_Hinting</a> = 1,
- <a href='#SkPaint_kNormal_Hinting'>kNormal_Hinting</a> = 2,
- <a href='#SkPaint_kFull_Hinting'>kFull_Hinting</a> = 3,
- };
-</pre>
-
-### Constants
-
-<table style='border-collapse: collapse; width: 62.5em'>
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
-<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kNo_Hinting'><code>SkPaint::kNo_Hinting</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kSlight_Hinting'><code>SkPaint::kSlight_Hinting</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kNormal_Hinting'><code>SkPaint::kNormal_Hinting</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kFull_Hinting'><code>SkPaint::kFull_Hinting</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
-</table>
-
<a name='SkPaint_setHinting'></a>
---
@@ -685,32 +632,28 @@
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-<a href='#SkPaint_Hinting'>Hinting</a> <a href='#SkPaint_getHinting'>getHinting</a>() const
+<a href='undocumented#SkFontHinting'>SkFontHinting</a> <a href='#SkPaint_getHinting'>getHinting</a>() const
</pre>
Returns level of <a href='undocumented#Glyph'>glyph</a> outline adjustment.
### Return Value
-one of: <a href='#SkPaint_kNo_Hinting'>kNo_Hinting</a>, <a href='#SkPaint_kSlight_Hinting'>kSlight_Hinting</a>, <a href='#SkPaint_kNormal_Hinting'>kNormal_Hinting</a>, <a href='#SkPaint_kFull_Hinting'>kFull_Hinting</a>
+one of: <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a>, <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kSlight'>kSlight</a>, <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a>,
-<a name='SkPaint_setHinting_2'></a>
+<a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>
----
+### Example
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkPaint_setHinting'>setHinting</a>(<a href='#SkPaint_Hinting'>Hinting</a> h)
-</pre>
+<div><fiddle-embed name="b56b70c7ea2453c41bfa58b626953bed">
-Sets level of <a href='undocumented#Glyph'>glyph</a> outline adjustment.
-Does not check for valid values of <a href='#SkPaint_setHinting_2_h'>h</a>.
+#### Example Output
-### Parameters
+~~~~
+SkFontHinting::kNormal == paint.getHinting()
+~~~~
-<table> <tr> <td><a name='SkPaint_setHinting_2_h'><code><strong>h</strong></code></a></td>
- <td>one of: <a href='#SkPaint_kNo_Hinting'>kNo_Hinting</a>, <a href='#SkPaint_kSlight_Hinting'>kSlight_Hinting</a>, <a href='#SkPaint_kNormal_Hinting'>kNormal_Hinting</a>, <a href='#SkPaint_kFull_Hinting'>kFull_Hinting</a></td>
- </tr>
-</table>
+</fiddle-embed></div>
<a name='Flags'></a>
@@ -802,45 +745,6 @@
<a href='#SkPaint_Flags'>Flags</a> default to all flags clear, disabling the associated feature.
</table>
-<a name='SkPaint_ReserveFlags'></a>
-
----
-
-To be deprecated soon.
-
-Only valid for Android framework.
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
- enum <a href='#SkPaint_ReserveFlags'>ReserveFlags</a> {
- <a href='#SkPaint_kUnderlineText_ReserveFlag'>kUnderlineText_ReserveFlag</a> = 0x08,
- <a href='#SkPaint_kStrikeThruText_ReserveFlag'>kStrikeThruText_ReserveFlag</a> = 0x10,
- };
-</pre>
-
-### Constants
-
-<table style='border-collapse: collapse; width: 62.5em'>
- <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
-<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
-<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kUnderlineText_ReserveFlag'><code>SkPaint::kUnderlineText_ReserveFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0008</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-To be deprecated soon.
-
-</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkPaint_kStrikeThruText_ReserveFlag'><code>SkPaint::kStrikeThruText_ReserveFlag</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0x0010</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-To be deprecated soon.
-
-</td>
- </tr>
-</table>
-
<a name='SkPaint_getFlags'></a>
---
@@ -1127,8 +1031,8 @@
<a name='Linear_Text'></a>
<a href='#Paint_Linear_Text'>Linear_Text</a> selects whether <a href='undocumented#Text'>text</a> is rendered as a <a href='undocumented#Glyph'>Glyph</a> or as a <a href='SkPath_Reference#Path'>Path</a>.
-If <a href='#SkPaint_kLinearText_Flag'>kLinearText_Flag</a> is set, it has the same effect as setting <a href='#SkPaint_Hinting'>Hinting</a> to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a>.
-If <a href='#SkPaint_kLinearText_Flag'>kLinearText_Flag</a> is clear, it is the same as setting <a href='#SkPaint_Hinting'>Hinting</a> to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a>.
+If <a href='#SkPaint_kLinearText_Flag'>kLinearText_Flag</a> is set, it has the same effect as setting Hinting to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a>.
+If <a href='#SkPaint_kLinearText_Flag'>kLinearText_Flag</a> is clear, it is the same as setting Hinting to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a>.
<a name='SkPaint_isLinearText'></a>
@@ -1152,7 +1056,7 @@
### See Also
-<a href='#SkPaint_setLinearText'>setLinearText</a> <a href='#SkPaint_Hinting'>Hinting</a>
+<a href='#SkPaint_setLinearText'>setLinearText</a> Hinting
<a name='SkPaint_setLinearText'></a>
@@ -1181,7 +1085,7 @@
### See Also
-<a href='#SkPaint_isLinearText'>isLinearText</a> <a href='#SkPaint_Hinting'>Hinting</a>
+<a href='#SkPaint_isLinearText'>isLinearText</a> Hinting
<a name='Subpixel_Text'></a>
@@ -1424,9 +1328,9 @@
<a name='Automatic_Hinting'></a>
-If <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>, <a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a>
+If Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>, <a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a>
instructs the <a href='#Font_Manager'>Font_Manager</a> to always hint <a href='undocumented#Glyph'>Glyphs</a>.
-<a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a> has no effect if <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a> or
+<a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a> has no effect if Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a> or
<a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kSlight'>kSlight</a>.
<a href='#Paint_Automatic_Hinting'>Automatic_Hinting</a> only affects platforms that use FreeType as the <a href='#Font_Manager'>Font_Manager</a>.
@@ -1439,7 +1343,7 @@
bool <a href='#SkPaint_isAutohinted'>isAutohinted</a>() const
</pre>
-Returns true if <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or
+Returns true if <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or
<a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>, and if platform uses FreeType as the <a href='undocumented#Font'>font</a> manager.
If true, instructs the <a href='undocumented#Font'>font</a> manager to always hint <a href='undocumented#Glyph'>glyphs</a>.
@@ -1464,7 +1368,7 @@
### See Also
-<a href='#SkPaint_setAutohinted'>setAutohinted</a> <a href='#SkPaint_Hinting'>Hinting</a>
+<a href='#SkPaint_setAutohinted'>setAutohinted</a> Hinting
<a name='SkPaint_setAutohinted'></a>
@@ -1475,9 +1379,9 @@
</pre>
Sets whether to always hint <a href='undocumented#Glyph'>glyphs</a>.
-If <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>
+If <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNormal'>kNormal</a> or <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>
and <a href='#SkPaint_setAutohinted_useAutohinter'>useAutohinter</a> is set, instructs the <a href='undocumented#Font_Manager'>font manager</a> to always hint <a href='undocumented#Glyph'>glyphs</a>.
-<a href='SkPaint_Reference#Automatic_Hinting'>auto-hinting</a> has no effect if <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a> or
+<a href='SkPaint_Reference#Automatic_Hinting'>auto-hinting</a> has no effect if <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kNone'>kNone</a> or
<a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kSlight'>kSlight</a>.
Only affects platforms that use FreeType as the <a href='undocumented#Font_Manager'>font manager</a>.
@@ -1498,7 +1402,7 @@
### See Also
-<a href='#SkPaint_isAutohinted'>isAutohinted</a> <a href='#SkPaint_Hinting'>Hinting</a>
+<a href='#SkPaint_isAutohinted'>isAutohinted</a> Hinting
<a name='Fake_Bold'></a>
@@ -1585,7 +1489,7 @@
<a name='Full_Hinting_Spacing'></a>
-if <a href='#SkPaint_Hinting'>Hinting</a> is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>, <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a> adjusts the character
+if Hinting is set to <a href='undocumented#SkFontHinting'>SkFontHinting</a>::<a href='#SkFontHinting_kFull'>kFull</a>, <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a> adjusts the character
spacing by the difference of the hinted and unhinted <a href='#Left_Side_Bearing'>Left_Side_Bearing</a> and
<a href='#Right_Side_Bearing'>Right_Side_Bearing</a>. <a href='#Paint_Full_Hinting_Spacing'>Full_Hinting_Spacing</a> only applies to platforms that use
FreeType as their <a href='#Font_Engine'>Font_Engine</a>.
@@ -3502,22 +3406,12 @@
</fiddle-embed></div>
-<a name='SkPaint_getLooper'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>* <a href='#SkPaint_getLooper'>getLooper</a>() const
-</pre>
-
-Deprecated.
-
<a name='SkPaint_setDrawLooper'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void setDrawLooper(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper)
+void <a href='#SkPaint_setDrawLooper'>setDrawLooper</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper)
</pre>
Sets <a href='undocumented#SkDrawLooper'>SkDrawLooper</a> to <a href='#SkPaint_setDrawLooper_drawLooper'>drawLooper</a>, decreasing <a href='undocumented#SkRefCnt'>SkRefCnt</a> of the previous
@@ -3537,16 +3431,6 @@
<div><fiddle-embed name="bf10f838b330f0a3a3266d42ea68a638"></fiddle-embed></div>
-<a name='SkPaint_setLooper'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkPaint_setLooper'>setLooper</a>(<a href='undocumented#sk_sp'>sk_sp</a><<a href='undocumented#SkDrawLooper'>SkDrawLooper</a>> drawLooper)
-</pre>
-
-Deprecated.
-
<a name='Text_Size'></a>
---
@@ -4557,7 +4441,7 @@
Returns the union of bounds of all <a href='undocumented#Glyph'>glyphs</a>.
Returned dimensions are computed by <a href='undocumented#Font'>font</a> manager from <a href='undocumented#Font'>font</a> <a href='undocumented#Data'>data</a>,
-ignoring <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::<a href='#SkPaint_Hinting'>Hinting</a>. Includes <a href='undocumented#Font'>font</a> metrics, but not fake bold or <a href='undocumented#SkPathEffect'>SkPathEffect</a>.
+ignoring <a href='SkPaint_Reference#SkPaint'>SkPaint</a>::Hinting. Includes <a href='undocumented#Font'>font</a> metrics, but not fake bold or <a href='undocumented#SkPathEffect'>SkPathEffect</a>.
If <a href='undocumented#Text'>text</a> <a href='undocumented#Size'>size</a> is large, <a href='undocumented#Text'>text</a> scale is one, and <a href='undocumented#Text'>text</a> skew is zero,
returns the bounds as:
@@ -4613,129 +4497,5 @@
</fiddle-embed></div>
-<a name='Fast_Bounds'></a>
-
-Private: To be made private.
-
-<a href='#Paint_Fast_Bounds'>Fast_Bounds</a> functions conservatively outset a drawing bounds by additional area
-<a href='SkPaint_Reference#Paint'>Paint</a> may draw to.
-
-<a name='SkPaint_canComputeFastBounds'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool <a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a>() const
-</pre>
-
-Private: (to be made private)
-
-Returns true if <a href='SkPaint_Reference#Paint'>Paint</a> does not include elements requiring extensive computation
-to compute <a href='undocumented#Device'>Device</a> bounds of drawn geometry. For instance, <a href='SkPaint_Reference#Paint'>Paint</a> with <a href='#Path_Effect'>Path_Effect</a>
-always returns false.
-
-### Return Value
-
-true if <a href='SkPaint_Reference#Paint'>Paint</a> allows for fast computation of bounds
-
-<a name='SkPaint_computeFastBounds'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastBounds'>computeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const
-</pre>
-
-Private: (to be made private)
-
-Only call if <a href='#SkPaint_canComputeFastBounds'>canComputeFastBounds</a> returned true. This takes a
-raw rectangle, the raw bounds of a shape; and adjusts it for stylistic
-effects in the <a href='SkPaint_Reference#Paint'>paint</a>, such as stroking. If needed, it uses the <a href='#SkPaint_computeFastBounds_storage'>storage</a>
-parameter. It returns the adjusted bounds that can then be used
-for <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_quickReject'>quickReject</a> tests.
-
-The returned <a href='SkRect_Reference#Rect'>Rect</a> will either be <a href='#SkPaint_computeFastBounds_orig'>orig</a> or <a href='#SkPaint_computeFastBounds_storage'>storage</a>, thus the caller
-should not rely on <a href='#SkPaint_computeFastBounds_storage'>storage</a> being set to the result, but should always
-use the returned value. It is legal for <a href='#SkPaint_computeFastBounds_orig'>orig</a> and <a href='#SkPaint_computeFastBounds_storage'>storage</a> to be the same
-<a href='SkRect_Reference#Rect'>Rect</a>.
-
-Private: For example:
- if (!path.isInverseFillType() && paint.canComputeFastBounds()) {
- SkRect storage;
- if (canvas->quickReject(paint.computeFastBounds(path.getBounds(), &storage))) {
- return; // do not draw the path
- }
- }
- // draw the path
-
-### Parameters
-
-<table> <tr> <td><a name='SkPaint_computeFastBounds_orig'><code><strong>orig</strong></code></a></td>
- <td>geometry modified by <a href='SkPaint_Reference#Paint'>Paint</a> when drawn</td>
- </tr>
- <tr> <td><a name='SkPaint_computeFastBounds_storage'><code><strong>storage</strong></code></a></td>
- <td>computed bounds of geometry; may not be nullptr</td>
- </tr>
-</table>
-
-### Return Value
-
-fast computed bounds
-
-<a name='SkPaint_computeFastStrokeBounds'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_computeFastStrokeBounds'>computeFastStrokeBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage) const
-</pre>
-
-Private: (to be made private)
-
-### Parameters
-
-<table> <tr> <td><a name='SkPaint_computeFastStrokeBounds_orig'><code><strong>orig</strong></code></a></td>
- <td>geometry modified by <a href='SkPaint_Reference#Paint'>Paint</a> when drawn</td>
- </tr>
- <tr> <td><a name='SkPaint_computeFastStrokeBounds_storage'><code><strong>storage</strong></code></a></td>
- <td>computed bounds of geometry</td>
- </tr>
-</table>
-
-### Return Value
-
-fast computed bounds
-
-<a name='SkPaint_doComputeFastBounds'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='SkRect_Reference#SkRect'>SkRect</a>& <a href='#SkPaint_doComputeFastBounds'>doComputeFastBounds</a>(const <a href='SkRect_Reference#SkRect'>SkRect</a>& orig, <a href='SkRect_Reference#SkRect'>SkRect</a>* storage, <a href='#SkPaint_Style'>Style</a> style) const
-</pre>
-
-Private: (to be made private)
-
-Computes the bounds, overriding the <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#SkPaint_Style'>Style</a>. This can be used to
-account for additional width required by stroking <a href='#SkPaint_doComputeFastBounds_orig'>orig</a>, without
-altering <a href='#SkPaint_Style'>Style</a> set to fill.
-
-### Parameters
-
-<table> <tr> <td><a name='SkPaint_doComputeFastBounds_orig'><code><strong>orig</strong></code></a></td>
- <td>geometry modified by <a href='SkPaint_Reference#Paint'>Paint</a> when drawn</td>
- </tr>
- <tr> <td><a name='SkPaint_doComputeFastBounds_storage'><code><strong>storage</strong></code></a></td>
- <td>computed bounds of geometry</td>
- </tr>
- <tr> <td><a name='SkPaint_doComputeFastBounds_style'><code><strong>style</strong></code></a></td>
- <td>overrides <a href='#SkPaint_Style'>Style</a></td>
- </tr>
-</table>
-
-### Return Value
-
-fast computed bounds
-
<a name='Utility'></a>
diff --git a/site/user/api/SkPath_Reference.md b/site/user/api/SkPath_Reference.md
index c378adc..830f168 100644
--- a/site/user/api/SkPath_Reference.md
+++ b/site/user/api/SkPath_Reference.md
@@ -200,7 +200,7 @@
uint32_t <a href='#SkPath_getGenerationID'>getGenerationID</a>() const;
bool <a href='#SkPath_isValid'>isValid</a>() const;
bool <a href='#SkPath_isValid'>isValid</a>() const;
- bool <a href='#SkPath_pathRefIsValid'>pathRefIsValid</a>() const;
+ bool pathRefIsValid() const;
};
</pre>
@@ -4997,16 +4997,6 @@
true if <a href='SkPath_Reference#SkPath'>SkPath</a> <a href='undocumented#Data'>data</a> is consistent
-<a name='SkPath_pathRefIsValid'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool <a href='#SkPath_pathRefIsValid'>pathRefIsValid</a>() const
-</pre>
-
-To be deprecated soon.
-
<a name='SkPath_Iter'></a>
---
diff --git a/site/user/api/SkPixmap_Reference.md b/site/user/api/SkPixmap_Reference.md
index 17c19f8..d917f3a 100644
--- a/site/user/api/SkPixmap_Reference.md
+++ b/site/user/api/SkPixmap_Reference.md
@@ -273,22 +273,12 @@
<a href='#Color_Space'>Color_Space</a> <a href='SkImageInfo_Reference#SkImageInfo'>SkImageInfo</a>::<a href='#SkImageInfo_makeColorSpace'>makeColorSpace</a>
-<a name='SkPixmap_reset_3'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool reset(const <a href='undocumented#SkMask'>SkMask</a>& mask)
-</pre>
-
-To be deprecated soon.
-
<a name='SkPixmap_extractSubset'></a>
---
<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-bool extractSubset(<a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>* subset, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area) const
+bool <a href='#SkPixmap_extractSubset'>extractSubset</a>(<a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>* subset, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& area) const
</pre>
Sets <a href='#SkPixmap_extractSubset_subset'>subset</a> width, height, <a href='undocumented#Pixel'>pixel</a> address to intersection of <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a> with <a href='#SkPixmap_extractSubset_area'>area</a>,
diff --git a/site/user/api/SkRect_Reference.md b/site/user/api/SkRect_Reference.md
index fced84f..f18f876 100644
--- a/site/user/api/SkRect_Reference.md
+++ b/site/user/api/SkRect_Reference.md
@@ -994,15 +994,13 @@
void <a href='#SkRect_toQuad'>toQuad</a>(<a href='SkPoint_Reference#SkPoint'>SkPoint</a> <a href='SkPath_Reference#Quad'>quad</a>[4]) const
</pre>
-Returns four <a href='SkPoint_Reference#Point'>points</a> in <a href='#SkRect_toQuad_quad'>quad</a> that enclose <a href='SkRect_Reference#Rect'>Rect</a> ordered as: top-left, top-right,
+Returns four <a href='SkPoint_Reference#Point'>points</a> in <a href='#SkRect_toQuad_quad'>quad</a> that enclose <a href='SkRect_Reference#SkRect'>SkRect</a> ordered as: top-left, top-right,
bottom-right, bottom-left.
-Private: Consider adding param to control whether quad is clockwise or counterclockwise.
-
### Parameters
<table> <tr> <td><a name='SkRect_toQuad_quad'><code><strong>quad</strong></code></a></td>
- <td>storage for corners of <a href='SkRect_Reference#Rect'>Rect</a></td>
+ <td>storage for corners of <a href='SkRect_Reference#SkRect'>SkRect</a></td>
</tr>
</table>
diff --git a/site/user/api/SkRegion_Reference.md b/site/user/api/SkRegion_Reference.md
index 12b28c2..f766134 100644
--- a/site/user/api/SkRegion_Reference.md
+++ b/site/user/api/SkRegion_Reference.md
@@ -69,7 +69,7 @@
bool <a href='#SkRegion_op'>op</a>(const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, const <a href='SkRegion_Reference#SkRegion'>SkRegion</a>& rgn, <a href='#SkRegion_Op'>Op</a> op);
bool <a href='#SkRegion_op'>op</a>(const <a href='SkRegion_Reference#SkRegion'>SkRegion</a>& rgn, const <a href='SkIRect_Reference#SkIRect'>SkIRect</a>& <a href='SkRect_Reference#Rect'>rect</a>, <a href='#SkRegion_Op'>Op</a> op);
bool <a href='#SkRegion_op'>op</a>(const <a href='SkRegion_Reference#SkRegion'>SkRegion</a>& rgna, const <a href='SkRegion_Reference#SkRegion'>SkRegion</a>& rgnb, <a href='#SkRegion_Op'>Op</a> op);
- char* <a href='#SkRegion_toString'>toString</a>();
+ char* toString();
class <a href='#SkRegion_Iterator'>Iterator</a> {
public:
@@ -2126,20 +2126,6 @@
<a href='#SkRegion_setRects'>setRects</a> <a href='#SkRegion_Op'>Op</a>
-<a name='SkRegion_toString'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-char* <a href='#SkRegion_toString'>toString</a>()
-</pre>
-
-Private: Android framework only.
-
-### Return Value
-
-<a href='undocumented#String'>string</a> representation of <a href='SkRegion_Reference#Region'>Region</a>
-
<a name='SkRegion_writeToMemory'></a>
---
diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md
index 39d4d74..8870379 100644
--- a/site/user/api/SkSurface_Reference.md
+++ b/site/user/api/SkSurface_Reference.md
@@ -72,11 +72,11 @@
<a href='#SkSurface_kDiscardWrite_BackendHandleAccess'>kDiscardWrite_BackendHandleAccess</a>,
};
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kFlushRead_TextureHandleAccess'>kFlushRead_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kFlushRead_TextureHandleAccess =
<a href='#SkSurface_kFlushRead_BackendHandleAccess'>kFlushRead_BackendHandleAccess</a>;
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kFlushWrite_TextureHandleAccess'>kFlushWrite_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kFlushWrite_TextureHandleAccess =
<a href='#SkSurface_kFlushWrite_BackendHandleAccess'>kFlushWrite_BackendHandleAccess</a>;
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kDiscardWrite_TextureHandleAccess'>kDiscardWrite_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kDiscardWrite_TextureHandleAccess =
<a href='#SkSurface_kDiscardWrite_BackendHandleAccess'>kDiscardWrite_BackendHandleAccess</a>;
<a href='undocumented#GrBackendTexture'>GrBackendTexture</a> <a href='#SkSurface_getBackendTexture'>getBackendTexture</a>(<a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> backendHandleAccess);
<a href='undocumented#GrBackendRenderTarget'>GrBackendRenderTarget</a> <a href='#SkSurface_getBackendRenderTarget'>getBackendRenderTarget</a>(<a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> backendHandleAccess);
@@ -92,7 +92,7 @@
void <a href='#SkSurface_writePixels'>writePixels</a>(const <a href='SkPixmap_Reference#SkPixmap'>SkPixmap</a>& src, int dstX, int dstY);
void <a href='#SkSurface_writePixels'>writePixels</a>(const <a href='SkBitmap_Reference#SkBitmap'>SkBitmap</a>& src, int dstX, int dstY);
const <a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a>& <a href='#SkSurface_props'>props()</a> const;
- void <a href='#SkSurface_prepareForExternalIO'>prepareForExternalIO</a>();
+ void prepareForExternalIO();
void <a href='#SkSurface_flush'>flush()</a>;
<a href='undocumented#GrSemaphoresSubmitted'>GrSemaphoresSubmitted</a> <a href='#SkSurface_flushAndSignalSemaphores'>flushAndSignalSemaphores</a>(int numSemaphores,
<a href='undocumented#GrBackendSemaphore'>GrBackendSemaphore</a> signalSemaphores[]);
@@ -1080,12 +1080,8 @@
void <a href='#SkSurface_notifyContentWillChange'>notifyContentWillChange</a>(<a href='#SkSurface_ContentChangeMode'>ContentChangeMode</a> mode)
</pre>
-Notifies that <a href='SkSurface_Reference#Surface'>Surface</a> contents will be changed by code outside of Skia.
-Subsequent calls to <a href='#SkSurface_generationID'>generationID</a> return a different value.
-
-<a href='#SkSurface_notifyContentWillChange_mode'>mode</a> is normally passed as <a href='#SkSurface_kRetain_ContentChangeMode'>kRetain_ContentChangeMode</a>.
-
-Private: Can we deprecate this?
+Notifies that <a href='SkSurface_Reference#SkSurface'>SkSurface</a> contents will be changed by code outside of Skia.
+Subsequent calls to <a href='#SkSurface_generationID'>generationID</a>() return a different value.
### Parameters
@@ -1113,11 +1109,11 @@
<a href='#SkSurface_kDiscardWrite_BackendHandleAccess'>kDiscardWrite_BackendHandleAccess</a>,
};
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kFlushRead_TextureHandleAccess'>kFlushRead_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kFlushRead_TextureHandleAccess =
<a href='#SkSurface_kFlushRead_BackendHandleAccess'>kFlushRead_BackendHandleAccess</a>;
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kFlushWrite_TextureHandleAccess'>kFlushWrite_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kFlushWrite_TextureHandleAccess =
<a href='#SkSurface_kFlushWrite_BackendHandleAccess'>kFlushWrite_BackendHandleAccess</a>;
- static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> <a href='#SkSurface_kDiscardWrite_TextureHandleAccess'>kDiscardWrite_TextureHandleAccess</a> =
+ static const <a href='#SkSurface_BackendHandleAccess'>BackendHandleAccess</a> kDiscardWrite_TextureHandleAccess =
<a href='#SkSurface_kDiscardWrite_BackendHandleAccess'>kDiscardWrite_BackendHandleAccess</a>;
</pre>
@@ -1148,30 +1144,6 @@
Caller must overwrite the entire back-end object.
</td>
</tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSurface_kFlushRead_TextureHandleAccess'><code>SkSurface::kFlushRead_TextureHandleAccess</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
- <tr style='background-color: #f0f0f0; '>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSurface_kFlushWrite_TextureHandleAccess'><code>SkSurface::kFlushWrite_TextureHandleAccess</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
- <tr>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkSurface_kDiscardWrite_TextureHandleAccess'><code>SkSurface::kDiscardWrite_TextureHandleAccess</code></a></td>
- <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
- <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
-Deprecated.
-
-</td>
- </tr>
</table>
### See Also
@@ -1701,16 +1673,6 @@
<a href='undocumented#SkSurfaceProps'>SkSurfaceProps</a>
-<a name='SkSurface_prepareForExternalIO'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-void <a href='#SkSurface_prepareForExternalIO'>prepareForExternalIO</a>()
-</pre>
-
-To be deprecated soon.
-
<a name='Utility'></a>
<a name='SkSurface_flush'></a>
diff --git a/site/user/api/SkTextBlobBuilder_Reference.md b/site/user/api/SkTextBlobBuilder_Reference.md
index 3de63a6..006630b 100644
--- a/site/user/api/SkTextBlobBuilder_Reference.md
+++ b/site/user/api/SkTextBlobBuilder_Reference.md
@@ -334,35 +334,3 @@
<a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a> <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>
-<a name='SkTextBlobBuilder_allocRun_2'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRun'>allocRun</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> x, <a href='undocumented#SkScalar'>SkScalar</a> y,
- const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
-</pre>
-
-Deprecated.
-
-<a name='SkTextBlobBuilder_allocRunPosH_2'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPosH'>allocRunPosH</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, <a href='undocumented#SkScalar'>SkScalar</a> y,
- const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
-</pre>
-
-Deprecated.
-
-<a name='SkTextBlobBuilder_allocRunPos_2'></a>
-
----
-
-<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
-const <a href='#SkTextBlobBuilder_RunBuffer'>RunBuffer</a>& <a href='#SkTextBlobBuilder_allocRunPos'>allocRunPos</a>(const <a href='SkPaint_Reference#SkPaint'>SkPaint</a>& <a href='undocumented#Font'>font</a>, int count, const <a href='SkRect_Reference#SkRect'>SkRect</a>* bounds = nullptr)
-</pre>
-
-Deprecated.
-
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index b875332..c6fe099 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -1492,8 +1492,8 @@
"stdout": "(SkPaint::kAntiAlias_Flag & paint.getFlags()) != 0\\n"
},
"SkPaint_getFontBounds": {
- "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkPaint::FontMetrics fm;\n paint.getFontMetrics(&fm);\n SkRect fb = paint.getFontBounds();\n SkDebugf(\"metrics bounds = { %g, %g, %g, %g }\\n\", fm.fXMin, fm.fTop, fm.fXMax, fm.fBottom );\n SkDebugf(\"font bounds = { %g, %g, %g, %g }\\n\", fb.fLeft, fb.fTop, fb.fRight, fm.fBottom );\n}",
- "hash": "facaddeec7943bc491988e345e27e65f",
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkFontMetrics fm;\n paint.getFontMetrics(&fm);\n SkRect fb = paint.getFontBounds();\n SkDebugf(\"metrics bounds = { %g, %g, %g, %g }\\n\", fm.fXMin, fm.fTop, fm.fXMax, fm.fBottom );\n SkDebugf(\"font bounds = { %g, %g, %g, %g }\\n\", fb.fLeft, fb.fTop, fb.fRight, fm.fBottom );\n}",
+ "hash": "f29d005a75efd4746c6744004a0cb421",
"file": "SkPaint_Reference",
"name": "SkPaint::getFontBounds",
"stdout": "metrics bounds = { -12.2461, -14.7891, 21.5215, 5.55469 }\\nfont bounds = { -12.2461, -14.7891, 21.5215, 5.55469 }\\n"
@@ -1512,6 +1512,13 @@
"name": "SkPaint::getHash",
"stdout": "paint1 == paint2\\npaint1.getHash() == paint2.getHash()\\n"
},
+ "SkPaint_getHinting": {
+ "code": "void draw(SkCanvas* canvas) {\n SkPaint paint;\n SkDebugf(\"SkFontHinting::kNormal %c= paint.getHinting()\\n\",\n SkFontHinting::kNormal == paint.getHinting() ? '=' : ':');\n}",
+ "hash": "b56b70c7ea2453c41bfa58b626953bed",
+ "file": "SkPaint_Reference",
+ "name": "SkPaint::getHinting",
+ "stdout": "SkFontHinting::kNormal == paint.getHinting()\\n"
+ },
"SkPaint_getImageFilter": {
"code": "#include \"SkBlurImageFilter.h\"\n\nvoid draw(SkCanvas* canvas) {\n SkPaint paint;\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n paint.setImageFilter(SkBlurImageFilter::Make(kOuter_SkBlurStyle, 3, nullptr, nullptr));\n SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n}\n",
"hash": "c11f8eaa1dd149bc18db21e23ce26904",
@@ -6092,14 +6099,6 @@
"file": "SkImage_Reference",
"name": "SkImage::alphaType"
},
- "SkImage_asLegacyBitmap": {
- "code": "void draw(SkCanvas* canvas) {\n SkBitmap bitImage;\n if (image->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {\n canvas->drawBitmap(bitImage, 0, 0);\n }\n GrContext* grContext = canvas->getGrContext();\n if (!grContext) {\n return;\n }\n sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(grContext, backEndTexture,\n kTopLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType,\n kOpaque_SkAlphaType, nullptr));\n canvas->drawImage(textureImage, 45, 45);\n if (textureImage->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {\n canvas->drawBitmap(bitImage, 90, 90);\n }\n}",
- "width": 256,
- "height": 256,
- "hash": "78374702fa113076ddc6070053ab5cd4",
- "file": "SkImage_Reference",
- "name": "SkImage::asLegacyBitmap"
-},
"SkImage_bounds": {
"code": "void draw(SkCanvas* canvas) {\n SkIRect bounds = image->bounds();\n for (int x : { 0, bounds.width() } ) {\n for (int y : { 0, bounds.height() } ) {\n canvas->drawImage(image, x, y);\n }\n }\n}",
"width": 256,
@@ -7036,14 +7035,6 @@
"file": "SkMemoryStream_Reference",
"name": "SkMemoryStream::setMemory"
},
- "SkMemoryStream_setMemoryOwned": {
- "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
- "width": 256,
- "height": 256,
- "hash": "882e8e0103048009a25cfc20400492f7",
- "file": "SkMemoryStream_Reference",
- "name": "SkMemoryStream::setMemoryOwned"
-},
"SkMemoryStream_skipToAlign4": {
"code": "void draw(SkCanvas* canvas) {\n // incomplete\n}",
"width": 256,
diff --git a/site/user/api/usingBookmaker.md b/site/user/api/usingBookmaker.md
index cb8c1f9..5aaa920 100644
--- a/site/user/api/usingBookmaker.md
+++ b/site/user/api/usingBookmaker.md
@@ -85,22 +85,9 @@
For instance, if the change was made to <a href='SkIRect_Reference#SkIRect'>SkIRect</a>, edit docs/SkIRect_Reference.bmh.
Checking in the edited docs/SkIRect_Reference.bmh will fix the bot.
-If the interface is deprecated, but still present in the interface, mark-up the
-documentation to be deprecated as well.
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
-#Method void someMethodThatIsNowDeprecated()
-#Deprecated
-##
-</pre>
-
-Use
-
-<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
-#Deprecated soon
-</pre>
-
-if the change is soon to be deprecated.
+If the interface is deprecated, private, or experimental, documentation is not
+required. Put the word "Deprecated", "Private", or "Experimental"; upper or lower
+case, in a comment just before the symbol to be ignored.
If
<a href='https://status.skia.org/repo/skia?filter=search&search_value=Housekeeper-Nightly-Bookmaker'>Housekeeper-Nightly-Bookmaker</a></a> bot is red, one of several things may have gone wrong:
diff --git a/tools/bookmaker/bmhParser.cpp b/tools/bookmaker/bmhParser.cpp
index a0a46c3..1f99c72 100644
--- a/tools/bookmaker/bmhParser.cpp
+++ b/tools/bookmaker/bmhParser.cpp
@@ -46,14 +46,12 @@
, { "", MarkType::kComment, R_N, E_N, 0 }
, { "Const", MarkType::kConst, R_Y, E_O, M_E | M_CSST }
, { "Define", MarkType::kDefine, R_O, E_Y, M_ST }
-, { "Deprecated", MarkType::kDeprecated, R_Y, E_N, M_CS | M_MDCM | M_E }
, { "Description", MarkType::kDescription, R_Y, E_N, M(Example) | M(NoExample) }
, { "Details", MarkType::kDetails, R_N, E_N, M(Const) }
, { "Duration", MarkType::kDuration, R_N, E_N, M(Example) | M(NoExample) }
, { "Enum", MarkType::kEnum, R_Y, E_O, M_CSST }
, { "EnumClass", MarkType::kEnumClass, R_Y, E_O, M_CSST }
, { "Example", MarkType::kExample, R_O, E_N, M_CSST | M_E | M_MD | M(Const) }
-, { "Experimental", MarkType::kExperimental, R_Y, E_N, M_CS | M_MDCM | M_E }
, { "External", MarkType::kExternal, R_Y, E_N, 0 }
, { "File", MarkType::kFile, R_Y, E_N, M(Topic) }
, { "Filter", MarkType::kFilter, R_N, E_N, M(Subtopic) | M(Code) }
@@ -81,7 +79,6 @@
, { "", MarkType::kPhraseRef, R_N, E_N, 0 }
, { "Platform", MarkType::kPlatform, R_N, E_N, M(Example) | M(NoExample) }
, { "Populate", MarkType::kPopulate, R_N, E_N, M(Code) | M(Method) }
-, { "Private", MarkType::kPrivate, R_N, E_N, M_CSST | M_MDCM | M_E }
, { "Return", MarkType::kReturn, R_Y, E_N, M(Method) }
, { "", MarkType::kRow, R_Y, E_N, M(Table) | M(List) }
, { "SeeAlso", MarkType::kSeeAlso, R_C, E_N, M_CSST | M_E | M_MD | M(Typedef) }
@@ -195,10 +192,7 @@
if (MarkType::kExample == child->fMarkType) {
hasExample = Exemplary::kYes;
}
- hasExcluder |= MarkType::kPrivate == child->fMarkType
- || MarkType::kDeprecated == child->fMarkType
- || MarkType::kExperimental == child->fMarkType
- || MarkType::kNoExample == child->fMarkType;
+ hasExcluder |= MarkType::kNoExample == child->fMarkType;
}
if (kMarkProps[(int) markType].fExemplary != hasExample
&& kMarkProps[(int) markType].fExemplary != Exemplary::kOptional) {
@@ -452,7 +446,6 @@
case MarkType::kFunction:
case MarkType::kLegend:
case MarkType::kList:
- case MarkType::kPrivate:
case MarkType::kTable:
if (hasEnd) {
definition = fParent;
@@ -504,10 +497,8 @@
// always treated as one-liners (can't detect misuse easily)
case MarkType::kAnchor:
case MarkType::kBug:
- case MarkType::kDeprecated:
case MarkType::kDetails:
case MarkType::kDuration:
- case MarkType::kExperimental:
case MarkType::kFilter:
case MarkType::kHeight:
case MarkType::kIllustration:
@@ -542,20 +533,7 @@
this->parseHashAnchor(definition);
} else if (MarkType::kLine == markType) {
this->parseHashLine(definition);
- } else if (IncompleteAllowed(markType)) {
- this->skipSpace();
- fParent->fDeprecated = true;
- fParent->fDetails =
- this->skipExact("soon") ? Definition::Details::kSoonToBe_Deprecated :
- this->skipExact("testing") ? Definition::Details::kTestingOnly_Experiment :
- this->skipExact("do not use") ? Definition::Details::kDoNotUse_Experiment :
- this->skipExact("not ready") ? Definition::Details::kNotReady_Experiment :
- Definition::Details::kNone;
- this->skipSpace();
- if ('\n' != this->peek()) {
- return this->reportError<bool>("unexpected text after #Deprecated");
- }
- }
+ }
break;
case MarkType::kExternal:
(void) this->collectExternals(); // FIXME: detect errors in external defs?
@@ -2126,7 +2104,6 @@
case MarkType::kLegend:
case MarkType::kList:
case MarkType::kNoExample:
- case MarkType::kPrivate:
this->skipNoName();
break;
case MarkType::kFormula:
@@ -2136,10 +2113,8 @@
case MarkType::kAlias:
case MarkType::kAnchor:
case MarkType::kBug: // fixme: expect number
- case MarkType::kDeprecated:
case MarkType::kDetails:
case MarkType::kDuration:
- case MarkType::kExperimental:
case MarkType::kFile:
case MarkType::kFilter:
case MarkType::kHeight:
@@ -2244,11 +2219,7 @@
for (auto& iter : fParent->fChildren) {
if (markType == iter->fMarkType) {
if (iter->fName == numBuilder) {
- if (iter->fDeprecated) {
- iter->fClone = true;
- } else {
- fCloned = true;
- }
+ fCloned = true;
numBuilder = builder + '_' + to_string(number);
goto tryNext;
}
@@ -2301,14 +2272,8 @@
}
if (MarkType::kMethod == markType) {
cloned->fCloned = true;
- if (cloned->fDeprecated) {
- cloned->fClone = true;
- } else {
- fCloned = true;
- }
- } else {
- fCloned = true;
}
+ fCloned = true;
numBuilder = builder + '_' + to_string(number);
} while (++number);
return numBuilder;
diff --git a/tools/bookmaker/bookmaker.h b/tools/bookmaker/bookmaker.h
index 4fb65ca..72e2503 100644
--- a/tools/bookmaker/bookmaker.h
+++ b/tools/bookmaker/bookmaker.h
@@ -109,14 +109,12 @@
kComment,
kConst,
kDefine,
- kDeprecated,
kDescription,
kDetails, // used by #Const to specify #Subtopic details with examples and so on
kDuration,
kEnum,
kEnumClass,
kExample,
- kExperimental,
kExternal,
kFile,
kFilter,
@@ -143,7 +141,6 @@
kPhraseRef,
kPlatform,
kPopulate,
- kPrivate,
kReturn,
kRow,
kSeeAlso,
@@ -164,10 +161,6 @@
kWidth,
};
-static inline bool IncompleteAllowed(MarkType markType) {
- return MarkType::kDeprecated == markType || MarkType::kExperimental == markType;
-}
-
enum {
Last_MarkType = (int) MarkType::kWidth,
};
diff --git a/tools/bookmaker/definition.cpp b/tools/bookmaker/definition.cpp
index e6707f6..8055d69 100644
--- a/tools/bookmaker/definition.cpp
+++ b/tools/bookmaker/definition.cpp
@@ -468,11 +468,8 @@
}
bool expectReturn = this->methodHasReturn(name, &methodParser);
bool foundReturn = false;
- bool foundException = false;
bool foundPopulate = false;
for (auto& child : fChildren) {
- foundException |= MarkType::kDeprecated == child->fMarkType
- || MarkType::kExperimental == child->fMarkType;
foundPopulate |= MarkType::kPopulate == child->fMarkType;
if (MarkType::kReturn != child->fMarkType) {
if (MarkType::kParam == child->fMarkType) {
@@ -488,7 +485,7 @@
}
foundReturn = true;
}
- if (expectReturn && !foundReturn && !foundException && !foundPopulate) {
+ if (expectReturn && !foundReturn && !foundPopulate) {
return methodParser.reportError<bool>("missing #Return marker");
}
const char* paren = methodParser.strnchr('(', methodParser.fEnd);
@@ -522,7 +519,7 @@
foundParam = true;
}
- if (!foundParam && !foundException && !foundPopulate) {
+ if (!foundParam && !foundPopulate) {
return methodParser.reportError<bool>("no #Param found");
}
if (')' == nextEnd[0]) {
@@ -552,12 +549,6 @@
priorDef = child;
continue;
}
- if (MarkType::kDeprecated == child->fMarkType) {
- return true;
- }
- if (MarkType::kExperimental == child->fMarkType) {
- return true;
- }
if (MarkType::kFormula == child->fMarkType) {
continue;
}
@@ -576,9 +567,6 @@
if (MarkType::kPhraseRef == child->fMarkType) {
continue;
}
- if (MarkType::kPrivate == child->fMarkType) {
- return true;
- }
TextParser emptyCheck(fFileName, descStart, child->fStart, child->fLineCount);
if (!emptyCheck.eof() && emptyCheck.skipWhiteSpace()) {
descStart = emptyCheck.fChar;
@@ -933,31 +921,6 @@
return false;
}
-string Definition::incompleteMessage(DetailsType detailsType) const {
- SkASSERT(!IncompleteAllowed(fMarkType));
- auto iter = std::find_if(fChildren.begin(), fChildren.end(),
- [](const Definition* test) { return IncompleteAllowed(test->fMarkType); });
- SkASSERT(fChildren.end() != iter);
- SkASSERT(Details::kNone == (*iter)->fDetails);
- string message = MarkType::kExperimental == (*iter)->fMarkType ?
- "Experimental." : "Deprecated.";
- if (Details::kDoNotUse_Experiment == fDetails) {
- message += " Do not use.";
- } else if (Details::kNotReady_Experiment == fDetails) {
- message += " Not ready for general use.";
- } else if (Details::kSoonToBe_Deprecated == fDetails) {
- message = "To be deprecated soon.";
- } else if (Details::kTestingOnly_Experiment == fDetails) {
- message += " For testing only.";
- }
- if (DetailsType::kPhrase == detailsType) {
- message = message.substr(0, message.length() - 1); // remove trailing period
- std::replace(message.begin(), message.end(), '.', ':');
- std::transform(message.begin(), message.end(), message.begin(), ::tolower);
- }
- return message;
-}
-
bool Definition::isStructOrClass() const {
if (MarkType::kStruct != fMarkType && MarkType::kClass != fMarkType) {
return false;
diff --git a/tools/bookmaker/definition.h b/tools/bookmaker/definition.h
index 632135b..8aace77 100644
--- a/tools/bookmaker/definition.h
+++ b/tools/bookmaker/definition.h
@@ -148,7 +148,6 @@
const Definition* hasChild(MarkType markType) const;
bool hasMatch(string name) const;
Definition* hasParam(string ref);
- string incompleteMessage(DetailsType ) const;
bool isClone() const { return fClone; }
const Definition* iRootParent() const {
@@ -253,12 +252,12 @@
char fMC = '#';
bool fClone = false;
bool fCloned = false;
- bool fDeprecated = false;
bool fOperatorConst = false;
bool fPrivate = false;
Details fDetails = Details::kNone;
bool fMemberStart = false;
bool fAnonymous = false;
+ bool fUndocumented = false; // include symbol comment has deprecated, private, experimental
mutable bool fVisited = false;
};
diff --git a/tools/bookmaker/hackParser.cpp b/tools/bookmaker/hackParser.cpp
index 03823a3..dcd8346 100644
--- a/tools/bookmaker/hackParser.cpp
+++ b/tools/bookmaker/hackParser.cpp
@@ -73,10 +73,7 @@
|| MarkType::kFormula == def->fMarkType
|| MarkType::kAnchor == def->fMarkType
|| MarkType::kList == def->fMarkType
- || MarkType::kTable == def->fMarkType
- || MarkType::kDeprecated == def->fMarkType
- || MarkType::kExperimental == def->fMarkType
- || MarkType::kPrivate == def->fMarkType;
+ || MarkType::kTable == def->fMarkType;
} )) {
continue;
}
diff --git a/tools/bookmaker/includeParser.cpp b/tools/bookmaker/includeParser.cpp
index 523a3e8..a9ec3db 100644
--- a/tools/bookmaker/includeParser.cpp
+++ b/tools/bookmaker/includeParser.cpp
@@ -577,15 +577,15 @@
break;
// these continue a # directive link
case KeyWord::kElif:
- case KeyWord::kElse: {
+ case KeyWord::kElse:
this->popObject(); // pop elif
if (Bracket::kPound != fParent->fBracket) {
return this->reportError<bool>("expected preprocessor directive");
}
this->popBracket(); // pop if
poundDef->fParent = fParent;
- this->addDefinition(poundDef); // push elif back
- } break;
+ fParent = poundDef; // push elif back
+ break;
// this ends a # directive link
case KeyWord::kEndif:
// FIXME : should this be calling popBracket() instead?
@@ -644,6 +644,9 @@
}
}
for (auto& classMapper : fIClassMap) {
+ if (classMapper.second.fUndocumented) {
+ continue;
+ }
string className = classMapper.first;
std::istringstream iss(className);
string classStr;
@@ -769,17 +772,17 @@
def = root->find(withParens, RootDefinition::AllowParens::kNo);
}
if (!def) {
- if (!root->fDeprecated) {
+ if (!token.fUndocumented) {
SkDebugf("method missing from bmh: %s\n", fullName.c_str());
fFailed = true;
}
break;
}
+ if (token.fUndocumented) {
+ break;
+ }
if (def->crossCheck2(token)) {
def->fVisited = true;
- if (token.fDeprecated && !def->fDeprecated) {
- fFailed = !def->reportError<bool>("expect bmh to be marked deprecated");
- }
} else {
SkDebugf("method differs from bmh: %s\n", fullName.c_str());
fFailed = true;
@@ -818,7 +821,7 @@
def = root->find(anonName, RootDefinition::AllowParens::kYes);
}
if (!def) {
- if (!root->fDeprecated) {
+ if (!token.fUndocumented) {
SkDebugf("enum missing from bmh: %s\n", fullName.c_str());
fFailed = true;
}
@@ -841,10 +844,8 @@
}
}
if (!hasCode) {
- if (!root->fDeprecated) {
- SkDebugf("enum code missing from bmh: %s\n", fullName.c_str());
- fFailed = true;
- }
+ SkDebugf("enum code missing from bmh: %s\n", fullName.c_str());
+ fFailed = true;
break;
}
if (!hasPopulate) {
@@ -855,21 +856,22 @@
fFailed = true;
}
}
- for (auto& child : token.fChildren) {
+ for (auto& member : token.fTokens) {
+ if (MarkType::kMember != member.fMarkType) {
+ continue;
+ }
string constName = MarkType::kEnumClass == token.fMarkType ?
fullName : className;
- constName += "::" + child->fName;
+ constName += "::" + member.fName;
def = root->find(constName, RootDefinition::AllowParens::kYes);
if (!def) {
- string innerName = classMapper.first + "::" + child->fName;
+ string innerName = classMapper.first + "::" + member.fName;
def = root->find(innerName, RootDefinition::AllowParens::kYes);
}
if (!def) {
- if (string::npos == child->fName.find("Legacy_")) {
- if (!root->fDeprecated) {
- SkDebugf("const missing from bmh: %s\n", constName.c_str());
- fFailed = true;
- }
+ if (!member.fUndocumented) {
+ SkDebugf("const missing from bmh: %s\n", constName.c_str());
+ fFailed = true;
}
} else {
def->fVisited = true;
@@ -879,7 +881,7 @@
case MarkType::kMember:
if (def) {
def->fVisited = true;
- } else if (!root->fDeprecated) {
+ } else {
SkDebugf("member missing from bmh: %s\n", fullName.c_str());
fFailed = true;
}
@@ -887,7 +889,7 @@
case MarkType::kTypedef:
if (def) {
def->fVisited = true;
- } else if (!root->fDeprecated) {
+ } else {
SkDebugf("typedef missing from bmh: %s\n", fullName.c_str());
fFailed = true;
}
@@ -895,9 +897,11 @@
case MarkType::kConst:
if (def) {
def->fVisited = true;
- } else if (!root->fDeprecated) {
- SkDebugf("const missing from bmh: %s\n", fullName.c_str());
- fFailed = true;
+ } else {
+ if (!token.fUndocumented) {
+ SkDebugf("const missing from bmh: %s\n", fullName.c_str());
+ fFailed = true;
+ }
}
break;
default:
@@ -966,6 +970,11 @@
MarkType::kStruct : MarkType::kClass;
markupDef.fKeyWord = includeDef.fKeyWord;
markupDef.fType = Definition::Type::kMark;
+ auto tokenIter = includeDef.fParent->fTokens.begin();
+ SkASSERT(includeDef.fParentIndex > 0);
+ std::advance(tokenIter, includeDef.fParentIndex - 1);
+ const Definition* priorComment = &*tokenIter;
+ markupDef.fUndocumented = priorComment->fUndocumented;
fParent = &markupDef;
return &markupDef;
}
@@ -1625,6 +1634,9 @@
if (this->isInternalName(token)) {
continue;
}
+ if (token.fUndocumented) {
+ continue;
+ }
if (this->isConstructor(token, skClassName)) {
hasConstructor = true;
continue;
@@ -1783,9 +1795,32 @@
return result;
}
+bool IncludeParser::findCommentAfter(const Definition& includeDef, Definition* markupDef) {
+ const Definition* parent = includeDef.fParent;
+ int index = includeDef.fParentIndex;
+ auto wordIter = parent->fTokens.begin();
+ std::advance(wordIter, index);
+ SkASSERT(&*wordIter == &includeDef);
+ size_t commentLine = 0;
+ do {
+ wordIter = std::next(wordIter);
+ if (parent->fTokens.end() == wordIter) {
+ break;
+ }
+ commentLine = wordIter->fLineCount;
+ } while (Punctuation::kSemicolon != wordIter->fPunctuation);
+ wordIter = std::next(wordIter);
+ if (parent->fTokens.end() != wordIter && Bracket::kSlashSlash == wordIter->fBracket
+ && wordIter->fLineCount == commentLine) {
+ return this->parseComment(wordIter->fFileName, wordIter->fContentStart,
+ wordIter->fContentEnd, wordIter->fLineCount, markupDef, &markupDef->fUndocumented);
+ }
+ return true;
+}
+
bool IncludeParser::findComments(const Definition& includeDef, Definition* markupDef) {
// add comment preceding class, if any
- const Definition* parent = includeDef.fParent;
+ Definition* parent = includeDef.fParent;
int index = includeDef.fParentIndex;
auto wordIter = parent->fTokens.begin();
std::advance(wordIter, index);
@@ -1815,9 +1850,11 @@
}
while (commentIter != wordIter) {
if (!this->parseComment(commentIter->fFileName, commentIter->fContentStart,
- commentIter->fContentEnd, commentIter->fLineCount, markupDef)) {
+ commentIter->fContentEnd, commentIter->fLineCount, markupDef,
+ &markupDef->fUndocumented)) {
return false;
}
+ commentIter->fUndocumented = markupDef->fUndocumented;
commentIter = std::next(commentIter);
}
return true;
@@ -1854,10 +1891,6 @@
}
Definition* IncludeParser::findMethod(const Definition& bmhDef) {
- if (std::any_of(bmhDef.fChildren.begin(), bmhDef.fChildren.end(), [](Definition* def) {
- return MarkType::kDeprecated == def->fMarkType; } )) {
- return nullptr;
- }
auto doubleColon = bmhDef.fName.rfind("::");
if (string::npos == doubleColon) {
const auto& iGlobalMethod = fIFunctionMap.find(bmhDef.fName);
@@ -1874,6 +1907,7 @@
const auto& iMethod = std::find_if(iTokens.begin(), iTokens.end(),
[methodName](Definition& token) {
return MarkType::kMethod == token.fMarkType
+ && !token.fUndocumented
&& (methodName == token.fName
|| methodName == token.fName + "()"); } );
if (iTokens.end() != iMethod) {
@@ -1910,6 +1944,9 @@
if (MarkType::kMethod != token.fMarkType) {
return false;
}
+ if (token.fUndocumented) {
+ return false;
+ }
TextParser parser(&token);
const char* match = parser.strnstr(className.c_str(), parser.fEnd);
if (!match) {
@@ -2027,6 +2064,9 @@
if (!this->findComments(*includeDef, markupDef)) {
return iter->reportError<bool>("find comments failed");
}
+ if (markupDef->fUndocumented) {
+ includeDef->fUndocumented = true;
+ }
// if (1 != includeDef->fChildren.size()) {
// return false; // fix me: SkCanvasClipVisitor isn't correctly parsed
// }
@@ -2107,10 +2147,29 @@
return true;
}
-bool IncludeParser::parseComment(string filename, const char* start, const char* end,
- int lineCount, Definition* markupDef) {
+bool IncludeParser::isUndocumentable(string filename, const char* start, const char* end,
+ int lineCount) {
TextParser parser(filename, start, end, lineCount);
+ const vector<string> skipWords = { "experimental", "deprecated", "private" };
+ const vector<string> butNot = { "to be deprecated", "may be deprecated" };
+ const vector<string> alsoNot = { "todo" };
+ string match = parser.anyWord(skipWords, 0);
+ if ("" != match) {
+ if ("" == parser.anyWord(alsoNot, 0)
+ && ("deprecated" != match || "" == parser.anyWord(butNot, 2))) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool IncludeParser::parseComment(string filename, const char* start, const char* end,
+ int lineCount, Definition* markupDef, bool* undocumentedPtr) {
+ if (this->isUndocumentable(filename, start, end, lineCount)) {
+ *undocumentedPtr = true;
+ }
// parse doxygen if present
+ TextParser parser(filename, start, end, lineCount);
if (parser.startsWith("**")) {
parser.next();
parser.next();
@@ -2160,6 +2219,10 @@
return true;
}
+/*
+ find comment either in front of or after the const def and then extract if the
+ const is undocumented
+ */
bool IncludeParser::parseConst(Definition* child, Definition* markupDef) {
if (!markupDef) {
fGlobals.emplace_back(MarkType::kConst, child->fContentStart, child->fContentEnd,
@@ -2170,7 +2233,14 @@
if (!this->findComments(*child, globalMarkupChild)) {
return false;
}
- fIConstMap[globalUniqueName] = globalMarkupChild;
+ if (!this->findCommentAfter(*child, globalMarkupChild)) {
+ return false;
+ }
+ if (globalMarkupChild->fUndocumented) {
+ child->fUndocumented = true;
+ } else {
+ fIConstMap[globalUniqueName] = globalMarkupChild;
+ }
return true;
}
markupDef->fTokens.emplace_back(MarkType::kConst, child->fContentStart, child->fContentEnd,
@@ -2180,7 +2250,17 @@
markupChild->fTerminator = markupChild->fContentEnd;
IClassDefinition& classDef = fIClassMap[markupDef->fName];
classDef.fConsts[child->fName] = markupChild;
- fIConstMap[child->fName] = markupChild;
+ if (!this->findComments(*child, markupChild)) {
+ return false;
+ }
+ if (!this->findCommentAfter(*child, markupChild)) {
+ return false;
+ }
+ if (markupChild->fUndocumented) {
+ child->fUndocumented = true;
+ } else {
+ fIConstMap[child->fName] = markupChild;
+ }
return true;
}
@@ -2245,7 +2325,9 @@
if (!this->findComments(*child, globalMarkupChild)) {
return false;
}
- fIDefineMap[globalUniqueName] = globalMarkupChild;
+ if (!globalMarkupChild->fUndocumented) {
+ fIDefineMap[globalUniqueName] = globalMarkupChild;
+ }
for (Param param : params) {
globalMarkupChild->fTokens.emplace_back(MarkType::kParam, param.fStart, param.fEnd,
child->fLineCount, globalMarkupChild, '\0');
@@ -2264,28 +2346,29 @@
if (!this->findComments(*child, markupChild)) {
return false;
}
- classDef.fDefines[nameStr] = markupChild;
- fIDefineMap[nameStr] = markupChild;
+ if (markupChild->fUndocumented) {
+ child->fUndocumented = true;
+ } else {
+ classDef.fDefines[nameStr] = markupChild;
+ fIDefineMap[nameStr] = markupChild;
+ }
return true;
}
bool IncludeParser::parseEnum(Definition* child, Definition* markupDef) {
- TextParser parser(child);
- parser.skipToEndBracket('{');
- if (parser.eof()) {
+ if (!child->fTokens.size()) {
return true; // if enum is a forward declaration, do nothing
}
- parser.next();
- string nameStr;
- if (child->fTokens.size() > 0) {
- auto token = child->fTokens.begin();
- if (Definition::Type::kKeyWord == token->fType && KeyWord::kClass == token->fKeyWord) {
- token = token->fTokens.begin();
- }
- if (Definition::Type::kWord == token->fType) {
- nameStr += string(token->fStart, token->fContentEnd - token->fStart);
- }
+ bool isEnumClass = false;
+ Definition* parent = child;
+ auto token = parent->fTokens.begin();
+ if (Definition::Type::kKeyWord == token->fType && KeyWord::kClass == token->fKeyWord) {
+ isEnumClass = true;
+ parent = &*token;
+ token = parent->fTokens.begin();
}
+ SkASSERT(Definition::Type::kWord == token->fType);
+ string nameStr = string(token->fStart, token->fContentEnd - token->fStart);
Definition* markupChild;
if (!markupDef) {
fGlobals.emplace_back(MarkType::kEnum, child->fContentStart, child->fContentEnd,
@@ -2294,7 +2377,9 @@
string globalUniqueName = this->uniqueName(fIEnumMap, nameStr);
markupChild->fName = globalUniqueName;
markupChild->fTerminator = child->fContentEnd;
- fIEnumMap[globalUniqueName] = markupChild;
+ if (!markupChild->fUndocumented) {
+ fIEnumMap[globalUniqueName] = markupChild;
+ }
} else {
markupDef->fTokens.emplace_back(MarkType::kEnum, child->fContentStart, child->fContentEnd,
child->fLineCount, markupDef, '\0');
@@ -2302,116 +2387,21 @@
}
SkASSERT(KeyWord::kNone == markupChild->fKeyWord);
markupChild->fKeyWord = KeyWord::kEnum;
- TextParser enumName(child);
- enumName.skipExact("enum ");
- enumName.skipWhiteSpace();
- if (enumName.skipExact("class ")) {
- enumName.skipWhiteSpace();
+ if (isEnumClass) {
markupChild->fMarkType = MarkType::kEnumClass;
}
- const char* nameStart = enumName.fChar;
- enumName.skipToSpace();
if (markupDef) {
- markupChild->fName = markupDef->fName + "::" +
- string(nameStart, (size_t) (enumName.fChar - nameStart));
+ markupChild->fName = markupDef->fName + "::" + nameStr;
}
if (!this->findComments(*child, markupChild)) {
return false;
}
- const char* dataEnd;
- do {
- parser.skipWhiteSpace();
- if ('}' == parser.peek()) {
- break;
- }
- Definition* comment = nullptr;
- // note that comment, if any, can be before or after (on the same line, though) as member
- if ('#' == parser.peek()) {
- // fixme: handle preprecessor, but just skip it for now
- parser.skipToLineStart();
- }
- while (parser.startsWith("/*") || parser.startsWith("//")) {
- parser.next();
- const char* start = parser.fChar;
- const char* end;
- if ('*' == parser.peek()) {
- end = parser.strnstr("*/", parser.fEnd);
- parser.fChar = end;
- parser.next();
- parser.next();
- } else {
- end = parser.trimmedLineEnd();
- parser.skipToLineStart();
- }
- markupChild->fTokens.emplace_back(MarkType::kComment, start, end, parser.fLineCount,
- markupChild, '\0');
- comment = &markupChild->fTokens.back();
- comment->fTerminator = end;
- if (!this->parseComment(parser.fFileName, start, end, parser.fLineCount, comment)) {
- return false;
- }
- parser.skipWhiteSpace();
- }
- parser.skipWhiteSpace();
- const char* memberStart = parser.fChar;
- if ('}' == memberStart[0]) {
- break;
- }
- // if there's comment on same the line as member def, output first as if it was before
-
- parser.skipToNonName();
- string memberName(memberStart, parser.fChar);
- if (parser.eof() || !parser.skipWhiteSpace()) {
- return parser.reportError<bool>("enum member must end with comma 1");
- }
- const char* dataStart = parser.fChar;
- if ('=' == parser.peek()) {
- parser.skipToEndBracket(',');
- }
- if (!parser.eof() && '#' == parser.peek()) {
- // fixme: handle preprecessor, but just skip it for now
- continue;
- }
- if (parser.eof() || ',' != parser.peek()) {
- return parser.reportError<bool>("enum member must end with comma 2");
- }
- dataEnd = parser.fChar;
- const char* start = parser.anyOf("/\n");
- SkASSERT(start);
- parser.skipTo(start);
- if ('/' == parser.next()) {
- char slashStar = parser.next();
- if ('/' == slashStar || '*' == slashStar) {
- TextParserSave save(&parser);
- char doxCheck = parser.next();
- if ((slashStar != doxCheck && '!' != doxCheck) || '<' != parser.next()) {
- save.restore();
- }
- }
- parser.skipWhiteSpace();
- const char* commentStart = parser.fChar;
- if ('/' == slashStar) {
- parser.skipToEndBracket('\n');
- } else {
- parser.skipToEndBracket("*/");
- }
- SkASSERT(!parser.eof());
- const char* commentEnd = parser.fChar;
- markupChild->fTokens.emplace_back(MarkType::kComment, commentStart, commentEnd,
- parser.fLineCount, markupChild, '\0');
- comment = &markupChild->fTokens.back();
- comment->fTerminator = commentEnd;
- }
- markupChild->fTokens.emplace_back(MarkType::kMember, dataStart, dataEnd, parser.fLineCount,
- markupChild, '\0');
- Definition* member = &markupChild->fTokens.back();
- member->fName = memberName;
- if (comment) {
- member->fChildren.push_back(comment);
- comment->fPrivate = true;
- }
- markupChild->fChildren.push_back(member);
- } while (true);
+ if (markupChild->fUndocumented) {
+ child->fUndocumented = true;
+ }
+ if (!this->parseEnumConst(token, parent->fTokens.end(), markupChild)) {
+ return false;
+ }
for (auto outsideMember : child->fChildren) {
if (Definition::Type::kBracket == outsideMember->fType) {
continue;
@@ -2435,11 +2425,111 @@
string fullName = markupChild->fName;
markupChild->fName = uniqueName;
classDef.fEnums[uniqueName] = markupChild;
- fIEnumMap[fullName] = markupChild;
+ if (!markupChild->fUndocumented) {
+ fIEnumMap[fullName] = markupChild;
+ }
}
return true;
}
+bool IncludeParser::parseOneEnumConst(list<Definition>& constList,
+ Definition* markupChild, bool skipWord) {
+ auto memberIter = constList.begin();
+ const auto memberIterEnd = constList.end();
+ if (skipWord) {
+ SkASSERT(Definition::Type::kWord == memberIter->fType);
+ memberIter = std::next(memberIter);
+ SkASSERT(memberIterEnd != memberIter);
+ }
+ // token array has parse atoms; child array has comments
+ bool undocumented = false;
+ while (memberIterEnd != memberIter) {
+ while (Bracket::kSlashStar == memberIter->fBracket) {
+ if (!this->parseComment(memberIter->fFileName, memberIter->fContentStart,
+ memberIter->fContentEnd, memberIter->fLineCount, markupChild, &undocumented)) {
+ return false;
+ }
+ memberIter = std::next(memberIter);
+ if (memberIterEnd == memberIter) {
+ return false;
+ }
+ }
+ if (Bracket::kPound == memberIter->fBracket) {
+ KeyWord keyWord = memberIter->fKeyWord;
+ bool sawIf = KeyWord::kIfdef == keyWord || KeyWord::kIf == keyWord
+ || KeyWord::kElif == keyWord;
+ if (sawIf || KeyWord::kElse == keyWord) {
+ if (!parseOneEnumConst(memberIter->fTokens, markupChild, sawIf)) {
+ return false;
+ }
+ } else {
+ SkASSERT(KeyWord::kEndif == keyWord || KeyWord::kError == keyWord);
+ }
+ memberIter = std::next(memberIter);
+ if (memberIterEnd == memberIter) {
+ break;
+ }
+ continue;
+ }
+ while (Definition::Type::kWord != memberIter->fType) {
+ memberIter = std::next(memberIter);
+ if (memberIterEnd == memberIter) {
+ return false;
+ }
+ }
+ auto memberStart = memberIter;
+ Definition* memberEnd = nullptr;
+ const char* last;
+ do {
+ last = memberIter->fContentEnd;
+ memberIter = std::next(memberIter);
+ if (memberIterEnd == memberIter) {
+ break;
+ }
+ memberEnd = &*memberIter;
+ } while (string::npos == string(last, memberIter->fContentStart).find(','));
+ if (!memberEnd) {
+ return false;
+ }
+ if (memberIterEnd != memberIter && Bracket::kSlashSlash == memberIter->fBracket) {
+ if (!this->parseComment(memberIter->fFileName, memberIter->fContentStart,
+ memberIter->fContentEnd, memberIter->fLineCount, markupChild, &undocumented)) {
+ return false;
+ }
+ memberIter = std::next(memberIter);
+ }
+ markupChild->fTokens.emplace_back(MarkType::kMember, memberStart->fContentStart,
+ memberEnd->fContentEnd, memberStart->fLineCount, markupChild, '\0');
+ Definition* markupMember = &markupChild->fTokens.back();
+ string name = string(memberStart->fContentStart, memberStart->length());
+ memberStart->fName = name;
+ markupMember->fName = name;
+ memberStart->fUndocumented = undocumented;
+ markupMember->fUndocumented = undocumented;
+ memberStart->fMarkType = MarkType::kMember;
+ undocumented = false;
+ }
+ return true;
+}
+
+bool IncludeParser::parseEnumConst(list<Definition>::iterator& tokenIter,
+ const list<Definition>::iterator& tokenEnd, Definition* markupChild) {
+ SkASSERT(Definition::Type::kWord == tokenIter->fType); // should be enum name
+ tokenIter = std::next(tokenIter);
+ SkASSERT(tokenEnd != tokenIter);
+ if (Definition::Type::kKeyWord == tokenIter->fType) {
+ SkASSERT((unsigned) tokenIter->fKeyWord < SK_ARRAY_COUNT(kKeyWords));
+ SkASSERT(KeyProperty::kNumber == kKeyWords[(int) tokenIter->fKeyWord].fProperty);
+ tokenIter = std::next(tokenIter);
+ SkASSERT(tokenEnd != tokenIter);
+ }
+ SkASSERT(Punctuation::kLeftBrace == tokenIter->fPunctuation);
+ tokenIter = std::next(tokenIter);
+ SkASSERT(tokenEnd != tokenIter);
+ SkASSERT(Bracket::kBrace == tokenIter->fBracket);
+ return parseOneEnumConst(tokenIter->fTokens, markupChild, false);
+}
+
bool IncludeParser::parseInclude(string name) {
fParent = &fIncludeMap[name];
fParent->fName = name;
@@ -2473,7 +2563,9 @@
string uniqueName = this->uniqueName(classDef.fMethods, nameStr);
markupChild->fName = uniqueName;
markupChild->fTerminator = markupChild->fContentEnd;
- classDef.fMembers[uniqueName] = markupChild;
+ if (!markupChild->fUndocumented) {
+ classDef.fMembers[uniqueName] = markupChild;
+ }
if (child->fParentIndex >= 2) {
auto comment = child->fParent->fTokens.begin();
std::advance(comment, child->fParentIndex - 2);
@@ -2633,7 +2725,11 @@
if (!this->findComments(*child, globalMarkupChild)) {
return false;
}
- fIFunctionMap[globalUniqueName] = globalMarkupChild;
+ if (globalMarkupChild->fUndocumented) {
+ child->fUndocumented = true;
+ } else {
+ fIFunctionMap[globalUniqueName] = globalMarkupChild;
+ }
return true;
}
markupDef->fTokens.emplace_back(MarkType::kMethod, start, end, tokenIter->fLineCount,
@@ -2649,7 +2745,11 @@
if (!this->findComments(*child, markupChild)) {
return false;
}
- classDef.fMethods[uniqueName] = markupChild;
+ if (markupChild->fUndocumented) {
+ tokenIter->fUndocumented = true;
+ } else {
+ classDef.fMethods[uniqueName] = markupChild;
+ }
}
return true;
}
@@ -2780,6 +2880,10 @@
// ignored for now
break;
case KeyWord::kElse:
+ if (!this->parseObjects(child, markupDef)) {
+ return false;
+ }
+ break;
case KeyWord::kElif:
// todo: handle these
break;
@@ -2841,7 +2945,11 @@
if (!this->findComments(*child, globalMarkupChild)) {
return false;
}
- fITypedefMap[globalUniqueName] = globalMarkupChild;
+ if (globalMarkupChild->fUndocumented) {
+ child->fUndocumented = true;
+ } else {
+ fITypedefMap[globalUniqueName] = globalMarkupChild;
+ }
child->fName = nameStr;
return true;
}
diff --git a/tools/bookmaker/includeParser.h b/tools/bookmaker/includeParser.h
index cd01687..f132525 100644
--- a/tools/bookmaker/includeParser.h
+++ b/tools/bookmaker/includeParser.h
@@ -163,6 +163,7 @@
string elidedCodeBlock(const Definition& );
string filteredBlock(string inContents, string filterContents);
+ bool findCommentAfter(const Definition& includeDef, Definition* markupDef);
bool findComments(const Definition& includeDef, Definition* markupDef);
Definition* findIncludeObject(const Definition& includeDef, MarkType markType,
string typeName);
@@ -175,14 +176,17 @@
bool isInternalName(const Definition& token);
bool isMember(const Definition& token) const;
bool isOperator(const Definition& token);
+ bool isUndocumentable(string filename, const char* start, const char* end, int lineCount);
Definition* parentBracket(Definition* parent) const;
bool parseChar();
bool parseComment(string filename, const char* start, const char* end, int lineCount,
- Definition* markupDef);
+ Definition* markupDef, bool* undocumentedPtr);
bool parseClass(Definition* def, IsStruct);
bool parseConst(Definition* child, Definition* markupDef);
bool parseDefine(Definition* child, Definition* markupDef);
bool parseEnum(Definition* child, Definition* markupDef);
+ bool parseEnumConst(list<Definition>::iterator& tokenIter,
+ const list<Definition>::iterator& tokenEnd, Definition* markupChild);
bool parseFromFile(const char* path) override {
this->reset();
@@ -198,6 +202,7 @@
bool parseMethod(Definition* child, Definition* markupDef);
bool parseObject(Definition* child, Definition* markupDef);
bool parseObjects(Definition* parent, Definition* markupDef);
+ bool parseOneEnumConst(list<Definition>& constList, Definition* markupChild, bool skipWord);
bool parseTemplate(Definition* child, Definition* markupDef);
bool parseTypedef(Definition* child, Definition* markupDef);
bool parseUsing();
@@ -215,6 +220,9 @@
}
void pushBracket(Bracket bracket) {
+ if ("#else" == string(fChar, 5)) {
+ SkDebugf("");
+ }
this->setBracketShortCuts(bracket);
fParent->fTokens.emplace_back(bracket, fChar, fLineCount, fParent, '\0');
Definition* container = &fParent->fTokens.back();
diff --git a/tools/bookmaker/includeWriter.cpp b/tools/bookmaker/includeWriter.cpp
index 77851f6..379c4eb 100644
--- a/tools/bookmaker/includeWriter.cpp
+++ b/tools/bookmaker/includeWriter.cpp
@@ -20,15 +20,6 @@
oneMember = true;
int lineLen = 0;
for (auto& itemChild : item->fChildren) {
- if (MarkType::kExperimental == itemChild->fMarkType) {
- lineLen = sizeof("experimental") - 1;
- break;
- }
- if (MarkType::kDeprecated == itemChild->fMarkType) {
- lineLen = sizeof("deprecated") - 1;
- // todo: look for 'soon'
- break;
- }
if (MarkType::kLine == itemChild->fMarkType) {
lineLen = itemChild->length();
break;
@@ -100,15 +91,6 @@
int commentLen = (int) (def->fContentEnd - commentStart);
bool breakOut = false;
SkDEBUGCODE(bool wroteCode = false);
- if (def->fDeprecated) {
- if (fReturnOnWrite) {
- return true;
- }
- string message = def->incompleteMessage(Definition::DetailsType::kSentence);
- this->writeString(message);
- this->lfcr();
- wroteSomething = true;
- }
const Definition* lastDescription = def;
for (auto prop : def->fChildren) {
fLastDescription = lastDescription;
@@ -169,61 +151,6 @@
this->lfcr();
wroteSomething = true;
}
- case MarkType::kDeprecated:
- case MarkType::kPrivate:
- commentLen = (int) (prop->fStart - commentStart);
- if (commentLen > 0) {
- SkASSERT(commentLen < 1000);
- if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
- if (fReturnOnWrite) {
- return true;
- }
- this->lfcr();
- wroteSomething = true;
- }
- }
- commentStart = prop->fContentStart;
- if (MarkType::kPrivate != prop->fMarkType && ' ' < commentStart[0]) {
- commentStart = strchr(commentStart, '\n');
- }
- if (MarkType::kBug == prop->fMarkType) {
- commentStart = prop->fContentEnd;
- }
- commentLen = (int) (prop->fContentEnd - commentStart);
- if (commentLen > 0) {
- wroteSomething |= this->writeBlockIndent(commentLen, commentStart, false);
- if (wroteSomething && fReturnOnWrite) {
- return true;
- }
- const char* end = commentStart + commentLen;
- while (end > commentStart && ' ' == end[-1]) {
- --end;
- }
- if (end > commentStart && '\n' == end[-1]) {
- this->lfcr();
- }
- }
- commentStart = prop->fTerminator;
- commentLen = (int) (def->fContentEnd - commentStart);
- break;
- case MarkType::kExperimental:
- commentStart = prop->fContentStart;
- if (' ' < commentStart[0]) {
- commentStart = strchr(commentStart, '\n');
- }
- commentLen = (int) (prop->fContentEnd - commentStart);
- if (commentLen > 0) {
- if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, Phrase::kNo)) {
- if (fReturnOnWrite) {
- return true;
- }
- this->lfcr();
- wroteSomething = true;
- }
- }
- commentStart = prop->fTerminator;
- commentLen = (int) (def->fContentEnd - commentStart);
- break;
case MarkType::kFormula: {
commentLen = prop->fStart - commentStart;
if (commentLen > 0) {
@@ -382,7 +309,7 @@
if (!breakOut) {
commentLen = (int) (def->fContentEnd - commentStart);
}
- SkASSERT(wroteCode || (commentLen > 0 && commentLen < 1500) || def->fDeprecated);
+ SkASSERT(wroteCode || (commentLen > 0 && commentLen < 1500));
if (commentLen > 0) {
if (Wrote::kNone != this->rewriteBlock(commentLen, commentStart, phrase)) {
if (fReturnOnWrite) {
@@ -543,9 +470,7 @@
const Definition* IncludeWriter::enumMemberForComment(const Definition* currentEnumItem) const {
for (auto constItem : currentEnumItem->fChildren) {
- if (MarkType::kLine == constItem->fMarkType
- || MarkType::kExperimental == constItem->fMarkType
- || MarkType::kDeprecated == constItem->fMarkType) {
+ if (MarkType::kLine == constItem->fMarkType) {
return constItem;
}
}
@@ -562,9 +487,6 @@
shortComment = string(constItem->fContentStart, constItem->length());
break;
}
- if (IncompleteAllowed(constItem->fMarkType)) {
- shortComment = constItem->fParent->incompleteMessage(Definition::DetailsType::kPhrase);
- }
}
if (!shortComment.length()) {
currentEnumItem->reportError<void>("missing #Line or #Deprecated or #Experimental");
@@ -675,7 +597,7 @@
// put ones that fit on same line, ones that are too big wrap
void IncludeWriter::enumMembersOut(Definition& child) {
ItemState state = ItemState::kNone;
- const Definition* currentEnumItem;
+ const Definition* currentEnumItem = nullptr;
LastItem last = { nullptr, nullptr };
auto brace = child.fChildren[0];
if (KeyWord::kClass == brace->fKeyWord) {
@@ -704,14 +626,14 @@
continue;
}
}
- if (ItemState::kNone != state) {
+ if (ItemState::kNone != state && currentEnumItem) {
this->enumMemberOut(currentEnumItem, child, item, preprocessor);
item.reset();
this->setStartBack(token.fContentStart, &token);
state = ItemState::kNone;
last.fStart = nullptr;
}
- SkASSERT(ItemState::kNone == state);
+ SkASSERT(ItemState::kNone == state || !currentEnumItem);
if (!last.fStart) {
last.fStart = fStart;
}
@@ -721,7 +643,7 @@
if (ItemState::kName == state) {
state = this->enumMemberName(child, nullptr, &item, &last, ¤tEnumItem);
}
- if (ItemState::kValue == state || ItemState::kComment == state) {
+ if ((ItemState::kValue == state || ItemState::kComment == state) && currentEnumItem) {
this->enumMemberOut(currentEnumItem, child, item, preprocessor);
}
this->indentOut();
@@ -800,6 +722,7 @@
IterState* iterState = &iterStack[0];
Preprocessor preprocessor;
string enumName;
+ bool undocumented = false;
while (iterState->fDefIter != iterState->fDefEnd) {
auto& token = *iterState->fDefIter++;
if (this->enumPreprocessor(&token, MemberPass::kCount, iterStack, &iterState,
@@ -826,7 +749,9 @@
}
}
if (ItemState::kNone != state) {
- this->checkEnumLengths(child, enumName, &lengths);
+ if (!undocumented) {
+ this->checkEnumLengths(child, enumName, &lengths);
+ }
lengths.fCurValue = 0;
state = ItemState::kNone;
}
@@ -834,9 +759,10 @@
lastEnd = token.fContentEnd;
lengths.fCurName = (int) (lastEnd - token.fContentStart);
enumName = string(token.fContentStart, lengths.fCurName);
+ undocumented = token.fUndocumented;
state = ItemState::kName;
}
- if (ItemState::kNone != state) {
+ if (ItemState::kNone != state && !undocumented) {
this->checkEnumLengths(child, enumName, &lengths);
}
fEnumItemValueTab = lengths.fLongestName + fIndent + 1 /* 1: , */ ;
@@ -872,8 +798,7 @@
enumItem = testItem;
break;
}
- SkASSERT(enumItem);
- return enumItem;
+ return enumItem; // returns nullptr if matchName is undocumented
}
// walk children and output complete method doxygen description
@@ -891,9 +816,6 @@
this->indentIn(IndentKind::kMethodOut);
fIndentNext = false;
}
- if (string::npos != method->fName.find("validate")) {
- SkDebugf("");
- }
if (method->fChildren.end() != std::find_if(method->fChildren.begin(), method->fChildren.end(),
[](const Definition* def) { return MarkType::kPopulate == def->fMarkType; } )) {
std::list<Definition>::iterator iter;
@@ -982,11 +904,7 @@
this->writeString(child.fName.c_str());
fIndent += 4;
this->lfcr();
- if (child.fDeprecated) {
- this->writeString(child.incompleteMessage(Definition::DetailsType::kSentence));
- } else {
- this->rewriteBlock((int)(commentEnd - commentStart), commentStart, Phrase::kNo);
- }
+ this->rewriteBlock((int)(commentEnd - commentStart), commentStart, Phrase::kNo);
fIndent -= 4;
this->lfcr();
this->writeCommentTrailer(OneLine::kNo);
@@ -1519,10 +1437,6 @@
}
method = this->findMethod(methodName, root);
if (!method) {
- if (fBmhStructDef && fBmhStructDef->fDeprecated) {
- fContinuation = nullptr;
- continue;
- }
return child.reportError<bool>("method not found");
}
this->methodOut(method, child);
@@ -1546,9 +1460,6 @@
this->methodOut(method, child);
sawConst = false;
continue;
- } else if (fBmhStructDef && fBmhStructDef->fDeprecated) {
- fContinuation = nullptr;
- continue;
}
if (KeyWord::kTemplate == child.fParent->fKeyWord) {
// incomplete; no support to template specialization in public includes
@@ -1567,6 +1478,9 @@
if (this->isInternalName(child)) {
continue;
}
+ if (child.fUndocumented) {
+ continue;
+ }
if (KeyWord::kTemplate == child.fParent->fKeyWord) {
// todo: support template specializations
continue;
@@ -1619,6 +1533,9 @@
continue;
}
if (Definition::Type::kKeyWord == child.fType) {
+ if (child.fUndocumented) {
+ continue;
+ }
switch (child.fKeyWord) {
case KeyWord::kStruct:
case KeyWord::kClass:
@@ -1745,34 +1662,32 @@
priorBlock = test;
}
// FIXME: trigger error earlier if inner #Struct or #Class is missing #Code
- if (!fBmhStructDef->fDeprecated) {
- SkASSERT(codeBlock);
- SkASSERT(nextBlock); // FIXME: check enum for correct order earlier
- const char* commentStart = codeBlock->fTerminator;
- const char* commentEnd = nextBlock->fStart;
- // FIXME: trigger error if #Code is present but comment is before it earlier
- SkASSERT(priorBlock); // code always preceded by #Line (I think)
- TextParser priorComment(priorBlock->fFileName,
- priorBlock->fTerminator, codeBlock->fStart,
- priorBlock->fLineCount);
- priorComment.trimEnd();
- if (!priorComment.eof()) {
- return priorBlock->reportError<bool>(
- "expect no comment before #Code");
- }
- TextParser nextComment(codeBlock->fFileName, commentStart,
- commentEnd, codeBlock->fLineCount);
- nextComment.trimEnd();
- if (!priorComment.eof()) {
- return priorBlock->reportError<bool>(
- "expect comment after #Code");
- }
- if (!nextComment.eof()) {
-
- }
- fIndentNext = true;
- this->structOut(root, *fBmhStructDef, commentStart, commentEnd);
+ SkASSERT(codeBlock);
+ SkASSERT(nextBlock); // FIXME: check enum for correct order earlier
+ const char* commentStart = codeBlock->fTerminator;
+ const char* commentEnd = nextBlock->fStart;
+ // FIXME: trigger error if #Code is present but comment is before it earlier
+ SkASSERT(priorBlock); // code always preceded by #Line (I think)
+ TextParser priorComment(priorBlock->fFileName,
+ priorBlock->fTerminator, codeBlock->fStart,
+ priorBlock->fLineCount);
+ priorComment.trimEnd();
+ if (!priorComment.eof()) {
+ return priorBlock->reportError<bool>(
+ "expect no comment before #Code");
}
+ TextParser nextComment(codeBlock->fFileName, commentStart,
+ commentEnd, codeBlock->fLineCount);
+ nextComment.trimEnd();
+ if (!priorComment.eof()) {
+ return priorBlock->reportError<bool>(
+ "expect comment after #Code");
+ }
+ if (!nextComment.eof()) {
+
+ }
+ fIndentNext = true;
+ this->structOut(root, *fBmhStructDef, commentStart, commentEnd);
}
fDeferComment = nullptr;
} else {
@@ -1957,14 +1872,11 @@
fIndentNext = true;
}
SkASSERT(fBmhStructDef);
- if (!fBmhStructDef->fDeprecated) {
- memberEnd = this->structMemberOut(memberStart, child);
- startDef = &child;
- this->setStart(child.fContentEnd + 1, &child);
- fDeferComment = nullptr;
- }
- } else if (MarkType::kNone == child.fMarkType && sawConst
- && fEnumDef && !fEnumDef->fDeprecated) {
+ memberEnd = this->structMemberOut(memberStart, child);
+ startDef = &child;
+ this->setStart(child.fContentEnd + 1, &child);
+ fDeferComment = nullptr;
+ } else if (MarkType::kNone == child.fMarkType && sawConst && fEnumDef) {
const Definition* bmhConst = nullptr;
string match;
if (root) {
diff --git a/tools/bookmaker/mdOut.cpp b/tools/bookmaker/mdOut.cpp
index 90702d8..20a48ae 100644
--- a/tools/bookmaker/mdOut.cpp
+++ b/tools/bookmaker/mdOut.cpp
@@ -75,14 +75,8 @@
if (!std::any_of(allDefs.begin(), allDefs.end(),
[str](AnchorDef compare) { return compare.fDef == str; } )) {
MarkType markType = fLastDef->fMarkType;
- if (MarkType::kMethod == markType
- && std::any_of(fLastDef->fChildren.begin(), fLastDef->fChildren.end(),
- [](const Definition* compare) {
- return IncompleteAllowed(compare->fMarkType); } )) {
- markType = MarkType::kDeprecated;
- }
if (MarkType::kMethod == markType && fLastDef->fClone) {
- markType = MarkType::kDeprecated; // TODO: hack to allow missing reference
+ SkASSERT(0); // incomplete
}
allDefs.push_back( { str, markType } );
}
@@ -581,7 +575,7 @@
&& fGlobals->fRefMap.end() != fGlobals->fRefMap.find(fWord + ' ');
if (!withSpace && (Resolvable::kInclude == fResolvable ? !fInMatrix :
'"' != fPriorSeparator.back() || '"' != fSeparator.back())) {
- SkDebugf("fWord %s not found\n", fWord.c_str());
+ SkDebugf("word %s not found\n", fWord.c_str());
fBmhParser->fGlobalNames.fRefMap[fWord] = nullptr;
}
}
@@ -601,6 +595,12 @@
break;
}
s.fWord = string(start, s.fEnd - start);
+ if ("TODO" == s.fWord) {
+ while('\n' != *s.fEnd++)
+ ;
+ start = s.fEnd;
+ continue;
+ }
s.setLower();
if (s.setPriorSpaceWord(&start)) {
continue;
@@ -767,8 +767,7 @@
break;
}
if (allRefsEnded || (!allDefsEnded && allDefsIter->fDef < *allRefsIter)) {
- if (MarkType::kParam != allDefsIter->fMarkType
- && !IncompleteAllowed(allDefsIter->fMarkType)) {
+ if (MarkType::kParam != allDefsIter->fMarkType) {
// If undocumented but parent or child is referred to: good enough for now
bool goodEnough = false;
if ("undocumented" == defIter->first) {
@@ -845,9 +844,6 @@
}
void MdOut::childrenOut(Definition* def, const char* start) {
- if (MarkType::kDeprecated == def->fMarkType || MarkType::kExperimental == def->fMarkType) {
- return;
- }
const char* end;
fLineCount = def->fLineCount;
if (MarkType::kEnumClass == def->fMarkType) {
@@ -1376,11 +1372,6 @@
FPRINTF("%s", out_table_data_description_start().c_str()); // start of Description
this->lfAlways(1);
} break;
- case MarkType::kDeprecated:
- this->writeString(def->fParent->incompleteMessage(
- Definition::DetailsType::kSentence).c_str());
- this->lf(2);
- break;
case MarkType::kDescription:
fInDescription = true;
this->writePending();
@@ -1436,11 +1427,6 @@
fLiteralAndIndent = true;
}
} break;
- case MarkType::kExperimental:
- this->writeString(def->fParent->incompleteMessage(
- Definition::DetailsType::kSentence).c_str());
- this->lf(2);
- break;
case MarkType::kExternal:
break;
case MarkType::kFile:
@@ -1522,17 +1508,12 @@
this->lf(2);
fTableState = TableState::kNone;
fMethod = def;
- if ("SkTextBlobBuilder::allocRun_2" == def->fName) {
- SkDebugf("");
- }
Definition* iMethod = fIncludeParser.findMethod(*def);
if (iMethod) {
fMethod = iMethod;
paramMap.fParent = &fBmhParser.fGlobalNames;
paramMap.setParams(def, iMethod);
fNames = ¶mMap;
- } else {
- SkDebugf("");
}
} break;
case MarkType::kNoExample:
@@ -1721,12 +1702,6 @@
}
}
} break;
- case MarkType::kPrivate:
- this->writeString("Private:");
- this->writeSpace();
- this->writeBlock(def->length(), def->fContentStart);
- this->lf(2);
- break;
case MarkType::kReturn:
this->returnHeaderOut(prior, def);
break;
@@ -1972,8 +1947,6 @@
break;
case MarkType::kPhraseDef:
break;
- case MarkType::kPrivate:
- break;
case MarkType::kSubtopic:
SkASSERT(def);
do {
@@ -2375,9 +2348,6 @@
items[entryName] = entry;
}
for (auto entry : items) {
- if (entry.second->fDeprecated) {
- continue;
- }
if (!this->subtopicRowOut(entry.first, entry.second)) {
return;
}
diff --git a/tools/bookmaker/parserCommon.h b/tools/bookmaker/parserCommon.h
index f31cbd6..f8e0ca8 100644
--- a/tools/bookmaker/parserCommon.h
+++ b/tools/bookmaker/parserCommon.h
@@ -64,6 +64,9 @@
}
void addDefinition(Definition* def) {
+ if (KeyWord::kElse == def->fKeyWord) {
+ SkDebugf("");
+ }
fParent->fChildren.push_back(def);
fParent = def;
}
@@ -161,6 +164,9 @@
}
void setAsParent(Definition* definition) {
+ if (KeyWord::kElse == definition->fKeyWord) {
+ SkDebugf("");
+ }
if (fParent) {
fParent->fChildren.push_back(definition);
definition->fParent = fParent;
diff --git a/tools/bookmaker/selfCheck.cpp b/tools/bookmaker/selfCheck.cpp
index 1c822c2..341b9e3 100644
--- a/tools/bookmaker/selfCheck.cpp
+++ b/tools/bookmaker/selfCheck.cpp
@@ -79,8 +79,8 @@
// only check methods for now
return;
}
- bool containsMarkTypeIn = csChild->fDeprecated // no markup for deprecated
- || Definition::MethodType::kConstructor == csChild->fMethodType
+ bool containsMarkTypeIn =
+ Definition::MethodType::kConstructor == csChild->fMethodType
|| Definition::MethodType::kDestructor == csChild->fMethodType
|| Definition::MethodType::kOperator == csChild->fMethodType
|| csChild->fClone;
diff --git a/tools/bookmaker/spellCheck.cpp b/tools/bookmaker/spellCheck.cpp
index c6cfe5d..c8de4a3 100644
--- a/tools/bookmaker/spellCheck.cpp
+++ b/tools/bookmaker/spellCheck.cpp
@@ -180,8 +180,6 @@
} break;
case MarkType::kDefine:
break;
- case MarkType::kDeprecated:
- break;
case MarkType::kDescription:
fInDescription = true;
break;
@@ -195,8 +193,6 @@
break;
case MarkType::kExample:
break;
- case MarkType::kExperimental:
- break;
case MarkType::kExternal:
break;
case MarkType::kFile:
@@ -270,8 +266,6 @@
break;
case MarkType::kPopulate:
break;
- case MarkType::kPrivate:
- break;
case MarkType::kReturn:
break;
case MarkType::kRow:
diff --git a/tools/bookmaker/textParser.h b/tools/bookmaker/textParser.h
index ffe5e78..9ecd466 100644
--- a/tools/bookmaker/textParser.h
+++ b/tools/bookmaker/textParser.h
@@ -58,6 +58,46 @@
return nullptr;
}
+ // words must be alpha only
+ string anyWord(const vector<string>& wordList, int spaces) const {
+ const char* matchStart = fChar;
+ do {
+ int count = spaces;
+ while (matchStart < fEnd && !isalpha(matchStart[0])) {
+ ++matchStart;
+ }
+ const char* matchEnd = matchStart;
+ const char* nextWord = nullptr;
+ while (matchEnd < fEnd) {
+ if (isalpha(matchEnd[0])) {
+ ;
+ } else if (' ' == matchEnd[0] && --count >= 0) {
+ if (!nextWord) {
+ nextWord = matchEnd;
+ }
+ } else {
+ break;
+ }
+ ++matchEnd;
+ }
+ size_t matchLen = matchEnd - matchStart;
+ for (auto word : wordList) {
+ if (word.length() != matchLen) {
+ continue;
+ }
+ for (unsigned index = 0; index < matchLen; ++index) {
+ if (tolower(matchStart[index]) != word[index]) {
+ goto nextWord;
+ }
+ }
+ return word;
+ nextWord: ;
+ }
+ matchStart = nextWord ? nextWord : matchEnd;
+ } while (matchStart < fEnd);
+ return "";
+ }
+
bool back(const char* pattern) {
size_t len = strlen(pattern);
const char* start = fChar - len;