diff --git a/android/src/main/java/com/horcrux/svg/GroupView.java b/android/src/main/java/com/horcrux/svg/GroupView.java index c8bdb3a1..b7588359 100644 --- a/android/src/main/java/com/horcrux/svg/GroupView.java +++ b/android/src/main/java/com/horcrux/svg/GroupView.java @@ -31,8 +31,8 @@ import javax.annotation.Nullable; */ @SuppressLint("ViewConstructor") class GroupView extends RenderableView { - @Nullable ReadableMap mFont; - private GlyphContext mGlyphContext; + public @Nullable ReadableMap mFont; + public GlyphContext mGlyphContext; public GroupView(ReactContext reactContext) { super(reactContext); diff --git a/android/src/main/java/com/horcrux/svg/RenderableView.java b/android/src/main/java/com/horcrux/svg/RenderableView.java index 43e48613..9c473839 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableView.java +++ b/android/src/main/java/com/horcrux/svg/RenderableView.java @@ -59,25 +59,25 @@ abstract public class RenderableView extends VirtualView { private static final int FILL_RULE_EVENODD = 0; static final int FILL_RULE_NONZERO = 1; - private @Nullable ReadableArray mStroke; - private @Nullable String[] mStrokeDasharray; + public @Nullable ReadableArray mStroke; + public @Nullable String[] mStrokeDasharray; - private String mStrokeWidth = "1"; - private float mStrokeOpacity = 1; - private float mStrokeMiterlimit = 4; - private float mStrokeDashoffset = 0; + public String mStrokeWidth = "1"; + public float mStrokeOpacity = 1; + public float mStrokeMiterlimit = 4; + public float mStrokeDashoffset = 0; - private Paint.Cap mStrokeLinecap = Paint.Cap.ROUND; - private Paint.Join mStrokeLinejoin = Paint.Join.ROUND; + public Paint.Cap mStrokeLinecap = Paint.Cap.ROUND; + public Paint.Join mStrokeLinejoin = Paint.Join.ROUND; - private @Nullable ReadableArray mFill; - private float mFillOpacity = 1; - private Path.FillType mFillRule = Path.FillType.WINDING; + public @Nullable ReadableArray mFill; + public float mFillOpacity = 1; + public Path.FillType mFillRule = Path.FillType.WINDING; - private @Nullable ArrayList mLastMergedList; - private @Nullable ArrayList mOriginProperties; - private @Nullable ArrayList mPropList; - private @Nullable ArrayList mAttributeList; + public @Nullable ArrayList mLastMergedList; + public @Nullable ArrayList mOriginProperties; + public @Nullable ArrayList mPropList; + public @Nullable ArrayList mAttributeList; private static final Pattern regex = Pattern.compile("[0-9.-]+"); diff --git a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java index ba914f03..768cd159 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java +++ b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java @@ -16,12 +16,15 @@ import com.facebook.react.bridge.Dynamic; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.uimanager.DisplayMetricsHolder; +import com.facebook.react.uimanager.LayoutShadowNode; import com.facebook.react.uimanager.MatrixMathHelper; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.TransformHelper; import com.facebook.react.uimanager.ViewGroupManager; +import com.facebook.react.uimanager.ViewProps; import com.facebook.react.uimanager.annotations.ReactProp; +import com.facebook.react.uimanager.annotations.ReactPropGroup; import javax.annotation.Nullable; @@ -35,6 +38,7 @@ import static com.facebook.react.uimanager.MatrixMathHelper.v3Cross; import static com.facebook.react.uimanager.MatrixMathHelper.v3Dot; import static com.facebook.react.uimanager.MatrixMathHelper.v3Length; import static com.facebook.react.uimanager.MatrixMathHelper.v3Normalize; +import static com.facebook.react.uimanager.ViewProps.*; import static com.horcrux.svg.RenderableView.CAP_ROUND; import static com.horcrux.svg.RenderableView.FILL_RULE_NONZERO; import static com.horcrux.svg.RenderableView.JOIN_ROUND; @@ -65,6 +69,86 @@ class RenderableViewManager extends ViewGroupManager { RNSVGMask, } + class RenderableShadowNode extends LayoutShadowNode { + + @ReactPropGroup( + names = { + ALIGN_SELF, + ALIGN_ITEMS, + COLLAPSABLE, + FLEX, + FLEX_BASIS, + FLEX_DIRECTION, + FLEX_GROW, + FLEX_SHRINK, + FLEX_WRAP, + JUSTIFY_CONTENT, + OVERFLOW, + ALIGN_CONTENT, + DISPLAY, + + /* position */ + POSITION, + RIGHT, + TOP, + BOTTOM, + LEFT, + START, + END, + + /* dimensions */ + WIDTH, + HEIGHT, + MIN_WIDTH, + MAX_WIDTH, + MIN_HEIGHT, + MAX_HEIGHT, + + /* margins */ + MARGIN, + MARGIN_VERTICAL, + MARGIN_HORIZONTAL, + MARGIN_LEFT, + MARGIN_RIGHT, + MARGIN_TOP, + MARGIN_BOTTOM, + MARGIN_START, + MARGIN_END, + + /* paddings */ + PADDING, + PADDING_VERTICAL, + PADDING_HORIZONTAL, + PADDING_LEFT, + PADDING_RIGHT, + PADDING_TOP, + PADDING_BOTTOM, + PADDING_START, + PADDING_END, + + BORDER_WIDTH, + BORDER_START_WIDTH, + BORDER_END_WIDTH, + BORDER_TOP_WIDTH, + BORDER_BOTTOM_WIDTH, + BORDER_LEFT_WIDTH, + BORDER_RIGHT_WIDTH, + } + ) + public void ignoreLayoutProps(int index, Dynamic value) {} + } + + @Override + public LayoutShadowNode createShadowNodeInstance() { + return new RenderableShadowNode(); + } + + @Override + public Class getShadowNodeClass() { + return RenderableShadowNode.class; + } + + private final SVGClass svgClass; private final String mClassName; diff --git a/android/src/main/java/com/horcrux/svg/TextView.java b/android/src/main/java/com/horcrux/svg/TextView.java index 0b9b67b4..bef0863c 100644 --- a/android/src/main/java/com/horcrux/svg/TextView.java +++ b/android/src/main/java/com/horcrux/svg/TextView.java @@ -32,15 +32,15 @@ import static com.horcrux.svg.TextProperties.*; @SuppressLint("ViewConstructor") class TextView extends GroupView { - String mTextLength = null; - private String mBaselineShift = null; - TextLengthAdjust mLengthAdjust = TextLengthAdjust.spacing; - private AlignmentBaseline mAlignmentBaseline; - private @Nullable ReadableArray mPositionX; - private @Nullable ReadableArray mPositionY; - private @Nullable ReadableArray mRotate; - private @Nullable ReadableArray mDeltaX; - private @Nullable ReadableArray mDeltaY; + public String mTextLength = null; + public String mBaselineShift = null; + public TextLengthAdjust mLengthAdjust = TextLengthAdjust.spacing; + public AlignmentBaseline mAlignmentBaseline; + public @Nullable ReadableArray mPositionX; + public @Nullable ReadableArray mPositionY; + public @Nullable ReadableArray mRotate; + public @Nullable ReadableArray mDeltaX; + public @Nullable ReadableArray mDeltaY; public TextView(ReactContext reactContext) { super(reactContext);