1 // Aseprite 2 // Copyright (C) 2001-2015 David Capello 3 // 4 // This program is distributed under the terms of 5 // the End-User License Agreement for Aseprite. 6 7 #ifndef APP_CMD_SET_PALETTE_H_INCLUDED 8 #define APP_CMD_SET_PALETTE_H_INCLUDED 9 #pragma once 10 11 #include "app/cmd.h" 12 #include "app/cmd/with_sprite.h" 13 #include "doc/color.h" 14 #include "doc/frame.h" 15 16 #include <vector> 17 18 namespace doc { 19 class Palette; 20 class Sprite; 21 } 22 23 namespace app { 24 namespace cmd { 25 using namespace doc; 26 27 class SetPalette : public Cmd 28 , public WithSprite { 29 public: 30 SetPalette(Sprite* sprite, frame_t frame, const Palette* newPalette); 31 32 protected: 33 void onExecute() override; 34 void onUndo() override; onMemSize()35 size_t onMemSize() const override { 36 return sizeof(*this) + 37 sizeof(doc::color_t) * (m_oldColors.size() + 38 m_newColors.size()); 39 } 40 41 private: 42 frame_t m_frame; 43 int m_from, m_to; 44 int m_oldNColors; 45 int m_newNColors; 46 std::vector<color_t> m_oldColors; 47 std::vector<color_t> m_newColors; 48 }; 49 50 } // namespace cmd 51 } // namespace app 52 53 #endif 54