Merge "Update layoulib following changes in Android source code"

This commit is contained in:
Jerome Gaillard
2017-01-09 13:12:48 +00:00
committed by Android (Google) Code Review
7 changed files with 52 additions and 218 deletions

View File

@@ -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 ----
}

View File

@@ -99,7 +99,6 @@ public class Paint_Delegate {
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 @@ public class Paint_Delegate {
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
@@ -897,25 +887,6 @@ public class Paint_Delegate {
return typeface;
}
@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.
@@ -1235,7 +1206,6 @@ public class Paint_Delegate {
mShader = paint.mShader;
mPathEffect = paint.mPathEffect;
mMaskFilter = paint.mMaskFilter;
mRasterizer = paint.mRasterizer;
mHintingMode = paint.mHintingMode;
if (needsFontUpdate) {
@@ -1262,7 +1232,6 @@ public class Paint_Delegate {
mShader = null;
mPathEffect = null;
mMaskFilter = null;
mRasterizer = null;
updateFontObject();
mHintingMode = Paint.HINTING_ON;
}

View File

@@ -56,8 +56,8 @@ public final class PathMeasure_Delegate {
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 @@ public final class PathMeasure_Delegate {
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 @@ public final class PathMeasure_Delegate {
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;

View File

@@ -98,7 +98,7 @@ public final class Path_Delegate {
// ---- native methods ----
@LayoutlibDelegate
/*package*/ static long init1() {
/*package*/ static long nInit() {
// create the delegate
Path_Delegate newDelegate = new Path_Delegate();
@@ -106,7 +106,7 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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 @@ public final class Path_Delegate {
}
@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;

View File

@@ -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 ----
}

View File

@@ -1197,7 +1197,7 @@ public class VectorDrawable_Delegate {
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());
}

View File

@@ -263,7 +263,6 @@ public final class CreateInfo implements ICreateInfo {
"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 @@ public final class CreateInfo implements ICreateInfo {
"android.graphics.PathMeasure",
"android.graphics.PorterDuffColorFilter",
"android.graphics.RadialGradient",
"android.graphics.Rasterizer",
"android.graphics.Region",
"android.graphics.Shader",
"android.graphics.SumPathEffect",