@@ -35,62 +35,49 @@ protocol ContainerElement {
35
35
var childElements : [ DOM . GraphicsElement ] { get set }
36
36
}
37
37
38
- protocol PresentationAttributes {
39
- var opacity : DOM . Float ? { get set }
40
- var display : DOM . DisplayMode ? { get set }
41
- var color : DOM . Color ? { get set }
42
-
43
- var stroke : DOM . Fill ? { get set }
44
- var strokeWidth : DOM . Float ? { get set }
45
- var strokeOpacity : DOM . Float ? { get set }
46
- var strokeLineCap : DOM . LineCap ? { get set }
47
- var strokeLineJoin : DOM . LineJoin ? { get set }
48
- var strokeDashArray : [ DOM . Float ] ? { get set }
49
-
50
- var fill : DOM . Fill ? { get set }
51
- var fillOpacity : DOM . Float ? { get set }
52
- var fillRule : DOM . FillRule ? { get set }
53
-
54
- var fontFamily : String ? { get set }
55
- var fontSize : Float ? { get set }
56
-
57
- var transform : [ DOM . Transform ] ? { get set }
58
- var clipPath : DOM . URL ? { get set }
59
- var clipRule : DOM . FillRule ? { get set }
60
- var mask : DOM . URL ? { get set }
61
- var filter : DOM . URL ? { get set }
38
+ // PresentationAttributes cascade;
39
+ // attribute --> .element --> .class ---> .id ---> style=
40
+
41
+ struct PresentationAttributes {
42
+ var opacity : DOM . Float ?
43
+ var display : DOM . DisplayMode ?
44
+ var color : DOM . Color ?
45
+
46
+ var stroke : DOM . Fill ?
47
+ var strokeWidth : DOM . Float ?
48
+ var strokeOpacity : DOM . Float ?
49
+ var strokeLineCap : DOM . LineCap ?
50
+ var strokeLineJoin : DOM . LineJoin ?
51
+ var strokeDashArray : [ DOM . Float ] ?
52
+
53
+ var fill : DOM . Fill ?
54
+ var fillOpacity : DOM . Float ?
55
+ var fillRule : DOM . FillRule ?
56
+
57
+ var fontFamily : String ?
58
+ var fontSize : Float ?
59
+
60
+ var transform : [ DOM . Transform ] ?
61
+ var clipPath : DOM . URL ?
62
+ var clipRule : DOM . FillRule ?
63
+ var mask : DOM . URL ?
64
+ var filter : DOM . URL ?
65
+ }
66
+
67
+ protocol ElementAttributes {
68
+ var id : String ? { get set }
69
+ var `class` : String ? { get set }
62
70
}
63
71
64
72
extension DOM {
65
73
66
74
class Element { }
67
75
68
- class GraphicsElement : Element , PresentationAttributes {
76
+ class GraphicsElement : Element , ElementAttributes {
69
77
var id : String ?
78
+ var `class` : String ?
70
79
71
- var opacity : DOM . Float ?
72
- var display : DOM . DisplayMode ?
73
- var color : DOM . Color ?
74
-
75
- var stroke : DOM . Fill ?
76
- var strokeWidth : DOM . Float ?
77
- var strokeOpacity : DOM . Float ?
78
- var strokeLineCap : DOM . LineCap ?
79
- var strokeLineJoin : DOM . LineJoin ?
80
- var strokeDashArray : [ DOM . Float ] ?
81
-
82
- var fill : DOM . Fill ?
83
- var fillOpacity : DOM . Float ?
84
- var fillRule : DOM . FillRule ?
85
-
86
- var fontFamily : String ?
87
- var fontSize : Float ?
88
-
89
- var transform : [ DOM . Transform ] ?
90
- var clipPath : URL ?
91
- var clipRule : DOM . FillRule ?
92
- var mask : URL ?
93
- var filter : URL ?
80
+ var attributes = PresentationAttributes ( )
94
81
}
95
82
96
83
final class Line : GraphicsElement {
0 commit comments