From ca1426eabc873f781eb0dd389d45634b7d183250 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 22 Apr 2024 06:07:59 +1000 Subject: Lua chat callbacks + better font styling golly gee whiz!! i hope i didn't fuck something up --- source/windowing/StarLabelWidget.cpp | 62 +++++++++++------------------------- 1 file changed, 19 insertions(+), 43 deletions(-) (limited to 'source/windowing/StarLabelWidget.cpp') diff --git a/source/windowing/StarLabelWidget.cpp b/source/windowing/StarLabelWidget.cpp index 35f8618..3c1be8e 100644 --- a/source/windowing/StarLabelWidget.cpp +++ b/source/windowing/StarLabelWidget.cpp @@ -10,17 +10,14 @@ LabelWidget::LabelWidget(String text, VerticalAnchor const& vAnchor, Maybe wrapWidth, Maybe lineSpacing) - : m_fontMode(FontMode::Normal), - m_color(color), - m_hAnchor(hAnchor), + : m_hAnchor(hAnchor), m_vAnchor(vAnchor), - m_wrapWidth(std::move(wrapWidth)), - m_lineSpacing(std::move(lineSpacing)) { + m_wrapWidth(std::move(wrapWidth)) { auto assets = Root::singleton().assets(); - auto fontConfig = assets->json("/interface.config:font"); - m_fontSize = fontConfig.getInt("baseSize"); - m_processingDirectives = fontConfig.getString("defaultDirectives"); - m_font = fontConfig.queryString("defaultFont", ""); + m_style = assets->json("/interface.config:labelTextStyle"); + m_style.color = color.toRgba(); + if (lineSpacing) + m_style.lineSpacing = *lineSpacing; setText(std::move(text)); } @@ -38,16 +35,16 @@ void LabelWidget::setText(String newText) { } void LabelWidget::setFontSize(int fontSize) { - m_fontSize = fontSize; + m_style.fontSize = fontSize; updateTextRegion(); } void LabelWidget::setFontMode(FontMode fontMode) { - m_fontMode = fontMode; + m_style.shadow = fontModeToColor(fontMode).toRgba(); } void LabelWidget::setColor(Color newColor) { - m_color = std::move(newColor); + m_style.color = newColor.toRgba(); } void LabelWidget::setAnchor(HorizontalAnchor hAnchor, VerticalAnchor vAnchor) { @@ -62,12 +59,12 @@ void LabelWidget::setWrapWidth(Maybe wrapWidth) { } void LabelWidget::setLineSpacing(Maybe lineSpacing) { - m_lineSpacing = std::move(lineSpacing); + m_style.lineSpacing = lineSpacing.value(DefaultLineSpacing); updateTextRegion(); } void LabelWidget::setDirectives(String const& directives) { - m_processingDirectives = directives; + m_style.directives = directives; updateTextRegion(); } @@ -76,6 +73,12 @@ void LabelWidget::setTextCharLimit(Maybe charLimit) { updateTextRegion(); } +void LabelWidget::setTextStyle(TextStyle const& textStyle) { + m_style = textStyle; + updateTextRegion(); +} + + RectI LabelWidget::relativeBoundRect() const { return RectI(m_textRegion).translated(relativePosition()); } @@ -85,41 +88,14 @@ RectI LabelWidget::getScissorRect() const { } void LabelWidget::renderImpl() { - context()->setFont(m_font); - context()->setFontSize(m_fontSize); - context()->setFontMode(m_fontMode); - context()->setFontColor(m_color.toRgba()); - context()->setFontProcessingDirectives(m_processingDirectives); - - if (m_lineSpacing) - context()->setLineSpacing(*m_lineSpacing); - else - context()->setDefaultLineSpacing(); - + context()->setTextStyle(m_style); context()->renderInterfaceText(m_text, {Vec2F(screenPosition()), m_hAnchor, m_vAnchor, m_wrapWidth, m_textCharLimit}); - - context()->setDefaultFont(); - context()->setFontMode(FontMode::Normal); - context()->setFontProcessingDirectives(""); - context()->setDefaultLineSpacing(); } void LabelWidget::updateTextRegion() { - context()->setFontSize(m_fontSize); - context()->setFontColor(m_color.toRgba()); - context()->setFontProcessingDirectives(m_processingDirectives); - context()->setFont(m_font); - if (m_lineSpacing) - context()->setLineSpacing(*m_lineSpacing); - else - context()->setDefaultLineSpacing(); - + context()->setTextStyle(m_style); m_textRegion = RectI(context()->determineInterfaceTextSize(m_text, {Vec2F(), m_hAnchor, m_vAnchor, m_wrapWidth, m_textCharLimit})); setSize(m_textRegion.size()); - - context()->setDefaultFont(); - context()->setFontProcessingDirectives(""); - context()->setDefaultLineSpacing(); } } -- cgit v1.2.3