| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- #ifdef _arch_dreamcast
- #include "GL/glkos.h"
- #include "GL/glu.h"
- #include "GL/glext.h"
- #include "kos.h"
- #else
- #include "GL/gl.h"
- #endif
- #include "stdio.h"
- #include "dirent.h"
- #include "string.h"
- #include "../../include/base.h"
- const unsigned char font6x8_ascii[128][6] = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x00
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x01
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x02
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x03
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x04
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x05
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x06
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x07
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x08
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x09
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0A
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0B
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0C
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0D
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0E
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0F
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x10
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x11
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x12
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x13
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x14
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x15
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x16
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x17
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x18
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x19
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1A
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1B
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1C
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1D
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1E
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x1F
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20 (space)
- {0x00, 0x00, 0x00, 0x2F, 0x00, 0x00}, // 0x21 (!)
- {0x00, 0x00, 0x03, 0x00, 0x03, 0x00}, // 0x22 (")
- {0x00, 0x14, 0x3E, 0x14, 0x3E, 0x14}, // 0x23 (#)
- {0x00, 0x04, 0x2A, 0x7F, 0x2A, 0x10}, // 0x24 ($)
- {0x00, 0x26, 0x10, 0x08, 0x04, 0x32}, // 0x25 (%)
- {0x00, 0x1A, 0x25, 0x29, 0x10, 0x28}, // 0x26 (&)
- {0x00, 0x00, 0x00, 0x03, 0x00, 0x00}, // 0x27 (')
- {0x00, 0x00, 0x3E, 0x41, 0x41, 0x00}, // 0x28 (()
- {0x00, 0x00, 0x41, 0x41, 0x3E, 0x00}, // 0x29 ())
- {0x00, 0x28, 0x18, 0x0E, 0x18, 0x28}, // 0x2A (*)
- {0x00, 0x08, 0x08, 0x3E, 0x08, 0x08}, // 0x2B (+)
- {0x00, 0x00, 0x20, 0x10, 0x00, 0x00}, // 0x2C (,)
- {0x00, 0x08, 0x08, 0x08, 0x08, 0x08}, // 0x2D (-)
- {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}, // 0x2E (.)
- {0x00, 0x20, 0x10, 0x08, 0x04, 0x02}, // 0x2F (/)
- {0x00, 0x00, 0x1E, 0x21, 0x21, 0x1E}, // 0x30 (0)
- {0x00, 0x00, 0x00, 0x22, 0x3F, 0x20}, // 0x31 (1)
- {0x00, 0x00, 0x22, 0x31, 0x29, 0x26}, // 0x32 (2)
- {0x00, 0x00, 0x12, 0x21, 0x25, 0x1A}, // 0x33 (3)
- {0x00, 0x00, 0x0C, 0x0A, 0x3F, 0x08}, // 0x34 (4)
- {0x00, 0x00, 0x17, 0x25, 0x25, 0x19}, // 0x35 (5)
- {0x00, 0x00, 0x1C, 0x26, 0x25, 0x18}, // 0x36 (6)
- {0x00, 0x00, 0x01, 0x39, 0x05, 0x03}, // 0x37 (7)
- {0x00, 0x00, 0x1A, 0x25, 0x25, 0x1A}, // 0x38 (8)
- {0x00, 0x00, 0x06, 0x09, 0x29, 0x1E}, // 0x39 (9)
- {0x00, 0x00, 0x00, 0x14, 0x00, 0x00}, // 0x3A (:)
- {0x00, 0x00, 0x20, 0x14, 0x00, 0x00}, // 0x3B (;)
- {0x00, 0x00, 0x08, 0x14, 0x22, 0x00}, // 0x3C (<)
- {0x00, 0x00, 0x14, 0x14, 0x14, 0x00}, // 0x3D (=)
- {0x00, 0x00, 0x22, 0x14, 0x08, 0x00}, // 0x3E (>)
- {0x00, 0x02, 0x01, 0x29, 0x06, 0x00}, // 0x3F (?)
- {0x00, 0x1E, 0x21, 0x2D, 0x2E, 0x00}, // 0x40 (@)
- {0x00, 0x30, 0x0C, 0x0B, 0x0C, 0x30}, // 0x41 (A)
- {0x00, 0x00, 0x3F, 0x25, 0x25, 0x1A}, // 0x42 (B)
- {0x00, 0x00, 0x1E, 0x21, 0x21, 0x12}, // 0x43 (C)
- {0x00, 0x00, 0x3F, 0x21, 0x21, 0x1E}, // 0x44 (D)
- {0x00, 0x00, 0x3F, 0x25, 0x25, 0x25}, // 0x45 (E)
- {0x00, 0x00, 0x3F, 0x05, 0x05, 0x05}, // 0x46 (F)
- {0x00, 0x00, 0x1E, 0x21, 0x29, 0x1A}, // 0x47 (G)
- {0x00, 0x00, 0x3F, 0x04, 0x04, 0x3F}, // 0x48 (H)
- {0x00, 0x00, 0x21, 0x3F, 0x21, 0x00}, // 0x49 (I)
- {0x00, 0x18, 0x20, 0x21, 0x1F, 0x00}, // 0x4A (J)
- {0x00, 0x00, 0x3F, 0x0C, 0x12, 0x21}, // 0x4B (K)
- {0x00, 0x00, 0x3F, 0x20, 0x20, 0x20}, // 0x4C (L)
- {0x00, 0x3F, 0x06, 0x08, 0x06, 0x3F}, // 0x4D (M)
- {0x00, 0x00, 0x3F, 0x06, 0x18, 0x3F}, // 0x4E (N)
- {0x00, 0x00, 0x1E, 0x21, 0x21, 0x1E}, // 0x4F (O)
- {0x00, 0x00, 0x3F, 0x09, 0x09, 0x06}, // 0x50 (P)
- {0x00, 0x1E, 0x21, 0x21, 0x5E, 0x00}, // 0x51 (Q)
- {0x00, 0x00, 0x3F, 0x09, 0x19, 0x26}, // 0x52 (R)
- {0x00, 0x00, 0x12, 0x25, 0x29, 0x12}, // 0x53 (S)
- {0x00, 0x01, 0x01, 0x3F, 0x01, 0x01}, // 0x54 (T)
- {0x00, 0x1F, 0x20, 0x20, 0x20, 0x1F}, // 0x55 (U)
- {0x00, 0x0F, 0x10, 0x20, 0x10, 0x0F}, // 0x56 (V)
- {0x00, 0x1F, 0x20, 0x1C, 0x20, 0x1F}, // 0x57 (W)
- {0x00, 0x21, 0x12, 0x0C, 0x12, 0x21}, // 0x58 (X)
- {0x00, 0x03, 0x04, 0x38, 0x04, 0x03}, // 0x59 (Y)
- {0x00, 0x00, 0x31, 0x29, 0x25, 0x23}, // 0x5A (Z)
- {0x00, 0x00, 0x3F, 0x21, 0x21, 0x00}, // 0x5B ([)
- {0x00, 0x02, 0x04, 0x08, 0x10, 0x20}, // 0x5C (\)
- {0x00, 0x00, 0x21, 0x21, 0x3F, 0x00}, // 0x5D (])
- {0x00, 0x04, 0x02, 0x01, 0x02, 0x04}, // 0x5E (^)
- {0x00, 0x40, 0x40, 0x40, 0x40, 0x40}, // 0x5F (_)
- {0x00, 0x00, 0x00, 0x01, 0x02, 0x00}, // 0x60 (`)
- {0x00, 0x18, 0x24, 0x24, 0x18, 0x20}, // 0x61 (a)
- {0x00, 0x00, 0x3F, 0x24, 0x24, 0x18}, // 0x62 (b)
- {0x00, 0x00, 0x18, 0x24, 0x24, 0x00}, // 0x63 (c)
- {0x00, 0x00, 0x18, 0x24, 0x24, 0x3F}, // 0x64 (d)
- {0x00, 0x00, 0x1C, 0x2A, 0x2A, 0x0C}, // 0x65 (e)
- {0x00, 0x04, 0x04, 0x3E, 0x05, 0x05}, // 0x66 (f)
- {0x00, 0x00, 0x0C, 0x52, 0x52, 0x3E}, // 0x67 (g)
- {0x00, 0x00, 0x3F, 0x04, 0x04, 0x38}, // 0x68 (h)
- {0x00, 0x00, 0x24, 0x3D, 0x20, 0x00}, // 0x69 (i)
- {0x00, 0x20, 0x40, 0x44, 0x3D, 0x00}, // 0x6A (j)
- {0x00, 0x00, 0x3F, 0x08, 0x14, 0x22}, // 0x6B (k)
- {0x00, 0x00, 0x1F, 0x20, 0x20, 0x10}, // 0x6C (l)
- {0x00, 0x3E, 0x04, 0x18, 0x04, 0x3E}, // 0x6D (m)
- {0x00, 0x00, 0x3C, 0x02, 0x02, 0x3C}, // 0x6E (n)
- {0x00, 0x00, 0x1C, 0x22, 0x22, 0x1C}, // 0x6F (o)
- {0x00, 0x00, 0x7E, 0x12, 0x12, 0x0C}, // 0x70 (p)
- {0x00, 0x00, 0x0C, 0x12, 0x12, 0x7E}, // 0x71 (q)
- {0x00, 0x00, 0x04, 0x38, 0x04, 0x04}, // 0x72 (r)
- {0x00, 0x00, 0x04, 0x2A, 0x2A, 0x10}, // 0x73 (s)
- {0x00, 0x00, 0x04, 0x1E, 0x24, 0x10}, // 0x74 (t)
- {0x00, 0x1C, 0x20, 0x20, 0x20, 0x1C}, // 0x75 (u)
- {0x00, 0x0C, 0x10, 0x20, 0x10, 0x0C}, // 0x76 (v)
- {0x00, 0x1C, 0x20, 0x18, 0x20, 0x1C}, // 0x77 (w)
- {0x00, 0x22, 0x14, 0x08, 0x14, 0x22}, // 0x78 (x)
- {0x00, 0x04, 0x48, 0x30, 0x08, 0x04}, // 0x79 (y)
- {0x00, 0x00, 0x24, 0x34, 0x2C, 0x24}, // 0x7A (z)
- {0x00, 0x08, 0x08, 0x36, 0x41, 0x41}, // 0x7B ({)
- {0x00, 0x00, 0x00, 0x7F, 0x00, 0x00}, // 0x7C (|)
- {0x00, 0x41, 0x41, 0x36, 0x08, 0x08}, // 0x7D (})
- {0x00, 0x08, 0x04, 0x08, 0x10, 0x08}, // 0x7E (~)
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // 0x7F
- };
- void DrawText(const char* text, float x, float y, float scale, Color color) {
- if (!text) return;
- glPushMatrix();
- glTranslatef(x, y, 0.0f);
- glScalef(scale, scale, 1.0f);
-
- glColor4f(color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f);
- glDisable(GL_TEXTURE_2D);
-
- const float charWidth = 6.0f;
- const float charHeight = 8.0f;
- const float lineHeight = charHeight * 1.0f;
-
- float startX = 0.0f;
- float currentY = 0.0f;
-
- for (const char* c = text; *c; c++) {
- if (*c == '\n') {
- glPopMatrix();
- glPushMatrix();
- glTranslatef(x, y - currentY - lineHeight, 0.0f);
- glScalef(scale, scale, 1.0f);
- currentY -= lineHeight;
- startX = 0.0f;
- continue;
- }
-
- if (*c < 0 || *c >= 128) {
- continue;
- }
-
- const unsigned char* bitmap = font6x8_ascii[(int)*c];
-
- for (int row = 0; row < charHeight; row++) {
- for (int col = 0; col < charWidth; col++) {
- if (bitmap[col] & (1 << row)) {
- glBegin(GL_QUADS);
- glVertex2f(startX + col, currentY - row);
- glVertex2f(startX + col + 1, currentY - row);
- glVertex2f(startX + col + 1, currentY - row + 1);
- glVertex2f(startX + col, currentY - row + 1);
- glEnd();
- }
- }
- }
-
- startX += charWidth + 1;
- }
-
- glPopMatrix();
- }
- #include "../../include/textures.h"
- Texture fontTextures[256];
- void LoadFont(char* pathToFolder) {
- DIR *fontFolder;
- struct dirent *entry;
- printf("%s\n", "loading font");
-
- fontFolder = opendir(pathToFolder);
- if (fontFolder == NULL) {
- perror("directory cant be opened");
- return;
- }
-
- int currentSymbol = 0;
-
- while ((entry = readdir(fontFolder)) != NULL) {
- if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
- continue;
- }
-
- char fullPath[512];
-
- strcpy(fullPath, pathToFolder);
-
- if (fullPath[strlen(fullPath)-1] != '/') {
- strcat(fullPath, "/");
- }
- strcat(fullPath, entry->d_name);
-
- printf("%s\n", fullPath);
- fontTextures[currentSymbol] = LoadTexture(fullPath);
- currentSymbol++;
- }
-
- closedir(fontFolder);
- return;
- }
- void DrawTextWithFont(unsigned char* text, int x, int y, float fontSize, Color color) {
- unsigned int currentSymbol = 0;
- unsigned int currentX = x;
- while (text[currentSymbol] != '\0') {
- DrawTexture(fontTextures[text[currentSymbol]], currentX, y, fontSize, color);
- currentX = currentX + fontTextures[text[currentSymbol]].width*fontSize;
- currentSymbol++;
- }
- }
- void UnloadFont() {
- int currentTexture = 0;
- while (currentTexture < 256) {
- UnloadTexture(fontTextures[currentTexture]);
- currentTexture++;
- }
- }
|