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_OBSERVER_H_INCLUDED
8 #define APP_DOC_OBSERVER_H_INCLUDED
9 #pragma once
10 
11 namespace app {
12   class Doc;
13   class DocEvent;
14 
15   class DocObserver {
16   public:
~DocObserver()17     virtual ~DocObserver() { }
18 
onFileNameChanged(Doc * doc)19     virtual void onFileNameChanged(Doc* doc) { }
20 
21     // General update. If an observer receives this event, it's because
22     // anything in the document could be changed.
onGeneralUpdate(DocEvent & ev)23     virtual void onGeneralUpdate(DocEvent& ev) { }
24 
onPixelFormatChanged(DocEvent & ev)25     virtual void onPixelFormatChanged(DocEvent& ev) { }
26 
onAddLayer(DocEvent & ev)27     virtual void onAddLayer(DocEvent& ev) { }
onAddFrame(DocEvent & ev)28     virtual void onAddFrame(DocEvent& ev) { }
onAddCel(DocEvent & ev)29     virtual void onAddCel(DocEvent& ev) { }
onAddFrameTag(DocEvent & ev)30     virtual void onAddFrameTag(DocEvent& ev) { }
31 
onBeforeRemoveLayer(DocEvent & ev)32     virtual void onBeforeRemoveLayer(DocEvent& ev) { }
onAfterRemoveLayer(DocEvent & ev)33     virtual void onAfterRemoveLayer(DocEvent& ev) { }
34 
35     // Called when a frame is removed. It's called after the frame was
36     // removed, and the sprite's total number of frames is modified.
onRemoveFrame(DocEvent & ev)37     virtual void onRemoveFrame(DocEvent& ev) { }
onRemoveFrameTag(DocEvent & ev)38     virtual void onRemoveFrameTag(DocEvent& ev) { }
onRemoveCel(DocEvent & ev)39     virtual void onRemoveCel(DocEvent& ev) { }
40 
onSpriteSizeChanged(DocEvent & ev)41     virtual void onSpriteSizeChanged(DocEvent& ev) { }
onSpriteTransparentColorChanged(DocEvent & ev)42     virtual void onSpriteTransparentColorChanged(DocEvent& ev) { }
onSpritePixelRatioChanged(DocEvent & ev)43     virtual void onSpritePixelRatioChanged(DocEvent& ev) { }
44 
onLayerNameChange(DocEvent & ev)45     virtual void onLayerNameChange(DocEvent& ev) { }
onLayerOpacityChange(DocEvent & ev)46     virtual void onLayerOpacityChange(DocEvent& ev) { }
onLayerBlendModeChange(DocEvent & ev)47     virtual void onLayerBlendModeChange(DocEvent& ev) { }
onLayerRestacked(DocEvent & ev)48     virtual void onLayerRestacked(DocEvent& ev) { }
onLayerMergedDown(DocEvent & ev)49     virtual void onLayerMergedDown(DocEvent& ev) { }
50 
onCelMoved(DocEvent & ev)51     virtual void onCelMoved(DocEvent& ev) { }
onCelCopied(DocEvent & ev)52     virtual void onCelCopied(DocEvent& ev) { }
onCelFrameChanged(DocEvent & ev)53     virtual void onCelFrameChanged(DocEvent& ev) { }
onCelPositionChanged(DocEvent & ev)54     virtual void onCelPositionChanged(DocEvent& ev) { }
onCelOpacityChange(DocEvent & ev)55     virtual void onCelOpacityChange(DocEvent& ev) { }
56 
onFrameDurationChanged(DocEvent & ev)57     virtual void onFrameDurationChanged(DocEvent& ev) { }
58 
onImagePixelsModified(DocEvent & ev)59     virtual void onImagePixelsModified(DocEvent& ev) { }
onSpritePixelsModified(DocEvent & ev)60     virtual void onSpritePixelsModified(DocEvent& ev) { }
onExposeSpritePixels(DocEvent & ev)61     virtual void onExposeSpritePixels(DocEvent& ev) { }
62 
63     // When the number of total frames available is modified.
onTotalFramesChanged(DocEvent & ev)64     virtual void onTotalFramesChanged(DocEvent& ev) { }
65 
66     // The selection has changed.
onSelectionChanged(DocEvent & ev)67     virtual void onSelectionChanged(DocEvent& ev) { }
68 
69     // Called to destroy the observable. (Here you could call "delete this".)
dispose()70     virtual void dispose() { }
71   };
72 
73 } // namespace app
74 
75 #endif
76