Merge "move alignment to Paint (from SkPaint)"
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 2e5aef5..9c707bab 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -732,14 +732,10 @@
float y, float boundsLeft, float boundsTop, float boundsRight,
float boundsBottom, float totalAdvance) {
if (count <= 0 || paint.nothingToDraw()) return;
- // Set align to left for drawing, as we don't want individual
- // glyphs centered or right-aligned; the offset above takes
- // care of all alignment.
SkPaint paintCopy(paint);
if (mPaintFilter) {
mPaintFilter->filter(&paintCopy);
}
- paintCopy.setTextAlign(SkPaint::kLeft_Align);
SkASSERT(paintCopy.getTextEncoding() == SkPaint::kGlyphID_TextEncoding);
// Stroke with a hairline is drawn on HW with a fill style for compatibility with Android O and
// older.
@@ -763,14 +759,10 @@
void SkiaCanvas::drawLayoutOnPath(const minikin::Layout& layout, float hOffset, float vOffset,
const SkPaint& paint, const SkPath& path, size_t start,
size_t end) {
- // Set align to left for drawing, as we don't want individual
- // glyphs centered or right-aligned; the offsets take care of
- // that portion of the alignment.
SkPaint paintCopy(paint);
if (mPaintFilter) {
mPaintFilter->filter(&paintCopy);
}
- paintCopy.setTextAlign(SkPaint::kLeft_Align);
SkASSERT(paintCopy.getTextEncoding() == SkPaint::kGlyphID_TextEncoding);
const int N = end - start;
diff --git a/libs/hwui/hwui/Paint.h b/libs/hwui/hwui/Paint.h
index 31d3c0d..c1a3b6d 100644
--- a/libs/hwui/hwui/Paint.h
+++ b/libs/hwui/hwui/Paint.h
@@ -86,6 +86,14 @@
const Typeface* getAndroidTypeface() const { return mTypeface; }
+ enum Align {
+ kLeft_Align,
+ kCenter_Align,
+ kRight_Align,
+ };
+ Align getTextAlign() const { return mAlign; }
+ void setTextAlign(Align align) { mAlign = align; }
+
private:
float mLetterSpacing = 0;
float mWordSpacing = 0;
@@ -98,6 +106,7 @@
// object. Thus, following pointer can never be a dangling pointer. Note that
// nullptr is valid: it means the default typeface.
const Typeface* mTypeface = nullptr;
+ Align mAlign = kLeft_Align;
};
} // namespace android
diff --git a/libs/hwui/hwui/PaintImpl.cpp b/libs/hwui/hwui/PaintImpl.cpp
index 29cc890..bdbf5ca 100644
--- a/libs/hwui/hwui/PaintImpl.cpp
+++ b/libs/hwui/hwui/PaintImpl.cpp
@@ -34,7 +34,8 @@
, mMinikinLocaleListId(paint.mMinikinLocaleListId)
, mFamilyVariant(paint.mFamilyVariant)
, mHyphenEdit(paint.mHyphenEdit)
- , mTypeface(paint.mTypeface) {}
+ , mTypeface(paint.mTypeface)
+ , mAlign(paint.mAlign) {}
Paint::Paint(const SkPaint& paint)
: SkPaint(paint)
@@ -55,6 +56,7 @@
mFamilyVariant = other.mFamilyVariant;
mHyphenEdit = other.mHyphenEdit;
mTypeface = other.mTypeface;
+ mAlign = other.mAlign;
return *this;
}
@@ -64,6 +66,6 @@
a.mFontFeatureSettings == b.mFontFeatureSettings &&
a.mMinikinLocaleListId == b.mMinikinLocaleListId &&
a.mFamilyVariant == b.mFamilyVariant && a.mHyphenEdit == b.mHyphenEdit &&
- a.mTypeface == b.mTypeface;
+ a.mTypeface == b.mTypeface && a.mAlign == b.mAlign;
}
} // namespace android
diff --git a/libs/hwui/tests/common/scenes/ListViewAnimation.cpp b/libs/hwui/tests/common/scenes/ListViewAnimation.cpp
index fd8c252..9a1ee54 100644
--- a/libs/hwui/tests/common/scenes/ListViewAnimation.cpp
+++ b/libs/hwui/tests/common/scenes/ListViewAnimation.cpp
@@ -46,7 +46,6 @@
SkColorGetR(randomColor) + SkColorGetG(randomColor) + SkColorGetB(randomColor) <
128 * 3;
paint.setColor(bgDark ? Color::White : Color::Grey_700);
- paint.setTextAlign(SkPaint::kCenter_Align);
paint.setTextSize(size / 2);
char charToShow = 'A' + (rand() % 26);
const SkPoint pos[] = {{SkIntToScalar(size / 2),