X-Git-Url: https://git.piment-noir.org/?p=SugarCubes.git;a=blobdiff_plain;f=GranimPattern.pde;h=da4c78f3955fbb1831ce6fab4532c20989acf3c4;hp=c2f9fc0d0aa4d2c043b41526c9959da50d9e141c;hb=8f4e6c99775f2724edf3cec488860eb68b06491c;hpb=3b85aef48bc63012831ae3f47405a299b1139e87 diff --git a/GranimPattern.pde b/GranimPattern.pde index c2f9fc0..da4c78f 100644 --- a/GranimPattern.pde +++ b/GranimPattern.pde @@ -1,6 +1,7 @@ import java.util.LinkedHashMap; class Graphic { + public boolean changed = false; public int position = 0; public ArrayList graphicBuffer; Graphic() @@ -16,21 +17,21 @@ class Graphic }; class Granim extends Graphic { - LinkedHashMap displayList; + HashMap displayList; Granim() { - displayList = new LinkedHashMap(); + displayList = new HashMap(); } public Graphic addGraphic(String name, Graphic g) { - graphicBuffer.clear(); while(width()< g.position+1) { - graphicBuffer.add(color(0,0,0)); + graphicBuffer.add(lx.hsb(0,0,0)); } drawAll(); displayList.put(name , g); + changed =true; return g; } @@ -41,15 +42,29 @@ class Granim extends Graphic public void update() { - + for(Graphic g : displayList.values()) { if(g instanceof Granim) { ((Granim) g).update(); + + } + changed = changed || g.changed; + if(changed) + { + while(width()< g.position + g.width()) + { + graphicBuffer.add(lx.hsb(0,0,0)); + } + if(g.changed) + { + drawOne(g); + g.changed =false; + } } } - drawAll(); + changed = false; } public void drawOne(Graphic g) @@ -58,25 +73,16 @@ class Granim extends Graphic } public void drawAll() { - graphicBuffer.clear(); - for(Graphic g : displayList.values()) - { - while(width()< g.position + g.width()) - { - graphicBuffer.add(color(0,0,0)); - } - drawOne(g); - } } }; class GranimPattern extends SCPattern { - LinkedHashMap displayList; + HashMap displayList; GranimPattern(GLucose glucose) { super(glucose); - displayList = new LinkedHashMap(); + displayList = new HashMap(); } public Graphic addGraphic(String name, Graphic g) @@ -90,11 +96,11 @@ class GranimPattern extends SCPattern return displayList.get(name); } - public void run(int deltaMs) + public void run(double deltaMs) { drawToPointList(); } - + private Integer[] gbuffer; public void drawToPointList() { for(Graphic g : displayList.values()) @@ -103,12 +109,16 @@ class GranimPattern extends SCPattern { ((Granim) g).update(); } - List drawList = model.points.subList(g.position, g.position + g.width()); - + List drawList = model.points.subList(Math.min(g.position,colors.length-1), Math.min(g.position + g.width(),colors.length-1)); + //println("drawlistsize "+drawList.size()); + + gbuffer = g.graphicBuffer.toArray(new Integer[0]); + for (int i=0; i < drawList.size(); i++) { - colors[drawList.get(i).index] = (int) g.graphicBuffer.get(i); + colors[drawList.get(i).index] = gbuffer[i]; } + g.changed = false; } } @@ -131,7 +141,7 @@ class RedsGraphic extends Graphic { for(int i = 0; i < len ;i++) { - graphicBuffer.add(color(0,255,255)); + graphicBuffer.add(lx.hsb(0,255,255)); } } }; @@ -178,30 +188,35 @@ class RandomsGranim extends Granim _len=len; addGraphic("myrandoms", makeGraphic(len)); } + int colorLid=0; public Graphic makeGraphic(int len) { + int[] colors= new int[len]; for(int i =0;i