diff options
author | fmalita <fmalita@chromium.org> | 2015-11-17 11:39:32 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-17 11:39:32 -0800 |
commit | 32d6b876163580711a07e96d9f29c9c1490a7271 (patch) | |
tree | fdfaf74f95404986d4d402e7dbde1b8c1d895610 /src/core | |
parent | 5af4e0bc8fd17944f3c0527462aeba367f6d590a (diff) |
SkTextBlob should store per-run text alignment
SkPaint::Align is only observed for kDefault_Positioning AFAICT, but
part of the run logical font nevertheless.
BUG=skia:4567
R=mtklein@google.com,halcanary@google.com
Review URL: https://codereview.chromium.org/1447403003
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkTextBlob.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp index ed26f43db8..7f6536cc8a 100644 --- a/src/core/SkTextBlob.cpp +++ b/src/core/SkTextBlob.cpp @@ -21,6 +21,7 @@ public: , fScaleX(paint.getTextScaleX()) , fTypeface(SkSafeRef(paint.getTypeface())) , fSkewX(paint.getTextSkewX()) + , fAlign(paint.getTextAlign()) , fHinting(paint.getHinting()) , fFlags(paint.getFlags() & kFlagsMask) { } @@ -30,6 +31,7 @@ public: paint->setTextSize(fSize); paint->setTextScaleX(fScaleX); paint->setTextSkewX(fSkewX); + paint->setTextAlign(static_cast<SkPaint::Align>(fAlign)); paint->setHinting(static_cast<SkPaint::Hinting>(fHinting)); paint->setFlags((paint->getFlags() & ~kFlagsMask) | fFlags); @@ -40,6 +42,7 @@ public: && fSize == other.fSize && fScaleX == other.fScaleX && fSkewX == other.fSkewX + && fAlign == other.fAlign && fHinting == other.fHinting && fFlags == other.fFlags; } @@ -73,6 +76,8 @@ private: SkAutoTUnref<SkTypeface> fTypeface; SkScalar fSkewX; + static_assert(SkPaint::kAlignCount < 4, "insufficient_align_bits"); + uint32_t fAlign : 2; static_assert(SkPaint::kFull_Hinting < 4, "insufficient_hinting_bits"); uint32_t fHinting : 2; static_assert((kFlagsMask & 0xffff) == kFlagsMask, "insufficient_flags_bits"); |