@@ -31,4 +31,32 @@ class SceneUtils {
3131
3232 return shape
3333 }
34+
35+ static func copyNode( _ referenceNode: Node ) -> Node ? {
36+ let pos = referenceNode. place
37+ let opaque = referenceNode. opaque
38+ let visible = referenceNode. visible
39+ let clip = referenceNode. clip
40+ let tag = referenceNode. tag
41+
42+ if let shape = referenceNode as? Shape {
43+ return Shape ( form: shape. form, fill: shape. fill, stroke: shape. stroke, place: pos, opaque: opaque, clip: clip, visible: visible, tag: tag)
44+ }
45+ if let text = referenceNode as? Text {
46+ return Text ( text: text. text, font: text. font, fill: text. fill, stroke: text. stroke, align: text. align, baseline: text. baseline, place: pos, opaque: opaque, clip: clip, visible: visible, tag: tag)
47+ }
48+ if let image = referenceNode as? Image {
49+ return Image ( src: image. src, xAlign: image. xAlign, yAlign: image. yAlign, aspectRatio: image. aspectRatio, w: image. w, h: image. h, place: pos, opaque: opaque, clip: clip, visible: visible, tag: tag)
50+ }
51+ if let group = referenceNode as? Group {
52+ var contents = [ Node] ( )
53+ group. contents. forEach { node in
54+ if let copy = copyNode ( node) {
55+ contents. append ( copy)
56+ }
57+ }
58+ return Group ( contents: contents, place: pos, opaque: opaque, clip: clip, visible: visible, tag: tag)
59+ }
60+ return . none
61+ }
3462}
0 commit comments