Deprecate SaveFlags use in the public SkCanvas API.
Because we still have internal users for now (to support the deprecated mode), this CL introduces an external-only variant of deprecation. Chromium is no longer using the deprecated methods, but Android may need to suppress SK_ATTR_EXTERNALLY_DEPRECATED warnings. R=reed@google.com, robertphillips@google.com, scroggo@google.com, bungeman@google.com, mtklein@google.com Author: fmalita@chromium.org Review URL: https://codereview.chromium.org/246023008 git-svn-id: http://skia.googlecode.com/svn/trunk@14367 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
0b27f2ec0f
commit
d70fa2013a
@ -12,6 +12,7 @@
|
||||
|
||||
'target_defaults': {
|
||||
'defines': [
|
||||
'SK_INTERNAL',
|
||||
'SK_GAMMA_SRGB',
|
||||
'SK_GAMMA_APPLY_TO_A8',
|
||||
'SK_SCALAR_TO_FLOAT_EXCLUDED', # temporary to allow Chrome to call SkFloatToScalar
|
||||
|
@ -309,6 +309,8 @@
|
||||
'SK_SUPPORT_LEGACY_BLURDRAWLOOPERCONSTRUCTORS',
|
||||
# Needed until we fix skbug.com/2440.
|
||||
'SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG',
|
||||
# Transitional, for deprecated SkCanvas::SaveFlags methods.
|
||||
'SK_ATTR_DEPRECATED=SK_NOTHING_ARG1',
|
||||
],
|
||||
}],
|
||||
|
||||
|
@ -330,6 +330,16 @@ public:
|
||||
operate on this copy.
|
||||
When the balancing call to restore() is made, the previous matrix, clip,
|
||||
and drawFilter are restored.
|
||||
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int save();
|
||||
|
||||
/** DEPRECATED - use save() instead.
|
||||
|
||||
This behaves the same as save(), but it allows fine-grained control of
|
||||
which state bits to be saved (and subsequently restored).
|
||||
|
||||
@param flags The flags govern what portion of the Matrix/Clip/drawFilter
|
||||
state the save (and matching restore) effect. For example,
|
||||
if only kMatrix is specified, then only the matrix state
|
||||
@ -338,12 +348,29 @@ public:
|
||||
by calls to save/restore.
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int save(SaveFlags flags = kMatrixClip_SaveFlag);
|
||||
SK_ATTR_EXTERNALLY_DEPRECATED("SaveFlags use is deprecated")
|
||||
int save(SaveFlags flags);
|
||||
|
||||
/** This behaves the same as save(), but in addition it allocates an
|
||||
offscreen bitmap. All drawing calls are directed there, and only when
|
||||
the balancing call to restore() is made is that offscreen transfered to
|
||||
the canvas (or the previous layer).
|
||||
@param bounds (may be null) This rect, if non-null, is used as a hint to
|
||||
limit the size of the offscreen, and thus drawing may be
|
||||
clipped to it, though that clipping is not guaranteed to
|
||||
happen. If exact clipping is desired, use clipRect().
|
||||
@param paint (may be null) This is copied, and is applied to the
|
||||
offscreen when restore() is called
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int saveLayer(const SkRect* bounds, const SkPaint* paint);
|
||||
|
||||
/** DEPRECATED - use saveLayer(const SkRect*, const SkPaint*) instead.
|
||||
|
||||
This behaves the same as saveLayer(const SkRect*, const SkPaint*),
|
||||
but it allows fine-grained control of which state bits to be saved
|
||||
(and subsequently restored).
|
||||
|
||||
@param bounds (may be null) This rect, if non-null, is used as a hint to
|
||||
limit the size of the offscreen, and thus drawing may be
|
||||
clipped to it, though that clipping is not guaranteed to
|
||||
@ -353,13 +380,28 @@ public:
|
||||
@param flags LayerFlags
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int saveLayer(const SkRect* bounds, const SkPaint* paint,
|
||||
SaveFlags flags = kARGB_ClipLayer_SaveFlag);
|
||||
SK_ATTR_EXTERNALLY_DEPRECATED("SaveFlags use is deprecated")
|
||||
int saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags);
|
||||
|
||||
/** This behaves the same as save(), but in addition it allocates an
|
||||
offscreen bitmap. All drawing calls are directed there, and only when
|
||||
the balancing call to restore() is made is that offscreen transfered to
|
||||
the canvas (or the previous layer).
|
||||
@param bounds (may be null) This rect, if non-null, is used as a hint to
|
||||
limit the size of the offscreen, and thus drawing may be
|
||||
clipped to it, though that clipping is not guaranteed to
|
||||
happen. If exact clipping is desired, use clipRect().
|
||||
@param alpha This is applied to the offscreen when restore() is called.
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int saveLayerAlpha(const SkRect* bounds, U8CPU alpha);
|
||||
|
||||
/** DEPRECATED - use saveLayerAlpha(const SkRect*, U8CPU) instead.
|
||||
|
||||
This behaves the same as saveLayerAlpha(const SkRect*, U8CPU),
|
||||
but it allows fine-grained control of which state bits to be saved
|
||||
(and subsequently restored).
|
||||
|
||||
@param bounds (may be null) This rect, if non-null, is used as a hint to
|
||||
limit the size of the offscreen, and thus drawing may be
|
||||
clipped to it, though that clipping is not guaranteed to
|
||||
@ -368,8 +410,8 @@ public:
|
||||
@param flags LayerFlags
|
||||
@return The value to pass to restoreToCount() to balance this save()
|
||||
*/
|
||||
int saveLayerAlpha(const SkRect* bounds, U8CPU alpha,
|
||||
SaveFlags flags = kARGB_ClipLayer_SaveFlag);
|
||||
SK_ATTR_EXTERNALLY_DEPRECATED("SaveFlags use is deprecated")
|
||||
int saveLayerAlpha(const SkRect* bounds, U8CPU alpha, SaveFlags flags);
|
||||
|
||||
/** This call balances a previous call to save(), and is used to remove all
|
||||
modifications to the matrix/clip/drawFilter state since the last save
|
||||
|
@ -323,6 +323,14 @@
|
||||
# define SK_ATTR_DEPRECATED(msg) SK_ATTRIBUTE(deprecated)
|
||||
#endif
|
||||
|
||||
#if !defined(SK_ATTR_EXTERNALLY_DEPRECATED)
|
||||
# if !defined(SK_INTERNAL)
|
||||
# define SK_ATTR_EXTERNALLY_DEPRECATED(msg) SK_ATTR_DEPRECATED(msg)
|
||||
# else
|
||||
# define SK_ATTR_EXTERNALLY_DEPRECATED(msg)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* If your judgment is better than the compiler's (i.e. you've profiled it),
|
||||
* you can use SK_ALWAYS_INLINE to force inlining. E.g.
|
||||
|
@ -834,6 +834,11 @@ void SkCanvas::willSave(SaveFlags) {
|
||||
// Do nothing. Subclasses may do something.
|
||||
}
|
||||
|
||||
int SkCanvas::save() {
|
||||
this->willSave(kMatrixClip_SaveFlag);
|
||||
return this->internalSave(kMatrixClip_SaveFlag);
|
||||
}
|
||||
|
||||
int SkCanvas::save(SaveFlags flags) {
|
||||
this->willSave(flags);
|
||||
// call shared impl
|
||||
@ -898,9 +903,13 @@ SkCanvas::SaveLayerStrategy SkCanvas::willSaveLayer(const SkRect*, const SkPaint
|
||||
return kFullLayer_SaveLayerStrategy;
|
||||
}
|
||||
|
||||
int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) {
|
||||
SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, kARGB_ClipLayer_SaveFlag);
|
||||
return this->internalSaveLayer(bounds, paint, kARGB_ClipLayer_SaveFlag, false, strategy);
|
||||
}
|
||||
|
||||
int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint,
|
||||
SaveFlags flags) {
|
||||
// Overriding classes may return false to signal that we don't need to create a layer.
|
||||
SaveLayerStrategy strategy = this->willSaveLayer(bounds, paint, flags);
|
||||
return this->internalSaveLayer(bounds, paint, flags, false, strategy);
|
||||
}
|
||||
@ -975,6 +984,10 @@ int SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Save
|
||||
return count;
|
||||
}
|
||||
|
||||
int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) {
|
||||
return this->saveLayerAlpha(bounds, alpha, kARGB_ClipLayer_SaveFlag);
|
||||
}
|
||||
|
||||
int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha,
|
||||
SaveFlags flags) {
|
||||
if (0xFF == alpha) {
|
||||
|
Loading…
Reference in New Issue
Block a user