* @return true if the resulting is non-empty
*/
public boolean clipPath(@NonNull Path path, @NonNull Region.Op op) {
- return native_clipPath(mNativeCanvasWrapper, path.ni(), op.nativeInt);
+ return native_clipPath(mNativeCanvasWrapper, path.readOnlyNI(), op.nativeInt);
}
/**
* does not intersect with the canvas' clip
*/
public boolean quickReject(@NonNull Path path, @NonNull EdgeType type) {
- return native_quickReject(mNativeCanvasWrapper, path.ni());
+ return native_quickReject(mNativeCanvasWrapper, path.readOnlyNI());
}
/**
if (path.isSimplePath && path.rects != null) {
native_drawRegion(mNativeCanvasWrapper, path.rects.mNativeRegion, paint.getNativeInstance());
} else {
- native_drawPath(mNativeCanvasWrapper, path.ni(), paint.getNativeInstance());
+ native_drawPath(mNativeCanvasWrapper, path.readOnlyNI(), paint.getNativeInstance());
}
}
throw new ArrayIndexOutOfBoundsException();
}
native_drawTextOnPath(mNativeCanvasWrapper, text, index, count,
- path.ni(), hOffset, vOffset,
+ path.readOnlyNI(), hOffset, vOffset,
paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface);
}
public void drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset,
float vOffset, @NonNull Paint paint) {
if (text.length() > 0) {
- native_drawTextOnPath(mNativeCanvasWrapper, text, path.ni(), hOffset, vOffset,
+ native_drawTextOnPath(mNativeCanvasWrapper, text, path.readOnlyNI(), hOffset, vOffset,
paint.mBidiFlags, paint.getNativeInstance(), paint.mNativeTypeface);
}
}
* drawn with a hairline (width == 0)
*/
public boolean getFillPath(Path src, Path dst) {
- return nGetFillPath(mNativePaint, src.ni(), dst.ni());
+ return nGetFillPath(mNativePaint, src.readOnlyNI(), dst.mutateNI());
}
/**
throw new ArrayIndexOutOfBoundsException();
}
nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, index, count, x, y,
- path.ni());
+ path.mutateNI());
}
/**
throw new IndexOutOfBoundsException();
}
nGetTextPath(mNativePaint, mNativeTypeface, mBidiFlags, text, start, end, x, y,
- path.ni());
+ path.mutateNI());
}
/**
}
}
- final long ni() {
+ final long readOnlyNI() {
+ return mNativePath;
+ }
+
+ final long mutateNI() {
+ isSimplePath = false;
return mNativePath;
}
*/
public PathDashPathEffect(Path shape, float advance, float phase,
Style style) {
- native_instance = nativeCreate(shape.ni(), advance, phase,
+ native_instance = nativeCreate(shape.readOnlyNI(), advance, phase,
style.native_style);
}
public PathMeasure(Path path, boolean forceClosed) {
// The native implementation does not copy the path, prevent it from being GC'd
mPath = path;
- native_instance = native_create(path != null ? path.ni() : 0,
+ native_instance = native_create(path != null ? path.readOnlyNI() : 0,
forceClosed);
}
public void setPath(Path path, boolean forceClosed) {
mPath = path;
native_setPath(native_instance,
- path != null ? path.ni() : 0,
+ path != null ? path.readOnlyNI() : 0,
forceClosed);
}
return false;
}
- dst.isSimplePath = false;
- return native_getSegment(native_instance, startD, stopD, dst.ni(), startWithMoveTo);
+ return native_getSegment(native_instance, startD, stopD, dst.mutateNI(), startWithMoveTo);
}
/**
* (with no antialiasing).
*/
public boolean setPath(Path path, Region clip) {
- return nativeSetPath(mNativeRegion, path.ni(), clip.mNativeRegion);
+ return nativeSetPath(mNativeRegion, path.readOnlyNI(), clip.mNativeRegion);
}
/**
*/
public Path getBoundaryPath() {
Path path = new Path();
- nativeGetBoundaryPath(mNativeRegion, path.ni());
+ nativeGetBoundaryPath(mNativeRegion, path.mutateNI());
return path;
}
* path will also be empty.
*/
public boolean getBoundaryPath(Path path) {
- return nativeGetBoundaryPath(mNativeRegion, path.ni());
+ return nativeGetBoundaryPath(mNativeRegion, path.mutateNI());
}
/**