diff options
author | Ben Wagner <bungeman@google.com> | 2018-06-06 11:02:07 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-07 19:32:11 +0000 |
commit | c174cc675cbc190c43372d53fb89711663ac945f (patch) | |
tree | 262fbd45c6b60bd465e86da2e0952111065da59e /include/core/SkTypeface.h | |
parent | 61201641383dada029f79be4df98d925efc1a827 (diff) |
Add SkTypeface::makeClone.
This adds an method to typeface to allow users to create a copy of the
typeface with different arguments for its parameters. This is far more
efficient when animating a variation font.
BUG=skia:7121
Change-Id: I34e7557a08c7005f8149ea44f0c28de9c59d15a7
Reviewed-on: https://skia-review.googlesource.com/132480
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'include/core/SkTypeface.h')
-rw-r--r-- | include/core/SkTypeface.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/core/SkTypeface.h b/include/core/SkTypeface.h index 665491c3db..4118152dea 100644 --- a/include/core/SkTypeface.h +++ b/include/core/SkTypeface.h @@ -117,6 +117,14 @@ public: */ static sk_sp<SkTypeface> MakeFromFontData(std::unique_ptr<SkFontData>); + /** Return a new typeface based on this typeface but parameterized as specified in the + SkFontArguments. If the SkFontArguments does not supply an argument for a parameter + in the font then the value from this typeface will be used as the value for that + argument. If the cloned typeface would be exaclty the same as this typeface then + this typeface may be ref'ed and returned. May return nullptr on failure. + */ + sk_sp<SkTypeface> makeClone(const SkFontArguments&) const; + /** Write a unique signature to a stream, sufficient to reconstruct a typeface referencing the same font when Deserialize is called. */ @@ -301,6 +309,8 @@ protected: SkTypeface(const SkFontStyle& style, bool isFixedPitch = false); virtual ~SkTypeface(); + virtual sk_sp<SkTypeface> onMakeClone(const SkFontArguments&) const; + /** Sets the fixedPitch bit. If used, must be called in the constructor. */ void setIsFixedPitch(bool isFixedPitch) { fIsFixedPitch = isFixedPitch; } /** Sets the font style. If used, must be called in the constructor. */ |