aseprite/src/app/commands/cmd_set_same_ink.cpp
2019-01-07 17:03:38 -03:00

66 lines
1.5 KiB
C++

// Aseprite
// Copyright (C) 2001-2017 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "app/app.h"
#include "app/commands/command.h"
#include "app/commands/commands.h"
#include "app/commands/params.h"
#include "app/pref/preferences.h"
#include "app/tools/tool.h"
#include "app/tools/tool_box.h"
namespace app {
class SetSameInkCommand : public Command {
public:
SetSameInkCommand();
protected:
bool onChecked(Context* context) override;
void onExecute(Context* context) override;
};
SetSameInkCommand::SetSameInkCommand()
: Command(CommandId::SetSameInk(), CmdUIOnlyFlag)
{
}
bool SetSameInkCommand::onChecked(Context* context)
{
return Preferences::instance().shared.shareInk();
}
void SetSameInkCommand::onExecute(Context* context)
{
Preferences& pref = Preferences::instance();
bool newState = !pref.shared.shareInk();
pref.shared.shareInk(newState);
if (newState) {
tools::Tool* activeTool = App::instance()->activeTool();
tools::InkType inkType = pref.tool(activeTool).ink();
int opacity = pref.tool(activeTool).opacity();
for (tools::Tool* tool : *App::instance()->toolBox()) {
if (tool != activeTool) {
pref.tool(tool).ink(inkType);
pref.tool(tool).opacity(opacity);
}
}
}
}
Command* CommandFactory::createSetSameInkCommand()
{
return new SetSameInkCommand;
}
} // namespace app