lua: Add Sprite:flatten()

This commit is contained in:
David Capello 2019-04-17 15:00:51 -03:00
parent 17895dce69
commit d24fc0a93a
2 changed files with 20 additions and 1 deletions

View File

@ -70,7 +70,9 @@ void UndoCommand::onExecute(Context* context)
#ifdef ENABLE_UI
Sprite* sprite = document->sprite();
SpritePosition spritePosition;
const bool gotoModified = Preferences::instance().undo.gotoModified();
const bool gotoModified =
(Preferences::instance().undo.gotoModified() &&
context->isUIAvailable() && current_editor);
if (gotoModified) {
SpritePosition currentPosition(writer.site()->layer(),
writer.site()->frame());

View File

@ -14,6 +14,7 @@
#include "app/cmd/assign_color_profile.h"
#include "app/cmd/clear_cel.h"
#include "app/cmd/convert_color_profile.h"
#include "app/cmd/flatten_layers.h"
#include "app/cmd/remove_frame_tag.h"
#include "app/cmd/remove_layer.h"
#include "app/cmd/remove_slice.h"
@ -27,6 +28,7 @@
#include "app/doc.h"
#include "app/doc_access.h"
#include "app/doc_api.h"
#include "app/doc_range.h"
#include "app/file/palette_file.h"
#include "app/script/docobj.h"
#include "app/script/engine.h"
@ -259,6 +261,20 @@ int Sprite_convertColorSpace(lua_State* L)
return 1;
}
int Sprite_flatten(lua_State* L)
{
auto sprite = get_docobj<Sprite>(L, 1);
DocRange range;
for (auto layer : sprite->root()->layers())
range.selectLayer(layer);
Tx tx;
tx(new cmd::FlattenLayers(sprite, range.selectedLayers(), true));
tx.commit();
return 0;
}
int Sprite_newLayer(lua_State* L)
{
auto sprite = get_docobj<Sprite>(L, 1);
@ -678,6 +694,7 @@ const luaL_Reg Sprite_methods[] = {
{ "setPalette", Sprite_setPalette },
{ "assignColorSpace", Sprite_assignColorSpace },
{ "convertColorSpace", Sprite_convertColorSpace },
{ "flatten", Sprite_flatten },
// Layers
{ "newLayer", Sprite_newLayer },
{ "newGroup", Sprite_newGroup },