ref: 794bc17f6369d2f044bcebbcea21f100a17a45b6
parent: 36a1572b95ddca0c24ac4cbcccb3a547e05b0e1a
author: David <gek@katherine>
date: Sat Mar 13 11:04:21 EST 2021
Automatic commit.
--- a/Raw_Demos/asciifractal.sh
+++ b/Raw_Demos/asciifractal.sh
@@ -1,3 +1,3 @@
-export CHAR=Q
+export CHAR=¡
echo -n $CHAR | ./bigfont $CHAR | ./bigfont $CHAR | ./bigfont $CHAR | ./t2i -col 0xff00 -ts 1 -w 10000 -h 10000 && xviewer t2i.png
--- a/Raw_Demos/bigfont.c
+++ b/Raw_Demos/bigfont.c
@@ -6,7 +6,7 @@
#include "../include-demo/stringutil.h"
char fillchar = '#';
-void render(char *bitmap, int x) {+void render(unsigned char *bitmap, int x) {int y;
int set;
for (y=0; y < 8; y++) {@@ -20,19 +20,19 @@
{unsigned long long l;
- char* b = read_until_terminator_alloced(stdin, &l, '\n', 30);
+ unsigned char* b = (unsigned char*)read_until_terminator_alloced(stdin, &l, '\n', 30);
if(b)
do { for(unsigned int x = 0; x < 8; x++){ //Despite the name, this is actually the row fputc('\n', stdout); for(unsigned int i = 0; b[i] != '\n' && b[i] != '\0'; i++){- char *bitmap = font8x8_basic[b[i] & 127];
+ unsigned char *bitmap = (unsigned char*)font8x8_basic[ b[i] ];
render(bitmap, x);
}
}
//Walk b until the next \n or null terminator.
free(b);
- b = read_until_terminator_alloced(stdin, &l, '\n', 30);
+ b = (unsigned char*)read_until_terminator_alloced(stdin, &l, '\n', 30);
} while(!feof(stdin) && b);
if(b) free(b);
}
--- a/src/font8x8_basic.h
+++ b/src/font8x8_basic.h
@@ -20,7 +20,7 @@
// Constant: font8x8_basic
// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin)
-GLbyte font8x8_basic[128][8] = {+GLbyte font8x8_basic[256][8] = { {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002@@ -148,5 +148,142 @@
{0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) {0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) {0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~)- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007F+
+//32 blank characters.
+
+
+
+
+
+
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0080+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00A0 (no break space)+ { 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00}, // U+00A1 (inverted !)+ { 0x18, 0x18, 0x7E, 0x03, 0x03, 0x7E, 0x18, 0x18}, // U+00A2 (dollarcents)+ { 0x1C, 0x36, 0x26, 0x0F, 0x06, 0x67, 0x3F, 0x00}, // U+00A3 (pound sterling)+ { 0x00, 0x00, 0x63, 0x3E, 0x36, 0x3E, 0x63, 0x00}, // U+00A4 (currency mark)+ { 0x33, 0x33, 0x1E, 0x3F, 0x0C, 0x3F, 0x0C, 0x0C}, // U+00A5 (yen)+ { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+00A6 (broken pipe)+ { 0x7C, 0xC6, 0x1C, 0x36, 0x36, 0x1C, 0x33, 0x1E}, // U+00A7 (paragraph)+ { 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00A8 (diaeresis)+ { 0x3C, 0x42, 0x99, 0x85, 0x85, 0x99, 0x42, 0x3C}, // U+00A9 (copyright symbol)+ { 0x3C, 0x36, 0x36, 0x7C, 0x00, 0x00, 0x00, 0x00}, // U+00AA (superscript a)+ { 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00}, // U+00AB (<<)+ { 0x00, 0x00, 0x00, 0x3F, 0x30, 0x30, 0x00, 0x00}, // U+00AC (gun pointing left)+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00AD (soft hyphen)+ { 0x3C, 0x42, 0x9D, 0xA5, 0x9D, 0xA5, 0x42, 0x3C}, // U+00AE (registered symbol)+ { 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00AF (macron)+ { 0x1C, 0x36, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00B0 (degree)+ { 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00}, // U+00B1 (plusminus)+ { 0x1C, 0x30, 0x18, 0x0C, 0x3C, 0x00, 0x00, 0x00}, // U+00B2 (superscript 2)+ { 0x1C, 0x30, 0x18, 0x30, 0x1C, 0x00, 0x00, 0x00}, // U+00B2 (superscript 3)+ { 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00B2 (aigu)+ { 0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x03}, // U+00B5 (mu)+ { 0xFE, 0xDB, 0xDB, 0xDE, 0xD8, 0xD8, 0xD8, 0x00}, // U+00B6 (pilcrow)+ { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, // U+00B7 (central dot)+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x1E}, // U+00B8 (cedille)+ { 0x08, 0x0C, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00B9 (superscript 1)+ { 0x1C, 0x36, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00BA (superscript 0)+ { 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00}, // U+00BB (>>)+ { 0xC3, 0x63, 0x33, 0xBD, 0xEC, 0xF6, 0xF3, 0x03}, // U+00BC (1/4)+ { 0xC3, 0x63, 0x33, 0x7B, 0xCC, 0x66, 0x33, 0xF0}, // U+00BD (1/2)+ { 0x03, 0xC4, 0x63, 0xB4, 0xDB, 0xAC, 0xE6, 0x80}, // U+00BE (3/4)+ { 0x0C, 0x00, 0x0C, 0x06, 0x03, 0x33, 0x1E, 0x00}, // U+00BF (inverted ?)+ { 0x07, 0x00, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x00}, // U+00C0 (A grave)+ { 0x70, 0x00, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x00}, // U+00C1 (A aigu)+ { 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x7F, 0x63, 0x00}, // U+00C2 (A circumflex)+ { 0x6E, 0x3B, 0x00, 0x3E, 0x63, 0x7F, 0x63, 0x00}, // U+00C3 (A ~)+ { 0x63, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x63, 0x00}, // U+00C4 (A umlaut)+ { 0x0C, 0x0C, 0x00, 0x1E, 0x33, 0x3F, 0x33, 0x00}, // U+00C5 (A ring)+ { 0x7C, 0x36, 0x33, 0x7F, 0x33, 0x33, 0x73, 0x00}, // U+00C6 (AE)+ { 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x18, 0x30, 0x1E}, // U+00C7 (C cedille)+ { 0x07, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00C8 (E grave)+ { 0x38, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00C9 (E aigu)+ { 0x0C, 0x12, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00CA (E circumflex)+ { 0x36, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00CB (E umlaut)+ { 0x07, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CC (I grave)+ { 0x38, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CD (I aigu)+ { 0x0C, 0x12, 0x00, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CE (I circumflex)+ { 0x33, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CF (I umlaut)+ { 0x3F, 0x66, 0x6F, 0x6F, 0x66, 0x66, 0x3F, 0x00}, // U+00D0 (Eth)+ { 0x3F, 0x00, 0x33, 0x37, 0x3F, 0x3B, 0x33, 0x00}, // U+00D1 (N ~)+ { 0x0E, 0x00, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D2 (O grave)+ { 0x70, 0x00, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D3 (O aigu)+ { 0x3C, 0x66, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D4 (O circumflex)+ { 0x6E, 0x3B, 0x00, 0x3E, 0x63, 0x63, 0x3E, 0x00}, // U+00D5 (O ~)+ { 0xC3, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x00}, // U+00D6 (O umlaut)+ { 0x00, 0x36, 0x1C, 0x08, 0x1C, 0x36, 0x00, 0x00}, // U+00D7 (multiplicative x)+ { 0x5C, 0x36, 0x73, 0x7B, 0x6F, 0x36, 0x1D, 0x00}, // U+00D8 (O stroke)+ { 0x0E, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00D9 (U grave)+ { 0x70, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00DA (U aigu)+ { 0x3C, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00DB (U circumflex)+ { 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+00DC (U umlaut)+ { 0x70, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x00}, // U+00DD (Y aigu)+ { 0x0F, 0x06, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+00DE (Thorn)+ { 0x00, 0x1E, 0x33, 0x1F, 0x33, 0x1F, 0x03, 0x03}, // U+00DF (beta)+ { 0x07, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E0 (a grave)+ { 0x38, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E1 (a aigu)+ { 0x7E, 0xC3, 0x3C, 0x60, 0x7C, 0x66, 0xFC, 0x00}, // U+00E2 (a circumflex)+ { 0x6E, 0x3B, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E3 (a ~)+ { 0x33, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E4 (a umlaut)+ { 0x0C, 0x0C, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E5 (a ring)+ { 0x00, 0x00, 0xFE, 0x30, 0xFE, 0x33, 0xFE, 0x00}, // U+00E6 (ae)+ { 0x00, 0x00, 0x1E, 0x03, 0x03, 0x1E, 0x30, 0x1C}, // U+00E7 (c cedille)+ { 0x07, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00E8 (e grave)+ { 0x38, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00E9 (e aigu)+ { 0x7E, 0xC3, 0x3C, 0x66, 0x7E, 0x06, 0x3C, 0x00}, // U+00EA (e circumflex)+ { 0x33, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00EB (e umlaut)+ { 0x07, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00EC (i grave)+ { 0x1C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00ED (i augu)+ { 0x3E, 0x63, 0x1C, 0x18, 0x18, 0x18, 0x3C, 0x00}, // U+00EE (i circumflex)+ { 0x33, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00EF (i umlaut)+ { 0x1B, 0x0E, 0x1B, 0x30, 0x3E, 0x33, 0x1E, 0x00}, // U+00F0 (eth)+ { 0x00, 0x1F, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x00}, // U+00F1 (n ~)+ { 0x00, 0x07, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F2 (o grave)+ { 0x00, 0x38, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F3 (o aigu)+ { 0x1E, 0x33, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F4 (o circumflex)+ { 0x6E, 0x3B, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F5 (o ~)+ { 0x00, 0x33, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F6 (o umlaut)+ { 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00}, // U+00F7 (division)+ { 0x00, 0x60, 0x3C, 0x76, 0x7E, 0x6E, 0x3C, 0x06}, // U+00F8 (o stroke)+ { 0x00, 0x07, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00F9 (u grave)+ { 0x00, 0x38, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FA (u aigu)+ { 0x1E, 0x33, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FB (u circumflex)+ { 0x00, 0x33, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FC (u umlaut)+ { 0x00, 0x38, 0x00, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+00FD (y aigu)+ { 0x00, 0x00, 0x06, 0x3E, 0x66, 0x3E, 0x06, 0x00}, // U+00FE (thorn)+ { 0x00, 0x33, 0x00, 0x33, 0x33, 0x3E, 0x30, 0x1F} // U+00FF (y umlaut)+
};
--- a/src/ztext.c
+++ b/src/ztext.c
@@ -77,7 +77,7 @@
}
void glDrawText(const GLubyte* text, GLint x, GLint y, GLuint p) {GLContext* c = gl_get_context();
-
+GLint i = 0;
#include "error_check.h"
#if TGL_FEATURE_ERROR_CHECK == 1
@@ -91,8 +91,8 @@
GLint xoff = 0;
GLint yoff = 0;
GLint mult = c->textsize;
- for (GLint i = 0; text[i] != '\0' && y + 7 < h; i++) {- if (text[i] != '\n' && text[i] < 127 && xoff + x < w) {+ for (;text[i] != '\0' && y + 7 < h; i++) {+ if (text[i] != '\n' && xoff + x < w) {renderchar(font8x8_basic[text[i]], x + xoff, y + yoff, p);
xoff += 8 * mult;
} else if (text[i] == '\n') {--
⑨