Commit | Line | Data |
---|---|---|
3b85aef4 | 1 | import java.util.LinkedHashMap; |
fe0cb084 BM |
2 | class Graphic |
3 | { | |
cd059b79 | 4 | public boolean changed = false; |
fe0cb084 BM |
5 | public int position = 0; |
6 | public ArrayList<Integer> graphicBuffer; | |
fe0cb084 BM |
7 | Graphic() |
8 | { | |
9 | graphicBuffer = new ArrayList<Integer>(); | |
10 | } | |
3b85aef4 BM |
11 | public int width() |
12 | { | |
13 | return graphicBuffer.size(); | |
14 | } | |
fe0cb084 BM |
15 | |
16 | ||
3b85aef4 BM |
17 | }; |
18 | class Granim extends Graphic | |
19 | { | |
cd059b79 | 20 | HashMap<String,Graphic> displayList; |
3b85aef4 BM |
21 | |
22 | Granim() | |
23 | { | |
cd059b79 | 24 | displayList = new HashMap<String,Graphic>(); |
3b85aef4 BM |
25 | } |
26 | public Graphic addGraphic(String name, Graphic g) | |
27 | { | |
3b85aef4 BM |
28 | while(width()< g.position+1) |
29 | { | |
a41f334c | 30 | graphicBuffer.add(lx.hsb(0,0,0)); |
3b85aef4 BM |
31 | } |
32 | drawAll(); | |
33 | displayList.put(name , g); | |
cd059b79 | 34 | changed =true; |
3b85aef4 BM |
35 | return g; |
36 | } | |
37 | ||
38 | public Graphic getGraphicByName(String name) | |
39 | { | |
40 | return displayList.get(name); | |
41 | } | |
42 | ||
43 | public void update() | |
44 | { | |
cd059b79 | 45 | |
3b85aef4 BM |
46 | for(Graphic g : displayList.values()) |
47 | { | |
48 | if(g instanceof Granim) | |
49 | { | |
50 | ((Granim) g).update(); | |
cd059b79 BM |
51 | |
52 | } | |
53 | changed = changed || g.changed; | |
54 | if(changed) | |
55 | { | |
56 | while(width()< g.position + g.width()) | |
57 | { | |
a41f334c | 58 | graphicBuffer.add(lx.hsb(0,0,0)); |
cd059b79 BM |
59 | } |
60 | if(g.changed) | |
61 | { | |
62 | drawOne(g); | |
63 | g.changed =false; | |
64 | } | |
3b85aef4 BM |
65 | } |
66 | } | |
cd059b79 | 67 | changed = false; |
3b85aef4 BM |
68 | |
69 | } | |
70 | public void drawOne(Graphic g) | |
71 | { | |
72 | graphicBuffer.addAll(g.position,g.graphicBuffer); | |
73 | } | |
74 | public void drawAll() | |
75 | { | |
3b85aef4 | 76 | } |
fe0cb084 BM |
77 | }; |
78 | class GranimPattern extends SCPattern | |
79 | { | |
cd059b79 | 80 | HashMap<String,Graphic> displayList; |
fe0cb084 | 81 | |
dde75983 | 82 | GranimPattern(LX lx) |
fe0cb084 | 83 | { |
dde75983 | 84 | super(lx); |
cd059b79 | 85 | displayList = new HashMap<String,Graphic>(); |
fe0cb084 BM |
86 | } |
87 | ||
3b85aef4 | 88 | public Graphic addGraphic(String name, Graphic g) |
fe0cb084 | 89 | { |
2ca06388 | 90 | displayList.put(name,g); |
3b85aef4 | 91 | return g; |
fe0cb084 BM |
92 | } |
93 | ||
27e9754c BM |
94 | public Graphic getGraphicByName(String name) |
95 | { | |
96 | return displayList.get(name); | |
97 | } | |
98 | ||
34327c96 | 99 | public void run(double deltaMs) |
3b85aef4 BM |
100 | { |
101 | drawToPointList(); | |
102 | } | |
cd059b79 | 103 | private Integer[] gbuffer; |
3b85aef4 | 104 | public void drawToPointList() |
fe0cb084 | 105 | { |
2ca06388 | 106 | for(Graphic g : displayList.values()) |
fe0cb084 | 107 | { |
3b85aef4 BM |
108 | if(g instanceof Granim) |
109 | { | |
110 | ((Granim) g).update(); | |
111 | } | |
2bb56822 | 112 | List<LXPoint> drawList = model.points.subList(Math.min(g.position,colors.length-1), Math.min(g.position + g.width(),colors.length-1)); |
e1635ff6 | 113 | //println("drawlistsize "+drawList.size()); |
cd059b79 BM |
114 | |
115 | gbuffer = g.graphicBuffer.toArray(new Integer[0]); | |
116 | ||
fe0cb084 BM |
117 | for (int i=0; i < drawList.size(); i++) |
118 | { | |
cd059b79 | 119 | colors[drawList.get(i).index] = gbuffer[i]; |
fe0cb084 | 120 | } |
efb307ef | 121 | g.changed = false; |
fe0cb084 BM |
122 | } |
123 | } | |
124 | ||
125 | }; | |
126 | ||
3b85aef4 | 127 | class RedsGraphic extends Graphic |
fe0cb084 | 128 | { |
3b85aef4 | 129 | RedsGraphic() |
fe0cb084 BM |
130 | { |
131 | super(); | |
3b85aef4 | 132 | drawit(10); |
fe0cb084 | 133 | } |
3b85aef4 | 134 | RedsGraphic(int len) |
fe0cb084 | 135 | { |
3b85aef4 BM |
136 | super(); |
137 | drawit(len); | |
138 | ||
139 | } | |
140 | void drawit(int len) | |
141 | { | |
142 | for(int i = 0; i < len ;i++) | |
fe0cb084 | 143 | { |
a41f334c | 144 | graphicBuffer.add(lx.hsb(0,255,255)); |
fe0cb084 BM |
145 | } |
146 | } | |
147 | }; | |
3b85aef4 BM |
148 | |
149 | class RedsGranim extends Granim | |
150 | { | |
151 | RedsGranim() | |
152 | { | |
153 | super(); | |
154 | addGraphic("myreds", new RedsGraphic(10)); | |
155 | } | |
156 | RedsGranim(int len) | |
157 | { | |
158 | super(); | |
159 | addGraphic("myreds", new RedsGraphic(len)); | |
160 | } | |
161 | public float count = 0.0; | |
162 | public void update() | |
163 | { | |
164 | Graphic g=getGraphicByName("myreds"); | |
165 | g.position = Math.round(sin(count)*20)+100; | |
166 | count+= 0.1; | |
167 | if(count>Math.PI*2) | |
168 | { | |
169 | count=0; | |
170 | } | |
171 | super.update(); | |
172 | } | |
173 | ||
174 | }; | |
175 | ||
176 | class RandomsGranim extends Granim | |
177 | { | |
178 | private int _len =0 ; | |
179 | RandomsGranim() | |
180 | { | |
181 | super(); | |
182 | _len =100; | |
183 | addGraphic("myrandoms", makeGraphic(_len)); | |
184 | } | |
185 | RandomsGranim(int len) | |
186 | { | |
187 | super(); | |
188 | _len=len; | |
189 | addGraphic("myrandoms", makeGraphic(len)); | |
190 | } | |
1692ded2 | 191 | int colorLid=0; |
3b85aef4 BM |
192 | public Graphic makeGraphic(int len) |
193 | { | |
1692ded2 | 194 | |
3b85aef4 BM |
195 | int[] colors= new int[len]; |
196 | for(int i =0;i<len;i++) | |
197 | { | |
1692ded2 BM |
198 | colors[i]=(int) Math.round(Math.random()*80)+colorLid; |
199 | ||
3b85aef4 | 200 | } |
1692ded2 | 201 | colorLid+=4; |
3b85aef4 BM |
202 | return new ColorDotsGraphic(colors); |
203 | } | |
204 | private int count =1; | |
205 | private int instanceCount =0; | |
206 | public void update() | |
207 | { | |
1692ded2 BM |
208 | |
209 | if(instanceCount<90 && count % 20==0) | |
3b85aef4 BM |
210 | { |
211 | instanceCount++; | |
212 | Graphic h=addGraphic("myrandoms_"+instanceCount, makeGraphic(_len)); | |
213 | h.position = instanceCount*(_len+100); | |
1692ded2 | 214 | //println("one more " + instanceCount+" at "+h.position); |
3b85aef4 | 215 | count=0; |
cd059b79 | 216 | changed = true; |
3b85aef4 BM |
217 | } |
218 | count++; | |
1692ded2 | 219 | super.update(); |
3b85aef4 BM |
220 | } |
221 | ||
222 | }; | |
223 | ||
224 | ||
225 | class ColorDotsGraphic extends Graphic | |
226 | { | |
227 | ColorDotsGraphic(int[] colorSequence) | |
228 | { | |
229 | super(); | |
230 | for (int colorVal : colorSequence) | |
231 | { | |
a41f334c | 232 | graphicBuffer.add(lx.hsb(colorVal, 255, 255)); |
3b85aef4 | 233 | } |
cd059b79 | 234 | changed = true; |
3b85aef4 BM |
235 | } |
236 | }; |