mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-08-16 02:44:58 +00:00
feat(android): implement getTotalLength and getPointAtLength
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
|
||||
package com.horcrux.svg;
|
||||
|
||||
import android.graphics.PathMeasure;
|
||||
|
||||
import com.facebook.react.bridge.Callback;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||
@@ -72,4 +74,25 @@ class RNSVGRenderableManager extends ReactContextBaseJavaModule {
|
||||
float[] src = new float[] { x, y };
|
||||
isPointInFill(tag, src, successCallback, 0);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@ReactMethod
|
||||
public void getTotalLength(int tag, Callback successCallback) {
|
||||
RenderableView svg = RenderableViewManager.getRenderableViewByTag(tag);
|
||||
PathMeasure pm = new PathMeasure(svg.getPath(null, null), false);
|
||||
successCallback.invoke(pm.getLength());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@ReactMethod
|
||||
public void getPointAtLength(int tag, ReadableMap options, Callback successCallback) {
|
||||
float length = (float)options.getDouble("length");
|
||||
RenderableView svg = RenderableViewManager.getRenderableViewByTag(tag);
|
||||
PathMeasure pm = new PathMeasure(svg.getPath(null, null), false);
|
||||
float pathLength = pm.getLength();
|
||||
float[] pos = new float[2];
|
||||
float[] tan = new float[2];
|
||||
pm.getPosTan(Math.max(0, Math.min(length, pathLength)), pos, tan);
|
||||
successCallback.invoke(pos[0], pos[1]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user