mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-01 01:20:25 +00:00
Merge branch 'main' into beta
This commit is contained in:
commit
ecbd845aae
@ -73,6 +73,7 @@
|
||||
</enum>
|
||||
<enum id="SelectionMode">
|
||||
<value id="DEFAULT" value="0" />
|
||||
<value id="REPLACE" value="0" />
|
||||
<value id="ADD" value="1" />
|
||||
<value id="SUBTRACT" value="2" />
|
||||
<value id="INTERSECT" value="3" />
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
@ -10,6 +10,6 @@
|
||||
|
||||
// Increment this value if the scripting API is modified between two
|
||||
// released Aseprite versions.
|
||||
#define API_VERSION 13
|
||||
#define API_VERSION 14
|
||||
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2015-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -26,6 +26,7 @@
|
||||
#include "app/script/security.h"
|
||||
#include "app/site.h"
|
||||
#include "app/tools/active_tool.h"
|
||||
#include "app/tools/ink.h"
|
||||
#include "app/tools/tool_box.h"
|
||||
#include "app/tools/tool_loop.h"
|
||||
#include "app/tools/tool_loop_manager.h"
|
||||
@ -388,6 +389,30 @@ int App_useTool(lua_State* L)
|
||||
params.freehandAlgorithm = get_value_from_lua<tools::FreehandAlgorithm>(L, -1);
|
||||
lua_pop(L, 1);
|
||||
|
||||
if (params.ink->isSelection()) {
|
||||
gen::SelectionMode selectionMode = Preferences::instance().selection.mode();
|
||||
|
||||
type = lua_getfield(L, 1, "selection");
|
||||
if (type != LUA_TNIL)
|
||||
selectionMode = get_value_from_lua<gen::SelectionMode>(L, -1);
|
||||
lua_pop(L, 1);
|
||||
|
||||
switch (selectionMode) {
|
||||
case gen::SelectionMode::REPLACE:
|
||||
params.modifiers = tools::ToolLoopModifiers::kReplaceSelection;
|
||||
break;
|
||||
case gen::SelectionMode::ADD:
|
||||
params.modifiers = tools::ToolLoopModifiers::kAddSelection;
|
||||
break;
|
||||
case gen::SelectionMode::SUBTRACT:
|
||||
params.modifiers = tools::ToolLoopModifiers::kSubtractSelection;
|
||||
break;
|
||||
case gen::SelectionMode::INTERSECT:
|
||||
params.modifiers = tools::ToolLoopModifiers::kIntersectSelection;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Are we going to modify pixels or tiles?
|
||||
type = lua_getfield(L, 1, "tilemapMode");
|
||||
if (type != LUA_TNIL) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -15,6 +15,7 @@
|
||||
#include "app/console.h"
|
||||
#include "app/doc_exporter.h"
|
||||
#include "app/doc_range.h"
|
||||
#include "app/pref/preferences.h"
|
||||
#include "app/script/luacpp.h"
|
||||
#include "app/script/security.h"
|
||||
#include "app/sprite_sheet_type.h"
|
||||
@ -388,6 +389,15 @@ Engine::Engine()
|
||||
setfield_integer(L, "STACK", TilesetMode::Stack);
|
||||
lua_pop(L, 1);
|
||||
|
||||
lua_newtable(L);
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setglobal(L, "SelectionMode");
|
||||
setfield_integer(L, "REPLACE", (int)gen::SelectionMode::REPLACE);
|
||||
setfield_integer(L, "ADD", (int)gen::SelectionMode::ADD);
|
||||
setfield_integer(L, "SUBTRACT", (int)gen::SelectionMode::SUBTRACT);
|
||||
setfield_integer(L, "INTERSECT", (int)gen::SelectionMode::INTERSECT);
|
||||
lua_pop(L, 1);
|
||||
|
||||
// Register classes/prototypes
|
||||
register_brush_class(L);
|
||||
register_cel_class(L);
|
||||
|
@ -126,6 +126,9 @@ protected:
|
||||
doc::color_t m_secondaryColor;
|
||||
tools::DynamicsOptions m_dynamics;
|
||||
|
||||
// Modifiers that can be used with scripts
|
||||
tools::ToolLoopModifiers m_staticToolModifiers;
|
||||
|
||||
// Visible region (on the screen) of the all editors showing the
|
||||
// given document.
|
||||
gfx::Region m_allVisibleRgn;
|
||||
@ -174,6 +177,7 @@ public:
|
||||
, m_bgColor(color_utils::color_for_target_mask(params.bg, m_colorTarget))
|
||||
, m_primaryColor(m_button == tools::ToolLoop::Left ? m_fgColor: m_bgColor)
|
||||
, m_secondaryColor(m_button == tools::ToolLoop::Left ? m_bgColor: m_fgColor)
|
||||
, m_staticToolModifiers(params.modifiers)
|
||||
{
|
||||
ASSERT(m_tool);
|
||||
ASSERT(m_ink);
|
||||
@ -307,8 +311,10 @@ public:
|
||||
int getTolerance() override { return m_tolerance; }
|
||||
bool getContiguous() override { return m_contiguous; }
|
||||
tools::ToolLoopModifiers getModifiers() override {
|
||||
return m_editor ? m_editor->getToolLoopModifiers():
|
||||
tools::ToolLoopModifiers::kNone;
|
||||
return
|
||||
(m_staticToolModifiers == tools::ToolLoopModifiers::kNone &&
|
||||
m_editor ? m_editor->getToolLoopModifiers():
|
||||
m_staticToolModifiers);
|
||||
}
|
||||
filters::TiledMode getTiledMode() override { return m_docPref.tiled.mode(); }
|
||||
bool getGridVisible() override { return m_docPref.show.grid(); }
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2017 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -46,6 +46,9 @@ namespace app {
|
||||
int tolerance = 0;
|
||||
bool contiguous = true;
|
||||
tools::FreehandAlgorithm freehandAlgorithm = tools::FreehandAlgorithm::DEFAULT;
|
||||
|
||||
// For selection tools executed from scripts
|
||||
tools::ToolLoopModifiers modifiers = tools::ToolLoopModifiers::kNone;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user