#include "pch.h" #include "log.h" #include "action.h" #include "app.h" ActionManager ActionManager::I; void ActionManager::add(Action *action) { I.m_redos = std::stack>(); I.m_actions.emplace(action); I.m_memory += action->memory(); //LOG("History: %.2f KB", I.m_memory / 1024.f); App::I.update_memory_usage(I.m_memory); } void ActionManager::undo() { if (I.m_actions.empty()) return; I.m_redos.emplace(I.m_actions.top()->get_redo()); I.m_redos.top()->was_saved = !Canvas::I->m_unsaved; I.m_actions.top()->undo(); I.m_memory -= I.m_actions.top()->memory(); Canvas::I->m_unsaved = !I.m_actions.top()->was_saved; I.m_actions.pop(); //LOG("History: %.2f KB", I.m_memory / 1024.f); App::I.update_memory_usage(I.m_memory); App::I.title_update(); } void ActionManager::redo() { if (I.m_redos.empty()) return; I.m_actions.emplace(I.m_redos.top()->get_redo()); I.m_actions.top()->was_saved = !Canvas::I->m_unsaved; I.m_memory += I.m_actions.top()->memory(); I.m_redos.top()->undo(); Canvas::I->m_unsaved = !I.m_redos.top()->was_saved; I.m_redos.pop(); //LOG("History: %.2f KB", I.m_memory / 1024.f); App::I.update_memory_usage(I.m_memory); App::I.title_update(); } void ActionManager::clear() { while (!I.m_actions.empty()) I.m_actions.pop(); I.m_memory = 0; //LOG("History: %.2f KB", I.m_memory / 1024.f); App::I.update_memory_usage(I.m_memory); }