diff --git a/android/src/main/java/com/horcrux/svg/RenderableShadowNode.java b/android/src/main/java/com/horcrux/svg/RenderableShadowNode.java index eaa7103d..e5a75966 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/RenderableShadowNode.java @@ -316,6 +316,7 @@ abstract public class RenderableShadowNode extends VirtualNode { RectF clientRect = new RectF(); path.computeBounds(clientRect, true); + mBox = new RectF(clientRect); Matrix svgToViewMatrix = new Matrix(canvas.getMatrix()); svgToViewMatrix.mapRect(clientRect); this.setClientRect(clientRect); @@ -397,10 +398,6 @@ abstract public class RenderableShadowNode extends VirtualNode { } else if (colorType == 1) { Brush brush = getSvgShadowNode().getDefinedBrush(colors.getString(1)); if (brush != null) { - if (mBox == null) { - mBox = new RectF(); - mPath.computeBounds(mBox, true); - } brush.setupPaint(paint, mBox, mScale, opacity); } } else if (colorType == 2) { diff --git a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java index 33129281..573d42de 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java +++ b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java @@ -318,11 +318,21 @@ class RenderableViewManager extends ViewGroupManager node, Dynamic positionX) { + node.shadowNode.setPositionX(positionX); + } + @ReactProp(name = "positionY") public void setPositionY(RenderableView node, Dynamic positionY) { node.shadowNode.setPositionY(positionY); } + @ReactProp(name = "y") + public void setY(RenderableView node, Dynamic positionY) { + node.shadowNode.setPositionY(positionY); + } + @ReactProp(name = "font") public void setFont(RenderableView node, @Nullable ReadableMap font) { node.shadowNode.setFont(font); @@ -339,12 +349,22 @@ class RenderableViewManager extends ViewGroupManager node, Dynamic positionX) { + public void setPositionX(RenderableView node, Dynamic positionX) { + node.shadowNode.setPositionX(positionX); + } + + @ReactProp(name = "x") + public void setX(RenderableView node, Dynamic positionX) { node.shadowNode.setPositionX(positionX); } @ReactProp(name = "positionY") - public void setPositionY(RenderableView node, Dynamic positionY) { + public void setPositionY(RenderableView node, Dynamic positionY) { + node.shadowNode.setPositionY(positionY); + } + + @ReactProp(name = "y") + public void setY(RenderableView node, Dynamic positionY) { node.shadowNode.setPositionY(positionY); } }; @@ -399,12 +419,22 @@ class RenderableViewManager extends ViewGroupManager node, String width) { + node.shadowNode.setWidth(width); + } + + @ReactProp(name = "width") public void setWidth(RenderableView node, String width) { node.shadowNode.setWidth(width); } @ReactProp(name = "imageheight") - public void seHeight(RenderableView node, String height) { + public void setImageHeight(RenderableView node, String height) { + node.shadowNode.seHeight(height); + } + + @ReactProp(name = "height") + public void setHeight(RenderableView node, String height) { node.shadowNode.seHeight(height); } @@ -511,16 +541,24 @@ class RenderableViewManager extends ViewGroupManager node, Dynamic width) { + node.shadowNode.setWidth(width); + } + + @ReactProp(name = "width") public void setWidth(RenderableView node, Dynamic width) { node.shadowNode.setWidth(width); } - @ReactProp(name = "rectheight") - public void setHeight(RenderableView node, Dynamic height) { + public void setRectHeight(RenderableView node, Dynamic height) { node.shadowNode.setHeight(height); } + @ReactProp(name = "height") + public void setHeight(RenderableView node, Dynamic height) { + node.shadowNode.setHeight(height); + } @ReactProp(name = "rx") public void setRx(RenderableView node, String rx) { @@ -551,11 +589,21 @@ class RenderableViewManager extends ViewGroupManager node, String width) { + node.shadowNode.setWidth(width); + } + + @ReactProp(name = "width") public void setWidth(RenderableView node, String width) { node.shadowNode.setWidth(width); } @ReactProp(name = "useheight") + public void setUseHeight(RenderableView node, String height) { + node.shadowNode.setHeight(height); + } + + @ReactProp(name = "height") public void setHeight(RenderableView node, String height) { node.shadowNode.setHeight(height); } @@ -611,11 +659,21 @@ class RenderableViewManager extends ViewGroupManager node, String width) { + node.shadowNode.setWidth(width); + } + + @ReactProp(name = "width") public void setWidth(RenderableView node, String width) { node.shadowNode.setWidth(width); } @ReactProp(name = "patternheight") + public void setPatternHeight(RenderableView node, String height) { + node.shadowNode.setHeight(height); + } + + @ReactProp(name = "height") public void setHeight(RenderableView node, String height) { node.shadowNode.setHeight(height); } @@ -681,11 +739,21 @@ class RenderableViewManager extends ViewGroupManager node, String width) { + node.shadowNode.setWidth(width); + } + + @ReactProp(name = "width") public void setWidth(RenderableView node, String width) { node.shadowNode.setWidth(width); } @ReactProp(name = "maskheight") + public void setMaskHeight(RenderableView node, String height) { + node.shadowNode.setHeight(height); + } + + @ReactProp(name = "height") public void setHeight(RenderableView node, String height) { node.shadowNode.setHeight(height); } diff --git a/android/src/main/java/com/horcrux/svg/VirtualNode.java b/android/src/main/java/com/horcrux/svg/VirtualNode.java index 2e64164d..09409509 100644 --- a/android/src/main/java/com/horcrux/svg/VirtualNode.java +++ b/android/src/main/java/com/horcrux/svg/VirtualNode.java @@ -59,7 +59,7 @@ abstract class VirtualNode extends LayoutShadowNode { Matrix mTransform = new Matrix(); Matrix mInvMatrix = new Matrix(); boolean mInvertible = true; - private RectF mClientRect; + RectF mClientRect; private int mClipRule; private @Nullable String mClipPath; @@ -113,7 +113,6 @@ abstract class VirtualNode extends LayoutShadowNode { canvasWidth = -1; mRegion = null; mPath = null; - mBox = null; } void releaseCachedPath() { diff --git a/ios/ViewManagers/RNSVGImageManager.m b/ios/ViewManagers/RNSVGImageManager.m index d113536e..0cc9c9df 100644 --- a/ios/ViewManagers/RNSVGImageManager.m +++ b/ios/ViewManagers/RNSVGImageManager.m @@ -19,7 +19,7 @@ RCT_EXPORT_MODULE() { RNSVGImage *svgImage = [RNSVGImage new]; svgImage.bridge = self.bridge; - + return svgImage; } @@ -27,6 +27,8 @@ RCT_EXPORT_VIEW_PROPERTY(x, NSString) RCT_EXPORT_VIEW_PROPERTY(y, NSString) RCT_EXPORT_VIEW_PROPERTY(imagewidth, NSString) RCT_EXPORT_VIEW_PROPERTY(imageheight, NSString) +RCT_REMAP_VIEW_PROPERTY(width, imagewidth, NSString) +RCT_REMAP_VIEW_PROPERTY(height, imageheight, NSString) RCT_EXPORT_VIEW_PROPERTY(src, id) RCT_EXPORT_VIEW_PROPERTY(align, NSString) RCT_EXPORT_VIEW_PROPERTY(meetOrSlice, RNSVGVBMOS) diff --git a/ios/ViewManagers/RNSVGMaskManager.m b/ios/ViewManagers/RNSVGMaskManager.m index 74483dd7..1a3309b9 100644 --- a/ios/ViewManagers/RNSVGMaskManager.m +++ b/ios/ViewManagers/RNSVGMaskManager.m @@ -22,6 +22,8 @@ RCT_EXPORT_VIEW_PROPERTY(x, NSString) RCT_EXPORT_VIEW_PROPERTY(y, NSString) RCT_EXPORT_VIEW_PROPERTY(maskwidth, NSString) RCT_EXPORT_VIEW_PROPERTY(maskheight, NSString) +RCT_REMAP_VIEW_PROPERTY(width, maskwidth, NSString) +RCT_REMAP_VIEW_PROPERTY(height, maskheight, NSString) RCT_EXPORT_VIEW_PROPERTY(maskUnits, RNSVGUnits) RCT_EXPORT_VIEW_PROPERTY(maskContentUnits, RNSVGUnits) RCT_EXPORT_VIEW_PROPERTY(maskTransform, CGAffineTransform) diff --git a/ios/ViewManagers/RNSVGPatternManager.m b/ios/ViewManagers/RNSVGPatternManager.m index a6e97b24..e194fb18 100644 --- a/ios/ViewManagers/RNSVGPatternManager.m +++ b/ios/ViewManagers/RNSVGPatternManager.m @@ -22,6 +22,8 @@ RCT_EXPORT_VIEW_PROPERTY(x, NSString) RCT_EXPORT_VIEW_PROPERTY(y, NSString) RCT_EXPORT_VIEW_PROPERTY(patternwidth, NSString) RCT_EXPORT_VIEW_PROPERTY(patternheight, NSString) +RCT_REMAP_VIEW_PROPERTY(width, patternwidth, NSString) +RCT_REMAP_VIEW_PROPERTY(height, patternheight, NSString) RCT_EXPORT_VIEW_PROPERTY(patternUnits, RNSVGUnits) RCT_EXPORT_VIEW_PROPERTY(patternContentUnits, RNSVGUnits) RCT_EXPORT_VIEW_PROPERTY(patternTransform, CGAffineTransform) diff --git a/ios/ViewManagers/RNSVGRectManager.m b/ios/ViewManagers/RNSVGRectManager.m index 13a3c125..b9d6f874 100644 --- a/ios/ViewManagers/RNSVGRectManager.m +++ b/ios/ViewManagers/RNSVGRectManager.m @@ -41,6 +41,25 @@ RCT_CUSTOM_VIEW_PROPERTY(rectwidth, id, RNSVGRect) view.rectwidth = [NSString stringWithFormat:@"%f", [json floatValue]]; } } +RCT_CUSTOM_VIEW_PROPERTY(height, id, RNSVGRect) +{ + if ([json isKindOfClass:[NSString class]]) { + NSString *stringValue = (NSString *)json; + view.rectheight = stringValue; + } else { + view.rectheight = [NSString stringWithFormat:@"%f", [json floatValue]]; + } +} + +RCT_CUSTOM_VIEW_PROPERTY(width, id, RNSVGRect) +{ + if ([json isKindOfClass:[NSString class]]) { + NSString *stringValue = (NSString *)json; + view.rectwidth = stringValue; + } else { + view.rectwidth = [NSString stringWithFormat:@"%f", [json floatValue]]; + } +} RCT_EXPORT_VIEW_PROPERTY(rx, NSString) RCT_EXPORT_VIEW_PROPERTY(ry, NSString) diff --git a/ios/ViewManagers/RNSVGTextManager.m b/ios/ViewManagers/RNSVGTextManager.m index 88e78f57..a800ab1a 100644 --- a/ios/ViewManagers/RNSVGTextManager.m +++ b/ios/ViewManagers/RNSVGTextManager.m @@ -46,6 +46,29 @@ RCT_CUSTOM_VIEW_PROPERTY(positionY, id, RNSVGText) view.positionY = [NSArray arrayWithObject:[NSString stringWithFormat:@"%f", [json floatValue]]]; } } +RCT_CUSTOM_VIEW_PROPERTY(x, id, RNSVGText) +{ + if ([json isKindOfClass:[NSArray class]]) { + NSArray *arrayValue = (NSArray *)json; + view.positionX = arrayValue; + } else if ([json isKindOfClass:[NSString class]]) { + view.positionX = [NSArray arrayWithObject:json]; + } else if ([json isKindOfClass:[NSNumber class]]) { + view.positionX = [NSArray arrayWithObject:[NSString stringWithFormat:@"%f", [json floatValue]]]; + } +} + +RCT_CUSTOM_VIEW_PROPERTY(y, id, RNSVGText) +{ + if ([json isKindOfClass:[NSArray class]]) { + NSArray *arrayValue = (NSArray *)json; + view.positionY = arrayValue; + } else if ([json isKindOfClass:[NSString class]]) { + view.positionY = [NSArray arrayWithObject:json]; + } else if ([json isKindOfClass:[NSNumber class]]) { + view.positionY = [NSArray arrayWithObject:[NSString stringWithFormat:@"%f", [json floatValue]]]; + } +} RCT_EXPORT_VIEW_PROPERTY(rotate, NSArray) RCT_EXPORT_VIEW_PROPERTY(font, NSDictionary) RCT_EXPORT_VIEW_PROPERTY(textLength, NSString) diff --git a/ios/ViewManagers/RNSVGUseManager.m b/ios/ViewManagers/RNSVGUseManager.m index 5d490bc1..bca33dea 100644 --- a/ios/ViewManagers/RNSVGUseManager.m +++ b/ios/ViewManagers/RNSVGUseManager.m @@ -21,5 +21,7 @@ RCT_EXPORT_MODULE() RCT_EXPORT_VIEW_PROPERTY(href, NSString) RCT_EXPORT_VIEW_PROPERTY(usewidth, NSString) RCT_EXPORT_VIEW_PROPERTY(useheight, NSString) +RCT_REMAP_VIEW_PROPERTY(width, usewidth, NSString) +RCT_REMAP_VIEW_PROPERTY(height, useheight, NSString) @end diff --git a/lib/attributes.js b/lib/attributes.js index 1798cda6..9cd988c0 100644 --- a/lib/attributes.js +++ b/lib/attributes.js @@ -97,6 +97,8 @@ const GroupAttributes = { const UseAttributes = { ...RenderableAttributes, href: true, + width: true, + height: true, usewidth: true, useheight: true, }; @@ -129,7 +131,9 @@ const TextAttributes = { deltaY: arrayDiffer, rotate: arrayDiffer, positionX: arrayDiffer, - positionY: arrayDiffer + positionY: arrayDiffer, + x: arrayDiffer, + y: arrayDiffer }; const TextPathAttributes = { @@ -167,6 +171,8 @@ const PatternAttributes = { name: true, x: true, y: true, + width: true, + height: true, patternwidth: true, patternheight: true, patternUnits: true, @@ -180,6 +186,8 @@ const MaskAttributes = { name: true, x: true, y: true, + width: true, + height: true, maskwidth: true, maskheight: true, maskUnits: true, @@ -227,6 +235,8 @@ const ImageAttributes = { ...RenderableAttributes, x: true, y: true, + width: true, + height: true, imagewidth: true, imageheight: true, src: true, @@ -246,6 +256,8 @@ const RectAttributes = { ...RenderableAttributes, x: true, y: true, + width: true, + height: true, rectwidth: true, rectheight: true, rx: true, diff --git a/lib/extract/extractText.js b/lib/extract/extractText.js index 3855d4a2..e6f8bc1d 100644 --- a/lib/extract/extractText.js +++ b/lib/extract/extractText.js @@ -139,6 +139,8 @@ export default function(props, container) { content, positionX, positionY, + x: positionX, + y: positionY, rotate, deltaX, deltaY,