-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathscene_graph.puml
362 lines (288 loc) · 8.31 KB
/
scene_graph.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
@startuml
' Color palette
' FFADAD Paint
' FFD6A5 Path Op
' FDFFB6 Path
' CAFFBF Filter
' 9BF6FF
' A0C4FF Node
' BDB2FF MediaObject/Player
' FFC6FF TextLayout
' FFFFFC Layer
' Forward declarations
object ImageNode #A0C4FF
object VideoNode #A0C4FF
object TextNode #A0C4FF
object EditTextNode #A0C4FF
class MediaObject #BDB2FF
class MediaPlayer #BDB2FF
class TextLayout #BDB2FF
class EditText #BDB2FF
class EditTextBox #BDB2FF
object EditTextConfig #FFC6FF
object Node #A0C4FF
object PathOp #FFD6A5
object Paint #FFADAD
class Accessibility #FFFFFC
object Action #FFFFFC
' =================== Path ====================
object Path #FDFFB6
object RectPath #FDFFB6
object RoundedRectPath #FDFFB6
object FramePath #FDFFB6
object GeneralPath #FDFFB6
Path : type: Type
Path <|-- RectPath
RectPath : rect: Rect
Path <|-- RoundedRectPath
RoundedRectPath : roundedRect: RoundedRect
Path <|-- FramePath
FramePath : roundedRect: RoundedRect
FramePath : inset: Float
Path <|-- GeneralPath
GeneralPath : value : String
GeneralPath : points : [float]
' =================== Shadow ====================
object Shadow #9bf6ff
Shadow : color : Color
Shadow : offset : Point
Shadow : radius: float
' =================== Filter ====================
object Filter #CAFFBF
object BlendFilter #CAFFBF
object BlurFilter #CAFFBF
object GrayscaleFilter #CAFFBF
object MediaObjectFilter #CAFFBF
object NoiseFilter #CAFFBF
object SaturateFilter #CAFFBF
object SolidFilter #CAFFBF
Filter : type: Type
Filter : size() : Size
Filter <|-- BlendFilter
BlendFilter : back : Filter
BlendFilter : front : Filter
BlendFilter : blendMode : BlendMode
Filter <|-- BlurFilter
BlurFilter : filter : Filter
BlurFilter : radius : Number
Filter <|-- GrayscaleFilter
GrayscaleFilter : filter : Filter
GrayscaleFilter : amount : Number
Filter <|-- MediaObjectFilter
MediaObjectFilter : mediaObject : MediaObject
MediaObjectFilter *-- MediaObject
Filter <|-- NoiseFilter
NoiseFilter : filter : Filter
NoiseFilter : kind : uniform/gaussian
NoiseFilter : useColor : Bool
NoiseFilter : sigma : Number
Filter <|-- SaturateFilter
SaturateFilter : filter : Filter
SaturateFilter : amount : Number
Filter <|-- SolidFilter
SolidFilter : paint : Paint
SolidFilter *-- Paint
' ================== Node ========================
Node : type: Type
Node : firstChild: NodePtr
Node : nextSibling: NodePtr
Node : nextModified: NodePtr
' ====== ShadowNode =========
object ShadowNode #A0C4FF
Node <|-- ShadowNode
ShadowNode : shadow : Shadow
ShadowNode *-- Shadow
' ===== DrawNode =======
object DrawNode #A0C4FF
Node <|-- DrawNode
DrawNode : <no children>
DrawNode : path: PathPtr
DrawNode : op: PathOpPtr
DrawNode *-- Path
DrawNode *-- PathOp
' ====== TransformNode =========
object TransformNode #A0C4FF
Node <|-- TransformNode
TransformNode : transform: Transform2D
' ======== ClipNode =========
object ClipNode #A0C4FF
Node <|-- ClipNode
ClipNode : path: PathPtr
ClipNode *-- Path
' ==== OpacityNode ====
object OpacityNode #A0C4FF
Node <|-- OpacityNode
OpacityNode : opacity: Number
' ========= TextProperties =========
object TextProperties #FFC6FF
TextProperties : fontFamily : [String]
TextProperties : fontSize : float
TextProperties : fontStyle : ENUM
TextProperties : fontWeight : ENUM
TextProperties : letterSpacing : float
TextProperties : lineHeight : float
TextProperties : maxLines : int
TextProperties : align : ENUM
TextProperties : alignVertical : ENUM
object TextChunk #FFC6FF
TextChunk : styledText : StyledText
' ======== EditText =========
EditText : submitCallback : Function
EditText : changedCallback : Function
EditText : setText()
EditText : setFocus(bool)
EditText : openKeyboard()
EditTextBox : getSize()
EditTextBox : getBaseline()
EditTextConfig : textColor : Color
EditTextConfig : highlightColor : Color
EditTextConfig : keyboardType : KeyboardType
EditTextConfig : language: String
EditTextConfig : maxLength : unsigned int
EditTextConfig : secureInput: bool
EditTextConfig : submitKeyType : SubmitKeyType
EditTextConfig : validCharacters : String
EditTextConfig : textProperties : TextPropertiesPtr
EditTextConfig *-- TextProperties
' ======== TextNode =========
Node <|-- TextNode
TextNode : <no children>
TextNode : textLayout: TextLayoutPtr
TextNode : op: PathOpPtr
TextNode : range : Range
TextNode *-- PathOp
Node <|-- EditTextNode
EditTextNode : <no children>
EditTextNode : editText : EditTextPtr
EditTextNode : editTextBox : EditTextBoxPtr
EditTextNode : editConfigTextConfig : EditTextConfigPtr
EditTextNode : text : String
EditTextNode *-- EditText
EditTextNode *-- EditTextBox
EditTextNode *-- EditTextConfig
TextLayout : empty() : bool
TextLayout : getSize() : Size
TextLayout : getBaseline() : float
TextLayout : getLineCount() : int
TextLayout : getByteLength() : unsigned int
TextLayout : getLineRangeFromByteRange(Range) : Range
TextLayout : getBoundingBoxForLines(Range) : Rect
TextLayout --> TextChunk
TextLayout --> TextProperties
TextNode *-- TextLayout
' =========== Accessibility =================
Action : name : String
Action : label : String
Action : enabled : bool
Accessibility : label : String
Accessibility : role : Enum<Role>
Accessibility : actions : [Action]
Accessibility : executeCallback(name)
Accessibility *- Action : > has N
' =================== Layer ====================
object Layer #FFFFFC
Layer : name : String
Layer : children : [LayerPtr]
Layer : content : [NodePtr]
Layer : bounds : Rect
Layer : transform : Transform2D
Layer : childOffset : Point
Layer : outline : PathPtr
Layer : childClip : PathPtr
Layer : shadow : ShadowPtr
Layer : accessibility : AccessibilityPtr
Layer : opacity : float
Layer : flags : BitField
Layer : interaction : BitField
Layer *-- Node : > has N (content))
Layer *-- Shadow : > has (shadow)
Layer *-- Path : > has (outline)
Layer *-- Accessibility : > has (accessibility))
' ====== Media =======
Node <|-- ImageNode
ImageNode : <no children>
ImageNode : image: FilterPtr
ImageNode : source: Rect
ImageNode : target: Rect
ImageNode *-- Filter
Node <|-- VideoNode
VideoNode : <no children>
VideoNode : mediaPlayer : MediaPlayerPtr
VideoNode : target: Rect
VideoNode : scale: BestFill/BestFit
VideoNode *-- MediaPlayer
MediaObject : url() : String
MediaObject : size(): Size
MediaObject : state() : Pending/Ready/Error
MediaObject : type() : Bitmap/Video/AVG
MediaObject : errorCode() : int
MediaObject : errorDescription() : String
MediaObject : headers() : const HeaderArray&
MediaObject : callback : function
MediaPlayer : setTrackList( MediaTrack[] ]
MediaPlayer : play()
MediaPlayer : pause()
MediaPlayer : next()
MediaPlayer : previous()
MediaPlayer : rewind()
MediaPlayer : seek(int offset)
MediaPlayer : seekTo(int offset)
MediaPlayer : setTrackIndex(int index)
MediaPlayer : setAudioTrack( AudioTrack )
MediaPlayer : callback : function
' ========= Audio ==========
class AudioPlayer #BDB2FF
AudioPlayer : setTrack(MediaTrack)
AudioPlayer : play(ActionRef)
AudioPlayer : pause()
AudioPlayer : playerCallback : Function
AudioPlayer : speechMarkCallback : Function
MediaObject -[hidden] AudioPlayer
' =================== Paint ================
object ColorPaint #FFADAD
object GradientPaint #FFADAD
object LinearGradientPaint #FFADAD
object RadialGradientPaint #FFADAD
object PatternPaint #FFADAD
Paint : type: Type
Paint : opacity : float
Paint : transform: Transform2D
' ==== ColorPaint =====
Paint <|-- ColorPaint
ColorPaint : color: RGBA
' ==== GradientPaint =====
Paint <|-- GradientPaint
GradientPaint : points : [float]
GradientPaint : colors : [Color]
GradientPaint : spreadMethod : ENUM
GradientPaint : useBoundingBox : Bool
' ==== LinearGradientPaint ====
GradientPaint <|-- LinearGradientPaint
LinearGradientPaint : start : Point
LinearGradientPaint : end : Point
' ==== RadialGradientPaint ====
GradientPaint <|-- RadialGradientPaint
RadialGradientPaint : center : Point
RadialGradientPaint : radius : float
' ==== PatternPaint ====
Paint <|-- PatternPaint
PatternPaint : size : Size
PatternPaint : node : NodePtr
PatternPaint *-- Node
' ================ PathOp ====================
object Stroke #FFD6A5
object Fill #FFD6A5
PathOp : type : Type
PathOp : paint : PaintPtr
PathOp : nextSibling : PathOpPtr
PathOp -> Paint
PathOp <|-- Stroke
Stroke : strokeWidth: Number
Stroke : dashes: [Number]
Stroke : dashOffset : Number
Stroke : miterLimit: Number
Stroke : lineCap: ENUM
Stroke : lineJoin: ENUM
Stroke : pathLength: Number
PathOp <|-- Fill
@enduml