// LetterPaint based on Box Fitting Image // j.tarbell May, 2004 Albuquerque, New Mexico // complexification.net // novikod.com D.Novikov November, 2009 int num = 0; int maxnum = 2000; int dimx = 1700; int dim = 2600; int time; PFont font; String[] letters = {"АЛФАВИТ", "А", "Л", "Ф", "А", "В", "И", "Т", "БУКВА", "Б", "У", "К", "В","Ы"}; int count = 0; int deltaC = 40; Box[] boxes; // background image PImage ab; // MAIN ----------------------------------------------------------- void setup() { size(dimx,dim,P3D); colorMode(HSB, 255); font = loadFont("Verdana-Bold-72.vlw"); //textMode(SHAPE); rectMode(CENTER); noStroke(); // create boxes boxes = new Box[maxnum]; // load background image ab = loadImage("portrait3.jpg"); resetAll(); } void draw() { for (int n=0;n 1) { factor = round(letters[countB].length() * coef); if (factor == letters[countB].length()) { print(factor + " !!!\n");} //letterSize = letterSize*factor; } } void selfinit() { // position okToDraw = false; x = int(random(dimx)); y = int(random(dim)); d = 0; if (random(1) > 0.75) { selector = true; coef = 1.2; } else{ selector = false; coef = 0.84; } myc = readBackground(x,y); } void draw() { expand(); if (factor == letters[countB].length() && letters[countB].length() != 1) { print(factor + " 2!!!\n");} if (okToDraw) { fill(255); rect(x,y,W-2,H-1); fill(myc); switch (d){ case 2 : textFont(font, 5); break; case 4 : textFont(font, 5); break; default : textFont(font, d); break; } textAlign(CENTER, CENTER); text(letters[countB], x, y, W, H); } } void expand() { // assume expansion is ok d+=2; if (selector) { H = d*factor; W = d; } else{ H = d; W = d*factor; } int obstructions = 0; for (int j=int(x-W/2);j letterSize) { obstructions = 1; } if (obstructions>0) { // reset selfinit(); if (chaste) { makeNewBox(); chaste = false; } } else { okToDraw = true; } } int checkPixel(int x, int y) { if ((x>0) && (x0) && (y deltaC || (abs(saturation(c)-saturation(myc)) > (deltaC+20)) || (abs(brightness(c)-brightness(myc)) > deltaC) || (saturation(f) > 0) || (brightness(f)<235)) { return 1; } else { return 0; } } } return 0; } }