Remove string conversion of svg bounds, allow style arrays more widely

This commit is contained in:
Mikael Sand
2019-01-24 02:44:28 +02:00
parent 9fe741d02a
commit b3d29c9045
23 changed files with 136 additions and 128 deletions
@@ -31,19 +31,19 @@ class CircleView extends RenderableView {
@ReactProp(name = "cx") @ReactProp(name = "cx")
public void setCx(Dynamic cx) { public void setCx(Dynamic cx) {
mCx = getLengthFromDynamic(cx); mCx = SVGLength.from(cx);
invalidate(); invalidate();
} }
@ReactProp(name = "cy") @ReactProp(name = "cy")
public void setCy(Dynamic cy) { public void setCy(Dynamic cy) {
mCy = getLengthFromDynamic(cy); mCy = SVGLength.from(cy);
invalidate(); invalidate();
} }
@ReactProp(name = "r") @ReactProp(name = "r")
public void setR(Dynamic r) { public void setR(Dynamic r) {
mR = getLengthFromDynamic(r); mR = SVGLength.from(r);
invalidate(); invalidate();
} }
@@ -32,25 +32,25 @@ class EllipseView extends RenderableView {
@ReactProp(name = "cx") @ReactProp(name = "cx")
public void setCx(Dynamic cx) { public void setCx(Dynamic cx) {
mCx = getLengthFromDynamic(cx); mCx = SVGLength.from(cx);
invalidate(); invalidate();
} }
@ReactProp(name = "cy") @ReactProp(name = "cy")
public void setCy(Dynamic cy) { public void setCy(Dynamic cy) {
mCy = getLengthFromDynamic(cy); mCy = SVGLength.from(cy);
invalidate(); invalidate();
} }
@ReactProp(name = "rx") @ReactProp(name = "rx")
public void setRx(Dynamic rx) { public void setRx(Dynamic rx) {
mRx = getLengthFromDynamic(rx); mRx = SVGLength.from(rx);
invalidate(); invalidate();
} }
@ReactProp(name = "ry") @ReactProp(name = "ry")
public void setRy(Dynamic ry) { public void setRy(Dynamic ry) {
mRy = getLengthFromDynamic(ry); mRy = SVGLength.from(ry);
invalidate(); invalidate();
} }
@@ -16,7 +16,6 @@ import android.graphics.Matrix;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Path; import android.graphics.Path;
import android.graphics.RectF; import android.graphics.RectF;
import android.graphics.Region;
import android.net.Uri; import android.net.Uri;
import com.facebook.common.executors.UiThreadImmediateExecutorService; import com.facebook.common.executors.UiThreadImmediateExecutorService;
@@ -61,25 +60,25 @@ class ImageView extends RenderableView {
@ReactProp(name = "x") @ReactProp(name = "x")
public void setX(Dynamic x) { public void setX(Dynamic x) {
mX = getLengthFromDynamic(x); mX = SVGLength.from(x);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setY(Dynamic y) { public void setY(Dynamic y) {
mY = getLengthFromDynamic(y); mY = SVGLength.from(y);
invalidate(); invalidate();
} }
@ReactProp(name = "width") @ReactProp(name = "width")
public void setWidth(Dynamic width) { public void setWidth(Dynamic width) {
mW = getLengthFromDynamic(width); mW = SVGLength.from(width);
invalidate(); invalidate();
} }
@ReactProp(name = "height") @ReactProp(name = "height")
public void setHeight(Dynamic height) { public void setHeight(Dynamic height) {
mH = getLengthFromDynamic(height); mH = SVGLength.from(height);
invalidate(); invalidate();
} }
@@ -31,25 +31,25 @@ class LineView extends RenderableView {
@ReactProp(name = "x1") @ReactProp(name = "x1")
public void setX1(Dynamic x1) { public void setX1(Dynamic x1) {
mX1 = getLengthFromDynamic(x1); mX1 = SVGLength.from(x1);
invalidate(); invalidate();
} }
@ReactProp(name = "y1") @ReactProp(name = "y1")
public void setY1(Dynamic y1) { public void setY1(Dynamic y1) {
mY1 = getLengthFromDynamic(y1); mY1 = SVGLength.from(y1);
invalidate(); invalidate();
} }
@ReactProp(name = "x2") @ReactProp(name = "x2")
public void setX2(Dynamic x2) { public void setX2(Dynamic x2) {
mX2 = getLengthFromDynamic(x2); mX2 = SVGLength.from(x2);
invalidate(); invalidate();
} }
@ReactProp(name = "y2") @ReactProp(name = "y2")
public void setY2(Dynamic y2) { public void setY2(Dynamic y2) {
mY2 = getLengthFromDynamic(y2); mY2 = SVGLength.from(y2);
invalidate(); invalidate();
} }
@@ -44,25 +44,25 @@ class LinearGradientView extends DefinitionView {
@ReactProp(name = "x1") @ReactProp(name = "x1")
public void setX1(Dynamic x1) { public void setX1(Dynamic x1) {
mX1 = getLengthFromDynamic(x1); mX1 = SVGLength.from(x1);
invalidate(); invalidate();
} }
@ReactProp(name = "y1") @ReactProp(name = "y1")
public void setY1(Dynamic y1) { public void setY1(Dynamic y1) {
mY1 = getLengthFromDynamic(y1); mY1 = SVGLength.from(y1);
invalidate(); invalidate();
} }
@ReactProp(name = "x2") @ReactProp(name = "x2")
public void setX2(Dynamic x2) { public void setX2(Dynamic x2) {
mX2 = getLengthFromDynamic(x2); mX2 = SVGLength.from(x2);
invalidate(); invalidate();
} }
@ReactProp(name = "y2") @ReactProp(name = "y2")
public void setY2(Dynamic y2) { public void setY2(Dynamic y2) {
mY2 = getLengthFromDynamic(y2); mY2 = SVGLength.from(y2);
invalidate(); invalidate();
} }
@@ -48,25 +48,25 @@ class MaskView extends GroupView {
@ReactProp(name = "x") @ReactProp(name = "x")
public void setX(Dynamic x) { public void setX(Dynamic x) {
mX = getLengthFromDynamic(x); mX = SVGLength.from(x);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setY(Dynamic y) { public void setY(Dynamic y) {
mY = getLengthFromDynamic(y); mY = SVGLength.from(y);
invalidate(); invalidate();
} }
@ReactProp(name = "width") @ReactProp(name = "width")
public void setWidth(Dynamic width) { public void setWidth(Dynamic width) {
mW = getLengthFromDynamic(width); mW = SVGLength.from(width);
invalidate(); invalidate();
} }
@ReactProp(name = "height") @ReactProp(name = "height")
public void setHeight(Dynamic height) { public void setHeight(Dynamic height) {
mH = getLengthFromDynamic(height); mH = SVGLength.from(height);
invalidate(); invalidate();
} }
@@ -52,25 +52,25 @@ class PatternView extends GroupView {
@ReactProp(name = "x") @ReactProp(name = "x")
public void setX(Dynamic x) { public void setX(Dynamic x) {
mX = getLengthFromDynamic(x); mX = SVGLength.from(x);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setY(Dynamic y) { public void setY(Dynamic y) {
mY = getLengthFromDynamic(y); mY = SVGLength.from(y);
invalidate(); invalidate();
} }
@ReactProp(name = "width") @ReactProp(name = "width")
public void setWidth(Dynamic width) { public void setWidth(Dynamic width) {
mW = getLengthFromDynamic(width); mW = SVGLength.from(width);
invalidate(); invalidate();
} }
@ReactProp(name = "height") @ReactProp(name = "height")
public void setHeight(Dynamic height) { public void setHeight(Dynamic height) {
mH = getLengthFromDynamic(height); mH = SVGLength.from(height);
invalidate(); invalidate();
} }
@@ -45,37 +45,37 @@ class RadialGradientView extends DefinitionView {
@ReactProp(name = "fx") @ReactProp(name = "fx")
public void setFx(Dynamic fx) { public void setFx(Dynamic fx) {
mFx = getLengthFromDynamic(fx); mFx = SVGLength.from(fx);
invalidate(); invalidate();
} }
@ReactProp(name = "fy") @ReactProp(name = "fy")
public void setFy(Dynamic fy) { public void setFy(Dynamic fy) {
mFy = getLengthFromDynamic(fy); mFy = SVGLength.from(fy);
invalidate(); invalidate();
} }
@ReactProp(name = "rx") @ReactProp(name = "rx")
public void setRx(Dynamic rx) { public void setRx(Dynamic rx) {
mRx = getLengthFromDynamic(rx); mRx = SVGLength.from(rx);
invalidate(); invalidate();
} }
@ReactProp(name = "ry") @ReactProp(name = "ry")
public void setRy(Dynamic ry) { public void setRy(Dynamic ry) {
mRy = getLengthFromDynamic(ry); mRy = SVGLength.from(ry);
invalidate(); invalidate();
} }
@ReactProp(name = "cx") @ReactProp(name = "cx")
public void setCx(Dynamic cx) { public void setCx(Dynamic cx) {
mCx = getLengthFromDynamic(cx); mCx = SVGLength.from(cx);
invalidate(); invalidate();
} }
@ReactProp(name = "cy") @ReactProp(name = "cy")
public void setCy(Dynamic cy) { public void setCy(Dynamic cy) {
mCy = getLengthFromDynamic(cy); mCy = SVGLength.from(cy);
invalidate(); invalidate();
} }
@@ -34,37 +34,37 @@ class RectView extends RenderableView {
@ReactProp(name = "x") @ReactProp(name = "x")
public void setX(Dynamic x) { public void setX(Dynamic x) {
mX = getLengthFromDynamic(x); mX = SVGLength.from(x);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setY(Dynamic y) { public void setY(Dynamic y) {
mY = getLengthFromDynamic(y); mY = SVGLength.from(y);
invalidate(); invalidate();
} }
@ReactProp(name = "width") @ReactProp(name = "width")
public void setWidth(Dynamic width) { public void setWidth(Dynamic width) {
mW = getLengthFromDynamic(width); mW = SVGLength.from(width);
invalidate(); invalidate();
} }
@ReactProp(name = "height") @ReactProp(name = "height")
public void setHeight(Dynamic height) { public void setHeight(Dynamic height) {
mH = getLengthFromDynamic(height); mH = SVGLength.from(height);
invalidate(); invalidate();
} }
@ReactProp(name = "rx") @ReactProp(name = "rx")
public void setRx(Dynamic rx) { public void setRx(Dynamic rx) {
mRx = getLengthFromDynamic(rx); mRx = SVGLength.from(rx);
invalidate(); invalidate();
} }
@ReactProp(name = "ry") @ReactProp(name = "ry")
public void setRy(Dynamic ry) { public void setRy(Dynamic ry) {
mRy = getLengthFromDynamic(ry); mRy = SVGLength.from(ry);
invalidate(); invalidate();
} }
@@ -183,7 +183,7 @@ abstract public class RenderableView extends VirtualView {
@ReactProp(name = "strokeWidth") @ReactProp(name = "strokeWidth")
public void setStrokeWidth(Dynamic strokeWidth) { public void setStrokeWidth(Dynamic strokeWidth) {
this.strokeWidth = getLengthFromDynamic(strokeWidth); this.strokeWidth = SVGLength.from(strokeWidth);
invalidate(); invalidate();
} }
@@ -1,5 +1,10 @@
package com.horcrux.svg; package com.horcrux.svg;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReadableArray;
import java.util.ArrayList;
// https://www.w3.org/TR/SVG/types.html#InterfaceSVGLength // https://www.w3.org/TR/SVG/types.html#InterfaceSVGLength
enum SVGLengthUnitType { enum SVGLengthUnitType {
SVG_LENGTHTYPE_UNKNOWN, SVG_LENGTHTYPE_UNKNOWN,
@@ -84,4 +89,53 @@ class SVGLength {
} }
} }
} }
static SVGLength from(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number:
return new SVGLength(dynamic.asDouble());
case String:
return new SVGLength(dynamic.asString());
default:
return new SVGLength();
}
}
static String toString(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number:
return String.valueOf(dynamic.asDouble());
case String:
return dynamic.asString();
default:
return null;
}
}
static ArrayList<SVGLength> arrayFrom(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number: {
ArrayList<SVGLength> list = new ArrayList<>(1);
list.add(new SVGLength(dynamic.asDouble()));
return list;
}
case Array: {
ReadableArray arr = dynamic.asArray();
int size = arr.size();
ArrayList<SVGLength> list = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
Dynamic val = arr.getDynamic(i);
list.add(from(val));
}
return list;
}
case String: {
ArrayList<SVGLength> list = new ArrayList<>(1);
list.add(new SVGLength(dynamic.asString()));
return list;
}
default:
return null;
}
}
} }
@@ -21,6 +21,7 @@ import android.util.Base64;
import android.view.View; import android.view.View;
import android.view.ViewParent; import android.view.ViewParent;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContext;
import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.DisplayMetricsHolder;
import com.facebook.react.uimanager.ReactCompoundView; import com.facebook.react.uimanager.ReactCompoundView;
@@ -116,8 +117,8 @@ public class SvgView extends ReactViewGroup implements ReactCompoundView, ReactC
private float mMinY; private float mMinY;
private float mVbWidth; private float mVbWidth;
private float mVbHeight; private float mVbHeight;
private String mbbWidth; private SVGLength mbbWidth;
private String mbbHeight; private SVGLength mbbHeight;
private String mAlign; private String mAlign;
private int mMeetOrSlice; private int mMeetOrSlice;
private final Matrix mInvViewBoxMatrix = new Matrix(); private final Matrix mInvViewBoxMatrix = new Matrix();
@@ -177,15 +178,15 @@ public class SvgView extends ReactViewGroup implements ReactCompoundView, ReactC
} }
@ReactProp(name = "bbWidth") @ReactProp(name = "bbWidth")
public void setVbWidth(String bbWidth) { public void setBbWidth(Dynamic bbWidth) {
mbbWidth = bbWidth; mbbWidth = SVGLength.from(bbWidth);
invalidate(); invalidate();
clearChildCache(); clearChildCache();
} }
@ReactProp(name = "bbHeight") @ReactProp(name = "bbHeight")
public void setVbHeight(String bbHeight) { public void setBbHeight(Dynamic bbHeight) {
mbbHeight = bbHeight; mbbHeight = SVGLength.from(bbHeight);
invalidate(); invalidate();
clearChildCache(); clearChildCache();
} }
@@ -11,6 +11,7 @@ package com.horcrux.svg;
import android.util.SparseArray; import android.util.SparseArray;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp; import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.views.view.ReactViewGroup; import com.facebook.react.views.view.ReactViewGroup;
@@ -89,13 +90,13 @@ class SvgViewManager extends ReactViewManager {
} }
@ReactProp(name = "bbWidth") @ReactProp(name = "bbWidth")
public void setVbWidth(SvgView node, String bbWidth) { public void setBbWidth(SvgView node, Dynamic bbWidth) {
node.setVbWidth(bbWidth); node.setBbWidth(bbWidth);
} }
@ReactProp(name = "bbHeight") @ReactProp(name = "bbHeight")
public void setVbHeight(SvgView node, String bbHeight) { public void setBbHeight(SvgView node, Dynamic bbHeight) {
node.setVbHeight(bbHeight); node.setBbHeight(bbHeight);
} }
@ReactProp(name = "align") @ReactProp(name = "align")
@@ -44,7 +44,7 @@ class TextPathView extends TextView {
@ReactProp(name = "startOffset") @ReactProp(name = "startOffset")
public void setStartOffset(Dynamic startOffset) { public void setStartOffset(Dynamic startOffset) {
mStartOffset = getLengthFromDynamic(startOffset); mStartOffset = SVGLength.from(startOffset);
invalidate(); invalidate();
} }
@@ -54,7 +54,7 @@ class TextView extends GroupView {
@ReactProp(name = "textLength") @ReactProp(name = "textLength")
public void setTextLength(Dynamic length) { public void setTextLength(Dynamic length) {
mTextLength = getLengthFromDynamic(length); mTextLength = SVGLength.from(length);
invalidate(); invalidate();
} }
@@ -72,7 +72,7 @@ class TextView extends GroupView {
@ReactProp(name = "baselineShift") @ReactProp(name = "baselineShift")
public void setBaselineShift(Dynamic baselineShift) { public void setBaselineShift(Dynamic baselineShift) {
mBaselineShift = getStringFromDynamic(baselineShift); mBaselineShift = SVGLength.toString(baselineShift);
invalidate(); invalidate();
} }
@@ -100,31 +100,31 @@ class TextView extends GroupView {
@ReactProp(name = "rotate") @ReactProp(name = "rotate")
public void setRotate(Dynamic rotate) { public void setRotate(Dynamic rotate) {
mRotate = getLengthArrayFromDynamic(rotate); mRotate = SVGLength.arrayFrom(rotate);
invalidate(); invalidate();
} }
@ReactProp(name = "dx") @ReactProp(name = "dx")
public void setDeltaX(Dynamic deltaX) { public void setDeltaX(Dynamic deltaX) {
mDeltaX = getLengthArrayFromDynamic(deltaX); mDeltaX = SVGLength.arrayFrom(deltaX);
invalidate(); invalidate();
} }
@ReactProp(name = "dy") @ReactProp(name = "dy")
public void setDeltaY(Dynamic deltaY) { public void setDeltaY(Dynamic deltaY) {
mDeltaY = getLengthArrayFromDynamic(deltaY); mDeltaY = SVGLength.arrayFrom(deltaY);
invalidate(); invalidate();
} }
@ReactProp(name = "x") @ReactProp(name = "x")
public void setPositionX(Dynamic positionX) { public void setPositionX(Dynamic positionX) {
mPositionX = getLengthArrayFromDynamic(positionX); mPositionX = SVGLength.arrayFrom(positionX);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setPositionY(Dynamic positionY) { public void setPositionY(Dynamic positionY) {
mPositionY = getLengthArrayFromDynamic(positionY); mPositionY = SVGLength.arrayFrom(positionY);
invalidate(); invalidate();
} }
@@ -40,25 +40,25 @@ class UseView extends RenderableView {
@ReactProp(name = "x") @ReactProp(name = "x")
public void setX(Dynamic x) { public void setX(Dynamic x) {
mX = getLengthFromDynamic(x); mX = SVGLength.from(x);
invalidate(); invalidate();
} }
@ReactProp(name = "y") @ReactProp(name = "y")
public void setY(Dynamic y) { public void setY(Dynamic y) {
mY = getLengthFromDynamic(y); mY = SVGLength.from(y);
invalidate(); invalidate();
} }
@ReactProp(name = "width") @ReactProp(name = "width")
public void setWidth(Dynamic width) { public void setWidth(Dynamic width) {
mW = getLengthFromDynamic(width); mW = SVGLength.from(width);
invalidate(); invalidate();
} }
@ReactProp(name = "height") @ReactProp(name = "height")
public void setHeight(Dynamic height) { public void setHeight(Dynamic height) {
mH = getLengthFromDynamic(height); mH = SVGLength.from(height);
invalidate(); invalidate();
} }
@@ -544,52 +544,4 @@ abstract public class VirtualView extends ReactViewGroup {
return mClientRect; return mClientRect;
} }
SVGLength getLengthFromDynamic(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number:
return new SVGLength(dynamic.asDouble());
case String:
return new SVGLength(dynamic.asString());
default:
return new SVGLength();
}
}
String getStringFromDynamic(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number:
return String.valueOf(dynamic.asDouble());
case String:
return dynamic.asString();
default:
return null;
}
}
ArrayList<SVGLength> getLengthArrayFromDynamic(Dynamic dynamic) {
switch (dynamic.getType()) {
case Number: {
ArrayList<SVGLength> list = new ArrayList<>(1);
list.add(new SVGLength(dynamic.asDouble()));
return list;
}
case Array: {
ReadableArray arr = dynamic.asArray();
int size = arr.size();
ArrayList<SVGLength> list = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
Dynamic val = arr.getDynamic(i);
list.add(getLengthFromDynamic(val));
}
return list;
}
case String: {
ArrayList<SVGLength> list = new ArrayList<>(1);
list.add(new SVGLength(dynamic.asString()));
return list;
}
default:
return null;
}
}
} }
+6 -6
View File
@@ -41,10 +41,10 @@ export default class Svg extends Shape {
setNativeProps = props => { setNativeProps = props => {
const { width, height } = props; const { width, height } = props;
if (width) { if (width) {
props.bbWidth = String(width); props.bbWidth = width;
} }
if (height) { if (height) {
props.bbHeight = String(height); props.bbHeight = height;
} }
this.root.setNativeProps(props); this.root.setNativeProps(props);
}; };
@@ -98,12 +98,10 @@ export default class Svg extends Shape {
return ( return (
<NativeSvgView <NativeSvgView
{...props} {...props}
bbWidth={width}
bbHeight={height}
tintColor={color} tintColor={color}
onLayout={onLayout} onLayout={onLayout}
bbWidth={String(width)}
bbHeight={String(height)}
{...extractResponder(props, this)}
{...extractViewBox({ viewBox, preserveAspectRatio })}
ref={this.refMethod} ref={this.refMethod}
style={[ style={[
styles.svg, styles.svg,
@@ -113,6 +111,8 @@ export default class Svg extends Shape {
}, },
dimensions, dimensions,
]} ]}
{...extractResponder(props, this)}
{...extractViewBox({ viewBox, preserveAspectRatio })}
> >
<G <G
{...{ {...{
+2 -2
View File
@@ -60,8 +60,8 @@
} }
} else if ([node isKindOfClass:[RNSVGSvgView class]]) { } else if ([node isKindOfClass:[RNSVGSvgView class]]) {
RNSVGSvgView* svgView = (RNSVGSvgView*)node; RNSVGSvgView* svgView = (RNSVGSvgView*)node;
CGFloat width = [self relativeOnWidthString:svgView.bbWidth]; CGFloat width = [self relativeOnWidth:svgView.bbWidth];
CGFloat height = [self relativeOnHeightString:svgView.bbHeight]; CGFloat height = [self relativeOnHeight:svgView.bbHeight];
CGRect rect = CGRectMake(0, 0, width, height); CGRect rect = CGRectMake(0, 0, width, height);
CGContextClipToRect(context, rect); CGContextClipToRect(context, rect);
[svgView drawToContext:context withRect:rect]; [svgView drawToContext:context withRect:rect];
+2 -2
View File
@@ -15,8 +15,8 @@
@interface RNSVGSvgView : UIView <RNSVGContainer> @interface RNSVGSvgView : UIView <RNSVGContainer>
@property (nonatomic, strong) NSString *bbWidth; @property (nonatomic, strong) RNSVGLength *bbWidth;
@property (nonatomic, strong) NSString *bbHeight; @property (nonatomic, strong) RNSVGLength *bbHeight;
@property (nonatomic, assign) CGFloat minX; @property (nonatomic, assign) CGFloat minX;
@property (nonatomic, assign) CGFloat minY; @property (nonatomic, assign) CGFloat minY;
@property (nonatomic, assign) CGFloat vbWidth; @property (nonatomic, assign) CGFloat vbWidth;
+4 -4
View File
@@ -113,9 +113,9 @@
_vbHeight = vbHeight; _vbHeight = vbHeight;
} }
- (void)setBbWidth:(NSString *)bbWidth - (void)setBbWidth:(RNSVGLength *)bbWidth
{ {
if ([bbWidth isEqualToString:_bbWidth]) { if ([bbWidth isEqualTo:_bbWidth]) {
return; return;
} }
@@ -124,9 +124,9 @@
_bbWidth = bbWidth; _bbWidth = bbWidth;
} }
- (void)setBbHeight:(NSString *)bbHeight - (void)setBbHeight:(RNSVGLength *)bbHeight
{ {
if ([bbHeight isEqualToString:_bbHeight]) { if ([bbHeight isEqualTo:_bbHeight]) {
return; return;
} }
+2 -2
View File
@@ -20,8 +20,8 @@ RCT_EXPORT_MODULE()
return [RNSVGSvgView new]; return [RNSVGSvgView new];
} }
RCT_EXPORT_VIEW_PROPERTY(bbWidth, NSString) RCT_EXPORT_VIEW_PROPERTY(bbWidth, RNSVGLength*)
RCT_EXPORT_VIEW_PROPERTY(bbHeight, NSString) RCT_EXPORT_VIEW_PROPERTY(bbHeight, RNSVGLength*)
RCT_EXPORT_VIEW_PROPERTY(minX, CGFloat) RCT_EXPORT_VIEW_PROPERTY(minX, CGFloat)
RCT_EXPORT_VIEW_PROPERTY(minY, CGFloat) RCT_EXPORT_VIEW_PROPERTY(minY, CGFloat)
RCT_EXPORT_VIEW_PROPERTY(vbWidth, CGFloat) RCT_EXPORT_VIEW_PROPERTY(vbWidth, CGFloat)
+2 -1
View File
@@ -7,7 +7,8 @@ import extractOpacity from "./extractOpacity";
import { idPattern } from "../util"; import { idPattern } from "../util";
export default function extractProps(prop, ref) { export default function extractProps(prop, ref) {
const props = { ...prop.style, ...prop }; const style = prop.style;
const props = { ...(style && style.length ? Object.assign({}, ...style) : style), ...prop };
const { opacity, onLayout, id, clipPath, mask } = props; const { opacity, onLayout, id, clipPath, mask } = props;
const styleProperties = []; const styleProperties = [];