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