More layout Canvas/Paint implementation.

Change-Id: Ib3da4a4b2259dc7c53b24444b5c0b78cee15d387
diff --git a/bridge/src/android/graphics/Paint_Delegate.java b/bridge/src/android/graphics/Paint_Delegate.java
index f2602b5..6074bd3 100644
--- a/bridge/src/android/graphics/Paint_Delegate.java
+++ b/bridge/src/android/graphics/Paint_Delegate.java
@@ -77,6 +77,12 @@
     private float mTextScaleX;
     private float mTextSkewX;
 
+    private int mXfermode;
+    private int mColorFilter;
+    private int mShader;
+    private int mPathEffect;
+    private int mMaskFilter;
+
 
     // ---- Public Helper methods ----
 
@@ -92,6 +98,10 @@
         return mFonts;
     }
 
+    public boolean isAntiAliased() {
+        return (mFlags & Paint.ANTI_ALIAS_FLAG) != 0;
+    }
+
     public boolean isFilterBitmap() {
         return (mFlags & Paint.FILTER_BITMAP_FLAG) != 0;
     }
@@ -574,28 +584,58 @@
     }
 
     /*package*/ static int native_setShader(int native_object, int shader) {
-        // FIXME
-        throw new UnsupportedOperationException();
+        // get the delegate from the native int.
+        Paint_Delegate delegate = sManager.getDelegate(native_object);
+        if (delegate == null) {
+            assert false;
+            return shader;
+        }
+
+        return delegate.mShader = shader;
     }
 
     /*package*/ static int native_setColorFilter(int native_object, int filter) {
-        // FIXME
-        throw new UnsupportedOperationException();
+        // get the delegate from the native int.
+        Paint_Delegate delegate = sManager.getDelegate(native_object);
+        if (delegate == null) {
+            assert false;
+            return filter;
+        }
+
+        return delegate.mColorFilter = filter;
     }
 
     /*package*/ static int native_setXfermode(int native_object, int xfermode) {
-        // FIXME
-        throw new UnsupportedOperationException();
+        // get the delegate from the native int.
+        Paint_Delegate delegate = sManager.getDelegate(native_object);
+        if (delegate == null) {
+            assert false;
+            return xfermode;
+        }
+
+        return delegate.mXfermode = xfermode;
     }
 
     /*package*/ static int native_setPathEffect(int native_object, int effect) {
-        // FIXME
-        throw new UnsupportedOperationException();
+        // get the delegate from the native int.
+        Paint_Delegate delegate = sManager.getDelegate(native_object);
+        if (delegate == null) {
+            assert false;
+            return effect;
+        }
+
+        return delegate.mPathEffect = effect;
     }
 
     /*package*/ static int native_setMaskFilter(int native_object, int maskfilter) {
-        // FIXME
-        throw new UnsupportedOperationException();
+        // get the delegate from the native int.
+        Paint_Delegate delegate = sManager.getDelegate(native_object);
+        if (delegate == null) {
+            assert false;
+            return maskfilter;
+        }
+
+        return delegate.mMaskFilter = maskfilter;
     }
 
     /*package*/ static int native_setTypeface(int native_object, int typeface) {
@@ -778,6 +818,11 @@
         mTextSize = paint.mTextSize;
         mTextScaleX = paint.mTextScaleX;
         mTextSkewX = paint.mTextSkewX;
+        mXfermode = paint.mXfermode;
+        mColorFilter = paint.mColorFilter;
+        mShader = paint.mShader;
+        mPathEffect = paint.mPathEffect;
+        mMaskFilter = paint.mMaskFilter;
     }
 
     private void reset() {
@@ -793,6 +838,11 @@
         mTextSize = 20.f;
         mTextScaleX = 1.f;
         mTextSkewX = 0.f;
+        mXfermode = 0;
+        mColorFilter = 0;
+        mShader = 0;
+        mPathEffect = 0;
+        mMaskFilter = 0;
     }
 
     /**
@@ -877,7 +927,6 @@
 
     }
 
-
     private static void setFlag(Paint thisPaint, int flagMask, boolean flagValue) {
         // get the delegate from the native int.
         Paint_Delegate delegate = sManager.getDelegate(thisPaint.mNativePaint);