Files
dl_old/dl/ui/dl_ui_button_sprite9.cpp
2026-06-02 19:12:07 +08:00

95 lines
1.9 KiB
C++

#include "dl_ui_button_sprite9.h"
#ifndef DL_DISABLE_RENDER
#include "render/dl_factory.h"
#include "render/dl_graphics.h"
namespace dl::UI
{
UI::ButtonSprite9* ButtonSprite9::Clone()
{
// 注意基类Control复制的正确性
ButtonSprite9* ret = new ButtonSprite9(*this);
ret->_init_cpt_1();
for (size_t i = 0; i != _spr.size(); ++i)
{
ret->_spr[i] = _spr[i]->Clone();
}
ret->_update_coor();
return ret;
}
void ButtonSprite9::_init(const std::vector<Sprite9*>& mul_spr)
{
for (size_t i = 0; i < (size_t)State::MAX_NUM; ++i)
{
if(i < mul_spr.size())
_spr[i] = mul_spr[i];
}
if (!_spr[State::NORMAL])
_spr[State::NORMAL] = Sprite9::Create("");
if (!_spr[State::OVER])
_spr[State::OVER] = _spr[State::NORMAL]->Clone();
if (!_spr[State::DOWN])
_spr[State::DOWN] = _spr[State::NORMAL]->Clone();
if (!_spr[State::DISABLE])
_spr[State::DISABLE] = _spr[State::NORMAL]->Clone();
if (!_spr[State::DOWN_OVER])
_spr[State::DOWN_OVER] = _spr[State::DOWN]->Clone();
if (!_spr[State::DOWN_DISABLE])
_spr[State::DOWN_DISABLE] = _spr[State::DOWN]->Clone();
for (auto& iter : _spr)
iter->SetUI(true);
//
_update_coor();
}
void ButtonSprite9::SetSpriteRect(Button::State state, const Rect& rect)
{
if (state < Button::State::MAX_NUM)
_spr[state]->SetRect(rect);
else
{
for (auto& spr : _spr)
spr->SetRect(rect);
}
_refresh_element_data();
}
void ButtonSprite9::SetSpriteColor(Button::State state, const Color& color)
{
if (state < Button::State::MAX_NUM)
_spr[state]->SetColor(color);
else
{
for (auto& spr : _spr)
spr->SetColor(color);
}
}
void ButtonSprite9::RenderDebug()
{
Button::RenderDebug();
{
Position p0 = {};
Position p1 = toPosition(GetSpriteCurrent()->GetSize());
g_gfx->SetCoor(GetSpriteCurrent()->GetCoor());
g_gfx->SetColor(createColor(ColorDef::PURPLE, 1.0f));
g_gfx->Rectangle2D(p0, p1);
}
}
}
#endif