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