summary refs log tree commit diff
path: root/src/SystemFonts.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/SystemFonts.h')
-rw-r--r--src/SystemFonts.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/SystemFonts.h b/src/SystemFonts.h
new file mode 100644
index 0000000..dc1aea6
--- /dev/null
+++ b/src/SystemFonts.h
@@ -0,0 +1,41 @@
+#ifndef CC_SYSTEMFONTS_H
+#define CC_SYSTEMFONTS_H
+#include "Core.h"
+/*  Manages loading and drawing platform specific system fonts
+	Copyright 2014-2023 ClassiCube | Licensed under BSD-3
+*/
+struct Bitmap;
+struct FontDesc;
+struct DrawTextArgs;
+struct IGameComponent;
+struct StringsBuffer;
+extern struct IGameComponent SystemFonts_Component;
+
+int FallbackFont_TextWidth(const struct DrawTextArgs* args);
+void FallbackFont_DrawText(struct DrawTextArgs* args, struct Bitmap* bmp, int x, int y, cc_bool shadow);
+
+/* Allocates a new system font from the given arguments */
+cc_result SysFont_Make(struct FontDesc* desc, const cc_string* fontName, int size, int flags);
+/* Frees an allocated system font */
+void SysFont_Free(struct FontDesc* desc);
+/* Allocates a new system font from the given arguments using default system font */
+/*  NOTE: Unlike SysFont_Make, this may fallback onto other system fonts (e.g. Arial, Roboto, etc) */
+void SysFont_MakeDefault(struct FontDesc* desc, int size, int flags);
+/* Sets default system font name and raises ChatEvents.FontChanged */
+void SysFont_SetDefault(const cc_string* fontName);
+
+/* Measures width of the given text when drawn with the given system font */
+int SysFont_TextWidth(struct DrawTextArgs* args);
+/* Draws the given text with the given system font onto the given bitmap */
+void SysFont_DrawText(struct DrawTextArgs* args, struct Bitmap* bmp, int x, int y, cc_bool shadow);
+
+typedef void (*SysFont_RegisterCallback)(const cc_string* path);
+/* Gets the name of the default system font used */
+const cc_string* SysFonts_UNSAFE_GetDefault(void);
+/* Gets the list of all supported system font names on this platform */
+CC_API void SysFonts_GetNames(struct StringsBuffer* buffer);
+/* Attempts to decode one or more fonts from the given file */
+/*  NOTE: If this file has been decoded before (fontscache.txt), does nothing */
+cc_result SysFonts_Register(const cc_string* path, SysFont_RegisterCallback callback);
+void SysFonts_SaveCache(void);
+#endif