#include "svg.h"

int nextChar(void) {
    static const int charRange[][2] = {  
        { 0x2600, 0x269d },
        { 0x26a0, 0x26a1 },
        { 0x26bd, 0x26be },
        { 0x2701, 0x2712 },
        { 0x1f300, 0x1f30c },
        { 0x1f30f, 0x1f30f },
        { 0x1f311, 0x1f311 },
        { 0x1f313, 0x1f315 },
        { 0x1f319, 0x1f319 },
        { 0x1f31b, 0x1f31b },
        { 0x1f31f, 0x1f320 },
        { 0x1f330, 0x1f331 },
        { 0x1f334, 0x1f335 },
        { 0x1f337, 0x1f34a },
        { 0x1f34c, 0x1f34f },
        { 0x1f351, 0x1f353 },
        { 0x1f365, 0x1f370 },
        { 0x1f3a0, 0x1f3c4 },
        { 0x1f3c6, 0x1f3c6 },
        { 0x1f3c8, 0x1f3c8 },
        { 0x1f3ca, 0x1f3ca },
        { 0x1f40c, 0x1f40e },
        { 0x1f411, 0x1f412 },
        { 0x1f414, 0x1f414 },
        { 0x1f417, 0x1f41a },
        { 0x1f41d, 0x1f429 },
        { 0x1f42b, 0x1f43e },
        { 0x1f44a, 0x1f450 },
        { 0x1f5fb, 0x1f5fe },
        { 0x1f601, 0x1f610 },
        { 0x1f612, 0x1f614 },
        { 0x1f616, 0x1f616 },
        { 0x1f618, 0x1f618 },
        { 0x1f61a, 0x1f61a },
        { 0x1f61c, 0x1f61e },
        { 0x1f620, 0x1f625 },
        { 0x1f628, 0x1f62b },
        { 0x1f62d, 0x1f62d },
        { 0x1f630, 0x1f633 },
        { 0x1f635, 0x1f637 },
        { 0x1f680, 0x1f680 },
        { 0x1f683, 0x1f685 },
        { 0x1f687, 0x1f687 },
        { 0x1f689, 0x1f689 },
        { 0x1f68c, 0x1f68c },
        { 0x1f68f, 0x1f68f },
        { 0x1f691, 0x1f693 },
        { 0x1f695, 0x1f695 },
        { 0x1f697, 0x1f697 },
        { 0x1f699, 0x1f69a },
        { 0x1f6a2, 0x1f6a2 },
        { 0x1f6a4, 0x1f6a4 },
        { 0x1f6b2, 0x1f6b2 },
    };
    static int current = 0;
    static int nRanges = sizeof(charRange)/(sizeof(int)*2);
    static int c = -1;
    int nextC;
        
    if (c==-1) {
        c = charRange[current][0];
    }   
    nextC = c++;
    if (c > charRange[current][1]) {
        current++;
        if (current >= nRanges) {
            current = 0;
        }    
        c = charRange[current][0];
    }   
        
    return nextC;
}

int main(void) {
    int i,j;
    int x0=36, y0=30;

    start();
    rulers();
    //  flowerSymbol("flower");
    textFont("Arial", 9);             /* フォントとサイズ */

    for (i=0; i<25; i++) {
        for (j=1; j<17; j++) {
            fill(hsl360(i*15, 50+j*50.0/14, 50));
            // use("#flower", x0+i*10, y0+j*10, 6, 6);
            text("&#x%x;", x0+i*9, y0+j*9, nextChar());
        }
    }

    fillOpacity(1);
    fill(rgb255(40,80,40));
    textFont("Verdana", 4);
    rotate(PI/2);
    text("Faculty of Engineering, Kagawa University", 35, -10);

    finish();
    return 0;
}
