import geomerative.*; import processing.pdf.*; RFont lfont; RShape lshape; RGroup lgroup; RPoint[][] lpoints; RMatrix mat; PShape[] ImaginaryTools; String ltext[] = loadStrings("i/free/voice/voice.txt"); String svglist[] = loadStrings("i/free/svg/load.list"); float x,y,xprev,yprev,randy,a; float scalefactor,lineheight; int indent; int textHeight = 800; int v; int[] alreadytaken = new int[svglist.length]; // NUMBER OF SIMPLE SVGS int sn = 20; void setup() { size(420,594,P3D); background(255); frameRate(1); //smooth(); noLoop(); RG.init(this); lfont = new RFont("i/free/fonts/SerreriaSobria.ttf", 500, LEFT); mat = new RMatrix(); ImaginaryTools = new PShape[svglist.length]; lshape = lfont.toShape(ltext[0]); // MULTILINE HACK FOR TEXT & GEOMERATIVE // for(int i = 1; i < ltext.length; i++) { lshape.addChild(lfont.toShape(ltext[i])); mat.translate(0,textHeight); lshape.children[int(lshape.countChildren() - 1)].transform(mat); } lpoints = lshape.getPointsInPaths(); for(int i = 0; i < svglist.length; i++) { ImaginaryTools[i] = loadShape(svglist[i]); //ImaginaryTools[i].disableStyle(); } shapeMode(CENTER); scalefactor = width/(lshape.getWidth() * 1.2); for(int i = 0; i < alreadytaken.length; i++) { alreadytaken[i] = 0; } } void draw() { //background(255); beginRecord(PDF, "lgm.pdf"); pushMatrix(); translate(15,height/4.8); scale(scalefactor); rotate(radians(-15)); fill(255,0,0); stroke(0); for (int i = 0; i < lpoints.length; i++) { RPoint[] llpoints = lpoints[i]; indent = int(random(10,llpoints.length/15)); for (int j = 0; j <= llpoints.length-indent; j++) { xprev = x; yprev = y; x = int(llpoints[j].x); y = int(llpoints[j].y); randy = random(y-1400, height / (scalefactor*1.9)); if ( randy > y ) { a = 0; } else { a = radians(180); } if ( ( j == 0 ) ) { if ( random(0,10) > 3 ) { v = int(random(sn,svglist.length)); imagineInput(x,randy,a,v); beginShape(); vertex(x,randy); vertex(x,y); } else { v = int(random(0,sn-1)); a = radians(90 * int(random(1,5))); imagineInput(x,y,a,v); beginShape(); vertex(x,y); } } else if ( ( j == llpoints.length-indent ) ) { if ( random(0,10) > 9 ) { vertex(xprev,yprev); vertex(xprev,randy); endShape(); v = int(random(sn,svglist.length)); imagineInput(xprev,randy,a,v); } else { vertex(xprev,yprev); endShape(); v = int(random(0,sn-1)); a = radians(90 * int(random(1,5))); imagineInput(xprev,yprev,a,v); } } else { vertex(xprev,yprev); vertex(x,y); } } } popMatrix(); endRecord(); exit(); } void imagineInput (float x, float y, float rotation, int vector) { // http://forum.processing.org/topic/find-element-in-array if(alreadytaken[vector] > 0) { vector = int(random(0,sn-1)); rotation = radians(90 * int(random(1,5))); } alreadytaken[vector]++; pushMatrix(); translate(x,y); rotate(rotation); float groesse = random(5,7); scale(groesse); pushMatrix(); translate(-160,-160); shape(ImaginaryTools[vector],0,0,400,400); popMatrix(); popMatrix(); }