void quadText(String text, int x, int y){ text.toLowerCase(); char [] letter = text.toCharArray(); int sizeOf = alphabet[1].size * 2; for(int i = 0; i < letter.length; i++){ int getValue = and.getNumericValue(letter[i]); if(getValue > -1 && getValue < 36){ alphabet[getValue].draw(x + i * (sizeOf + 5), y); } } } void quadTextSize(int size){ for(int i = 0; i < alphabet.length; i++){ alphabet[i] = new QuadChar(i, size); } } int quadTextWidth(String s){ return ((alphabet[0].size * 2) + 3) * s.length(); } class QuadChar{ int size; IsoLine [] lines; QuadChar(int id, int size){ int i = id; this.size = size; lines = new IsoLine[(charTable[i].length - 2) / 2]; for(int j = 0; j < lines.length; j++){ lines[j] = new IsoLine(charTable[i][j * 2] * size, charTable[i][(j *2)+ 1] * size, charTable[i][(j *2)+ 2] * size, charTable[i][(j *2)+ 3] * size, size >> 1); } } void draw(int x, int y){ pushMatrix(); translate(x, y, 0); for(int i = 0; i < lines.length; i++){ lines[i].draw(); } popMatrix(); } } class IsoLine{ Vec3 [] points; IsoLine(int x1, int y1, int x2, int y2, int depth){ points = new Vec3[4]; points[3] = new Vec3(x1, y1, 0); points[2] = new Vec3(x2, y2, 0); points[1] = points[2].iso(depth); points[0] = points[3].iso(depth); } void draw(){ beginShape(QUADS); for(int i = 0; i < points.length; i++){ vertex(points[i].x, points[i].y, points[i].z); } endShape(); } } static class Vec3{ int x,y,z; Vec3(int x, int y, int z){ this.x = x; this.y = y; this.z = z; } Vec3 iso(int depth){ return new Vec3(x - (depth >> 1), y - (depth >> 1), z - depth); } }