Add android.Paint that inherits SkPaint

The idea is that extra paint parameters that only affect text layout
(not rendering) will go in android.Paint instead of going into
SkPaintOptionsAndroid.  We will eventually move those out of SkPaint
too.

This is currently implemented in PaintImpl.cpp.  Will be renamed when
current Paint.cpp that has JNI bits is moved to android_graphics_Paint.cpp.

Change-Id: Iba66c34dea5da503a13b9c864cb9f2211ac4ba7d
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index 0ad390a..c06f0d2 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -39,6 +39,7 @@
 #include <minikin/Layout.h>
 #include "MinikinSkia.h"
 #include "MinikinUtils.h"
+#include "Paint.h"
 #include "TypefaceImpl.h"
 
 // temporary for debugging
@@ -61,47 +62,47 @@
 static jclass   gFontMetricsInt_class;
 static JMetricsID gFontMetricsInt_fieldID;
 
-static void defaultSettingsForAndroid(SkPaint* paint) {
+static void defaultSettingsForAndroid(Paint* paint) {
     // GlyphID encoding is required because we are using Harfbuzz shaping
-    paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+    paint->setTextEncoding(Paint::kGlyphID_TextEncoding);
 
     SkPaintOptionsAndroid paintOpts = paint->getPaintOptionsAndroid();
     paintOpts.setUseFontFallbacks(true);
     paint->setPaintOptionsAndroid(paintOpts);
 }
 
-class SkPaintGlue {
+class PaintGlue {
 public:
     enum MoveOpt {
         AFTER, AT_OR_AFTER, BEFORE, AT_OR_BEFORE, AT
     };
 
     static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         delete obj;
     }
 
     static jlong init(JNIEnv* env, jobject clazz) {
-        SkPaint* obj = new SkPaint();
+        Paint* obj = new Paint();
         defaultSettingsForAndroid(obj);
         return reinterpret_cast<jlong>(obj);
     }
 
     static jlong initWithPaint(JNIEnv* env, jobject clazz, jlong paintHandle) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
-        SkPaint* obj = new SkPaint(*paint);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
+        Paint* obj = new Paint(*paint);
         return reinterpret_cast<jlong>(obj);
     }
 
     static void reset(JNIEnv* env, jobject clazz, jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         obj->reset();
         defaultSettingsForAndroid(obj);
     }
 
     static void assign(JNIEnv* env, jobject clazz, jlong dstPaintHandle, jlong srcPaintHandle) {
-        SkPaint* dst = reinterpret_cast<SkPaint*>(dstPaintHandle);
-        const SkPaint* src = reinterpret_cast<SkPaint*>(srcPaintHandle);
+        Paint* dst = reinterpret_cast<Paint*>(dstPaintHandle);
+        const Paint* src = reinterpret_cast<Paint*>(srcPaintHandle);
         *dst = *src;
     }
 
@@ -110,10 +111,10 @@
 
     static jint getFlags(JNIEnv* env, jobject paint) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint* nativePaint = GraphicsJNI::getNativePaint(env, paint);
+        Paint* nativePaint = GraphicsJNI::getNativePaint(env, paint);
         uint32_t result = nativePaint->getFlags();
         result &= ~sFilterBitmapFlag; // Filtering no longer stored in this bit. Mask away.
-        if (nativePaint->getFilterLevel() != SkPaint::kNone_FilterLevel) {
+        if (nativePaint->getFilterLevel() != Paint::kNone_FilterLevel) {
             result |= sFilterBitmapFlag;
         }
         return static_cast<jint>(result);
@@ -121,11 +122,11 @@
 
     static void setFlags(JNIEnv* env, jobject paint, jint flags) {
         NPE_CHECK_RETURN_VOID(env, paint);
-        SkPaint* nativePaint = GraphicsJNI::getNativePaint(env, paint);
+        Paint* nativePaint = GraphicsJNI::getNativePaint(env, paint);
         // Instead of modifying 0x02, change the filter level.
         nativePaint->setFilterLevel(flags & sFilterBitmapFlag
-                ? SkPaint::kLow_FilterLevel
-                : SkPaint::kNone_FilterLevel);
+                ? Paint::kLow_FilterLevel
+                : Paint::kNone_FilterLevel);
         // Don't pass through filter flag, which is no longer stored in paint's flags.
         flags &= ~sFilterBitmapFlag;
         // Use the existing value for 0x02.
@@ -137,13 +138,13 @@
     static jint getHinting(JNIEnv* env, jobject paint) {
         NPE_CHECK_RETURN_ZERO(env, paint);
         return GraphicsJNI::getNativePaint(env, paint)->getHinting()
-                == SkPaint::kNo_Hinting ? 0 : 1;
+                == Paint::kNo_Hinting ? 0 : 1;
     }
 
     static void setHinting(JNIEnv* env, jobject paint, jint mode) {
         NPE_CHECK_RETURN_VOID(env, paint);
         GraphicsJNI::getNativePaint(env, paint)->setHinting(
-                mode == 0 ? SkPaint::kNo_Hinting : SkPaint::kNormal_Hinting);
+                mode == 0 ? Paint::kNo_Hinting : Paint::kNormal_Hinting);
     }
 
     static void setAntiAlias(JNIEnv* env, jobject paint, jboolean aa) {
@@ -179,7 +180,7 @@
     static void setFilterBitmap(JNIEnv* env, jobject paint, jboolean filterBitmap) {
         NPE_CHECK_RETURN_VOID(env, paint);
         GraphicsJNI::getNativePaint(env, paint)->setFilterLevel(
-                filterBitmap ? SkPaint::kLow_FilterLevel : SkPaint::kNone_FilterLevel);
+                filterBitmap ? Paint::kLow_FilterLevel : Paint::kNone_FilterLevel);
     }
 
     static void setDither(JNIEnv* env, jobject paint, jboolean dither) {
@@ -188,13 +189,13 @@
     }
 
     static jint getStyle(JNIEnv* env, jobject clazz,jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         return static_cast<jint>(obj->getStyle());
     }
 
     static void setStyle(JNIEnv* env, jobject clazz, jlong objHandle, jint styleHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
-        SkPaint::Style style = static_cast<SkPaint::Style>(styleHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
+        Paint::Style style = static_cast<Paint::Style>(styleHandle);
         obj->setStyle(style);
     }
 
@@ -243,83 +244,83 @@
     }
 
     static jint getStrokeCap(JNIEnv* env, jobject clazz, jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         return static_cast<jint>(obj->getStrokeCap());
     }
 
     static void setStrokeCap(JNIEnv* env, jobject clazz, jlong objHandle, jint capHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
-        SkPaint::Cap cap = static_cast<SkPaint::Cap>(capHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
+        Paint::Cap cap = static_cast<Paint::Cap>(capHandle);
         obj->setStrokeCap(cap);
     }
 
     static jint getStrokeJoin(JNIEnv* env, jobject clazz, jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         return static_cast<jint>(obj->getStrokeJoin());
     }
 
     static void setStrokeJoin(JNIEnv* env, jobject clazz, jlong objHandle, jint joinHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
-        SkPaint::Join join = (SkPaint::Join) joinHandle;
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
+        Paint::Join join = (Paint::Join) joinHandle;
         obj->setStrokeJoin(join);
     }
 
     static jboolean getFillPath(JNIEnv* env, jobject clazz, jlong objHandle, jlong srcHandle, jlong dstHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkPath* src = reinterpret_cast<SkPath*>(srcHandle);
         SkPath* dst = reinterpret_cast<SkPath*>(dstHandle);
         return obj->getFillPath(*src, dst) ? JNI_TRUE : JNI_FALSE;
     }
 
     static jlong setShader(JNIEnv* env, jobject clazz, jlong objHandle, jlong shaderHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkShader* shader = reinterpret_cast<SkShader*>(shaderHandle);
         return reinterpret_cast<jlong>(obj->setShader(shader));
     }
 
     static jlong setColorFilter(JNIEnv* env, jobject clazz, jlong objHandle, jlong filterHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint *>(objHandle);
+        Paint* obj = reinterpret_cast<Paint *>(objHandle);
         SkColorFilter* filter  = reinterpret_cast<SkColorFilter *>(filterHandle);
         return reinterpret_cast<jlong>(obj->setColorFilter(filter));
     }
 
     static jlong setXfermode(JNIEnv* env, jobject clazz, jlong objHandle, jlong xfermodeHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkXfermode* xfermode = reinterpret_cast<SkXfermode*>(xfermodeHandle);
         return reinterpret_cast<jlong>(obj->setXfermode(xfermode));
     }
 
     static jlong setPathEffect(JNIEnv* env, jobject clazz, jlong objHandle, jlong effectHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkPathEffect* effect  = reinterpret_cast<SkPathEffect*>(effectHandle);
         return reinterpret_cast<jlong>(obj->setPathEffect(effect));
     }
 
     static jlong setMaskFilter(JNIEnv* env, jobject clazz, jlong objHandle, jlong maskfilterHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkMaskFilter* maskfilter  = reinterpret_cast<SkMaskFilter*>(maskfilterHandle);
         return reinterpret_cast<jlong>(obj->setMaskFilter(maskfilter));
     }
 
     static jlong setTypeface(JNIEnv* env, jobject clazz, jlong objHandle, jlong typefaceHandle) {
-        // TODO: in Paint refactoring, set typeface on android Paint, not SkPaint
+        // TODO: in Paint refactoring, set typeface on android Paint, not Paint
         return NULL;
     }
 
     static jlong setRasterizer(JNIEnv* env, jobject clazz, jlong objHandle, jlong rasterizerHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         SkAutoTUnref<SkRasterizer> rasterizer(GraphicsJNI::refNativeRasterizer(rasterizerHandle));
         return reinterpret_cast<jlong>(obj->setRasterizer(rasterizer));
     }
 
     static jint getTextAlign(JNIEnv* env, jobject clazz, jlong objHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         return static_cast<jint>(obj->getTextAlign());
     }
 
     static void setTextAlign(JNIEnv* env, jobject clazz, jlong objHandle, jint alignHandle) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
-        SkPaint::Align align = static_cast<SkPaint::Align>(alignHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
+        Paint::Align align = static_cast<Paint::Align>(alignHandle);
         obj->setTextAlign(align);
     }
 
@@ -364,7 +365,7 @@
     }
 
     static void setTextLocale(JNIEnv* env, jobject clazz, jlong objHandle, jstring locale) {
-        SkPaint* obj = reinterpret_cast<SkPaint*>(objHandle);
+        Paint* obj = reinterpret_cast<Paint*>(objHandle);
         ScopedUtfChars localeChars(env, locale);
         char langTag[ULOC_FULLNAME_CAPACITY];
         toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str());
@@ -376,14 +377,14 @@
 
     static jboolean isElegantTextHeight(JNIEnv* env, jobject paint) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint* obj = GraphicsJNI::getNativePaint(env, paint);
+        Paint* obj = GraphicsJNI::getNativePaint(env, paint);
         SkPaintOptionsAndroid paintOpts = obj->getPaintOptionsAndroid();
         return paintOpts.getFontVariant() == SkPaintOptionsAndroid::kElegant_Variant;
     }
 
     static void setElegantTextHeight(JNIEnv* env, jobject paint, jboolean aa) {
         NPE_CHECK_RETURN_VOID(env, paint);
-        SkPaint* obj = GraphicsJNI::getNativePaint(env, paint);
+        Paint* obj = GraphicsJNI::getNativePaint(env, paint);
         SkPaintOptionsAndroid::FontVariant variant =
             aa ? SkPaintOptionsAndroid::kElegant_Variant :
             SkPaintOptionsAndroid::kDefault_Variant;
@@ -422,13 +423,13 @@
         GraphicsJNI::getNativePaint(env, paint)->setTextSkewX(skewX);
     }
 
-    static SkScalar getMetricsInternal(JNIEnv* env, jobject jpaint, SkPaint::FontMetrics *metrics) {
+    static SkScalar getMetricsInternal(JNIEnv* env, jobject jpaint, Paint::FontMetrics *metrics) {
         const int kElegantTop = 2500;
         const int kElegantBottom = -1000;
         const int kElegantAscent = 1900;
         const int kElegantDescent = -500;
         const int kElegantLeading = 0;
-        SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
+        Paint* paint = GraphicsJNI::getNativePaint(env, jpaint);
         TypefaceImpl* typeface = GraphicsJNI::getNativeTypeface(env, jpaint);
         typeface = TypefaceImpl_resolveDefault(typeface);
         FakedFont baseFont = typeface->fFontCollection->baseFontFaked(typeface->fStyle);
@@ -456,21 +457,21 @@
 
     static jfloat ascent(JNIEnv* env, jobject paint) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint::FontMetrics metrics;
+        Paint::FontMetrics metrics;
         getMetricsInternal(env, paint, &metrics);
         return SkScalarToFloat(metrics.fAscent);
     }
 
     static jfloat descent(JNIEnv* env, jobject paint) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint::FontMetrics metrics;
+        Paint::FontMetrics metrics;
         getMetricsInternal(env, paint, &metrics);
         return SkScalarToFloat(metrics.fDescent);
     }
 
     static jfloat getFontMetrics(JNIEnv* env, jobject paint, jobject metricsObj) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint::FontMetrics metrics;
+        Paint::FontMetrics metrics;
         SkScalar spacing = getMetricsInternal(env, paint, &metrics);
 
         if (metricsObj) {
@@ -486,7 +487,7 @@
 
     static jint getFontMetricsInt(JNIEnv* env, jobject paint, jobject metricsObj) {
         NPE_CHECK_RETURN_ZERO(env, paint);
-        SkPaint::FontMetrics metrics;
+        Paint::FontMetrics metrics;
 
         getMetricsInternal(env, paint, &metrics);
         int ascent = SkScalarRoundToInt(metrics.fAscent);
@@ -518,7 +519,7 @@
             return 0;
         }
 
-        SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
+        Paint* paint = GraphicsJNI::getNativePaint(env, jpaint);
         const jchar* textArray = env->GetCharArrayElements(text, NULL);
         jfloat result = 0;
 
@@ -547,7 +548,7 @@
         }
 
         const jchar* textArray = env->GetStringChars(text, NULL);
-        SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
+        Paint* paint = GraphicsJNI::getNativePaint(env, jpaint);
         jfloat width = 0;
 
         Layout layout;
@@ -570,7 +571,7 @@
         }
 
         const jchar* textArray = env->GetStringChars(text, NULL);
-        SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
+        Paint* paint = GraphicsJNI::getNativePaint(env, jpaint);
         jfloat width = 0;
 
         Layout layout;
@@ -583,7 +584,7 @@
         return width;
     }
 
-    static int dotextwidths(JNIEnv* env, SkPaint* paint, TypefaceImpl* typeface, const jchar text[], int count,
+    static int dotextwidths(JNIEnv* env, Paint* paint, TypefaceImpl* typeface, const jchar text[], int count,
             jfloatArray widths, jint bidiFlags) {
         NPE_CHECK_RETURN_ZERO(env, paint);
         NPE_CHECK_RETURN_ZERO(env, text);
@@ -614,7 +615,7 @@
 
     static jint getTextWidths___CIII_F(JNIEnv* env, jobject clazz, jlong paintHandle, jlong typefaceHandle, jcharArray text,
             jint index, jint count, jint bidiFlags, jfloatArray widths) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         const jchar* textArray = env->GetCharArrayElements(text, NULL);
         count = dotextwidths(env, paint, typeface, textArray + index, count, widths, bidiFlags);
@@ -625,7 +626,7 @@
 
     static jint getTextWidths__StringIII_F(JNIEnv* env, jobject clazz, jlong paintHandle, jlong typefaceHandle, jstring text,
             jint start, jint end, jint bidiFlags, jfloatArray widths) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         const jchar* textArray = env->GetStringChars(text, NULL);
         int count = dotextwidths(env, paint, typeface, textArray + start, end - start, widths, bidiFlags);
@@ -633,7 +634,7 @@
         return count;
     }
 
-    static jfloat doTextRunAdvances(JNIEnv *env, SkPaint *paint, TypefaceImpl* typeface, const jchar *text,
+    static jfloat doTextRunAdvances(JNIEnv *env, Paint *paint, TypefaceImpl* typeface, const jchar *text,
                                     jint start, jint count, jint contextCount, jboolean isRtl,
                                     jfloatArray advances, jint advancesIndex) {
         NPE_CHECK_RETURN_ZERO(env, paint);
@@ -675,7 +676,7 @@
             jlong typefaceHandle,
             jcharArray text, jint index, jint count, jint contextIndex, jint contextCount,
             jboolean isRtl, jfloatArray advances, jint advancesIndex) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         jchar* textArray = env->GetCharArrayElements(text, NULL);
         jfloat result = doTextRunAdvances(env, paint, typeface, textArray + contextIndex,
@@ -688,7 +689,7 @@
             jlong typefaceHandle,
             jstring text, jint start, jint end, jint contextStart, jint contextEnd, jboolean isRtl,
             jfloatArray advances, jint advancesIndex) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         const jchar* textArray = env->GetStringChars(text, NULL);
         jfloat result = doTextRunAdvances(env, paint, typeface, textArray + contextStart,
@@ -698,7 +699,7 @@
         return result;
     }
 
-    static jint doTextRunCursor(JNIEnv *env, SkPaint* paint, const jchar *text, jint start,
+    static jint doTextRunCursor(JNIEnv *env, Paint* paint, const jchar *text, jint start,
             jint count, jint flags, jint offset, jint opt) {
         GraphemeBreak::MoveOpt moveOpt = GraphemeBreak::MoveOpt(opt);
         size_t result = GraphemeBreak::getTextRunCursor(text, start, count, offset, moveOpt);
@@ -707,7 +708,7 @@
 
     static jint getTextRunCursor___C(JNIEnv* env, jobject clazz, jlong paintHandle, jcharArray text,
             jint contextStart, jint contextCount, jint dir, jint offset, jint cursorOpt) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         jchar* textArray = env->GetCharArrayElements(text, NULL);
         jint result = doTextRunCursor(env, paint, textArray, contextStart, contextCount, dir,
                 offset, cursorOpt);
@@ -717,7 +718,7 @@
 
     static jint getTextRunCursor__String(JNIEnv* env, jobject clazz, jlong paintHandle, jstring text,
             jint contextStart, jint contextEnd, jint dir, jint offset, jint cursorOpt) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         const jchar* textArray = env->GetStringChars(text, NULL);
         jint result = doTextRunCursor(env, paint, textArray, contextStart,
                 contextEnd - contextStart, dir, offset, cursorOpt);
@@ -727,7 +728,7 @@
 
     class GetTextFunctor {
     public:
-        GetTextFunctor(const Layout& layout, SkPath* path, jfloat x, jfloat y, SkPaint* paint,
+        GetTextFunctor(const Layout& layout, SkPath* path, jfloat x, jfloat y, Paint* paint,
                     uint16_t* glyphs, SkPoint* pos)
                 : layout(layout), path(path), x(x), y(y), paint(paint), glyphs(glyphs), pos(pos) {
         }
@@ -750,13 +751,13 @@
         SkPath* path;
         jfloat x;
         jfloat y;
-        SkPaint* paint;
+        Paint* paint;
         uint16_t* glyphs;
         SkPoint* pos;
         SkPath tmpPath;
     };
 
-    static void getTextPath(JNIEnv* env, SkPaint* paint, TypefaceImpl* typeface, const jchar* text,
+    static void getTextPath(JNIEnv* env, Paint* paint, TypefaceImpl* typeface, const jchar* text,
             jint count, jint bidiFlags, jfloat x, jfloat y, SkPath* path) {
         Layout layout;
         std::string css = MinikinUtils::setLayoutProperties(&layout, paint, bidiFlags, typeface);
@@ -766,9 +767,9 @@
         SkPoint* pos = new SkPoint[nGlyphs];
 
         x += MinikinUtils::xOffsetForTextAlign(paint, layout);
-        SkPaint::Align align = paint->getTextAlign();
-        paint->setTextAlign(SkPaint::kLeft_Align);
-        paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding);
+        Paint::Align align = paint->getTextAlign();
+        paint->setTextAlign(Paint::kLeft_Align);
+        paint->setTextEncoding(Paint::kGlyphID_TextEncoding);
         GetTextFunctor f(layout, path, x, y, paint, glyphs, pos);
         MinikinUtils::forFontRun(layout, paint, f);
         paint->setTextAlign(align);
@@ -779,7 +780,7 @@
     static void getTextPath___C(JNIEnv* env, jobject clazz, jlong paintHandle,
             jlong typefaceHandle, jint bidiFlags,
             jcharArray text, jint index, jint count, jfloat x, jfloat y, jlong pathHandle) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
         const jchar* textArray = env->GetCharArrayElements(text, NULL);
@@ -790,7 +791,7 @@
     static void getTextPath__String(JNIEnv* env, jobject clazz, jlong paintHandle,
             jlong typefaceHandle, jint bidiFlags,
             jstring text, jint start, jint end, jfloat x, jfloat y, jlong pathHandle) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
         const jchar* textArray = env->GetStringChars(text, NULL);
@@ -800,7 +801,7 @@
 
     static void setShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle, jfloat radius,
                                jfloat dx, jfloat dy, jint color) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         if (radius <= 0) {
             paint->setLooper(NULL);
         }
@@ -811,13 +812,13 @@
     }
 
     static jboolean hasShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle) {
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         return paint->getLooper() && paint->getLooper()->asABlurShadow(NULL);
     }
 
-    static int breakText(JNIEnv* env, const SkPaint& paint, TypefaceImpl* typeface, const jchar text[],
+    static int breakText(JNIEnv* env, const Paint& paint, TypefaceImpl* typeface, const jchar text[],
                          int count, float maxWidth, jint bidiFlags, jfloatArray jmeasured,
-                         SkPaint::TextBufferDirection textBufferDirection) {
+                         Paint::TextBufferDirection textBufferDirection) {
         size_t measuredCount = 0;
         float measured = 0;
 
@@ -826,7 +827,7 @@
         layout.doLayout(text, 0, count, count, css);
         float* advances = new float[count];
         layout.getAdvances(advances);
-        const bool forwardScan = (textBufferDirection == SkPaint::kForward_TextBufferDirection);
+        const bool forwardScan = (textBufferDirection == Paint::kForward_TextBufferDirection);
         for (int i = 0; i < count; i++) {
             // traverse in the given direction
             int index = forwardScan ? i : (count - i - 1);
@@ -854,16 +855,16 @@
             jint index, jint count, jfloat maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
         NPE_CHECK_RETURN_ZERO(env, jtext);
 
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
 
-        SkPaint::TextBufferDirection tbd;
+        Paint::TextBufferDirection tbd;
         if (count < 0) {
-            tbd = SkPaint::kBackward_TextBufferDirection;
+            tbd = Paint::kBackward_TextBufferDirection;
             count = -count;
         }
         else {
-            tbd = SkPaint::kForward_TextBufferDirection;
+            tbd = Paint::kForward_TextBufferDirection;
         }
 
         if ((index < 0) || (index + count > env->GetArrayLength(jtext))) {
@@ -883,12 +884,12 @@
                 jboolean forwards, jfloat maxWidth, jint bidiFlags, jfloatArray jmeasuredWidth) {
         NPE_CHECK_RETURN_ZERO(env, jtext);
 
-        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
 
-        SkPaint::TextBufferDirection tbd = forwards ?
-                                        SkPaint::kForward_TextBufferDirection :
-                                        SkPaint::kBackward_TextBufferDirection;
+        Paint::TextBufferDirection tbd = forwards ?
+                                        Paint::kForward_TextBufferDirection :
+                                        Paint::kBackward_TextBufferDirection;
 
         int count = env->GetStringLength(jtext);
         const jchar* text = env->GetStringChars(jtext, NULL);
@@ -898,7 +899,7 @@
     }
 
     static void doTextBounds(JNIEnv* env, const jchar* text, int count, jobject bounds,
-            const SkPaint& paint, TypefaceImpl* typeface, jint bidiFlags) {
+            const Paint& paint, TypefaceImpl* typeface, jint bidiFlags) {
         SkRect  r;
         SkIRect ir;
 
@@ -917,7 +918,7 @@
 
     static void getStringBounds(JNIEnv* env, jobject, jlong paintHandle, jlong typefaceHandle,
                                 jstring text, jint start, jint end, jint bidiFlags, jobject bounds) {
-        const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);;
+        const Paint* paint = reinterpret_cast<Paint*>(paintHandle);;
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         const jchar* textArray = env->GetStringChars(text, NULL);
         doTextBounds(env, textArray + start, end - start, bounds, *paint, typeface, bidiFlags);
@@ -926,7 +927,7 @@
 
     static void getCharArrayBounds(JNIEnv* env, jobject, jlong paintHandle, jlong typefaceHandle,
                         jcharArray text, jint index, jint count, jint bidiFlags, jobject bounds) {
-        const SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
+        const Paint* paint = reinterpret_cast<Paint*>(paintHandle);
         TypefaceImpl* typeface = reinterpret_cast<TypefaceImpl*>(typefaceHandle);
         const jchar* textArray = env->GetCharArrayElements(text, NULL);
         doTextBounds(env, textArray + index, count, bounds, *paint, typeface, bidiFlags);
@@ -937,83 +938,83 @@
 };
 
 static JNINativeMethod methods[] = {
-    {"finalizer", "(J)V", (void*) SkPaintGlue::finalizer},
-    {"native_init","()J", (void*) SkPaintGlue::init},
-    {"native_initWithPaint","(J)J", (void*) SkPaintGlue::initWithPaint},
-    {"native_reset","(J)V", (void*) SkPaintGlue::reset},
-    {"native_set","(JJ)V", (void*) SkPaintGlue::assign},
-    {"getFlags","()I", (void*) SkPaintGlue::getFlags},
-    {"setFlags","(I)V", (void*) SkPaintGlue::setFlags},
-    {"getHinting","()I", (void*) SkPaintGlue::getHinting},
-    {"setHinting","(I)V", (void*) SkPaintGlue::setHinting},
-    {"setAntiAlias","(Z)V", (void*) SkPaintGlue::setAntiAlias},
-    {"setSubpixelText","(Z)V", (void*) SkPaintGlue::setSubpixelText},
-    {"setLinearText","(Z)V", (void*) SkPaintGlue::setLinearText},
-    {"setUnderlineText","(Z)V", (void*) SkPaintGlue::setUnderlineText},
-    {"setStrikeThruText","(Z)V", (void*) SkPaintGlue::setStrikeThruText},
-    {"setFakeBoldText","(Z)V", (void*) SkPaintGlue::setFakeBoldText},
-    {"setFilterBitmap","(Z)V", (void*) SkPaintGlue::setFilterBitmap},
-    {"setDither","(Z)V", (void*) SkPaintGlue::setDither},
-    {"native_getStyle","(J)I", (void*) SkPaintGlue::getStyle},
-    {"native_setStyle","(JI)V", (void*) SkPaintGlue::setStyle},
-    {"getColor","()I", (void*) SkPaintGlue::getColor},
-    {"setColor","(I)V", (void*) SkPaintGlue::setColor},
-    {"getAlpha","()I", (void*) SkPaintGlue::getAlpha},
-    {"setAlpha","(I)V", (void*) SkPaintGlue::setAlpha},
-    {"getStrokeWidth","()F", (void*) SkPaintGlue::getStrokeWidth},
-    {"setStrokeWidth","(F)V", (void*) SkPaintGlue::setStrokeWidth},
-    {"getStrokeMiter","()F", (void*) SkPaintGlue::getStrokeMiter},
-    {"setStrokeMiter","(F)V", (void*) SkPaintGlue::setStrokeMiter},
-    {"native_getStrokeCap","(J)I", (void*) SkPaintGlue::getStrokeCap},
-    {"native_setStrokeCap","(JI)V", (void*) SkPaintGlue::setStrokeCap},
-    {"native_getStrokeJoin","(J)I", (void*) SkPaintGlue::getStrokeJoin},
-    {"native_setStrokeJoin","(JI)V", (void*) SkPaintGlue::setStrokeJoin},
-    {"native_getFillPath","(JJJ)Z", (void*) SkPaintGlue::getFillPath},
-    {"native_setShader","(JJ)J", (void*) SkPaintGlue::setShader},
-    {"native_setColorFilter","(JJ)J", (void*) SkPaintGlue::setColorFilter},
-    {"native_setXfermode","(JJ)J", (void*) SkPaintGlue::setXfermode},
-    {"native_setPathEffect","(JJ)J", (void*) SkPaintGlue::setPathEffect},
-    {"native_setMaskFilter","(JJ)J", (void*) SkPaintGlue::setMaskFilter},
-    {"native_setTypeface","(JJ)J", (void*) SkPaintGlue::setTypeface},
-    {"native_setRasterizer","(JJ)J", (void*) SkPaintGlue::setRasterizer},
-    {"native_getTextAlign","(J)I", (void*) SkPaintGlue::getTextAlign},
-    {"native_setTextAlign","(JI)V", (void*) SkPaintGlue::setTextAlign},
-    {"native_setTextLocale","(JLjava/lang/String;)V", (void*) SkPaintGlue::setTextLocale},
-    {"isElegantTextHeight","()Z", (void*) SkPaintGlue::isElegantTextHeight},
-    {"setElegantTextHeight","(Z)V", (void*) SkPaintGlue::setElegantTextHeight},
-    {"getTextSize","()F", (void*) SkPaintGlue::getTextSize},
-    {"setTextSize","(F)V", (void*) SkPaintGlue::setTextSize},
-    {"getTextScaleX","()F", (void*) SkPaintGlue::getTextScaleX},
-    {"setTextScaleX","(F)V", (void*) SkPaintGlue::setTextScaleX},
-    {"getTextSkewX","()F", (void*) SkPaintGlue::getTextSkewX},
-    {"setTextSkewX","(F)V", (void*) SkPaintGlue::setTextSkewX},
-    {"ascent","()F", (void*) SkPaintGlue::ascent},
-    {"descent","()F", (void*) SkPaintGlue::descent},
-    {"getFontMetrics", "(Landroid/graphics/Paint$FontMetrics;)F", (void*)SkPaintGlue::getFontMetrics},
-    {"getFontMetricsInt", "(Landroid/graphics/Paint$FontMetricsInt;)I", (void*)SkPaintGlue::getFontMetricsInt},
-    {"native_measureText","([CIII)F", (void*) SkPaintGlue::measureText_CIII},
-    {"native_measureText","(Ljava/lang/String;I)F", (void*) SkPaintGlue::measureText_StringI},
-    {"native_measureText","(Ljava/lang/String;III)F", (void*) SkPaintGlue::measureText_StringIII},
-    {"native_breakText","(JJ[CIIFI[F)I", (void*) SkPaintGlue::breakTextC},
-    {"native_breakText","(JJLjava/lang/String;ZFI[F)I", (void*) SkPaintGlue::breakTextS},
-    {"native_getTextWidths","(JJ[CIII[F)I", (void*) SkPaintGlue::getTextWidths___CIII_F},
-    {"native_getTextWidths","(JJLjava/lang/String;III[F)I", (void*) SkPaintGlue::getTextWidths__StringIII_F},
+    {"finalizer", "(J)V", (void*) PaintGlue::finalizer},
+    {"native_init","()J", (void*) PaintGlue::init},
+    {"native_initWithPaint","(J)J", (void*) PaintGlue::initWithPaint},
+    {"native_reset","(J)V", (void*) PaintGlue::reset},
+    {"native_set","(JJ)V", (void*) PaintGlue::assign},
+    {"getFlags","()I", (void*) PaintGlue::getFlags},
+    {"setFlags","(I)V", (void*) PaintGlue::setFlags},
+    {"getHinting","()I", (void*) PaintGlue::getHinting},
+    {"setHinting","(I)V", (void*) PaintGlue::setHinting},
+    {"setAntiAlias","(Z)V", (void*) PaintGlue::setAntiAlias},
+    {"setSubpixelText","(Z)V", (void*) PaintGlue::setSubpixelText},
+    {"setLinearText","(Z)V", (void*) PaintGlue::setLinearText},
+    {"setUnderlineText","(Z)V", (void*) PaintGlue::setUnderlineText},
+    {"setStrikeThruText","(Z)V", (void*) PaintGlue::setStrikeThruText},
+    {"setFakeBoldText","(Z)V", (void*) PaintGlue::setFakeBoldText},
+    {"setFilterBitmap","(Z)V", (void*) PaintGlue::setFilterBitmap},
+    {"setDither","(Z)V", (void*) PaintGlue::setDither},
+    {"native_getStyle","(J)I", (void*) PaintGlue::getStyle},
+    {"native_setStyle","(JI)V", (void*) PaintGlue::setStyle},
+    {"getColor","()I", (void*) PaintGlue::getColor},
+    {"setColor","(I)V", (void*) PaintGlue::setColor},
+    {"getAlpha","()I", (void*) PaintGlue::getAlpha},
+    {"setAlpha","(I)V", (void*) PaintGlue::setAlpha},
+    {"getStrokeWidth","()F", (void*) PaintGlue::getStrokeWidth},
+    {"setStrokeWidth","(F)V", (void*) PaintGlue::setStrokeWidth},
+    {"getStrokeMiter","()F", (void*) PaintGlue::getStrokeMiter},
+    {"setStrokeMiter","(F)V", (void*) PaintGlue::setStrokeMiter},
+    {"native_getStrokeCap","(J)I", (void*) PaintGlue::getStrokeCap},
+    {"native_setStrokeCap","(JI)V", (void*) PaintGlue::setStrokeCap},
+    {"native_getStrokeJoin","(J)I", (void*) PaintGlue::getStrokeJoin},
+    {"native_setStrokeJoin","(JI)V", (void*) PaintGlue::setStrokeJoin},
+    {"native_getFillPath","(JJJ)Z", (void*) PaintGlue::getFillPath},
+    {"native_setShader","(JJ)J", (void*) PaintGlue::setShader},
+    {"native_setColorFilter","(JJ)J", (void*) PaintGlue::setColorFilter},
+    {"native_setXfermode","(JJ)J", (void*) PaintGlue::setXfermode},
+    {"native_setPathEffect","(JJ)J", (void*) PaintGlue::setPathEffect},
+    {"native_setMaskFilter","(JJ)J", (void*) PaintGlue::setMaskFilter},
+    {"native_setTypeface","(JJ)J", (void*) PaintGlue::setTypeface},
+    {"native_setRasterizer","(JJ)J", (void*) PaintGlue::setRasterizer},
+    {"native_getTextAlign","(J)I", (void*) PaintGlue::getTextAlign},
+    {"native_setTextAlign","(JI)V", (void*) PaintGlue::setTextAlign},
+    {"native_setTextLocale","(JLjava/lang/String;)V", (void*) PaintGlue::setTextLocale},
+    {"isElegantTextHeight","()Z", (void*) PaintGlue::isElegantTextHeight},
+    {"setElegantTextHeight","(Z)V", (void*) PaintGlue::setElegantTextHeight},
+    {"getTextSize","()F", (void*) PaintGlue::getTextSize},
+    {"setTextSize","(F)V", (void*) PaintGlue::setTextSize},
+    {"getTextScaleX","()F", (void*) PaintGlue::getTextScaleX},
+    {"setTextScaleX","(F)V", (void*) PaintGlue::setTextScaleX},
+    {"getTextSkewX","()F", (void*) PaintGlue::getTextSkewX},
+    {"setTextSkewX","(F)V", (void*) PaintGlue::setTextSkewX},
+    {"ascent","()F", (void*) PaintGlue::ascent},
+    {"descent","()F", (void*) PaintGlue::descent},
+    {"getFontMetrics", "(Landroid/graphics/Paint$FontMetrics;)F", (void*)PaintGlue::getFontMetrics},
+    {"getFontMetricsInt", "(Landroid/graphics/Paint$FontMetricsInt;)I", (void*)PaintGlue::getFontMetricsInt},
+    {"native_measureText","([CIII)F", (void*) PaintGlue::measureText_CIII},
+    {"native_measureText","(Ljava/lang/String;I)F", (void*) PaintGlue::measureText_StringI},
+    {"native_measureText","(Ljava/lang/String;III)F", (void*) PaintGlue::measureText_StringIII},
+    {"native_breakText","(JJ[CIIFI[F)I", (void*) PaintGlue::breakTextC},
+    {"native_breakText","(JJLjava/lang/String;ZFI[F)I", (void*) PaintGlue::breakTextS},
+    {"native_getTextWidths","(JJ[CIII[F)I", (void*) PaintGlue::getTextWidths___CIII_F},
+    {"native_getTextWidths","(JJLjava/lang/String;III[F)I", (void*) PaintGlue::getTextWidths__StringIII_F},
     {"native_getTextRunAdvances","(JJ[CIIIIZ[FI)F",
-        (void*) SkPaintGlue::getTextRunAdvances___CIIIIZ_FI},
+        (void*) PaintGlue::getTextRunAdvances___CIIIIZ_FI},
     {"native_getTextRunAdvances","(JJLjava/lang/String;IIIIZ[FI)F",
-        (void*) SkPaintGlue::getTextRunAdvances__StringIIIIZ_FI},
+        (void*) PaintGlue::getTextRunAdvances__StringIIIIZ_FI},
 
-    {"native_getTextRunCursor", "(J[CIIIII)I", (void*) SkPaintGlue::getTextRunCursor___C},
+    {"native_getTextRunCursor", "(J[CIIIII)I", (void*) PaintGlue::getTextRunCursor___C},
     {"native_getTextRunCursor", "(JLjava/lang/String;IIIII)I",
-        (void*) SkPaintGlue::getTextRunCursor__String},
-    {"native_getTextPath","(JJI[CIIFFJ)V", (void*) SkPaintGlue::getTextPath___C},
-    {"native_getTextPath","(JJILjava/lang/String;IIFFJ)V", (void*) SkPaintGlue::getTextPath__String},
+        (void*) PaintGlue::getTextRunCursor__String},
+    {"native_getTextPath","(JJI[CIIFFJ)V", (void*) PaintGlue::getTextPath___C},
+    {"native_getTextPath","(JJILjava/lang/String;IIFFJ)V", (void*) PaintGlue::getTextPath__String},
     {"nativeGetStringBounds", "(JJLjava/lang/String;IIILandroid/graphics/Rect;)V",
-                                        (void*) SkPaintGlue::getStringBounds },
+                                        (void*) PaintGlue::getStringBounds },
     {"nativeGetCharArrayBounds", "(JJ[CIIILandroid/graphics/Rect;)V",
-                                    (void*) SkPaintGlue::getCharArrayBounds },
-    {"native_setShadowLayer", "(JFFFI)V", (void*)SkPaintGlue::setShadowLayer},
-    {"native_hasShadowLayer", "(J)Z", (void*)SkPaintGlue::hasShadowLayer}
+                                    (void*) PaintGlue::getCharArrayBounds },
+    {"native_setShadowLayer", "(JFFFI)V", (void*)PaintGlue::setShadowLayer},
+    {"native_hasShadowLayer", "(J)Z", (void*)PaintGlue::hasShadowLayer}
 };
 
 static jfieldID req_fieldID(jfieldID id) {