X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=GranimPattern.pde;h=83a70be6eca6e5f05c3892797ecb22cfc4b6de20;hb=e0b9d8726c661f54f47340449037ac7f6b410de6;hp=708a1ab90ca336242f0738de739e752f122cd482;hpb=fe0cb084e584265171877ae3ba421445eca78ecc;p=SugarCubes.git diff --git a/GranimPattern.pde b/GranimPattern.pde index 708a1ab..83a70be 100644 --- a/GranimPattern.pde +++ b/GranimPattern.pde @@ -1,57 +1,236 @@ +import java.util.LinkedHashMap; class Graphic { + public boolean changed = false; public int position = 0; public ArrayList graphicBuffer; - Graphic() { graphicBuffer = new ArrayList(); } + public int width() + { + return graphicBuffer.size(); + } +}; +class Granim extends Graphic +{ + HashMap displayList; + + Granim() + { + displayList = new HashMap(); + } + public Graphic addGraphic(String name, Graphic g) + { + while(width()< g.position+1) + { + graphicBuffer.add(lx.hsb(0,0,0)); + } + drawAll(); + displayList.put(name , g); + changed =true; + 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(); + + } + 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; + } + } + } + changed = false; + + } + public void drawOne(Graphic g) + { + graphicBuffer.addAll(g.position,g.graphicBuffer); + } + public void drawAll() + { + } }; class GranimPattern extends SCPattern { - ArrayList displayList; + HashMap displayList; - GranimPattern(GLucose glucose) + GranimPattern(LX lx) { - super(glucose); - displayList = new ArrayList(); + super(lx); + displayList = new HashMap(); } - public void addGraphic(Graphic g) + public Graphic addGraphic(String name, Graphic g) { - displayList.add(g); + displayList.put(name,g); + return g; } - public void run(int deltaMs) + public Graphic getGraphicByName(String name) { - for(Graphic g : displayList) - { - List drawList = model.points.subList(g.position, g.position + g.graphicBuffer.size()); + return displayList.get(name); + } + public void run(double deltaMs) + { + drawToPointList(); + } + private Integer[] gbuffer; + public void drawToPointList() + { + for(Graphic g : displayList.values()) + { + if(g instanceof Granim) + { + ((Granim) g).update(); + } + 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; + } + } + +}; + +class RedsGraphic extends Graphic +{ + RedsGraphic() + { + super(); + drawit(10); + } + RedsGraphic(int len) + { + super(); + drawit(len); + + } + void drawit(int len) + { + for(int i = 0; i < len ;i++) + { + graphicBuffer.add(lx.hsb(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 RedThreeGraphic extends Graphic +class RandomsGranim extends Granim { - RedThreeGraphic() + private int _len =0 ; + RandomsGranim() + { + super(); + _len =100; + addGraphic("myrandoms", makeGraphic(_len)); + } + RandomsGranim(int len) { super(); - prepare(); + _len=len; + addGraphic("myrandoms", makeGraphic(len)); + } + int colorLid=0; + public Graphic makeGraphic(int len) + { + + int[] colors= new int[len]; + for(int i =0;i