vn/code/vn_font.h

113 lines
2.6 KiB
C
Raw Normal View History

2023-06-17 17:00:55 +00:00
/* date = May 7th 2023 10:16 am */
#ifndef VN_FONT_H
#define VN_FONT_H
enum font_id
{
Font_Regular,
Font_Bold,
Font_Monospace,
2023-07-24 13:50:57 +00:00
Font_MonospaceOblique,
2023-06-27 14:14:28 +00:00
Font_Hand,
2023-06-17 17:00:55 +00:00
Font_Icons,
Font_Count,
};
#define FontIcon_None 0x0000
#define FontIcon_Pencil 0xe800
#define FontIcon_Forward 0xe801
#define FontIcon_Book 0xe802
#define FontIcon_FolderOpen 0xe803
#define FontIcon_Wrench 0xe804
#define FontIcon_CW 0xe805
#define FontIcon_CCW 0xe806
#define FontIcon_ArrowsCW 0xe807
#define FontIcon_ResizeVertical 0xe808
#define FontIcon_ResizeHorizontal 0xe809
#define FontIcon_Play 0xe80a
#define FontIcon_Stop 0xe80b
#define FontIcon_Floppy 0xe80c
#define FontIcon_Pause 0xe80d
#define FontIcon_Folder 0xe80e
#define FontIcon_Cog 0xe80f
#define FontIcon_Attention 0xe810
#define FontIcon_Cancel 0xe811
#define FontIcon_Filter 0xf0b0
#define FontIcon_Menu 0xf0c9
#define FontIcon_CircleEmpty 0xf10c
#define FontIcon_Circle 0xf111
#define FontIcon_Reply 0xf112
#define FontIcon_Terminal 0xf120
#define FontIcon_Ellipsis 0xf141
#define FontIcon_Document 0xf15b
#define FontIcon_DocumentText 0xf15c
#define FontIcon_Eyedropper 0xf1fb
#define FontIcon_WindowMaximize 0xf2d0
#define FontIcon_WindowMinimize 0xf2d1
#define FontIcon_WindowRestore 0xf2d2
#define FontIcon_WindowClose 0xf2d4
#define FontIcon_DownDir 0xe812
#define FontIcon_UpDir 0xe813
#define FontIcon_LeftDir 0xe814
#define FontIcon_RightDir 0xe815
#define FontIcon_TextAlignLeft 0xe816
#define FontIcon_TextAlignCenter 0xe817
#define FontIcon_TextAlignRight 0xe818
struct glyph
{
glyph *LRUNext;
glyph *LRUPrev;
font_id Font;
u32 Codepoint;
r32 Size;
s32 Subpixel;
2023-06-21 16:59:36 +00:00
v2_s32 P0;
v2_s32 P1;
2023-06-17 17:00:55 +00:00
v2 Offset;
r32 Advance;
};
#define DEFAULT_GLYPH_ATLAS_DIM 1024
#define MAX_GLYPH_SIZE 64
#define STB_TRUETYPE_IMPLEMENTATION
#include "third_party/stb_truetype.h"
struct loaded_font
{
stbtt_fontinfo Info;
string Data;
s32 Ascent;
s32 Descent;
s32 LineGap;
};
struct glyph_atlas
{
2023-07-19 15:09:41 +00:00
memory_arena *Arena;
2023-06-17 17:00:55 +00:00
s32 MaxGlyphCount;
s32 GlyphsUsed;
glyph *Glyphs;
glyph *LRUFirst;
glyph *LRULast;
vn_render_commands *RenderCommands;
render_handle Texture;
u8 *BitmapBuffer;
s32 BitmapSize;
s32 GlyphSize;
loaded_font Fonts[Font_Count];
};
#endif //VN_FONT_H