diff --git a/imlac_sdl/animation/test.c b/imlac_sdl/animation/test.c index 9e9871d..7cdac2a 100644 --- a/imlac_sdl/animation/test.c +++ b/imlac_sdl/animation/test.c @@ -37,37 +37,110 @@ DLine Char_I[] = {{REL, OFF, 0, -6}, {REL, OFF, -1, 0}, {REL, ON, 2, 0}, }; +int len_Char_I = (sizeof(Char_I) / sizeof(Char_I[0])); DLine Char_m[] = {{REL, ON, 0, -3}, {REL, ON, 1, -1}, - {REL, ON, 0, 1}, + {REL, ON, 1, 1}, + {REL, ON, 0, 1}, {REL, OFF, 0, -1}, {REL, ON, 1, -1}, {REL, ON, 1, 1}, {REL, ON, 0, 3}, }; +int len_Char_m = (sizeof(Char_m) / sizeof(Char_m[0])); -int Magnification = 5; +DLine Char_l[] = {{REL, OFF, 1, 0}, + {REL, ON, -1, -1}, + {REL, ON, 0, -5}, + }; +int len_Char_l = (sizeof(Char_l) / sizeof(Char_l[0])); + +DLine Char_a[] = {{REL, OFF, 0, -1}, + {REL, ON, 0, -2}, + {REL, ON, 1, -1}, + {REL, ON, 2, 0}, + {REL, ON, 1, 1}, + {REL, ON, 0, 3}, + {REL, OFF, -4, -1}, + {REL, ON, 1, 1}, + {REL, ON, 1, 0}, + {REL, ON, 2, -2}, + }; +int len_Char_a = (sizeof(Char_a) / sizeof(Char_a[0])); + +DLine Char_c[] = {{REL, OFF, 3, -1}, + {REL, ON, -1, 1}, + {REL, ON, -1, 0}, + {REL, ON, -1, -1}, + {REL, ON, 0, -2}, + {REL, ON, 1, -1}, + {REL, ON, 1, 0}, + {REL, ON, 1, 1}, + }; +int len_Char_c = (sizeof(Char_c) / sizeof(Char_c[0])); + +int Magnification = 4; unsigned int make_drawlist(void) { + static int x_origin = 10; + static int y_origin = 45; + static int deltax = 2; + static int deltay = 1; + drawlist_end = 0; - DLine dline = {ABS, OFF, 100, 100}; - memcpy(&drawlist[drawlist_end], &dline, sizeof(DLine)); + DLine dline = {ABS, OFF, x_origin, y_origin}; + memcpy(&drawlist[drawlist_end], &dline, sizeof(dline)); ++drawlist_end; memcpy(&drawlist[drawlist_end], Char_I, sizeof(Char_I)); - drawlist_end += sizeof(Char_I); + drawlist_end += len_Char_I; - DLine dline2 = {ABS, OFF, 106, 100}; - memcpy(&drawlist[drawlist_end], &dline2, sizeof(DLine)); + DLine dline2 = {ABS, OFF, x_origin+4, y_origin}; + memcpy(&drawlist[drawlist_end], &dline2, sizeof(dline2)); ++drawlist_end; memcpy(&drawlist[drawlist_end], Char_m, sizeof(Char_m)); - drawlist_end += sizeof(Char_m); + drawlist_end += len_Char_m; + + DLine dline3 = {ABS, OFF, x_origin+10, y_origin}; + memcpy(&drawlist[drawlist_end], &dline3, sizeof(dline3)); + ++drawlist_end; + + memcpy(&drawlist[drawlist_end], Char_l, sizeof(Char_l)); + drawlist_end += len_Char_l; + + DLine dline4 = {ABS, OFF, x_origin+13, y_origin}; + memcpy(&drawlist[drawlist_end], &dline4, sizeof(dline4)); + ++drawlist_end; + + memcpy(&drawlist[drawlist_end], Char_a, sizeof(Char_a)); + drawlist_end += len_Char_a; + + DLine dline5 = {ABS, OFF, x_origin+19, y_origin}; + memcpy(&drawlist[drawlist_end], &dline5, sizeof(dline5)); + ++drawlist_end; + + memcpy(&drawlist[drawlist_end], Char_c, sizeof(Char_c)); + drawlist_end += len_Char_c; + + // move origins + x_origin += deltax; + y_origin += deltay; + + if (x_origin > 200 || x_origin < 10) + { + deltax = -deltax; + } + + if (y_origin > 230 || y_origin < 10) + { + deltay = -deltay; + } return drawlist_end; } @@ -152,7 +225,7 @@ main(int argc, char **argv) { drawlist_end = make_drawlist(); - SDL_Delay(5); + SDL_Delay(30); SDL_PollEvent(&event); switch (event.type) @@ -191,6 +264,7 @@ main(int argc, char **argv) enum BEAM beam = drawlist[dindex].beam; int dx = drawlist[dindex].dx * Magnification; int dy = drawlist[dindex].dy * Magnification; + unsigned int new_x; unsigned int new_y; @@ -200,7 +274,9 @@ main(int argc, char **argv) new_y = dy; if (beam == ON) - SDL_RenderDrawLine(renderer, abs_x, abs_y, new_x + 1, new_y + 1); + { + SDL_RenderDrawLine(renderer, abs_x, abs_y, new_x, new_y); + } } else { @@ -208,7 +284,9 @@ main(int argc, char **argv) new_y = abs_y + dy; if (beam == ON) - SDL_RenderDrawLine(renderer, abs_x, abs_y, new_x + 1, new_y + 1); + { + SDL_RenderDrawLine(renderer, abs_x, abs_y, new_x, new_y); + } } abs_x = new_x;