Widgets: Improve default theme
This commit is contained in:
parent
8582b94c44
commit
b62d5f6846
|
|
@ -30,9 +30,9 @@ namespace Nz
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<Material> m_buttonMaterial;
|
std::shared_ptr<Material> m_buttonMaterial;
|
||||||
std::shared_ptr<Material> m_hoveredButtonMaterial;
|
std::shared_ptr<Material> m_buttonHoveredMaterial;
|
||||||
std::shared_ptr<Material> m_pressedHoveredMaterial;
|
std::shared_ptr<Material> m_buttonPressedHoveredMaterial;
|
||||||
std::shared_ptr<Material> m_pressedButtonMaterial;
|
std::shared_ptr<Material> m_buttonPressedMaterial;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ namespace Nz
|
||||||
class NAZARA_WIDGETS_API SimpleButtonWidgetStyle : public ButtonWidgetStyle
|
class NAZARA_WIDGETS_API SimpleButtonWidgetStyle : public ButtonWidgetStyle
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr<Material> material, std::shared_ptr<Material> hoveredMaterial = {}, std::shared_ptr<Material> pressedMaterial = {}, std::shared_ptr<Material> pressedHoveredMaterial = {});
|
struct StyleConfig;
|
||||||
|
|
||||||
|
SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, StyleConfig config);
|
||||||
SimpleButtonWidgetStyle(const SimpleButtonWidgetStyle&) = delete;
|
SimpleButtonWidgetStyle(const SimpleButtonWidgetStyle&) = delete;
|
||||||
SimpleButtonWidgetStyle(SimpleButtonWidgetStyle&&) = default;
|
SimpleButtonWidgetStyle(SimpleButtonWidgetStyle&&) = default;
|
||||||
~SimpleButtonWidgetStyle() = default;
|
~SimpleButtonWidgetStyle() = default;
|
||||||
|
|
@ -34,6 +36,16 @@ namespace Nz
|
||||||
SimpleButtonWidgetStyle& operator=(const SimpleButtonWidgetStyle&) = delete;
|
SimpleButtonWidgetStyle& operator=(const SimpleButtonWidgetStyle&) = delete;
|
||||||
SimpleButtonWidgetStyle& operator=(SimpleButtonWidgetStyle&&) = default;
|
SimpleButtonWidgetStyle& operator=(SimpleButtonWidgetStyle&&) = default;
|
||||||
|
|
||||||
|
struct StyleConfig
|
||||||
|
{
|
||||||
|
std::shared_ptr<Material> hoveredMaterial;
|
||||||
|
std::shared_ptr<Material> material;
|
||||||
|
std::shared_ptr<Material> pressedMaterial;
|
||||||
|
std::shared_ptr<Material> pressedHoveredMaterial;
|
||||||
|
float cornerSize;
|
||||||
|
float cornerTexCoords;
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void UpdateMaterial(bool hovered, bool pressed);
|
virtual void UpdateMaterial(bool hovered, bool pressed);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,19 +15,19 @@ namespace Nz
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const UInt8 ButtonImage[] = {
|
const UInt8 ButtonImage[] = {
|
||||||
#include <Nazara/Widgets/Resources/DefaultStyle/Button.png.h>
|
#include <Nazara/Widgets/Resources/DefaultTheme/Button.png.h>
|
||||||
};
|
};
|
||||||
|
|
||||||
const UInt8 ButtonHoveredImage[] = {
|
const UInt8 ButtonHoveredImage[] = {
|
||||||
#include <Nazara/Widgets/Resources/DefaultStyle/ButtonHovered.png.h>
|
#include <Nazara/Widgets/Resources/DefaultTheme/ButtonHovered.png.h>
|
||||||
};
|
};
|
||||||
|
|
||||||
const UInt8 ButtonPressedImage[] = {
|
const UInt8 ButtonPressedImage[] = {
|
||||||
#include <Nazara/Widgets/Resources/DefaultStyle/ButtonPressed.png.h>
|
#include <Nazara/Widgets/Resources/DefaultTheme/ButtonPressed.png.h>
|
||||||
};
|
};
|
||||||
|
|
||||||
const UInt8 ButtonPressedHoveredImage[] = {
|
const UInt8 ButtonPressedHoveredImage[] = {
|
||||||
#include <Nazara/Widgets/Resources/DefaultStyle/ButtonPressedHovered.png.h>
|
#include <Nazara/Widgets/Resources/DefaultTheme/ButtonPressedHovered.png.h>
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,6 +42,9 @@ namespace Nz
|
||||||
std::shared_ptr<MaterialPass> buttonMaterialPass = std::make_shared<MaterialPass>(BasicMaterial::GetSettings());
|
std::shared_ptr<MaterialPass> buttonMaterialPass = std::make_shared<MaterialPass>(BasicMaterial::GetSettings());
|
||||||
buttonMaterialPass->EnableDepthBuffer(true);
|
buttonMaterialPass->EnableDepthBuffer(true);
|
||||||
buttonMaterialPass->EnableDepthWrite(false);
|
buttonMaterialPass->EnableDepthWrite(false);
|
||||||
|
buttonMaterialPass->EnableBlending(true);
|
||||||
|
buttonMaterialPass->SetBlendEquation(BlendEquation::Add, BlendEquation::Add);
|
||||||
|
buttonMaterialPass->SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::InvSrcAlpha, BlendFunc::One, BlendFunc::One);
|
||||||
|
|
||||||
std::shared_ptr<Material> material = std::make_shared<Material>();
|
std::shared_ptr<Material> material = std::make_shared<Material>();
|
||||||
material->AddPass("ForwardPass", buttonMaterialPass);
|
material->AddPass("ForwardPass", buttonMaterialPass);
|
||||||
|
|
@ -54,14 +57,22 @@ namespace Nz
|
||||||
|
|
||||||
// Button material
|
// Button material
|
||||||
m_buttonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonImage, sizeof(ButtonImage), texParams));
|
m_buttonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonImage, sizeof(ButtonImage), texParams));
|
||||||
m_hoveredButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonHoveredImage, sizeof(ButtonHoveredImage), texParams));
|
m_buttonHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonHoveredImage, sizeof(ButtonHoveredImage), texParams));
|
||||||
m_pressedButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams));
|
m_buttonPressedMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams));
|
||||||
m_pressedHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedHoveredImage, sizeof(ButtonPressedHoveredImage), texParams));
|
m_buttonPressedHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedHoveredImage, sizeof(ButtonPressedHoveredImage), texParams));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<ButtonWidgetStyle> DefaultWidgetTheme::CreateStyle(ButtonWidget* buttonWidget) const
|
std::unique_ptr<ButtonWidgetStyle> DefaultWidgetTheme::CreateStyle(ButtonWidget* buttonWidget) const
|
||||||
{
|
{
|
||||||
return std::make_unique<SimpleButtonWidgetStyle>(buttonWidget, m_buttonMaterial, m_hoveredButtonMaterial, m_pressedButtonMaterial, m_pressedHoveredMaterial);
|
SimpleButtonWidgetStyle::StyleConfig styleConfig;
|
||||||
|
styleConfig.cornerSize = 20.f;
|
||||||
|
styleConfig.cornerTexCoords = 20.f / 128.f;
|
||||||
|
styleConfig.hoveredMaterial = m_buttonHoveredMaterial;
|
||||||
|
styleConfig.material = m_buttonMaterial;
|
||||||
|
styleConfig.pressedHoveredMaterial = m_buttonPressedHoveredMaterial;
|
||||||
|
styleConfig.pressedMaterial = m_buttonPressedMaterial;
|
||||||
|
|
||||||
|
return std::make_unique<SimpleButtonWidgetStyle>(buttonWidget, styleConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<LabelWidgetStyle> DefaultWidgetTheme::CreateStyle(LabelWidget* buttonWidget) const
|
std::unique_ptr<LabelWidgetStyle> DefaultWidgetTheme::CreateStyle(LabelWidget* buttonWidget) const
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
SimpleButtonWidgetStyle::SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr<Material> material, std::shared_ptr<Material> hoveredMaterial, std::shared_ptr<Material> pressedMaterial, std::shared_ptr<Material> pressedHoveredMaterial) :
|
SimpleButtonWidgetStyle::SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, StyleConfig config) :
|
||||||
ButtonWidgetStyle(buttonWidget),
|
ButtonWidgetStyle(buttonWidget),
|
||||||
m_hoveredMaterial(std::move(hoveredMaterial)),
|
m_hoveredMaterial(std::move(config.hoveredMaterial)),
|
||||||
m_material(std::move(material)),
|
m_material(std::move(config.material)),
|
||||||
m_pressedMaterial(std::move(pressedMaterial)),
|
m_pressedMaterial(std::move(config.pressedMaterial)),
|
||||||
m_pressedHoveredMaterial(std::move(pressedHoveredMaterial)),
|
m_pressedHoveredMaterial(std::move(config.pressedHoveredMaterial)),
|
||||||
m_isHovered(false),
|
m_isHovered(false),
|
||||||
m_isPressed(false)
|
m_isPressed(false)
|
||||||
{
|
{
|
||||||
|
|
@ -27,7 +27,13 @@ namespace Nz
|
||||||
auto& registry = GetRegistry();
|
auto& registry = GetRegistry();
|
||||||
UInt32 renderMask = GetRenderMask();
|
UInt32 renderMask = GetRenderMask();
|
||||||
|
|
||||||
|
SlicedSprite::Corner corner;
|
||||||
|
corner.size.Set(config.cornerSize);
|
||||||
|
corner.textureCoords.Set(config.cornerTexCoords);
|
||||||
|
|
||||||
m_sprite = std::make_shared<SlicedSprite>(m_material);
|
m_sprite = std::make_shared<SlicedSprite>(m_material);
|
||||||
|
m_sprite->SetCorners(corner, corner);
|
||||||
|
|
||||||
m_textSprite = std::make_shared<TextSprite>(Widgets::Instance()->GetTransparentMaterial());
|
m_textSprite = std::make_shared<TextSprite>(Widgets::Instance()->GetTransparentMaterial());
|
||||||
|
|
||||||
m_spriteEntity = CreateGraphicsEntity();
|
m_spriteEntity = CreateGraphicsEntity();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue