import static util.Common.hsb360;
import static util.SVGUtil.*;

public class CardRects {
	private static double startX, startY, width, height;
	private static int cols, rows;

	private static void CardSpec(double sx, double sy, double dx, double dy, int c, int r) {
		startX = sx; startY = sy; width = dx; height = dy;
		cols = c; rows = r;
	}

	private static void init() {
	}

	public static void drawFrame() {
		strokeWeight(0.1);
		stroke(bw1(0));
		noFill();
		rect(0, 0, width, height);
	}

	private static void drawCard(int n, int i, int j, double ratio) {
		int k;
		double delta = 7.5;                                    // ★　色相の変化量
		drawFrame();                                           // ★　調整用の枠線、印刷するときは、この行をコメントアウトする。

		noStroke();
		
		fill(hsb360(ratio*360, 100, 100));                     // ★　色の指定
		textFont("MS-Mincho", 8);                              // 日本語部分のフォント　MS明朝 8ポイント
		text("讃岐　太郎", 10, 20);
		
		fill(hsb360(ratio*360+delta*1, 100, 100));             // ★　色の指定
		textFont("MS-Mincho", 6);                              // 日本語部分のフォント　MS明朝 6ポイント
		text("香川大学工学部", 10, 28);
		
		fill(hsb360(ratio*360+delta*2, 100, 100));             // ★　色の指定
		textFont("Times New Roman", 8);	                       // 英字部分のフォント Times New Roman 8ポイント
		text("Taro Sanuki", 10, 38); 
		
		fill(hsb360(ratio*360+delta*3, 100, 100));             // ★　色の指定
		textFont("Times New Roman", 5);	                       // 英字部分のフォント Times New Roman 5ポイント
		text("Faculty of Eng., Kagawa Univ.", 10, 46);
		
		fill(hsb360(ratio*360+delta*4, 100, 100));             // ★　色の指定
		textFont("Courier New", 5);                            // メールアドレス用の等幅フォント（通常変更しない）
		text("sanuki@eng.kagawa-u.ac.jp", 10, 52);
		
		translate(75, 25);
		for (k=0; k<12; k++) {
			fill(hsb1((k*2)/24.0+ratio, 1, 1));                // ★　色の指定
			pushMatrix();
			rotate(k*PI/6);
			rect(6, 6, 6, 6);                                  // ★　長方形の場合: 長方形の位置とサイズ
//			ellipse(9, 9, 9, 9);                               // ★　円の場合：　　　　円の位置とサイズ
			popMatrix();
		}
		k = 0;                                                 // 
		fill(hsb1((k*2)/24.0+ratio, 1, 1));                    // ★　色の指定、上と同じ色の指定にする
		triangle(6, 6, 12, 6, 12, 12);	                       // 長方形の場合: もう一度、三角形を描いて重ねる
//		arc360(9, 9, 9, 9, -135, 45);	                       // 円の場合：　　　　もう一度、半円を描いて重ねる
	}

	public static void main(String[] args) {
		int i, j, n=0;
		double x; 
		a4Portrait();
		start();
		init();
		
		// ★　以下の３つのうち、どれか一つを選ぶ
//		CardSpec(14, 11, 91, 55, 2, 5);         // A-one F10A4-1 フォーマット
//		CardSpec(18.6, 21.2, 86.4, 50.8, 2, 5); // A-one F10A4-2 フォーマット
		CardSpec(8, 10.5, 97, 69, 2, 4);        // A-one F8A4-5  フォーマット


		x = startX;
		for (i=0; i<cols; i++) {
			double y = startY;
			for (j=0; j<rows; j++, n++) {
				pushMatrix();
				translate(x, y);
				drawCard(n, i, j, (double)n/(cols*rows));
				popMatrix();
				y += height;
			}
			x += width;
		}
		finish();
	}
}
