Widgets: Improve default theme
This commit is contained in:
parent
8582b94c44
commit
b62d5f6846
|
|
@ -30,9 +30,9 @@ namespace Nz
|
|||
|
||||
private:
|
||||
std::shared_ptr<Material> m_buttonMaterial;
|
||||
std::shared_ptr<Material> m_hoveredButtonMaterial;
|
||||
std::shared_ptr<Material> m_pressedHoveredMaterial;
|
||||
std::shared_ptr<Material> m_pressedButtonMaterial;
|
||||
std::shared_ptr<Material> m_buttonHoveredMaterial;
|
||||
std::shared_ptr<Material> m_buttonPressedHoveredMaterial;
|
||||
std::shared_ptr<Material> m_buttonPressedMaterial;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,9 @@ namespace Nz
|
|||
class NAZARA_WIDGETS_API SimpleButtonWidgetStyle : public ButtonWidgetStyle
|
||||
{
|
||||
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(SimpleButtonWidgetStyle&&) = default;
|
||||
~SimpleButtonWidgetStyle() = default;
|
||||
|
|
@ -34,6 +36,16 @@ namespace Nz
|
|||
SimpleButtonWidgetStyle& operator=(const SimpleButtonWidgetStyle&) = delete;
|
||||
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:
|
||||
virtual void UpdateMaterial(bool hovered, bool pressed);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,19 +15,19 @@ namespace Nz
|
|||
namespace
|
||||
{
|
||||
const UInt8 ButtonImage[] = {
|
||||
#include <Nazara/Widgets/Resources/DefaultStyle/Button.png.h>
|
||||
#include <Nazara/Widgets/Resources/DefaultTheme/Button.png.h>
|
||||
};
|
||||
|
||||
const UInt8 ButtonHoveredImage[] = {
|
||||
#include <Nazara/Widgets/Resources/DefaultStyle/ButtonHovered.png.h>
|
||||
#include <Nazara/Widgets/Resources/DefaultTheme/ButtonHovered.png.h>
|
||||
};
|
||||
|
||||
const UInt8 ButtonPressedImage[] = {
|
||||
#include <Nazara/Widgets/Resources/DefaultStyle/ButtonPressed.png.h>
|
||||
#include <Nazara/Widgets/Resources/DefaultTheme/ButtonPressed.png.h>
|
||||
};
|
||||
|
||||
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());
|
||||
buttonMaterialPass->EnableDepthBuffer(true);
|
||||
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>();
|
||||
material->AddPass("ForwardPass", buttonMaterialPass);
|
||||
|
|
@ -54,14 +57,22 @@ namespace Nz
|
|||
|
||||
// Button material
|
||||
m_buttonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonImage, sizeof(ButtonImage), texParams));
|
||||
m_hoveredButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonHoveredImage, sizeof(ButtonHoveredImage), texParams));
|
||||
m_pressedButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams));
|
||||
m_pressedHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedHoveredImage, sizeof(ButtonPressedHoveredImage), texParams));
|
||||
m_buttonHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonHoveredImage, sizeof(ButtonHoveredImage), texParams));
|
||||
m_buttonPressedMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams));
|
||||
m_buttonPressedHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedHoveredImage, sizeof(ButtonPressedHoveredImage), texParams));
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
|
||||
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),
|
||||
m_hoveredMaterial(std::move(hoveredMaterial)),
|
||||
m_material(std::move(material)),
|
||||
m_pressedMaterial(std::move(pressedMaterial)),
|
||||
m_pressedHoveredMaterial(std::move(pressedHoveredMaterial)),
|
||||
m_hoveredMaterial(std::move(config.hoveredMaterial)),
|
||||
m_material(std::move(config.material)),
|
||||
m_pressedMaterial(std::move(config.pressedMaterial)),
|
||||
m_pressedHoveredMaterial(std::move(config.pressedHoveredMaterial)),
|
||||
m_isHovered(false),
|
||||
m_isPressed(false)
|
||||
{
|
||||
|
|
@ -27,7 +27,13 @@ namespace Nz
|
|||
auto& registry = GetRegistry();
|
||||
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->SetCorners(corner, corner);
|
||||
|
||||
m_textSprite = std::make_shared<TextSprite>(Widgets::Instance()->GetTransparentMaterial());
|
||||
|
||||
m_spriteEntity = CreateGraphicsEntity();
|
||||
|
|
|
|||
Loading…
Reference in New Issue