Widgets: Add SimpleLabelWidget

A simpler alternative to LabelWidget
This commit is contained in:
SirLynix
2024-02-08 00:24:31 +01:00
parent f0b4674039
commit 23645fc398
13 changed files with 241 additions and 45 deletions

View File

@@ -0,0 +1,34 @@
// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com)
// This file is part of the "Nazara Engine - Widgets module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Widgets/AbstractLabelWidget.hpp>
#include <Nazara/Utility/AbstractTextDrawer.hpp>
#include <Nazara/Widgets/Debug.hpp>
namespace Nz
{
AbstractLabelWidget::AbstractLabelWidget(BaseWidget* parent) :
BaseWidget(parent)
{
m_style = GetTheme()->CreateStyle(this);
SetRenderLayerCount(m_style->GetRenderLayerCount());
Layout();
}
void AbstractLabelWidget::OnMouseEnter()
{
m_style->OnHoverBegin();
}
void AbstractLabelWidget::OnMouseExit()
{
m_style->OnHoverEnd();
}
void AbstractLabelWidget::OnRenderLayerUpdated(int baseRenderLayer)
{
m_style->UpdateRenderLayer(baseRenderLayer);
}
}

View File

@@ -218,7 +218,7 @@ namespace Nz
return std::make_unique<SimpleImageButtonWidgetStyle>(imageButtonWidget, styleConfig);
}
std::unique_ptr<LabelWidgetStyle> DefaultWidgetTheme::CreateStyle(LabelWidget* labelWidget) const
std::unique_ptr<LabelWidgetStyle> DefaultWidgetTheme::CreateStyle(AbstractLabelWidget* labelWidget) const
{
return std::make_unique<SimpleLabelWidgetStyle>(labelWidget, Widgets::Instance()->GetTransparentMaterial());
}

View File

@@ -8,15 +8,6 @@
namespace Nz
{
LabelWidget::LabelWidget(BaseWidget* parent) :
BaseWidget(parent)
{
m_style = GetTheme()->CreateStyle(this);
SetRenderLayerCount(m_style->GetRenderLayerCount());
Layout();
}
void LabelWidget::UpdateText(const AbstractTextDrawer& drawer)
{
m_style->UpdateText(drawer);
@@ -27,19 +18,4 @@ namespace Nz
Layout();
}
void LabelWidget::OnMouseEnter()
{
m_style->OnHoverBegin();
}
void LabelWidget::OnMouseExit()
{
m_style->OnHoverEnd();
}
void LabelWidget::OnRenderLayerUpdated(int baseRenderLayer)
{
m_style->UpdateRenderLayer(baseRenderLayer);
}
}

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com)
// This file is part of the "Nazara Engine - Widgets module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Widgets/SimpleLabelWidget.hpp>
#include <Nazara/Utility/AbstractTextDrawer.hpp>
#include <Nazara/Widgets/Debug.hpp>
namespace Nz
{
void SimpleLabelWidget::UpdateText()
{
m_style->UpdateText(m_drawer);
}
void SimpleLabelWidget::UpdateTextAndSize()
{
m_style->UpdateText(m_drawer);
Vector2f size(m_drawer.GetBounds().GetLengths());
SetMinimumSize(size);
SetPreferredSize(size);
Layout();
}
}

View File

@@ -5,11 +5,11 @@
#include <Nazara/Widgets/SimpleWidgetStyles.hpp>
#include <Nazara/Graphics/Components/GraphicsComponent.hpp>
#include <Nazara/Utility/Components/NodeComponent.hpp>
#include <Nazara/Widgets/AbstractLabelWidget.hpp>
#include <Nazara/Widgets/ButtonWidget.hpp>
#include <Nazara/Widgets/Canvas.hpp>
#include <Nazara/Widgets/CheckboxWidget.hpp>
#include <Nazara/Widgets/ImageButtonWidget.hpp>
#include <Nazara/Widgets/LabelWidget.hpp>
#include <Nazara/Widgets/ProgressBarWidget.hpp>
#include <Nazara/Widgets/ScrollAreaWidget.hpp>
#include <Nazara/Widgets/ScrollbarButtonWidget.hpp>
@@ -342,7 +342,7 @@ namespace Nz
/************************************************************************/
SimpleLabelWidgetStyle::SimpleLabelWidgetStyle(LabelWidget* labelWidget, std::shared_ptr<MaterialInstance> material, std::shared_ptr<MaterialInstance> hoveredMaterial) :
SimpleLabelWidgetStyle::SimpleLabelWidgetStyle(AbstractLabelWidget* labelWidget, std::shared_ptr<MaterialInstance> material, std::shared_ptr<MaterialInstance> hoveredMaterial) :
LabelWidgetStyle(labelWidget, 1),
m_hoveredMaterial(std::move(hoveredMaterial)),
m_material(std::move(material))