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_COPY_RECT_H_INCLUDED 8 #define APP_CMD_COPY_RECT_H_INCLUDED 9 #pragma once 10 11 #include "app/cmd.h" 12 #include "app/cmd/with_image.h" 13 #include "gfx/clip.h" 14 15 #include <vector> 16 17 namespace doc { 18 class Image; 19 } 20 21 namespace app { 22 namespace cmd { 23 using namespace doc; 24 25 class CopyRect : public Cmd 26 , public WithImage { 27 public: 28 CopyRect(Image* dst, const Image* src, const gfx::Clip& clip); 29 30 protected: 31 void onExecute() override; 32 void onUndo() override; 33 void onRedo() override; onMemSize()34 size_t onMemSize() const override { 35 return sizeof(*this) + m_data.size(); 36 } 37 38 private: 39 void swap(); 40 int lineSize(); 41 42 gfx::Clip m_clip; 43 std::vector<uint8_t> m_data; 44 }; 45 46 } // namespace cmd 47 } // namespace app 48 49 #endif 50