mirror of
https://gitee.com/Lamdonn/varch.git
synced 2025-12-06 08:46:42 +08:00
82 lines
16 KiB
C
82 lines
16 KiB
C
/*********************************************************************************************************
|
|
* ------------------------------------------------------------------------------------------------------
|
|
* file description
|
|
* ------------------------------------------------------------------------------------------------------
|
|
* \file ArtFont.c
|
|
* \unit ArtFont
|
|
* \brief This is a C language artistic character patterns
|
|
* \author Lamdonn
|
|
* \version v1.0.0
|
|
* \license GPL-2.0
|
|
* \copyright Copyright (C) 2023 Lamdonn.
|
|
********************************************************************************************************/
|
|
#include "ArtFont.h"
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define ArtFont_putc(c) do { \
|
|
if (buffer) \
|
|
{ \
|
|
if (out < size) buffer[out++] = (c); \
|
|
else return -1; \
|
|
} \
|
|
else putchar(c); \
|
|
} while (0)
|
|
|
|
static char *artLines[11] = {
|
|
" 8 8 a8 8a 88888 88888 a ad888 888ba ",
|
|
" 88 88 88 88 88 ad88888ba ,adba, ,d8 ,adba, d8' d8' `8b d8 ,a8888a, 88 ad888888b, ad888888b, ,d8 8888888888 ad8888ba, 888888888888 ad88888ba ad88888ba a8' '8a ad88888ba ,ad88PPP88ba, db 88888888ba ,ad8888ba, 88888888ba, 88888888888 88888888888 ,ad8888ba, 88 88 88 88 88 a8P 88 88b d88 888b 88 ,ad8888ba, 88888888ba ,ad8888ba, 88888888ba ad88888ba 888888888888 88 88 8b d8 I8, 8 ,8I 8b d8 8b d8 888888888888 88 8b 88 ,888, `8b 88 88 ad88 88 88 88 88 88 88' 88 `88 ",
|
|
" 88 88 88 88 88 d8' 8 8 '8b 8I I8 ,d8' 8I I8 d8' d8' `8b I8a a8I aa ,8P' ,8P'' `'Y8, ,d88 d8' '88 d8' '88 ,d888 88 8P' 'Y8 ,8P' d8' '8b d8' '88 a8' '8a d8' '8b d8' .ama.a '8a d88b 88 '8b d8'' `'8b 88 `'8b 88 88 d8'' `'8b 88 88 88 88 88 ,88' 88 888b d888 8888b 88 d8'' `'8b 88 '8b d8'' `'8b 88 '8b d8' '8b 88 88 88 `8b d8' `8b d8b d8' Y8, ,8P Y8, ,8P ,88 88 `Y8, 88 ,d8P'Y8b, `8b 88 88 d8' 88 '' '' 88 88 ,d 88 88 88 ",
|
|
" 88 '' '' aa88aaa88aa Y8, 8 8 'fbdP' ,d8' '8bdP' '' d8' `8b 'Yb,,dP' 88 d8' ,8P Y8, 888888 a8P a8P ,d8' 88 88 ____ d8 d8' Y8a a8P 8P 88 a8' 8888888888 '8a '' a8P d8' ,8P'88' 88 d8'`8b 88 ,8P d8' 88 `8b 88 88 d8' 88 88 88 88 88 ,88' 88 88`8b d8'88 88 `8b 88 d8' `8b 88 ,8P d8' `8b 88 ,8P Y8, 88 88 88 `8b d8' '8, ,8'8, ,8' `8b d8' Y8, ,8P ,88' 88 '8b 88 I8' '8I '' 88 88 88 88 88 88 88 88 88 88 ",
|
|
" 88 ''88'''88'' `Y8a8a8a, ,d8' ,d8'8b 88 88 88 aaaa8888aaaa aaaa88aaaa ,8P' 88 88 88 ,d8P' aad8' ,d8' 88 88a8PPPP8b, 88,dd888bb, ,8P' 'Y8aaa8P' Y8, ,d88 888 888 a8' '8a ,a8P' 88 .8P 8P 88 d8' `8b 88aaaaaa8P' 88 88 88 88aaaaa 88aaaaa 88 88aaaaaaaa88 88 88 88,d88' 88 88 `8b d8' 88 88 `8b 88 88 88 88aaaaaa8P' 88 88 88aaaaaa8P' `Y8aaaaa, 88 88 88 `8b d8' Y8 8P Y8 8P Y88P '8aa8' ,88' 88 `P8, 88 ,adPPYYba, 88,dPPYba, ,adPPYba, ,adPPYb,88 ,adPPYba, MM88MMM ,adPPYb,d8 88,dPPYba, 88 88 88 ,d8 88 88,dPYba,,adPYba, 8b,dPPYba, ,adPPYba, 8b,dPPYba, ,adPPYb,d8 8b,dPPYba, ,adPPYba, MM88MMM 88 88 8b d8 8b db d8 8b, ,d8 8b d8 888888888 ,8P 88 Y8, ad8bba, ,aa ",
|
|
" 88 aa88aaa88aa `'8'8'8b, ,d8' .dP' Yb,8I 88 88 ''''8888'''' ''''88'''' aaaaaaaa d8' 88 88 88 a8P' ''Y8, ,d8' 88 PP' `8b 88P' `8b d8' ,d8'''8b, 'PPPPPP'88 888 ''' '8a 8888888888 a8' d8' 88 88 8' 8P d8YaaaaY8b 88''''''8b, 88 88 88 88''''' 88''''' 88 88888 88''''''''88 88 88 8888'88, 88 88 `8b d8' 88 88 `8b 88 88 88 88''''''' 88 88 88''''88' `'''''8b, 88 88 88 `8b d8' `8b d8' `8b d8' d88b `88' ,88' 88 '8b 88 '' `Y8 88P' '8a a8' '' a8' `Y88 a8P_____88 88 a8' `Y88 88P' '8a 88 88 88 ,a8' 88 88P' '88' '8a 88P' `'8a a8' '8a 88P' '8a a8' `Y88 88P' 'Y8 I8[ '' 88 88 88 `8b d8' `8b d88b d8' `Y8, ,8P' `8b d8' a8P' <8( )8> '' ''Y8P' ",
|
|
" '' ''88'''88'' 8 8 `8b ,d8' ,adba, 8P 888' Y8, ,8P ,dP'`Yb, 88 aaa '''''''' ,8P' `8b d8' 88 a8P' '8b 8888888888888 d8 88 d8 ,8P' d8' '8b 8P aaa '8a a8' '' 88 8B ,d8 ,ad8' d8''''''''8b 88 `8b Y8, 88 8P 88 88 Y8, 88 88 88 88 88 88P Y8b 88 88 `8b d8' 88 88 `8b 88 Y8, ,8P 88 Y8, '88,,8P 88 `8b `8b 88 88 88 `8b d8' `8a a8' `8a a8' ,8P Y8, 88 ,88' 88 `Y8, 88 ,adPPPPP88 88 d8 8b 8b 88 8PP''''''' 88 8b 88 88 88 88 88 8888[ 88 88 88 88 88 88 8b d8 88 d8 8b 88 88 `'Y8ba, 88 88 88 `8b d8' `8b d8'`8b d8' )888( `8b d8' ,d8P' '8b 88 d8' ",
|
|
" aa 88 88 Y8a 8 8 a8P ,d8' 8I I8 8b, ,dP8b Y8, ,8P I8' '8I '' '88 888 d8' `8ba, ,ad8' 88 d8' Y8, a88 88 Y8a a8P 88a a8P d8' Y8a a8P 8b, a8P 888 '88 '8a a8' aa '8a '88P'888P' d8' `8b 88 a8P Y8a. .a8P 88 .a8P 88 88 Y8a. .a88 88 88 88 88, ,d88 88 '88, 88 88 `888' 88 88 `8888 Y8a. .a8P 88 Y8a. Y88P 88 `8b Y8a a8P 88 Y8a. .a8P `888' `8a8' `8a8' d8' `8b 88 88' 88 '8b 88 88, ,88 88b, ,a8' '8a, ,aa '8a, ,d88 '8b, ,aa 88 '8a, ,d88 88 88 88 88 88`'Yba, 88 88 88 88 88 88 '8a, ,a8' 88b, ,a8' '8a ,d88 88 aa ]8I 88, '8a, ,a88 `8b,d8' `8bd8' `8bd8' ,d8' '8b, `8b,d8' ,d8' 88 88 88 ",
|
|
" 88 88 88 'Y88888P' 8' 'fbdP' `Y8888P' Yb Y8, ,8P d8' 888 8P' 'Y8888P' 88 88888888888 'Y888888P' 88 'Y88888P' 'Y88888P' 8P' 'Y88888P' `'Y8888P' 888 d8' '8a a8' 88 `Y8aaaaaaaad8P d8' `8b 88888888P' `'Y8888Y'' 88888888Y'' 88888888888 88 `'Y88888P' 88 88 88 'Y8888P' 88 Y8b 88888888888 88 `8' 88 88 `888 `'Y8888Y'' 88 `'Y8888Y'Y8a 88 `8b 'Y88888P' 88 `'Y8888Y'' `8' `8' `8' 8P Y8 88 888888888888 88 `Y8 88 `'8bbdP'Y8 8Y'Ybbd8'' `'Ybbd8'' `'8bbdP'Y8 `'Ybbd8'' 88 `'YbbdP'Y8 88 88 88 88 88 `Y8a 88 88 88 88 88 88 `'YbbdP'' 88`YbbdP'' `'YbbdP'88 88 `'YbbdP'' 'Y888 `'YbbdP'Y8 '8' YP YP 8P' `Y8 Y88' 888888888 88 88 88 ",
|
|
" 8 8 '8 8' 8' 8' ''''''''' 88888 88888 aa, ,88 ,88 88 88 d8' 88, 88 ,88 ",
|
|
" 888888888888 'Y8bbdP' 888P' 88 88 d8' 'Y888 888P' ",
|
|
};
|
|
|
|
static int artCharPosition[] = {
|
|
// ' ' '!' '"' '#' '$' '%' '&' ''' '(' ')' '*' '+' ',' '-' '.' '/' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' ':' ';' '<' '=' '>' '?' '@' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' '[' '\' ']' '^' '_' '`' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '{' '|' '}' '~'
|
|
0, 3, 7, 14, 27, 40, 57, 71, 78, 85, 92, 106, 118, 124, 134, 139, 153, 169, 177, 190, 203, 218, 231, 244, 258, 271, 284, 289, 295, 306, 318, 329, 342, 360, 378, 391, 406, 421, 434, 447, 462, 476, 480, 492, 506, 519, 538, 552, 568, 581, 597, 610, 623, 637, 651, 668, 693, 707, 721, 735, 742, 756, 763, 776, 790, 797, 809, 822, 834, 847, 859, 868, 881, 894, 898, 905, 916, 920, 940, 953, 966, 979, 992, 1004, 1015, 1024, 1037, 1050, 1070, 1083, 1096, 1107, 1116, 1120, 1129, 1145
|
|
};
|
|
|
|
int ArtFont_print(char *string, char *buffer, int size)
|
|
{
|
|
int len = 0, line = 0;
|
|
int i = 0, j = 0;
|
|
int base = 0, width = 0;
|
|
char *s = NULL;
|
|
int out = 0;
|
|
|
|
if (!string) return -1;
|
|
|
|
len = strlen(string);
|
|
|
|
for (line = 0; line < 11; line++)
|
|
{
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
if (' ' <= string[i] && string[i] <= '~')
|
|
{
|
|
base = artCharPosition[string[i] - ' '];
|
|
width = artCharPosition[string[i] + 1 - ' '] - base;
|
|
s = &artLines[line][base];
|
|
for (j = 0; j < width; j++)
|
|
{
|
|
ArtFont_putc(s[j]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
ArtFont_putc('\n');
|
|
}
|
|
ArtFont_putc(0);
|
|
|
|
return out;
|
|
}
|