Merge "Merge "Fix message for screen unpinning" into nyc-mr2-dev am: b0181b634e am: 0cf4bd3bca"
diff --git a/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java
deleted file mode 100644
index 10cc572..0000000
--- a/tools/layoutlib/bridge/src/android/graphics/LayerRasterizer_Delegate.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.graphics;
-
-import com.android.layoutlib.bridge.impl.DelegateManager;
-import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
-
-/**
- * Delegate implementing the native methods of android.graphics.LayerRasterizer
- *
- * Through the layoutlib_create tool, the original native methods of LayerRasterizer have
- * been replaced by calls to methods of the same name in this delegate class.
- *
- * This class behaves like the original native implementation, but in Java, keeping previously
- * native data into its own objects and mapping them to int that are sent back and forth between
- * it and the original LayerRasterizer class.
- *
- * Because this extends {@link Rasterizer_Delegate}, there's no need to use a
- * {@link DelegateManager}, as all the Shader classes will be added to the manager
- * owned by {@link Rasterizer_Delegate}.
- *
- * @see Rasterizer_Delegate
- *
- */
-public class LayerRasterizer_Delegate extends Rasterizer_Delegate {
-
- // ---- delegate data ----
-
- // ---- Public Helper methods ----
-
- @Override
- public boolean isSupported() {
- return false;
- }
-
- @Override
- public String getSupportMessage() {
- return "Layer Rasterizers are not supported.";
- }
-
- // ---- native methods ----
-
- @LayoutlibDelegate
- /*package*/ static long nativeConstructor() {
- LayerRasterizer_Delegate newDelegate = new LayerRasterizer_Delegate();
- return sManager.addNewDelegate(newDelegate);
- }
-
- @LayoutlibDelegate
- /*package*/ static void nativeAddLayer(long native_layer, long native_paint, float dx, float dy) {
-
- }
-
- // ---- Private delegate/helper methods ----
-}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
index e68d8b3..9b8fa99 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
@@ -99,7 +99,6 @@
private Shader_Delegate mShader;
private PathEffect_Delegate mPathEffect;
private MaskFilter_Delegate mMaskFilter;
- private Rasterizer_Delegate mRasterizer;
private Locale mLocale = Locale.getDefault();
@@ -248,15 +247,6 @@
return mMaskFilter;
}
- /**
- * Returns the {@link Rasterizer} delegate or null if none have been set
- *
- * @return the delegate or null.
- */
- public Rasterizer_Delegate getRasterizer() {
- return mRasterizer;
- }
-
// ---- native methods ----
@LayoutlibDelegate
@@ -898,25 +888,6 @@
}
@LayoutlibDelegate
- /*package*/ static long nSetRasterizer(long native_object, long rasterizer) {
- // get the delegate from the native int.
- Paint_Delegate delegate = sManager.getDelegate(native_object);
- if (delegate == null) {
- return rasterizer;
- }
-
- delegate.mRasterizer = Rasterizer_Delegate.getDelegate(rasterizer);
-
- // since none of those are supported, display a fidelity warning right away
- if (delegate.mRasterizer != null && !delegate.mRasterizer.isSupported()) {
- Bridge.getLog().fidelityWarning(LayoutLog.TAG_RASTERIZER,
- delegate.mRasterizer.getSupportMessage(), null, null /*data*/);
- }
-
- return rasterizer;
- }
-
- @LayoutlibDelegate
/*package*/ static int nGetTextAlign(long native_object) {
// get the delegate from the native int.
Paint_Delegate delegate = sManager.getDelegate(native_object);
@@ -1235,7 +1206,6 @@
mShader = paint.mShader;
mPathEffect = paint.mPathEffect;
mMaskFilter = paint.mMaskFilter;
- mRasterizer = paint.mRasterizer;
mHintingMode = paint.mHintingMode;
if (needsFontUpdate) {
@@ -1262,7 +1232,6 @@
mShader = null;
mPathEffect = null;
mMaskFilter = null;
- mRasterizer = null;
updateFontObject();
mHintingMode = Paint.HINTING_ON;
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/PathMeasure_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/PathMeasure_Delegate.java
index fc9b4f7..7f707c9 100644
--- a/tools/layoutlib/bridge/src/android/graphics/PathMeasure_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/PathMeasure_Delegate.java
@@ -56,8 +56,8 @@
if (native_path != 0) {
if (forceClosed) {
// Copy the path and call close
- native_path = Path_Delegate.init2(native_path);
- Path_Delegate.native_close(native_path);
+ native_path = Path_Delegate.nInit(native_path);
+ Path_Delegate.nClose(native_path);
}
Path_Delegate pathDelegate = Path_Delegate.getDelegate(native_path);
@@ -108,8 +108,8 @@
if (native_path != 0) {
if (forceClosed) {
// Copy the path and call close
- native_path = Path_Delegate.init2(native_path);
- Path_Delegate.native_close(native_path);
+ native_path = Path_Delegate.nInit(native_path);
+ Path_Delegate.nClose(native_path);
}
Path_Delegate pathDelegate = Path_Delegate.getDelegate(native_path);
@@ -184,28 +184,28 @@
if (type != PathIterator.SEG_MOVETO) {
float[] lastPoint = new float[2];
iterator.getCurrentSegmentEnd(lastPoint);
- Path_Delegate.native_moveTo(native_dst_path, lastPoint[0], lastPoint[1]);
+ Path_Delegate.nMoveTo(native_dst_path, lastPoint[0], lastPoint[1]);
}
}
isZeroLength = isZeroLength && iterator.getCurrentSegmentLength() > 0;
switch (type) {
case PathIterator.SEG_MOVETO:
- Path_Delegate.native_moveTo(native_dst_path, points[0], points[1]);
+ Path_Delegate.nMoveTo(native_dst_path, points[0], points[1]);
break;
case PathIterator.SEG_LINETO:
- Path_Delegate.native_lineTo(native_dst_path, points[0], points[1]);
+ Path_Delegate.nLineTo(native_dst_path, points[0], points[1]);
break;
case PathIterator.SEG_CLOSE:
- Path_Delegate.native_close(native_dst_path);
+ Path_Delegate.nClose(native_dst_path);
break;
case PathIterator.SEG_CUBICTO:
- Path_Delegate.native_cubicTo(native_dst_path, points[0], points[1],
+ Path_Delegate.nCubicTo(native_dst_path, points[0], points[1],
points[2], points[3],
points[4], points[5]);
break;
case PathIterator.SEG_QUADTO:
- Path_Delegate.native_quadTo(native_dst_path, points[0], points[1],
+ Path_Delegate.nQuadTo(native_dst_path, points[0], points[1],
points[2],
points[3]);
break;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
index 219c487..579fce0 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java
@@ -98,7 +98,7 @@
// ---- native methods ----
@LayoutlibDelegate
- /*package*/ static long init1() {
+ /*package*/ static long nInit() {
// create the delegate
Path_Delegate newDelegate = new Path_Delegate();
@@ -106,7 +106,7 @@
}
@LayoutlibDelegate
- /*package*/ static long init2(long nPath) {
+ /*package*/ static long nInit(long nPath) {
// create the delegate
Path_Delegate newDelegate = new Path_Delegate();
@@ -120,7 +120,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_reset(long nPath) {
+ /*package*/ static void nReset(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -130,20 +130,20 @@
}
@LayoutlibDelegate
- /*package*/ static void native_rewind(long nPath) {
+ /*package*/ static void nRewind(long nPath) {
// call out to reset since there's nothing to optimize in
// terms of data structs.
- native_reset(nPath);
+ nReset(nPath);
}
@LayoutlibDelegate
- /*package*/ static void native_set(long native_dst, long native_src) {
+ /*package*/ static void nSet(long native_dst, long nSrc) {
Path_Delegate pathDstDelegate = sManager.getDelegate(native_dst);
if (pathDstDelegate == null) {
return;
}
- Path_Delegate pathSrcDelegate = sManager.getDelegate(native_src);
+ Path_Delegate pathSrcDelegate = sManager.getDelegate(nSrc);
if (pathSrcDelegate == null) {
return;
}
@@ -152,14 +152,14 @@
}
@LayoutlibDelegate
- /*package*/ static boolean native_isConvex(long nPath) {
+ /*package*/ static boolean nIsConvex(long nPath) {
Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED,
"Path.isConvex is not supported.", null, null);
return true;
}
@LayoutlibDelegate
- /*package*/ static int native_getFillType(long nPath) {
+ /*package*/ static int nGetFillType(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return 0;
@@ -169,7 +169,7 @@
}
@LayoutlibDelegate
- public static void native_setFillType(long nPath, int ft) {
+ public static void nSetFillType(long nPath, int ft) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -179,14 +179,14 @@
}
@LayoutlibDelegate
- /*package*/ static boolean native_isEmpty(long nPath) {
+ /*package*/ static boolean nIsEmpty(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
return pathDelegate == null || pathDelegate.isEmpty();
}
@LayoutlibDelegate
- /*package*/ static boolean native_isRect(long nPath, RectF rect) {
+ /*package*/ static boolean nIsRect(long nPath, RectF rect) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return false;
@@ -206,7 +206,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_computeBounds(long nPath, RectF bounds) {
+ /*package*/ static void nComputeBounds(long nPath, RectF bounds) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -216,13 +216,13 @@
}
@LayoutlibDelegate
- /*package*/ static void native_incReserve(long nPath, int extraPtCount) {
+ /*package*/ static void nIncReserve(long nPath, int extraPtCount) {
// since we use a java2D path, there's no way to pre-allocate new points,
// so we do nothing.
}
@LayoutlibDelegate
- /*package*/ static void native_moveTo(long nPath, float x, float y) {
+ /*package*/ static void nMoveTo(long nPath, float x, float y) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -232,7 +232,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_rMoveTo(long nPath, float dx, float dy) {
+ /*package*/ static void nRMoveTo(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -242,7 +242,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_lineTo(long nPath, float x, float y) {
+ /*package*/ static void nLineTo(long nPath, float x, float y) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -252,7 +252,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_rLineTo(long nPath, float dx, float dy) {
+ /*package*/ static void nRLineTo(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -262,7 +262,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_quadTo(long nPath, float x1, float y1, float x2, float y2) {
+ /*package*/ static void nQuadTo(long nPath, float x1, float y1, float x2, float y2) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -272,7 +272,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_rQuadTo(long nPath, float dx1, float dy1, float dx2, float dy2) {
+ /*package*/ static void nRQuadTo(long nPath, float dx1, float dy1, float dx2, float dy2) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -282,7 +282,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_cubicTo(long nPath, float x1, float y1,
+ /*package*/ static void nCubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -293,7 +293,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_rCubicTo(long nPath, float x1, float y1,
+ /*package*/ static void nRCubicTo(long nPath, float x1, float y1,
float x2, float y2, float x3, float y3) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -304,7 +304,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_arcTo(long nPath, float left, float top, float right,
+ /*package*/ static void nArcTo(long nPath, float left, float top, float right,
float bottom,
float startAngle, float sweepAngle, boolean forceMoveTo) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
@@ -316,7 +316,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_close(long nPath) {
+ /*package*/ static void nClose(long nPath) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -326,7 +326,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addRect(long nPath,
+ /*package*/ static void nAddRect(long nPath,
float left, float top, float right, float bottom, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -337,7 +337,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addOval(long nPath, float left, float top, float right,
+ /*package*/ static void nAddOval(long nPath, float left, float top, float right,
float bottom, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -349,7 +349,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addCircle(long nPath, float x, float y, float radius, int dir) {
+ /*package*/ static void nAddCircle(long nPath, float x, float y, float radius, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -361,7 +361,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addArc(long nPath, float left, float top, float right,
+ /*package*/ static void nAddArc(long nPath, float left, float top, float right,
float bottom, float startAngle, float sweepAngle) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -375,7 +375,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addRoundRect(long nPath, float left, float top, float right,
+ /*package*/ static void nAddRoundRect(long nPath, float left, float top, float right,
float bottom, float rx, float ry, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
@@ -388,7 +388,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addRoundRect(long nPath, float left, float top, float right,
+ /*package*/ static void nAddRoundRect(long nPath, float left, float top, float right,
float bottom, float[] radii, int dir) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
@@ -405,17 +405,17 @@
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(long nPath, long src, float dx, float dy) {
+ /*package*/ static void nAddPath(long nPath, long src, float dx, float dy) {
addPath(nPath, src, AffineTransform.getTranslateInstance(dx, dy));
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(long nPath, long src) {
+ /*package*/ static void nAddPath(long nPath, long src) {
addPath(nPath, src, null /*transform*/);
}
@LayoutlibDelegate
- /*package*/ static void native_addPath(long nPath, long src, long matrix) {
+ /*package*/ static void nAddPath(long nPath, long src, long matrix) {
Matrix_Delegate matrixDelegate = Matrix_Delegate.getDelegate(matrix);
if (matrixDelegate == null) {
return;
@@ -425,7 +425,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_offset(long nPath, float dx, float dy) {
+ /*package*/ static void nOffset(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -435,7 +435,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_setLastPoint(long nPath, float dx, float dy) {
+ /*package*/ static void nSetLastPoint(long nPath, float dx, float dy) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return;
@@ -446,7 +446,7 @@
}
@LayoutlibDelegate
- /*package*/ static void native_transform(long nPath, long matrix,
+ /*package*/ static void nTransform(long nPath, long matrix,
long dst_path) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
@@ -465,23 +465,23 @@
}
@LayoutlibDelegate
- /*package*/ static void native_transform(long nPath, long matrix) {
- native_transform(nPath, matrix, 0);
+ /*package*/ static void nTransform(long nPath, long matrix) {
+ nTransform(nPath, matrix, 0);
}
@LayoutlibDelegate
- /*package*/ static boolean native_op(long nPath1, long nPath2, int op, long result) {
+ /*package*/ static boolean nOp(long nPath1, long nPath2, int op, long result) {
Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Path.op() not supported", null);
return false;
}
@LayoutlibDelegate
- /*package*/ static void finalizer(long nPath) {
+ /*package*/ static void nFinalize(long nPath) {
sManager.removeJavaReferenceFor(nPath);
}
@LayoutlibDelegate
- /*package*/ static float[] native_approximate(long nPath, float error) {
+ /*package*/ static float[] nApproximate(long nPath, float error) {
Path_Delegate pathDelegate = sManager.getDelegate(nPath);
if (pathDelegate == null) {
return null;
diff --git a/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java
deleted file mode 100644
index a742840..0000000
--- a/tools/layoutlib/bridge/src/android/graphics/Rasterizer_Delegate.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.graphics;
-
-import com.android.layoutlib.bridge.impl.DelegateManager;
-import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
-
-/**
- * Delegate implementing the native methods of android.graphics.Rasterizer
- *
- * Through the layoutlib_create tool, the original native methods of Rasterizer have been replaced
- * by calls to methods of the same name in this delegate class.
- *
- * This class behaves like the original native implementation, but in Java, keeping previously
- * native data into its own objects and mapping them to int that are sent back and forth between
- * it and the original Rasterizer class.
- *
- * This also serve as a base class for all Rasterizer delegate classes.
- *
- * @see DelegateManager
- *
- */
-public abstract class Rasterizer_Delegate {
-
- // ---- delegate manager ----
- protected static final DelegateManager<Rasterizer_Delegate> sManager =
- new DelegateManager<Rasterizer_Delegate>(Rasterizer_Delegate.class);
-
- // ---- delegate helper data ----
-
- // ---- delegate data ----
-
- // ---- Public Helper methods ----
-
- public static Rasterizer_Delegate getDelegate(long nativeShader) {
- return sManager.getDelegate(nativeShader);
- }
-
- public abstract boolean isSupported();
- public abstract String getSupportMessage();
-
- // ---- native methods ----
-
- @LayoutlibDelegate
- /*package*/ static void finalizer(long native_instance) {
- sManager.removeJavaReferenceFor(native_instance);
- }
-
- // ---- Private delegate/helper methods ----
-}
diff --git a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
index cee679a..430607a 100644
--- a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
@@ -1197,7 +1197,7 @@
assert fillPaintDelegate != null;
fillPaintDelegate.setColorFilter(filterPtr);
fillPaintDelegate.setShader(fullPath.mFillGradient);
- Path_Delegate.native_setFillType(mRenderPath.mNativePath, fullPath.mFillType);
+ Path_Delegate.nSetFillType(mRenderPath.mNativePath, fullPath.mFillType);
BaseCanvas_Delegate.nDrawPath(canvasPtr, mRenderPath.mNativePath, fillPaint
.getNativeInstance());
}
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
index a23bad6..92fd75c 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
@@ -263,7 +263,6 @@
"android.graphics.DrawFilter",
"android.graphics.EmbossMaskFilter",
"android.graphics.FontFamily",
- "android.graphics.LayerRasterizer",
"android.graphics.LightingColorFilter",
"android.graphics.LinearGradient",
"android.graphics.MaskFilter",
@@ -277,7 +276,6 @@
"android.graphics.PathMeasure",
"android.graphics.PorterDuffColorFilter",
"android.graphics.RadialGradient",
- "android.graphics.Rasterizer",
"android.graphics.Region",
"android.graphics.Shader",
"android.graphics.SumPathEffect",