36 ret->_create(spr_name);
43 ret->_coor = _coor->
Clone();
44 for (
size_t i = 0; i < 9; ++i)
46 ret->_spr[i] =
g_factory->CloneSprite(_spr[i]);
47 ret->_spr[i]->SetCoor(ret->_coor);
57 for (
auto& iter : _spr)
66 for (
auto& iter : _spr)
67 iter->SetOrder(order);
72 for (
auto& iter : _spr)
73 iter->SetColor(color);
100 std::array<unsigned, 4> px;
101 std::array<unsigned, 4> py;
105 if (_sizePut.w >= _sizeMin.w)
106 px = { 0, _size[0][0], _sizePut[0] - _size[1][0], _sizePut[0] };
108 px = { 0, _sizePut.w / 3, _sizePut.w * 2 / 3, _sizePut.w };
110 if (_sizePut.h >= _sizeMin.h)
111 py = { 0, _size[0][1], _sizePut[1] - _size[1][1], _sizePut[1] };
113 py = { 0, _sizePut.h / 3, _sizePut.h * 2 / 3, _sizePut.h };
119 for (
int i = 0; i != 9; ++i)
142 void SetUI(
bool ui,
bool change_sampler =
true)
144 for (
auto& iter : _spr)
145 iter->SetUI(ui, change_sampler);
163 void _create(std::string_view spr_name)
167 if (!spr_name.empty())
170 for (
int i = 0; i != 9; ++i)
172 _spr[i] =
g_factory->CreateSprite(spr_name, i);
173 _spr[i]->SetCoor(_coor);
179 for (
int i = 0; i != 9; ++i)
190 _sizeMin = _size[0] + _size[1];
195 std::array<gcSprite, 9> _spr;
static Coor * Create(Coor *parent=nullptr)
Size GetSpriteTexSize(const SpriteID &spr_id)
返回精灵的纹理大小
gcSprite CreateSpriteDefault(const Color &col=ColorDef::WHITE)
创建默认精灵
static Sprite9 * Create(std::string_view spr_name)
创建一个九图精灵
void SetOrder(float order)
设置绘制顺序
void SetColor(const Color &color)
void SetUI(bool ui, bool change_sampler=true)
std::array< gcSprite, 9 > & GetSpriteAll()
返回精灵,用于批量操作
void SetRect(const Rect &rect)
设置大小
void SetCoor(Coor *coor, bool own=false)
constexpr Array< T, 2 > GetSize(const Array< T, 4 > &rect)
计算返回 矩形 宽和高
constexpr Array< T, 2 > GetLT(const Array< T, 4 > &rect)
bool Yes(const C &container, F func)
判断容器任意元素满足条件
constexpr Array< Position::value_type, N > toPosition(const Array< T, N > &a)
转换到Position,已知长度
constexpr Rect createRect(const Size &size)
创建一个Rect,依据大小
constexpr Array< Size::value_type, N > toSizeNeg2Zero(const Array< T, N > &a)
转换到Size,出现负数时转为0
constexpr Quad createQuad(const Position &p0, const Position &p1, const Position &p2, const Position &p3)
创建一个Quad