|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
#include <math.h>
|
|
Ivan Mahonin |
7362e0 |
#include <stdio.h>
|
|
Ivan Mahonin |
7362e0 |
#include <assert.h>
|
|
Ivan Mahonin |
7362e0 |
#include <stdlib.h>
|
|
Ivan Mahonin |
7362e0 |
#include <string.h>
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
#include "helianthus.h"
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
#define CW 96
|
|
Ivan Mahonin |
7362e0 |
#define CH 128
|
|
Ivan Mahonin |
7362e0 |
#define CR 16
|
|
Ivan Mahonin |
7362e0 |
#define CB 1
|
|
Ivan Mahonin |
7362e0 |
#define SW 8
|
|
Ivan Mahonin |
7362e0 |
#define FS 64
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
#define CWW (CW - 2*CB)
|
|
Ivan Mahonin |
7362e0 |
#define CHH (CH - 2*CB)
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
const char *letters[][5] = {
|
|
Ivan Mahonin |
7362e0 |
{"Ա", "ա", "а", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Բ", "բ", "б", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Գ", "գ", "г", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Դ", "դ", "д", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ե", "ե", "е", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Զ", "զ", "з", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Է", "է", "э", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Ը", "ը", "ыэ", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Թ", "թ", "тх", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Ժ", "ժ", "ж", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ի", "ի", "и", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Լ", "լ", "л", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Խ", "խ", "х", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Ծ", "ծ", "тц", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Կ", "կ", "к", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Հ", "հ", "Հ", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Ձ", "ձ", "дз", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ղ", "ղ", "гх", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Ճ", "ճ", "тч", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Մ", "մ", "м", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Յ", "յ", "й", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Ն", "ն", "н", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Շ", "շ", "ш", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Ո", "ո", "(в)о", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Չ", "չ", "ч", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Պ", "պ", "п", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Ջ", "ջ", "дж", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ռ", "ռ", "рр", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ս", "ս", "с", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Վ", "վ", "в", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Տ", "տ", "т", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"Ր", "ր", "р", "", "1"},
|
|
Ivan Mahonin |
7362e0 |
{"Ց", "ց", "ц", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Ու", "ու", "у", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Փ", "փ", "пх", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Ք", "ք", "кх", "", "3"},
|
|
Ivan Mahonin |
7362e0 |
{"Օ", "օ", "о", "", "0"},
|
|
Ivan Mahonin |
7362e0 |
{"Ֆ", "ֆ", "ф", "", "2"},
|
|
Ivan Mahonin |
7362e0 |
{"և", "և", "ев", "եւ", "0"},
|
|
Ivan Mahonin |
7362e0 |
};
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
Animation bgtex;
|
|
Ivan Mahonin |
7362e0 |
Font fontNew;
|
|
Ivan Mahonin |
7362e0 |
Font fontHand;
|
|
Ivan Mahonin |
7362e0 |
Font fontClassic;
|
|
Ivan Mahonin |
7362e0 |
Framebuffer fb;
|
|
Ivan Mahonin |
7362e0 |
int seed;
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
void drawLetter(const char **letter) {
|
|
Ivan Mahonin |
7362e0 |
const char *syms[4] = { letter[2], letter[0], letter[1], letter[3] };
|
|
Ivan Mahonin |
7362e0 |
Font fonts[4] = { fontNew, fontNew, fontNew, fontHand };
|
|
Ivan Mahonin |
7362e0 |
double size[4] = { 0.8, 1, 1, 1 };
|
|
Ivan Mahonin |
7362e0 |
double offset[4] = { 0, 0.05, 0, 0 };
|
|
Ivan Mahonin |
7362e0 |
if (!strcmp(syms[0], "Հ")) fonts[0] = fontClassic;
|
|
Ivan Mahonin |
7362e0 |
if (!syms[3][0]) syms[3] = syms[2];
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
unsigned int colors[4] = { COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW };
|
|
Ivan Mahonin |
7362e0 |
int ci = letter[4][0] - '0';
|
|
Ivan Mahonin |
7362e0 |
if (ci < 0 || ci >= 4) ci = 2;
|
|
Ivan Mahonin |
7362e0 |
unsigned int color = colors[ci];
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
for(int r = 0, i = 0; r < 2; ++r)
|
|
Ivan Mahonin |
7362e0 |
for(int c = 0; c < 2; ++c, ++i) {
|
|
Ivan Mahonin |
7362e0 |
if (!syms[i][0]) continue;
|
|
Ivan Mahonin |
7362e0 |
saveState();
|
|
Ivan Mahonin |
7362e0 |
translate(c*CW + CB, r*CH + CB);
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
noStroke();
|
|
Ivan Mahonin |
7362e0 |
double ts = 512/2;
|
|
Ivan Mahonin |
7362e0 |
fillTexture(bgtex, randomFloat()*ts, randomFloat()*ts, ts, ts, FALSE);
|
|
Ivan Mahonin |
7362e0 |
rectRounded(0, 0, CWW, CHH, CR);
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
noFill();
|
|
Ivan Mahonin |
7362e0 |
stroke(colorWithAlpha(COLOR_BLACK, 0.5));
|
|
Ivan Mahonin |
7362e0 |
strokeWidth(1);
|
|
Ivan Mahonin |
7362e0 |
rectRounded(0.5, 0.5, CWW - 1, CHH - 1, CR);
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
stroke(colorWithAlpha(color, 0.25));
|
|
Ivan Mahonin |
7362e0 |
strokeWidth(SW);
|
|
Ivan Mahonin |
7362e0 |
rectRounded(0.5*SW, 0.5*SW, CWW - SW, CHH - SW, CR - 0.5*SW);
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
stroke(colorWithAlpha(COLOR_BLACK, 0.75));
|
|
Ivan Mahonin |
7362e0 |
textAlign(HALIGN_CENTER, VALIGN_CENTER);
|
|
Ivan Mahonin |
7362e0 |
textFont(fonts[i]);
|
|
Ivan Mahonin |
7362e0 |
textSize(FS*size[i]);
|
|
Ivan Mahonin |
7362e0 |
text(0.5*CWW, (0.5 + offset[i])*CHH, syms[i]);
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
restoreState();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
void drawLetters() {
|
|
Ivan Mahonin |
7362e0 |
srand(seed);
|
|
Ivan Mahonin |
7362e0 |
for(int i = 0; i < sizeof(letters)/sizeof(*letters); ++i) {
|
|
Ivan Mahonin |
7362e0 |
saveState();
|
|
Ivan Mahonin |
7362e0 |
translate(CW*2*(i%8), CH*2*(i/8));
|
|
Ivan Mahonin |
7362e0 |
drawLetter(letters[i]);
|
|
Ivan Mahonin |
7362e0 |
restoreState();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
void save(const char *filename) {
|
|
Ivan Mahonin |
7362e0 |
saveState();
|
|
Ivan Mahonin |
7362e0 |
resetState();
|
|
Ivan Mahonin |
7362e0 |
target(fb);
|
|
Ivan Mahonin |
7362e0 |
background(COLOR_TRANSPARENT);
|
|
Ivan Mahonin |
7362e0 |
clear();
|
|
Ivan Mahonin |
7362e0 |
drawLetters();
|
|
Ivan Mahonin |
7362e0 |
if (viewportSave(filename))
|
|
Ivan Mahonin |
7362e0 |
printf("saved to %s\n", filename);
|
|
Ivan Mahonin |
7362e0 |
restoreState();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
void init() {
|
|
Ivan Mahonin |
7362e0 |
fb = createFramebuffer(CW*2*8, CH*2*5);
|
|
Ivan Mahonin |
7362e0 |
bgtex = createAnimationEx("data/shisen/wood4.png", TRUE, TRUE, TRUE);
|
|
Ivan Mahonin |
7362e0 |
fontNew = createFont("data/shisen/arnamu.ttf");
|
|
Ivan Mahonin |
7362e0 |
fontHand = createFont("data/shisen/Vrdznagir.otf");
|
|
Ivan Mahonin |
7362e0 |
fontClassic = createFont("data/shisen/Arian_Grqi_i_U.ttf");
|
|
Ivan Mahonin |
7362e0 |
seed = rand();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
void draw() {
|
|
Ivan Mahonin |
7362e0 |
saveState();
|
|
Ivan Mahonin |
7362e0 |
//zoom(0.5);
|
|
Ivan Mahonin |
7362e0 |
drawLetters();
|
|
Ivan Mahonin |
7362e0 |
if (keyWentDown("space")) seed = rand();
|
|
Ivan Mahonin |
7362e0 |
if (keyWentDown("s")) save("data/shisen/letters-gen.png");
|
|
Ivan Mahonin |
7362e0 |
restoreState();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
int main() {
|
|
Ivan Mahonin |
7362e0 |
windowSetResizable(TRUE);
|
|
Ivan Mahonin |
7362e0 |
windowSetVariableFrameRate();
|
|
Ivan Mahonin |
7362e0 |
windowSetInit(&init);
|
|
Ivan Mahonin |
7362e0 |
windowSetDraw(&draw);
|
|
Ivan Mahonin |
7362e0 |
windowRun();
|
|
Ivan Mahonin |
7362e0 |
}
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|
|
Ivan Mahonin |
7362e0 |
|