Remove dependency on SkPaintOptionsAndroid
Change-Id: I579a3503697efe3b8fd9bc809a6c9bfbf735cb1b
diff --git a/core/jni/android/graphics/MinikinUtils.cpp b/core/jni/android/graphics/MinikinUtils.cpp
index b00e1ab..f64ad7d 100644
--- a/core/jni/android/graphics/MinikinUtils.cpp
+++ b/core/jni/android/graphics/MinikinUtils.cpp
@@ -45,10 +45,9 @@
FontStyle resolved = resolvedFace->fStyle;
/* Prepare minikin FontStyle */
- SkString langStr = paint->getPaintOptionsAndroid().getLanguage().getTag();
- FontLanguage minikinLang(langStr.c_str(), langStr.size());
- SkPaintOptionsAndroid::FontVariant var = paint->getPaintOptionsAndroid().getFontVariant();
- FontVariant minikinVariant = var == SkPaintOptionsAndroid::kElegant_Variant ? VARIANT_ELEGANT
+ std::string lang = paint->getTextLocale();
+ FontLanguage minikinLang(lang.c_str(), lang.size());
+ FontVariant minikinVariant = (paint->getFontVariant() == VARIANT_ELEGANT) ? VARIANT_ELEGANT
: VARIANT_COMPACT;
FontStyle minikinStyle(minikinLang, minikinVariant, resolved.getWeight(), resolved.getItalic());
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index f6ced09..4bb31fc 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -365,27 +365,19 @@
char langTag[ULOC_FULLNAME_CAPACITY];
toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str());
- SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid();
- paintOpts.setLanguage(langTag);
- obj->setPaintOptionsAndroid(paintOpts);
+ obj->setTextLocale(langTag);
}
static jboolean isElegantTextHeight(JNIEnv* env, jobject paint) {
NPE_CHECK_RETURN_ZERO(env, paint);
Paint* obj = GraphicsJNI::getNativePaint(env, paint);
- SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid();
- return paintOpts.getFontVariant() == SkPaintOptionsAndroid::kElegant_Variant;
+ return obj->getFontVariant() == VARIANT_ELEGANT;
}
static void setElegantTextHeight(JNIEnv* env, jobject paint, jboolean aa) {
NPE_CHECK_RETURN_VOID(env, paint);
Paint* obj = GraphicsJNI::getNativePaint(env, paint);
- SkPaintOptionsAndroid::FontVariant variant =
- aa ? SkPaintOptionsAndroid::kElegant_Variant :
- SkPaintOptionsAndroid::kDefault_Variant;
- SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid();
- paintOpts.setFontVariant(variant);
- obj->setPaintOptionsAndroid(paintOpts);
+ obj->setFontVariant(aa ? VARIANT_ELEGANT : VARIANT_DEFAULT);
}
static jfloat getTextSize(JNIEnv* env, jobject paint) {
@@ -457,8 +449,7 @@
// restore the original settings.
paint->setTextSkewX(saveSkewX);
paint->setFakeBoldText(savefakeBold);
- SkPaintOptionsAndroid paintOpts = paint->getPaintOptionsAndroid();
- if (paintOpts.getFontVariant() == SkPaintOptionsAndroid::kElegant_Variant) {
+ if (paint->getFontVariant() == VARIANT_ELEGANT) {
SkScalar size = paint->getTextSize();
metrics->fTop = -size * kElegantTop / 2048;
metrics->fBottom = -size * kElegantBottom / 2048;
diff --git a/core/jni/android/graphics/Paint.h b/core/jni/android/graphics/Paint.h
index efc65be..a20bb4b 100644
--- a/core/jni/android/graphics/Paint.h
+++ b/core/jni/android/graphics/Paint.h
@@ -20,6 +20,8 @@
#include <SkPaint.h>
#include <string>
+#include <minikin/FontFamily.h>
+
namespace android {
class Paint : public SkPaint {
@@ -51,9 +53,27 @@
return mFontFeatureSettings;
}
+ void setTextLocale(const std::string &textLocale) {
+ mTextLocale = textLocale;
+ }
+
+ std::string getTextLocale() const {
+ return mTextLocale;
+ }
+
+ void setFontVariant(FontVariant variant) {
+ mFontVariant = variant;
+ }
+
+ FontVariant getFontVariant() const {
+ return mFontVariant;
+ }
+
private:
float mLetterSpacing;
std::string mFontFeatureSettings;
+ std::string mTextLocale;
+ FontVariant mFontVariant;
};
} // namespace android
diff --git a/core/jni/android/graphics/PaintImpl.cpp b/core/jni/android/graphics/PaintImpl.cpp
index 05020d2..e1b539e 100644
--- a/core/jni/android/graphics/PaintImpl.cpp
+++ b/core/jni/android/graphics/PaintImpl.cpp
@@ -23,11 +23,11 @@
namespace android {
Paint::Paint() : SkPaint(),
- mLetterSpacing(0), mFontFeatureSettings() {
+ mLetterSpacing(0), mFontFeatureSettings(), mTextLocale(), mFontVariant(VARIANT_DEFAULT) {
}
Paint::Paint(const Paint& paint) : SkPaint(paint),
- mLetterSpacing(0), mFontFeatureSettings() {
+ mLetterSpacing(0), mFontFeatureSettings(), mTextLocale(), mFontVariant(VARIANT_DEFAULT) {
}
Paint::~Paint() {
@@ -37,13 +37,17 @@
SkPaint::operator=(other);
mLetterSpacing = other.mLetterSpacing;
mFontFeatureSettings = other.mFontFeatureSettings;
+ mTextLocale = other.mTextLocale;
+ mFontVariant = other.mFontVariant;
return *this;
}
bool operator==(const Paint& a, const Paint& b) {
return static_cast<const SkPaint&>(a) == static_cast<const SkPaint&>(b)
&& a.mLetterSpacing == b.mLetterSpacing
- && a.mFontFeatureSettings == b.mFontFeatureSettings;
+ && a.mFontFeatureSettings == b.mFontFeatureSettings
+ && a.mTextLocale == b.mTextLocale
+ && a.mFontVariant == b.mFontVariant;
}
}