text width and height

main
Brett 2024-11-15 17:08:46 -05:00
parent 595917d0b5
commit 3610837803
3 changed files with 21 additions and 4 deletions

View File

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.25) cmake_minimum_required(VERSION 3.25)
include(FetchContent) include(FetchContent)
set(BLT_GRAPHICS_VERSION 1.1.2) set(BLT_GRAPHICS_VERSION 1.1.3)
set(BLT_GRAPHICS_TEST_VERSION 0.0.1) set(BLT_GRAPHICS_TEST_VERSION 0.0.1)
project(BLT_WITH_GRAPHICS VERSION ${BLT_GRAPHICS_VERSION}) project(BLT_WITH_GRAPHICS VERSION ${BLT_GRAPHICS_VERSION})

View File

@ -122,6 +122,8 @@ namespace blt::gfx
static constexpr blt::vec2f DEFAULT_SCALE{1, 1}; static constexpr blt::vec2f DEFAULT_SCALE{1, 1};
static constexpr blt::vec4 DEFAULT_COLOR = blt::make_color(0.8, 0.8, 0.8); static constexpr blt::vec4 DEFAULT_COLOR = blt::make_color(0.8, 0.8, 0.8);
struct compiled_text_t;
struct render_context_t struct render_context_t
{ {
blt::vec2f position, bounds; blt::vec2f position, bounds;
@ -130,9 +132,14 @@ namespace blt::gfx
float current_size = 0; float current_size = 0;
float rotation = 0; float rotation = 0;
explicit render_context_t(float current_size): current_size(current_size) compiled_text_t* text_ptr;
explicit render_context_t(float current_size, compiled_text_t* associated_text): current_size(current_size), text_ptr(associated_text)
{} {}
[[nodiscard]] compiled_text_t& getAssociatedText() const
{ return *text_ptr; }
render_context_t& setPosition(float x, float y) render_context_t& setPosition(float x, float y)
{ {
position = {x, y}; position = {x, y};
@ -312,6 +319,12 @@ namespace blt::gfx
[[nodiscard]] float getRotation() const [[nodiscard]] float getRotation() const
{ return rotation; } { return rotation; }
[[nodiscard]] float getTextWidth() const
{ return text_width; }
[[nodiscard]] float getTextHeight() const
{ return text_height; }
void save_to(render_context_t& save) void save_to(render_context_t& save)
{ {
save.position = position; save.position = position;
@ -363,6 +376,8 @@ namespace blt::gfx
float z_index = 0; float z_index = 0;
float current_size = 0; float current_size = 0;
float rotation = 0; float rotation = 0;
float text_width = 0;
float text_height = 0;
}; };
public: public:

View File

@ -218,7 +218,7 @@ namespace blt::gfx
for (auto& [text, list] : render_list) for (auto& [text, list] : render_list)
{ {
text->bind(); text->bind();
render_context_t before{text->current_size}; render_context_t before{text->current_size, text};
text->save_to(before); text->save_to(before);
for (const auto& context : list) for (const auto& context : list)
{ {
@ -310,7 +310,7 @@ namespace blt::gfx
} }
auto& vec = render_list[ptr]; auto& vec = render_list[ptr];
vec.emplace_back(size); vec.emplace_back(size, ptr);
return vec.back(); return vec.back();
} }
@ -427,6 +427,8 @@ namespace blt::gfx
draw_count += 6; draw_count += 6;
global_x += static_cast<float>(ch.glyph.advance >> 6); global_x += static_cast<float>(ch.glyph.advance >> 6);
} }
text_width = global_x * scale.x();
text_height = -(global_y - generator.get_generated_size()) * scale.y();
// BLT_TRACE("size: %ld %ld %ld", draw_count, vertices.size(), vertices.size() / 4); // BLT_TRACE("size: %ld %ld %ld", draw_count, vertices.size(), vertices.size() / 4);