mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-30 04:20:23 +00:00
[lua] Fix functions to set/get user data with cmd::SetUserData + DocEvent
This commit is contained in:
parent
13addb4336
commit
84dbb5557e
@ -54,28 +54,38 @@ int UserData_get_color(lua_State* L) {
|
||||
template<typename T>
|
||||
int UserData_set_text(lua_State* L) {
|
||||
auto obj = get_docobj<T>(L, 1);
|
||||
Sprite* sprite = get_docobj<Sprite>(L, 1);
|
||||
auto spr = obj->sprite();
|
||||
const char* text = lua_tostring(L, 2);
|
||||
auto wud = get_WithUserData<T>(obj);
|
||||
UserData ud = wud->userData();
|
||||
ud.setText(text);
|
||||
Tx tx;
|
||||
tx(new cmd::SetUserData(wud, ud, static_cast<Doc*>(sprite->document())));
|
||||
tx.commit();
|
||||
if (spr) {
|
||||
Tx tx;
|
||||
tx(new cmd::SetUserData(wud, ud, static_cast<Doc*>(spr->document())));
|
||||
tx.commit();
|
||||
}
|
||||
else {
|
||||
wud->setUserData(ud);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
int UserData_set_color(lua_State* L) {
|
||||
auto obj = get_docobj<T>(L, 1);
|
||||
Sprite* sprite = get_docobj<Sprite>(L, 1);
|
||||
auto spr = obj->sprite();
|
||||
doc::color_t docColor = convert_args_into_pixel_color(L, 2, doc::IMAGE_RGB);
|
||||
auto wud = get_WithUserData<T>(obj);
|
||||
UserData ud = wud->userData();
|
||||
ud.setColor(docColor);
|
||||
Tx tx;
|
||||
tx(new cmd::SetUserData(wud, ud, static_cast<Doc*>(sprite->document())));
|
||||
tx.commit();
|
||||
if (spr) {
|
||||
Tx tx;
|
||||
tx(new cmd::SetUserData(wud, ud, static_cast<Doc*>(spr->document())));
|
||||
tx.commit();
|
||||
}
|
||||
else {
|
||||
wud->setUserData(ud);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
// Aseprite Document Library
|
||||
// Copyright (c) 2020 Igara Studio S.A.
|
||||
// Copyright (c) 2017 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
@ -75,6 +76,14 @@ Slice::iterator Slice::getIteratorByFrame(const frame_t frame) const
|
||||
return const_cast<Slice*>(this)->m_keys.getIterator(frame);
|
||||
}
|
||||
|
||||
Sprite* Slice::sprite() const
|
||||
{
|
||||
if (m_owner)
|
||||
return m_owner->sprite();
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Slice::setOwner(Slices* owner)
|
||||
{
|
||||
m_owner = owner;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite Document Library
|
||||
// Copyright (C) 2019 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2017 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
@ -19,6 +19,7 @@
|
||||
|
||||
namespace doc {
|
||||
class Slices;
|
||||
class Sprite;
|
||||
|
||||
class SliceKey {
|
||||
public:
|
||||
@ -72,6 +73,7 @@ namespace doc {
|
||||
std::size_t size() const { return m_keys.size(); }
|
||||
bool empty() const { return m_keys.empty(); }
|
||||
|
||||
Sprite* sprite() const;
|
||||
Slices* owner() const { return m_owner; }
|
||||
frame_t fromFrame() const { return m_keys.fromFrame(); }
|
||||
frame_t toFrame() const { return m_keys.toFrame(); }
|
||||
|
@ -43,6 +43,14 @@ Tag::~Tag()
|
||||
ASSERT(!m_owner);
|
||||
}
|
||||
|
||||
Sprite* Tag::sprite() const
|
||||
{
|
||||
if (m_owner)
|
||||
return m_owner->sprite();
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Tag::setOwner(Tags* owner)
|
||||
{
|
||||
m_owner = owner;
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <string>
|
||||
|
||||
namespace doc {
|
||||
class Sprite;
|
||||
class Tags;
|
||||
|
||||
class Tag : public WithUserData {
|
||||
@ -26,6 +27,7 @@ namespace doc {
|
||||
Tag(const Tag& other);
|
||||
~Tag();
|
||||
|
||||
Sprite* sprite() const;
|
||||
Tags* owner() const { return m_owner; }
|
||||
frame_t fromFrame() const { return m_from; }
|
||||
frame_t toFrame() const { return m_to; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user