mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
	
	
		
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
|  | // Aseprite
 | ||
|  | // Copyright (C) 2001-2015  David Capello
 | ||
|  | //
 | ||
|  | // This program is free software; you can redistribute it and/or modify
 | ||
|  | // it under the terms of the GNU General Public License version 2 as
 | ||
|  | // published by the Free Software Foundation.
 | ||
|  | 
 | ||
|  | #ifdef HAVE_CONFIG_H
 | ||
|  | #include "config.h"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include "app/app.h"
 | ||
|  | #include "app/commands/command.h"
 | ||
|  | #include "app/commands/params.h"
 | ||
|  | #include "app/context.h"
 | ||
|  | #include "app/pref/preferences.h"
 | ||
|  | #include "app/tools/freehand_algorithm.h"
 | ||
|  | #include "app/tools/tool.h"
 | ||
|  | 
 | ||
|  | namespace app { | ||
|  | 
 | ||
|  | class PixelPerfectModeCommand : public Command { | ||
|  | public: | ||
|  |   PixelPerfectModeCommand(); | ||
|  |   Command* clone() const override { return new PixelPerfectModeCommand(*this); } | ||
|  | 
 | ||
|  | protected: | ||
|  |   bool onEnabled(Context* context) override; | ||
|  |   bool onChecked(Context* context) override; | ||
|  |   void onExecute(Context* context) override; | ||
|  | }; | ||
|  | 
 | ||
|  | PixelPerfectModeCommand::PixelPerfectModeCommand() | ||
|  |   : Command("PixelPerfectMode", | ||
|  |             "Switch Pixel Perfect Mode", | ||
|  |             CmdUIOnlyFlag) | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | bool PixelPerfectModeCommand::onEnabled(Context* ctx) | ||
|  | { | ||
|  |   return true; | ||
|  | } | ||
|  | 
 | ||
|  | bool PixelPerfectModeCommand::onChecked(Context* ctx) | ||
|  | { | ||
|  |   tools::Tool* tool = App::instance()->activeTool(); | ||
|  |   if (!tool) | ||
|  |     return false; | ||
|  | 
 | ||
|  |   auto& toolPref = Preferences::instance().tool(tool); | ||
|  |   return (toolPref.freehandAlgorithm() == tools::FreehandAlgorithm::PIXEL_PERFECT); | ||
|  | } | ||
|  | 
 | ||
|  | void PixelPerfectModeCommand::onExecute(Context* ctx) | ||
|  | { | ||
|  |   tools::Tool* tool = App::instance()->activeTool(); | ||
|  |   if (!tool) | ||
|  |     return; | ||
|  | 
 | ||
|  |   auto& toolPref = Preferences::instance().tool(tool); | ||
|  |   toolPref.freehandAlgorithm( | ||
|  |     toolPref.freehandAlgorithm() == tools::FreehandAlgorithm::DEFAULT ? | ||
|  |     tools::FreehandAlgorithm::PIXEL_PERFECT: | ||
|  |     tools::FreehandAlgorithm::DEFAULT); | ||
|  | } | ||
|  | 
 | ||
|  | Command* CommandFactory::createPixelPerfectModeCommand() | ||
|  | { | ||
|  |   return new PixelPerfectModeCommand; | ||
|  | } | ||
|  | 
 | ||
|  | } // namespace app
 |