1 // Aseprite 2 // Copyright (c) 2001-2018 David Capello 3 // 4 // This program is distributed under the terms of 5 // the End-User License Agreement for Aseprite. 6 7 #ifndef APP_DOC_EVENT_H_INCLUDED 8 #define APP_DOC_EVENT_H_INCLUDED 9 #pragma once 10 11 #include "gfx/region.h" 12 #include "doc/frame.h" 13 14 namespace doc { 15 class Cel; 16 class FrameTag; 17 class Image; 18 class Layer; 19 class LayerImage; 20 class Sprite; 21 } 22 23 namespace app { 24 class Doc; 25 26 using namespace doc; 27 28 class DocEvent { 29 public: DocEvent(Doc * document)30 DocEvent(Doc* document) 31 : m_document(document) 32 , m_sprite(NULL) 33 , m_layer(NULL) 34 , m_cel(NULL) 35 , m_image(NULL) 36 , m_imageIndex(-1) 37 , m_frame(0) 38 , m_targetLayer(NULL) 39 , m_targetFrame(0) { 40 } 41 42 // Source of the event. document()43 Doc* document() const { return m_document; } sprite()44 Sprite* sprite() const { return m_sprite; } layer()45 Layer* layer() const { return m_layer; } cel()46 Cel* cel() const { return m_cel; } image()47 Image* image() const { return m_image; } imageIndex()48 int imageIndex() const { return m_imageIndex; } frame()49 frame_t frame() const { return m_frame; } frameTag()50 FrameTag* frameTag() const { return m_frameTag; } region()51 const gfx::Region& region() const { return m_region; } 52 sprite(Sprite * sprite)53 void sprite(Sprite* sprite) { m_sprite = sprite; } layer(Layer * layer)54 void layer(Layer* layer) { m_layer = layer; } cel(Cel * cel)55 void cel(Cel* cel) { m_cel = cel; } image(Image * image)56 void image(Image* image) { m_image = image; } imageIndex(int imageIndex)57 void imageIndex(int imageIndex) { m_imageIndex = imageIndex; } frame(frame_t frame)58 void frame(frame_t frame) { m_frame = frame; } frameTag(FrameTag * frameTag)59 void frameTag(FrameTag* frameTag) { m_frameTag = frameTag; } region(const gfx::Region & rgn)60 void region(const gfx::Region& rgn) { m_region = rgn; } 61 62 // Destination of the operation. targetLayer()63 Layer* targetLayer() const { return m_targetLayer; } targetFrame()64 frame_t targetFrame() const { return m_targetFrame; } 65 targetLayer(Layer * layer)66 void targetLayer(Layer* layer) { m_targetLayer = layer; } targetFrame(frame_t frame)67 void targetFrame(frame_t frame) { m_targetFrame = frame; } 68 69 private: 70 Doc* m_document; 71 Sprite* m_sprite; 72 Layer* m_layer; 73 Cel* m_cel; 74 Image* m_image; 75 int m_imageIndex; 76 frame_t m_frame; 77 FrameTag* m_frameTag; 78 gfx::Region m_region; 79 80 // For copy/move commands, the m_layer/m_frame are source of the 81 // operation, and these are the destination of the operation. 82 Layer* m_targetLayer; 83 frame_t m_targetFrame; 84 }; 85 86 } // namespace app 87 88 #endif 89