aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-11-17 11:39:32 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-11-17 11:39:32 -0800
commit32d6b876163580711a07e96d9f29c9c1490a7271 (patch)
treefdfaf74f95404986d4d402e7dbde1b8c1d895610 /src/core
parent5af4e0bc8fd17944f3c0527462aeba367f6d590a (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.cpp5
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");