mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| // Aseprite
 | |
| // Copyright (C) 2001-2015  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/cmd_sequence.h"
 | |
| 
 | |
| namespace app {
 | |
| 
 | |
| CmdSequence::CmdSequence()
 | |
| {
 | |
| }
 | |
| 
 | |
| CmdSequence::~CmdSequence()
 | |
| {
 | |
|   for (Cmd* cmd : m_cmds)
 | |
|     delete cmd;
 | |
| }
 | |
| 
 | |
| void CmdSequence::add(Cmd* cmd)
 | |
| {
 | |
|   m_cmds.push_back(cmd);
 | |
| }
 | |
| 
 | |
| void CmdSequence::onExecute()
 | |
| {
 | |
|   for (auto it = m_cmds.begin(), end=m_cmds.end(); it!=end; ++it)
 | |
|     (*it)->execute(context());
 | |
| }
 | |
| 
 | |
| void CmdSequence::onUndo()
 | |
| {
 | |
|   for (auto it = m_cmds.rbegin(), end=m_cmds.rend(); it!=end; ++it)
 | |
|     (*it)->undo();
 | |
| }
 | |
| 
 | |
| void CmdSequence::onRedo()
 | |
| {
 | |
|   for (auto it = m_cmds.begin(), end=m_cmds.end(); it!=end; ++it)
 | |
|     (*it)->redo();
 | |
| }
 | |
| 
 | |
| size_t CmdSequence::onMemSize() const
 | |
| {
 | |
|   size_t size = sizeof(*this);
 | |
| 
 | |
|   for (auto it = m_cmds.begin(), end=m_cmds.end(); it!=end; ++it)
 | |
|     size += (*it)->memSize();
 | |
| 
 | |
|   return size;
 | |
| }
 | |
| 
 | |
| void CmdSequence::executeAndAdd(Cmd* cmd)
 | |
| {
 | |
|   cmd->execute(context());
 | |
|   add(cmd);
 | |
| }
 | |
| 
 | |
| } // namespace app
 |