Add Text mode to image projection panel

This commit is contained in:
sentientstardust
2026-05-13 00:55:44 +01:00
parent f473f3e7f1
commit 7066faa9d7
2 changed files with 698 additions and 73 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -405,8 +405,20 @@ private:
bool load_projection_image();
void clear_projection_image();
void ensure_text_font_names();
void mark_text_projection_dirty();
bool ensure_text_projection_image();
bool update_text_raw_atlas(const std::vector<uint8_t> &glyph_mask);
void render_text_projection_controls(float max_tooltip_width);
bool ensure_overlay_texture();
OverlayRect overlay_rect() const;
const std::vector<uint8_t> &active_projection_rgba() const;
uint32_t active_projection_width() const;
uint32_t active_projection_height() const;
bool active_projection_empty() const;
bool active_raw_atlas_valid() const;
const ImageMapRawFilamentOffsetAtlas &active_raw_atlas() const;
bool effective_apply_transparency_as_background() const;
ModelObject *selected_model_object() const;
void open_color_data_management_dialog();
void update_default_projection_mode();
@@ -430,6 +442,24 @@ private:
std::vector<uint8_t> m_image_rgba;
uint32_t m_image_width = 0;
uint32_t m_image_height = 0;
bool m_text_mode = false;
std::string m_projection_text = "Text";
std::vector<std::string> m_text_font_names;
int m_text_font_idx = 0;
std::string m_text_font_name;
float m_text_font_size = 200.f;
std::array<float, 3> m_text_color { 91.f / 255.f, 102.f / 255.f, 1.f };
std::array<float, 3> m_text_background_color { 1.f, 1.f, 1.f };
bool m_text_background_transparent = true;
bool m_text_capitalize = true;
bool m_text_dirty = true;
std::string m_text_error;
std::vector<uint8_t> m_text_rgba;
uint32_t m_text_width = 0;
uint32_t m_text_height = 0;
ImageMapRawFilamentOffsetAtlas m_text_raw_atlas;
ObjectID m_text_projection_object_id;
bool m_text_projection_raw_mode = false;
ImageMapRawFilamentOffsetAtlas m_raw_atlas;
GLTexture m_overlay_texture;
bool m_overlay_texture_dirty = false;