dl
dl_ui_button_sprite_color.h
浏览该文件的文档.
1
12#pragma once
13
14#ifndef DL_DISABLE_RENDER
16#include "render/dl_sprite.h"
17#include "render/dl_text.h"
18#include "ui/dl_ui_panel.h"
19
20namespace dl::UI
21{
22class Panel;
24class ButtonSpriteColor : public Button
25{
26public:
32 static ButtonSpriteColor* Create(gcSprite spr);
33
34 virtual ButtonSpriteColor* Clone() override;
35
36 virtual bool IsPickup() override
37 {
38 return _spr->IsPickup();
39 }
40 virtual void SetOrder(float order) override
41 {
42 _spr->SetOrder(Math::OffsetOrder(order, 0, 0, 0));
43 UpdateTextOrder(order);
44 }
45 virtual float GetOrder() override
46 {
47 return _spr->GetOrder();
48 }
49 virtual Position GetSize() override { return _spr->GetSize(); }
50 virtual Position GetAnchor() override { return {}; }
51 virtual void RenderDebug() override {}
52
53 void SetSize(const Position& size)
54 {
55 _spr->SetQuad(createQuad(size, false));
56 }
57
59private:
60 ButtonSpriteColor() : _bGrad{ true }
61 {
62 for (auto& iter : _color)
63 iter = ColorDef::WHITE;
64
65 _bright[ButtonState::NORMAL] = 1.0f;
66 _bright[ButtonState::OVER] = 1.25f;
67 _bright[ButtonState::DOWN] = 0.75f;
68 _bright[ButtonState::DISABLE] = 1.0f;
69 _bright[ButtonState::DOWN_OVER] = 0.8f;
70 _bright[ButtonState::DOWN_DISABLE] = 1.0f;
71 }
72 gcSprite _spr;
73
76 bool _bGrad;
77
78 virtual void UpdateChild(State state_pre, State state) override;
79 virtual void RenderChild(State state_pre, State state) override
80 {
81 Button::RenderChild(state_pre, state);
82 _spr->Render();
83 }
84};
85
86}
87
88#endif
枚举类数组
void Render()
绘制
void UpdateTextOrder(float order)
order变化时需要调用
virtual void RenderChild(State state_pre, State state)
static ButtonSpriteColor * Create(gcSprite spr)
精灵变色按钮
virtual ButtonSpriteColor * Clone() override
必须实现的函数
virtual void SetOrder(float order) override
virtual Position GetAnchor() override
2d绘图元素
文本绘制
UI系统之按钮基类
ui之panel
constexpr Color WHITE
constexpr float OffsetOrder(float order, int u=1, int v=0, int w=0)
偏移order
Position2 Position
GC< Sprite > gcSprite
constexpr Quad createQuad(const Position &p0, const Position &p1, const Position &p2, const Position &p3)
创建一个Quad