From e93eb289ca44e98967482ab80fd5329f85ccd03e Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 23 Jan 2025 21:57:31 -0500 Subject: pke: first-pass 2d overlay render pass scaffolding --- src/font.hpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/font.hpp (limited to 'src/font.hpp') diff --git a/src/font.hpp b/src/font.hpp new file mode 100644 index 0000000..48a7b40 --- /dev/null +++ b/src/font.hpp @@ -0,0 +1,74 @@ +#ifndef PKE_FONT_TYPE_HPP +#define PKE_FONT_TYPE_HPP + +#include "asset-manager.hpp" +#include "components.hpp" +#include "pk.h" + +#include + +/* +Vert: (two triangles) +vec2 vertex +vec2 uv + +Inst: +vec4 fg_color +vec4 bg_color +vec4 sprite_region +float width + +Texture: +the MTSDF +*/ + +TypeSafeInt_H(FontTypeIndex, uint16_t, 0xFFFF); +TypeSafeInt_H(FontRenderIndex, uint16_t, 0xFFFF); + +struct FontGlyphChar { + uint32_t unicode; + glm::ivec4 bounds; +}; +struct FontRender { + uint32_t len; + FontTypeIndex index_ft; + FontRenderIndex index_fr; +}; +struct FontType : public Entity_Base { + pk_cstr title; + AssetHandle fontTextureAssetKey; + AssetHandle glyphDetailsAssetKey; + VkDeviceMemory deviceMemoryVert = VK_NULL_HANDLE; + VkDeviceMemory deviceMemoryTexture = VK_NULL_HANDLE; + VkDeviceMemory deviceMemoryInst = VK_NULL_HANDLE; + VkImage textureImage = VK_NULL_HANDLE; + VkImageView textureImageView = VK_NULL_HANDLE; + VkDescriptorPool vkDescriptorPool = VK_NULL_HANDLE; + VkDescriptorSet *vkDescriptorSets = nullptr; + FontRender *renders = nullptr; + FontRenderIndex n_render = FontRenderIndex{0}; + FontRenderIndex h_render = FontRenderIndex{0}; + FontTypeIndex index_ft = FontTypeIndex{0}; + struct FontTypeBindings { + BufferBindingDetails vertexBD; + BufferBindingDetails uvBD; + BufferBindingDetails indexBD; + BufferBindingDetails instanceBD; + uint32_t indexCount; + uint32_t instanceCounter = 0; + uint32_t instanceBufferMaxCount = 0; + } bindings; +}; + + +void FontType_Init(); +void FontType_Teardown(); +// void FontType_Serialize(FontType *ft); // TODO +// void FontType_Deserialize(FontType **ft); // TODO +FontType* FontType_GetFonts(FontTypeIndex &count); +FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetKey fontTexture, AssetKey glyphs); +void FontType_Unload(FontTypeIndex idx); +FontRender FontType_AddStringRender(FontTypeIndex idx_ft, pk_cstr cstr); +void FontType_RemoveStringRender(FontRender fr); + +#endif /* PKE_FONT_TYPE_HPP */ -- cgit v1.2.3