-
Notifications
You must be signed in to change notification settings - Fork 3
/
02-06-Normalizers.txt
268 lines (206 loc) · 6.09 KB
/
02-06-Normalizers.txt
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
-----------------------------
values := #(3 6 10 2).
canvas := RSCanvas new.
shapes := RSEllipse models: values.
canvas addAll: shapes.
shapes @ RSLabeled.
RSNormalizer size
shapes: shapes;
normalize.
RSHorizontalLineLayout new alignMiddle; on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
values := #(3 6 10 2).
canvas := RSCanvas new.
shapes := RSEllipse models: values.
canvas addAll: shapes.
shapes @ RSLabeled.
RSNormalizer size
shapes: shapes;
from: 10;
to: 30;
normalize.
RSHorizontalLineLayout new alignMiddle; on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
values := #(3 6 10 2).
canvas := RSCanvas new.
shapes := RSEllipse models: values.
canvas addAll: shapes.
shapes @ RSLabeled.
RSNormalizer size
shapes: shapes;
normalize: [ :aNumber | aNumber * aNumber * aNumber ].
RSHorizontalLineLayout new alignMiddle; on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
translations := #('Bonjour' 'Guten Morgen' 'Hola' 'Buongiorno' 'Dia dhuit').
canvas := RSCanvas new.
shapes := RSBox models: translations.
canvas addAll: shapes.
shapes @ RSLabeled.
RSNormalizer height
shapes: shapes;
normalize: [ :text | (text select: #isVowel) size ].
RSNormalizer width
shapes: shapes;
normalize: [ :text | (text reject: #isVowel) size ].
RSNormalizer color
shapes: shapes;
from: Color green;
to: Color blue;
normalize: [ :text | text size ].
RSHorizontalLineLayout new gapSize: 10; alignMiddle; on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
classes := Collection withAllSubclasses.
canvas := RSCanvas new.
dots := RSCircle models: classes forEach: [ :s :o | s borderColor: #black ].
canvas addAll: dots.
dots @ RSPopup.
RSNormalizer size
shapes: dots;
from: 10;
to: 25;
normalize: #numberOfLinesOfCode.
RSNormalizer color
shapes: dots;
from: Color yellow;
to: Color brown;
normalize: #numberOfLinesOfCode.
canvas add: (RSArrowedLine new from: 0 @ 0; to: 0 @ -500).
RSNormalizer position
shapes: dots;
from: 0 @ 0;
to: 500 @ -500;
normalize: [ :aClass | aClass numberOfMethods @ aClass numberOfLinesOfCode ].
canvas add: (RSArrowedLine new from: 0 @ 0; to: 0 @ -500).
canvas add: (RSArrowedLine new from: 0 @ 0; to: 500 @ 0).
canvas zoomToFit.
canvas open
-----------------------------
canvas := RSCanvas new.
shapes := RSEllipse models: Collection withAllSubclasses.
shapes @ RSDraggable @ RSPopup.
canvas addAll: shapes.
RSNormalizer color
from: (Color gray alpha: 0.5);
to: (Color red alpha: 0.5);
shapes: shapes;
normalize: #numberOfMethods.
RSNormalizer size
shapes: shapes;
normalize: #numberOfMethods.
RSLineBuilder line
canvas: canvas;
withBorderAttachPoint;
connectFrom: #superclass.
RSNormalizer width
shapes: canvas lines;
from: 2;
to: 10;
normalize: [ :association |
(association key selectors intersection: association value selectors) size ].
RSTreeLayout on: shapes.
canvas @ RSCanvasController.
canvas open
-----------------------------
s := NSScale linear.
s range: { 5 . 10 }.
s scale: 0. "=> 5"
s scale: 0.5. "=> 7.5"
s scale: 1. "=> 10"
-----------------------------
s := NSScale linear.
s domain: { -10 . -5 }.
s range: { 10 . 5 }.
s scale: -5. "=> 5"
s scale: -7.5. "=> 7.5"
s scale: -10. "=> 10"
-----------------------------
s := NSScale linear.
s range: { Color white . Color black }.
s scale: 0.5 "=> Color gray"
-----------------------------
values := 0 to: 1 by: 0.1.
scale := NSScale linear range: { Color blue . Color red }.
canvas := RSCanvas new.
shapes := RSCircle models: values forEach: [ :shape :number |
shape color: (scale scale: number) ].
shapes @ RSPopup.
canvas addAll: shapes.
RSFlowLayout on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
values := 0 to: 1 count: 20.
scale := NSScale linear
range: { Color blue . Color gray . Color red };
domain: { 0 . 0.5 . 1 }.
canvas := RSCanvas new.
shapes := RSCircle models: values forEach: [ :shape :number |
shape color: (scale scale: number) ].
shapes @ RSPopup.
canvas addAll: shapes.
RSFlowLayout on: shapes.
canvas zoomToFit.
canvas open
-----------------------------
sc := NSScale linear
range: { #white . #gray . #red };
domain: { 0 . 1 . 2}.
ss := NSScale linear
range: { 80 . 30 . 80 };
domain: { 0 . 1 . 2}.
c := RSCanvas new.
0 to: 2 by: 0.1 do: [ :i |
s := RSBox new width: 30; height: (ss scale: i); model: i; color: (sc scale: i).
c add: s ].
RSHorizontalLineLayout new alignMiddle; on: c shapes.
c zoomToFit.
c open
-----------------------------
c := RSCanvas new.
scale := NSScale ordinalColored: 3.
r := Random seed: 42.
9 timesRepeat: [
txt := { 'hello' . 'bonjour' . 'Guten Morgen' } atRandom: r.
g := RSGroup new.
g add: (RSBox new width: 100; height: 20; model: txt; color: (scale scale: txt)).
g add: (RSLabel new text: txt).
c add: g asShape ].
RSGridLayout new lineItemsCount: 3; on: c shapes.
c @ RSCanvasController.
c open
-----------------------------
canvas := RSCanvas new.
scale := NSScale category20c.
r := Random seed: 42.
81 timesRepeat: [
aNumber := r nextInt: 10.
circle := RSCircle new size: 30; color: (scale scale: aNumber).
label := RSLabel new color: Color black; text: aNumber.
composite := { circle . label } asGroup asShapeFor: aNumber.
canvas add: composite ].
RSGridLayout new lineItemsCount: 9; on: canvas nodes.
canvas @ RSCanvasController.
canvas open
-----------------------------
canvas := RSCanvas new.
palette := { 'e66e33' . 'fca300' . 'efdb2b' . 'a3bd21' . '009991' }
collect: [ :hexString | Color fromHexString: hexString ].
scale := NSScale ordinal range: palette.
r := Random seed: 42.
100 timesRepeat: [
aNumber := r nextInt: 5.
circle := RSCircle new model: aNumber.
circle @ RSPopup.
circle color: (scale scale: aNumber).
canvas add: circle ].
RSFlowLayout on: canvas nodes.
canvas @ RSCanvasController.
canvas open