class Bounder { int state; float h; float angle, arcangle; float angle(PVector v1, PVector v2) { float a = atan2(v2.y, v2.x) - atan2(v1.y, v1.x); if (a < 0) a += TWO_PI; return a; } PVector p1, p2, p3, p4; void leftclick() { if (state < 3) state++; else state = 1; if (state == 1) { p1 = new PVector(mouseX, mouseY); loop(); } if (state == 2) { p2 = new PVector(mouseX, mouseY); } if (state == 3) { h = -p2.dist(new PVector(mouseX, mouseY)); } } void rightclick(){ reset(); } void reset(){ boolean redrawthis = (state == 3) ? true : false; state = 0; if(redrawthis) redraw(); } void update() { if (state == 2) { h = -p2.dist(new PVector(mouseX, mouseY)); } } void display() { if (state > 0) { fill(0); noStroke(); circle(p1.x, p1.y, 5); } if (state == 1) { stroke(1); line(p1.x, p1.y, mouseX, mouseY); } if (state > 1) { fill(0); noStroke(); circle(p2.x, p2.y, 5); fill(255, 100); stroke(1); pushMatrix(); translate(p1.x, p1.y); rotate(angle(new PVector(0, width), PVector.sub(p2, p1))); rect(0, 0, h, p1.dist(p2)); p3 = new PVector(screenX(h, 0), screenY(h, 0)); p4 = new PVector(screenX(h, p1.dist(p2)), screenY(h, p1.dist(p2))); popMatrix(); fill(0); noStroke(); circle(p3.x, p3.y, 5); circle(p4.x, p4.y, 5); } } void compile(boolean Execute) { if (Execute) { state = 0; covers.add(new Cover(p1, p2, p4, p3)); } PVector ptopmid = new PVector((p1.x + p2.x)/2, (p1.y + p2.y)/2); PVector pbotmid = new PVector((p3.x + p4.x)/2, (p3.y + p4.y)/2); /* links: p1 -> ptopmid -> pbotmid -> p3 rechts: ptopmid -> p2 -> p4 -> pbotmid */ int leftLeftTopX = (int)map(p1.x, 0, width, 0, images[imageNo].width); int leftLeftTopY = (int)map(p1.y, 0, height, 0, images[imageNo].height); int leftRightTopX = (int)map(ptopmid.x, 0, width, 0, images[imageNo].width); int leftRightTopY = (int)map(ptopmid.y, 0, height, 0, images[imageNo].height); int leftRightBotX = (int)map(pbotmid.x, 0, width, 0, images[imageNo].width); int leftRightBotY = (int)map(pbotmid.y, 0, height, 0, images[imageNo].height); int leftLeftBotX = (int)map(p3.x, 0, width, 0, images[imageNo].width); int leftLeftBotY = (int)map(p3.y, 0, height, 0, images[imageNo].height); int rightLeftTopX = leftRightTopX; int rightLeftTopY = leftRightTopY; int rightRightTopX = (int)map(p2.x, 0, width, 0, images[imageNo].width); int rightRightTopY = (int)map(p2.y, 0, height, 0, images[imageNo].height); int rightRightBotX = (int)map(p4.x, 0, width, 0, images[imageNo].width); int rightRightBotY = (int)map(p4.y, 0, height, 0, images[imageNo].height); int rightLeftBotX = leftRightBotX; int rightLeftBotY = leftRightBotY; //beispielcommands: //for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_left.jpg; done //for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_right.jpg; done String folderName = String.valueOf((int)random(100000000)); String cmdleft = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_left.jpg; done"; String cmdright = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_right.jpg; done"; String cmdpdf = "convert " + folderName + "/*.jpg notizheft.pdf"; println(cmdleft); println(cmdright); //execl("/bin/sh", "-c", "cd", (const char *)0); //exec("/bin/sh -c cd " + folderURI + " && " + cmdleft); //String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright + " && " + cmdpdf }; String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright }; if (Execute) exec(runConvert); //println(leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY); //println(rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY); /* println((int)map(p1.x, 0, width, 0, images[imageNo].width)); println((int)map(p1.y, 0, height, 0, images[imageNo].height)); println((int)map(p2.x, 0, width, 0, images[imageNo].width)); println((int)map(p2.y, 0, height, 0, images[imageNo].height)); println((int)map(p3.x, 0, width, 0, images[imageNo].width)); println((int)map(p3.y, 0, height, 0, images[imageNo].height)); println((int)map(p4.x, 0, width, 0, images[imageNo].width)); println((int)map(p4.y, 0, height, 0, images[imageNo].height));*/ } }