#include "svg.h"

double startX, startY, width, height;
int cols, rows;

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;
}

void f10a4_1(void) { CardSpec(14, 11, 91, 55, 2, 5); }
void f10a4_2(void) { CardSpec(18.6, 21.2, 86.4, 50.8, 2, 5); }
void f8a4_5(void)  { CardSpec(8, 10.5, 97, 69, 2, 4); }

void init(void) {
}

void drawFrame(void) {
	strokeWeight(0.1);
	stroke(bw1(0));
	noFill();
	rect(0, 0, width, height);
}

void drawCard(int n, int i, int j, double ratio) {
	int m, angle = 35;
  
    //枠
  drawFrame();  // for debug, comment out

  noFill(); 	  
  //ベジエ
  pushMatrix();
  translate(width/2, height/2);                                      //中心に移動
  scale(0.45, 0.4);                                                  //x,y方向に縮小(0.7倍)
  for(m = 0; m < 40 ;m++){
      stroke(hsb360(m * (10 + n), m * (3 + i), m * (5 + j)));        //線の色変更
      strokeWeight(0.5);
      pushMatrix();

      rotate(radians((m * 25) + angle));                             //指定した角度分回転
      translate(5, 0);                                               //x方向に5移動

      //ベジエ曲線の描写
      //(0,0)から(40,40)まで2つの座標を通るような曲線を引く
      bezier(0, 0, 10 + m, (-10 * j) - (2 * m), (10 * i) + (2 * m), (60 / (n + 1)) - (2 * m), 40, 40);
      popMatrix();
  }

  //アイコン
  textFont("Arial Unicode MS", 20);
	fill(hsb100(ratio*100+40, 100, 100));
	translate(-10, 7.5);
	text("&#x1f383;", 0, 0);
  
  //名前
  fill(hsb360(ratio*360, 100, 100));
	textFont("MS-Mincho", 12);
	text("讃岐　太郎", 45, 70);

	popMatrix();
}

int main(void) {
	int i, j, n=0;
	double x;

	a4Portrait();
	start();
	init();
	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();
	return 0;
}
