|
|
@@ -24,8 +24,8 @@ static unsigned int select = FOREGROUND; |
|
|
|
|
|
|
|
static int width = 0; |
|
|
|
static int height = 0; |
|
|
|
static int x = 4 * FONT_WIDTH + 2; |
|
|
|
static int y = 3 * FONT_HEIGHT + 2; |
|
|
|
static int x = 0; |
|
|
|
static int y = 0; |
|
|
|
|
|
|
|
static void export_render_as_png (char * file_path) { |
|
|
|
png_image image = { 0 }; |
|
|
@@ -132,32 +132,7 @@ static void render_character (char character) { |
|
|
|
render [u * width + v] = glyph [i]; |
|
|
|
} |
|
|
|
|
|
|
|
x += FONT_WIDTH; |
|
|
|
} |
|
|
|
|
|
|
|
static void render_line_number (void) { |
|
|
|
static int line = 0; |
|
|
|
int j = 0; |
|
|
|
unsigned int z = select; |
|
|
|
|
|
|
|
char c [] = " "; |
|
|
|
|
|
|
|
select = FOREGROUND; |
|
|
|
|
|
|
|
c [0] = (char) ((line / 1000) % 10) + '0'; |
|
|
|
c [1] = (char) ((line / 100) % 10) + '0'; |
|
|
|
c [2] = (char) ((line / 10) % 10) + '0'; |
|
|
|
c [3] = (char) ((line / 1) % 10) + '0'; |
|
|
|
|
|
|
|
for (j = 0; j != sizeof (c) - 1; ++j) { |
|
|
|
render_character (c [j] - ' '); |
|
|
|
} |
|
|
|
|
|
|
|
select = z; |
|
|
|
|
|
|
|
++x; |
|
|
|
|
|
|
|
++line; |
|
|
|
x += FONT_WIDTH + 1; |
|
|
|
} |
|
|
|
|
|
|
|
static void render_string (char * string, int length) { |
|
|
@@ -167,9 +142,8 @@ static void render_string (char * string, int length) { |
|
|
|
if (string [i] == '\t') { |
|
|
|
x += FONT_WIDTH * TAB_WIDTH; |
|
|
|
} else if (string [i] == '\n') { |
|
|
|
y += FONT_HEIGHT; |
|
|
|
y += FONT_HEIGHT + 1; |
|
|
|
x = 1; |
|
|
|
render_line_number (); |
|
|
|
} else { |
|
|
|
render_character (string [i] - ' '); |
|
|
|
} |
|
|
@@ -182,18 +156,6 @@ static void render_base (void) { |
|
|
|
for (i = 0; i != width * height; ++i) { |
|
|
|
render [i] = BACKGROUND; |
|
|
|
} |
|
|
|
|
|
|
|
for (i = 0; i != width; ++i) { |
|
|
|
render [i ] = FOREGROUND; |
|
|
|
render [i + (3 * FONT_HEIGHT + 1) * width] = FOREGROUND; |
|
|
|
render [i + (height - 1) * width] = FOREGROUND; |
|
|
|
} |
|
|
|
|
|
|
|
for (i = 0; i != height; ++i) { |
|
|
|
render [i * width ] = FOREGROUND; |
|
|
|
render [i * width + 4 * FONT_WIDTH + 1] = FOREGROUND; |
|
|
|
render [i * width + width - 1] = FOREGROUND; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int main (void) { |
|
|
@@ -211,54 +173,32 @@ int main (void) { |
|
|
|
"char", "short", "int", "long", "signed", "unsigned", "float", "double" |
|
|
|
}; |
|
|
|
|
|
|
|
char * c_preprocessor [8] = { |
|
|
|
"#include", "#define", "#ifdef", "#ifndef", "#undef", "#elif", "#if", "#endif" |
|
|
|
}; |
|
|
|
|
|
|
|
syntax_define (0, 0, 0, "#", "\n", '\\', TERMINAL_COLOUR_RED, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "//", "\n", '\0', TERMINAL_COLOUR_GREY, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "/*", "*/", '\0', TERMINAL_COLOUR_GREY, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "'", "'", '\\', TERMINAL_COLOUR_PINK, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "\"", "\"", '\\', TERMINAL_COLOUR_RED, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 1, 0, "()[]{}", "", '\0', TERMINAL_COLOUR_GREEN, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 1, 0, ".,:;<=>+-*/%!&~^", "", '\0', TERMINAL_COLOUR_BLUE, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "#", "\n", '\\', TERMINAL_COLOUR_RED, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "//", "\n", '\0', TERMINAL_COLOUR_GREY, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "/*", "*/", '\0', TERMINAL_COLOUR_GREY, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "'", "'", '\\', TERMINAL_COLOUR_PINK, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 0, 0, "\"", "\"", '\\', TERMINAL_COLOUR_RED, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 1, 0, "()[]{}", "", '\0', TERMINAL_COLOUR_BLUE, TERMINAL_EFFECT_BOLD); |
|
|
|
syntax_define (0, 1, 0, ".,:;<=>+-*/%!&~^", "", '\0', TERMINAL_COLOUR_BLUE, TERMINAL_EFFECT_BOLD); |
|
|
|
|
|
|
|
do { |
|
|
|
syntax_define (0, 0, 1, c_keywords [word], separator, '\0', TERMINAL_COLOUR_YELLOW, TERMINAL_EFFECT_BOLD); |
|
|
|
} while (++word != 32); |
|
|
|
|
|
|
|
word = 0; |
|
|
|
|
|
|
|
do { |
|
|
|
syntax_define (0, 0, 1, c_preprocessor [word], separator, '\0', TERMINAL_COLOUR_YELLOW, TERMINAL_EFFECT_NORMAL); |
|
|
|
} while (++word != 8); |
|
|
|
|
|
|
|
word = 0; |
|
|
|
|
|
|
|
syntax_define (0, 1, 1, "0123456789", separator, '\0', TERMINAL_COLOUR_CYAN, TERMINAL_EFFECT_BOLD); |
|
|
|
/*syntax_define (0, 1, 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separator, '\0', TERMINAL_COLOUR_PINK, TERMINAL_EFFECT_ITALIC); |
|
|
|
syntax_define (0, 1, 1, "abcdefghijklmnopqrstuvwxyz", separator, '\0', TERMINAL_COLOUR_WHITE, TERMINAL_EFFECT_ITALIC); |
|
|
|
syntax_define (0, 0, 1, "_", separator, '\0', TERMINAL_COLOUR_YELLOW, TERMINAL_EFFECT_ITALIC);*/ |
|
|
|
|
|
|
|
buffer = record (); |
|
|
|
/**/ |
|
|
|
width = (fetch_width (buffer) + 4) * FONT_WIDTH + 3; |
|
|
|
height = (fetch_height (buffer) + 3) * FONT_HEIGHT + 3; |
|
|
|
|
|
|
|
width = fetch_width (buffer) * (FONT_WIDTH + 1) + 1; |
|
|
|
height = fetch_height (buffer) * (FONT_HEIGHT + 1) + 1; |
|
|
|
|
|
|
|
render = allocate (4 * width * height); |
|
|
|
|
|
|
|
render_base (); |
|
|
|
|
|
|
|
x = 2 + 5 * FONT_WIDTH; |
|
|
|
y = 1 + FONT_HEIGHT; |
|
|
|
|
|
|
|
render_string ("Xuxuxu - Ognjen 'xolatile' Milan Robovic", 40); |
|
|
|
|
|
|
|
x = 1; |
|
|
|
y = 2 + 3 * FONT_HEIGHT; |
|
|
|
|
|
|
|
render_line_number (); |
|
|
|
/**/ |
|
|
|
do { |
|
|
|
int colour = 0; |
|
|
|
int effect = 0; |
|
|
|