Skip to content

Commit 61533c6

Browse files
committed
feat: define marker attributes
1 parent e7b5978 commit 61533c6

File tree

6 files changed

+91
-1
lines changed

6 files changed

+91
-1
lines changed

android/src/main/java/com/horcrux/svg/RenderableViewManager.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,6 +1030,21 @@ public void setMask(VirtualView node, String mask) {
10301030
node.setMask(mask);
10311031
}
10321032

1033+
@ReactProp(name = "markerStart")
1034+
public void setMarkerStart(VirtualView node, String markerStart) {
1035+
node.setMarkerStart(markerStart);
1036+
}
1037+
1038+
@ReactProp(name = "markerMid")
1039+
public void setMarkerMid(VirtualView node, String markerMid) {
1040+
node.setMarkerMid(markerMid);
1041+
}
1042+
1043+
@ReactProp(name = "markerEnd")
1044+
public void setMarkerEnd(VirtualView node, String markerEnd) {
1045+
node.setMarkerEnd(markerEnd);
1046+
}
1047+
10331048
@ReactProp(name = "clipPath")
10341049
public void setClipPath(VirtualView node, String clipPath) {
10351050
node.setClipPath(clipPath);

android/src/main/java/com/horcrux/svg/VirtualView.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ abstract public class VirtualView extends ReactViewGroup {
6565
int mClipRule;
6666
private @Nullable String mClipPath;
6767
@Nullable String mMask;
68+
@Nullable String mMarkerStart;
69+
@Nullable String mMarkerMid;
70+
@Nullable String mMarkerEnd;
6871

6972
private static final int CLIP_RULE_EVENODD = 0;
7073
static final int CLIP_RULE_NONZERO = 1;
@@ -241,6 +244,24 @@ public void setMask(String mask) {
241244
invalidate();
242245
}
243246

247+
@ReactProp(name = "markerStart")
248+
public void setMarkerStart(String markerStart) {
249+
mMarkerStart = markerStart;
250+
invalidate();
251+
}
252+
253+
@ReactProp(name = "markerMid")
254+
public void setMarkerMid(String markerMid) {
255+
mMarkerMid = markerMid;
256+
invalidate();
257+
}
258+
259+
@ReactProp(name = "markerEnd")
260+
public void setMarkerEnd(String markerEnd) {
261+
mMarkerEnd = markerEnd;
262+
invalidate();
263+
}
264+
244265
@ReactProp(name = "clipPath")
245266
public void setClipPath(String clipPath) {
246267
mCachedClipPath = null;

ios/RNSVGNode.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ extern CGFloat const RNSVG_DEFAULT_FONT_SIZE;
3131
@property (nonatomic, assign) RNSVGCGFCRule clipRule;
3232
@property (nonatomic, strong) NSString *clipPath;
3333
@property (nonatomic, strong) NSString *mask;
34+
@property (nonatomic, strong) NSString *markerStart;
35+
@property (nonatomic, strong) NSString *markerMid;
36+
@property (nonatomic, strong) NSString *markerEnd;
3437
@property (nonatomic, assign) BOOL responsible;
3538
@property (nonatomic, assign) CGAffineTransform matrix;
3639
@property (nonatomic, assign) CGAffineTransform transforms;

ios/RNSVGNode.m

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,33 @@ - (void)setMask:(NSString *)mask
254254
[self invalidate];
255255
}
256256

257+
- (void)setMarkerStart:(NSString *)markerStart
258+
{
259+
if ([_markerStart isEqualToString:markerStart]) {
260+
return;
261+
}
262+
_markerStart = markerStart;
263+
[self invalidate];
264+
}
265+
266+
- (void)setMarkerMid:(NSString *)markerMid
267+
{
268+
if ([_markerMid isEqualToString:markerMid]) {
269+
return;
270+
}
271+
_markerMid = markerMid;
272+
[self invalidate];
273+
}
274+
275+
- (void)setMarkerEnd:(NSString *)markerEnd
276+
{
277+
if ([_markerEnd isEqualToString:markerEnd]) {
278+
return;
279+
}
280+
_markerEnd = markerEnd;
281+
[self invalidate];
282+
}
283+
257284
- (void)beginTransparencyLayer:(CGContextRef)context
258285
{
259286
if (_transparent) {

ios/ViewManagers/RNSVGNodeManager.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ - (UIView *)view
163163
[view invalidate];
164164
}
165165
RCT_EXPORT_VIEW_PROPERTY(mask, NSString)
166+
RCT_EXPORT_VIEW_PROPERTY(markerStart, NSString)
167+
RCT_EXPORT_VIEW_PROPERTY(markerMid, NSString)
168+
RCT_EXPORT_VIEW_PROPERTY(markerEnd, NSString)
166169
RCT_EXPORT_VIEW_PROPERTY(clipPath, NSString)
167170
RCT_EXPORT_VIEW_PROPERTY(clipRule, RNSVGCGFCRule)
168171
RCT_EXPORT_VIEW_PROPERTY(responsible, BOOL)

src/lib/extract/extractProps.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ export default function extractProps(
2727
props: {
2828
id?: string;
2929
mask?: string;
30+
marker?: string;
31+
markerStart?: string;
32+
markerMid?: string;
33+
markerEnd?: string;
3034
clipPath?: string;
3135
opacity?: NumberProp;
3236
onLayout?: () => void;
@@ -38,7 +42,18 @@ export default function extractProps(
3842
ClipProps,
3943
ref: Object,
4044
) {
41-
const { opacity, onLayout, id, clipPath, mask, transform } = props;
45+
const {
46+
opacity,
47+
onLayout,
48+
id,
49+
clipPath,
50+
mask,
51+
marker,
52+
markerStart = marker,
53+
markerMid = marker,
54+
markerEnd = marker,
55+
transform,
56+
} = props;
4257
const styleProperties: string[] = [];
4358
const transformProps = props2transform(props);
4459
const matrix = transformToMatrix(transformProps, transform);
@@ -50,8 +65,14 @@ export default function extractProps(
5065
propList: string[];
5166
onLayout?: () => void;
5267
ref?: (instance: Component | null) => void;
68+
markerStart?: string;
69+
markerMid?: string;
70+
markerEnd?: string;
5371
} = {
5472
matrix,
73+
markerStart,
74+
markerMid,
75+
markerEnd,
5576
onLayout,
5677
...transformProps,
5778
propList: styleProperties,

0 commit comments

Comments
 (0)