From 3b85aef48bc63012831ae3f47405a299b1139e87 Mon Sep 17 00:00:00 2001 From: Ben Morrow Date: Sat, 17 Aug 2013 21:12:10 -0700 Subject: [PATCH] Working recursive display - not yet fast --- BenMorrow.pde | 56 ++++++++++++++- GranimPattern.pde | 179 +++++++++++++++++++++++++++++++++++++++++++--- SugarCubes.pde | 1 + 3 files changed, 222 insertions(+), 14 deletions(-) diff --git a/BenMorrow.pde b/BenMorrow.pde index 67a1b79..911f886 100644 --- a/BenMorrow.pde +++ b/BenMorrow.pde @@ -48,16 +48,66 @@ class GranimTestPattern extends GranimPattern GranimTestPattern(GLucose glucose) { super(glucose); - RedThreeGraphic myReds = new RedThreeGraphic(); - addGraphic("myThreeReds",myReds); + addGraphic("myReds",new RedsGraphic(100)); + int[] dots = {0,128,0,128,0,128,0,128,0,128,0,128}; + addGraphic("myOtherColors",new ColorDotsGraphic(dots)); + + getGraphicByName("myOtherColors").position=100; } int counter=0; public void run(int deltaMs) { + clearALL(); super.run(deltaMs); + if(counter % 3 ==0) { - getGraphicByName("myThreeReds").position++; + Graphic reds = getGraphicByName("myReds"); + Graphic others = getGraphicByName("myOtherColors"); + reds.position = reds.position + 1 % 19000; + others.position = others.position + 10 % 19000; + } + } + public void clearALL() + { + for(Point p : model.points) + { + colors[p.index] = 0; + } + } + + +} + +class GranimTestPattern2 extends GranimPattern +{ + GranimTestPattern2(GLucose glucose) + { + super(glucose); + /*for(int i = 0;i < 100; i++) + { + Graphic g = addGraphic("myReds_"+i,new RedsGraphic(Math.round(Math.random() * 100))); + + }*/ + Graphic g = addGraphic("myRandoms",new RandomsGranim(50)); + g.position = 200; + + } + int counter=0; + float count=0; + public void run(int deltaMs) + { + clearALL(); + super.run(deltaMs); + Graphic randomsGraphic = getGraphicByName("myRandoms"); + randomsGraphic.position = Math.round(sin(count)*1000)+5000; + count+= 0.0005; + } + public void clearALL() + { + for(Point p : model.points) + { + colors[p.index] = 0; } } diff --git a/GranimPattern.pde b/GranimPattern.pde index 99d8f40..c2f9fc0 100644 --- a/GranimPattern.pde +++ b/GranimPattern.pde @@ -1,29 +1,88 @@ -import java.util.Hashtable; +import java.util.LinkedHashMap; class Graphic { public int position = 0; public ArrayList graphicBuffer; - Graphic() { graphicBuffer = new ArrayList(); } + public int width() + { + return graphicBuffer.size(); + } +}; +class Granim extends Graphic +{ + LinkedHashMap displayList; + + Granim() + { + displayList = new LinkedHashMap(); + } + public Graphic addGraphic(String name, Graphic g) + { + graphicBuffer.clear(); + while(width()< g.position+1) + { + graphicBuffer.add(color(0,0,0)); + } + drawAll(); + displayList.put(name , g); + return g; + } + + public Graphic getGraphicByName(String name) + { + return displayList.get(name); + } + + public void update() + { + + for(Graphic g : displayList.values()) + { + if(g instanceof Granim) + { + ((Granim) g).update(); + } + } + drawAll(); + + } + public void drawOne(Graphic g) + { + graphicBuffer.addAll(g.position,g.graphicBuffer); + } + 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 { - Hashtable displayList; + LinkedHashMap displayList; GranimPattern(GLucose glucose) { super(glucose); - displayList = new Hashtable(); + displayList = new LinkedHashMap(); } - public void addGraphic(String name, Graphic g) + public Graphic addGraphic(String name, Graphic g) { displayList.put(name,g); + return g; } public Graphic getGraphicByName(String name) @@ -32,10 +91,19 @@ class GranimPattern extends SCPattern } public void run(int deltaMs) + { + drawToPointList(); + } + + public void drawToPointList() { for(Graphic g : displayList.values()) { - List drawList = model.points.subList(g.position, g.position + g.graphicBuffer.size()); + if(g instanceof Granim) + { + ((Granim) g).update(); + } + List drawList = model.points.subList(g.position, g.position + g.width()); for (int i=0; i < drawList.size(); i++) { @@ -46,18 +114,107 @@ class GranimPattern extends SCPattern }; -class RedThreeGraphic extends Graphic +class RedsGraphic extends Graphic { - RedThreeGraphic() + RedsGraphic() { super(); - prepare(); + drawit(10); } - public void prepare() + RedsGraphic(int len) { - for(int i=0; i < 3 ;i++) + super(); + drawit(len); + + } + void drawit(int len) + { + for(int i = 0; i < len ;i++) { graphicBuffer.add(color(0,255,255)); } } }; + +class RedsGranim extends Granim +{ + RedsGranim() + { + super(); + addGraphic("myreds", new RedsGraphic(10)); + } + RedsGranim(int len) + { + super(); + addGraphic("myreds", new RedsGraphic(len)); + } + public float count = 0.0; + public void update() + { + Graphic g=getGraphicByName("myreds"); + g.position = Math.round(sin(count)*20)+100; + count+= 0.1; + if(count>Math.PI*2) + { + count=0; + } + super.update(); + } + +}; + +class RandomsGranim extends Granim +{ + private int _len =0 ; + RandomsGranim() + { + super(); + _len =100; + addGraphic("myrandoms", makeGraphic(_len)); + } + RandomsGranim(int len) + { + super(); + _len=len; + addGraphic("myrandoms", makeGraphic(len)); + } + public Graphic makeGraphic(int len) + { + int[] colors= new int[len]; + for(int i =0;i