2018-07-07 13:47:42 +08:00
|
|
|
// Aseprite
|
2025-03-08 05:03:49 +08:00
|
|
|
// Copyright (C) 2018-2025 Igara Studio S.A.
|
2019-05-03 03:26:13 +08:00
|
|
|
// Copyright (C) 2001-2018 David Capello
|
2018-07-07 08:06:03 +08:00
|
|
|
//
|
2018-07-07 13:47:42 +08:00
|
|
|
// This program is distributed under the terms of
|
|
|
|
// the End-User License Agreement for Aseprite.
|
2018-07-07 08:06:03 +08:00
|
|
|
|
2018-07-07 13:47:42 +08:00
|
|
|
#ifndef APP_DOC_OBSERVER_H_INCLUDED
|
|
|
|
#define APP_DOC_OBSERVER_H_INCLUDED
|
2018-07-07 08:06:03 +08:00
|
|
|
#pragma once
|
|
|
|
|
2022-12-28 01:11:05 +08:00
|
|
|
namespace doc {
|
|
|
|
class Remap;
|
|
|
|
}
|
|
|
|
|
2018-07-07 13:47:42 +08:00
|
|
|
namespace app {
|
2018-07-07 22:54:44 +08:00
|
|
|
class Doc;
|
2018-07-07 08:06:03 +08:00
|
|
|
class DocEvent;
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
class DocObserver {
|
|
|
|
public:
|
|
|
|
virtual ~DocObserver() {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2021-10-19 23:43:56 +08:00
|
|
|
virtual void onCloseDocument(Doc* doc) {}
|
2018-07-07 22:54:44 +08:00
|
|
|
virtual void onFileNameChanged(Doc* doc) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
// General update. If an observer receives this event, it's because
|
|
|
|
// anything in the document could be changed.
|
|
|
|
virtual void onGeneralUpdate(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-10-19 02:29:16 +08:00
|
|
|
virtual void onColorSpaceChanged(DocEvent& ev) {}
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onPixelFormatChanged(DocEvent& ev) {}
|
2019-10-01 20:24:03 +08:00
|
|
|
virtual void onPaletteChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onAddLayer(DocEvent& ev) {}
|
|
|
|
virtual void onAddFrame(DocEvent& ev) {}
|
|
|
|
virtual void onAddCel(DocEvent& ev) {}
|
2019-05-03 03:26:13 +08:00
|
|
|
virtual void onAddSlice(DocEvent& ev) {}
|
2019-10-02 01:55:08 +08:00
|
|
|
virtual void onAddTag(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onBeforeRemoveLayer(DocEvent& ev) {}
|
|
|
|
virtual void onAfterRemoveLayer(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
// Called when a frame is removed. It's called after the frame was
|
|
|
|
// removed, and the sprite's total number of frames is modified.
|
|
|
|
virtual void onRemoveFrame(DocEvent& ev) {}
|
2019-10-02 01:55:08 +08:00
|
|
|
virtual void onRemoveTag(DocEvent& ev) {}
|
2020-08-04 21:40:42 +08:00
|
|
|
virtual void onBeforeRemoveCel(DocEvent& ev) {}
|
|
|
|
virtual void onAfterRemoveCel(DocEvent& ev) {}
|
2019-05-03 03:26:13 +08:00
|
|
|
virtual void onRemoveSlice(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onSpriteSizeChanged(DocEvent& ev) {}
|
|
|
|
virtual void onSpriteTransparentColorChanged(DocEvent& ev) {}
|
|
|
|
virtual void onSpritePixelRatioChanged(DocEvent& ev) {}
|
2019-10-11 02:08:59 +08:00
|
|
|
virtual void onSpriteGridBoundsChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onLayerNameChange(DocEvent& ev) {}
|
|
|
|
virtual void onLayerOpacityChange(DocEvent& ev) {}
|
|
|
|
virtual void onLayerBlendModeChange(DocEvent& ev) {}
|
|
|
|
virtual void onLayerRestacked(DocEvent& ev) {}
|
|
|
|
virtual void onLayerMergedDown(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onCelMoved(DocEvent& ev) {}
|
|
|
|
virtual void onCelCopied(DocEvent& ev) {}
|
|
|
|
virtual void onCelFrameChanged(DocEvent& ev) {}
|
|
|
|
virtual void onCelPositionChanged(DocEvent& ev) {}
|
|
|
|
virtual void onCelOpacityChange(DocEvent& ev) {}
|
2023-04-11 04:44:22 +08:00
|
|
|
virtual void onCelZIndexChange(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2020-09-11 02:49:08 +08:00
|
|
|
virtual void onUserDataChange(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onFrameDurationChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
virtual void onImagePixelsModified(DocEvent& ev) {}
|
|
|
|
virtual void onSpritePixelsModified(DocEvent& ev) {}
|
|
|
|
virtual void onExposeSpritePixels(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
// When the number of total frames available is modified.
|
|
|
|
virtual void onTotalFramesChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2018-07-07 08:06:03 +08:00
|
|
|
// The selection has changed.
|
|
|
|
virtual void onSelectionChanged(DocEvent& ev) {}
|
2019-02-16 04:14:44 +08:00
|
|
|
virtual void onSelectionBoundariesChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2022-04-26 01:00:26 +08:00
|
|
|
// When the tag range changes
|
2020-07-28 05:17:48 +08:00
|
|
|
virtual void onTagChange(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2022-04-26 01:00:26 +08:00
|
|
|
// When the tag is renamed
|
2022-04-26 00:32:16 +08:00
|
|
|
virtual void onTagRename(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2019-05-07 21:28:37 +08:00
|
|
|
// Slices
|
|
|
|
virtual void onSliceNameChange(DocEvent& ev) {}
|
2025-03-08 05:03:49 +08:00
|
|
|
virtual void onBeforeSlicesDuplication(DocEvent& ev) {}
|
|
|
|
virtual void onSliceDuplicated(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2019-03-30 02:57:10 +08:00
|
|
|
// The tileset has changed.
|
|
|
|
virtual void onTilesetChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2022-10-25 04:17:06 +08:00
|
|
|
// The collapsed/expanded flag of a specific layer changed.
|
|
|
|
virtual void onLayerCollapsedChanged(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2024-02-27 00:11:26 +08:00
|
|
|
// The visibility flag of a specific layer is going to change/changed.
|
|
|
|
virtual void onBeforeLayerVisibilityChange(DocEvent& ev, bool newState) {}
|
|
|
|
virtual void onAfterLayerVisibilityChange(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2024-12-12 01:42:14 +08:00
|
|
|
// The editable flag of a specific layer is going to change/changed.
|
|
|
|
virtual void onBeforeLayerEditableChange(DocEvent& ev, bool newState) {}
|
|
|
|
|
2022-12-28 01:11:05 +08:00
|
|
|
// The tileset was remapped (e.g. when tiles are re-ordered).
|
|
|
|
virtual void onRemapTileset(DocEvent& ev, const doc::Remap& remap) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2023-02-16 05:49:36 +08:00
|
|
|
// When the tile management plugin property is changed.
|
|
|
|
virtual void onTileManagementPluginChange(DocEvent& ev) {}
|
2024-12-16 21:10:34 +08:00
|
|
|
|
2023-07-08 05:40:06 +08:00
|
|
|
// When a new tilemap cel/tile is created in certain situations,
|
|
|
|
// like after drawing in an empty tilemap cel, or when we paste a
|
|
|
|
// cel into an empty tilemap cel, so a new tile is created.
|
|
|
|
//
|
|
|
|
// This is useful for a tile management plugin to know when a new
|
|
|
|
// tile is added automatically by the editor or the timeline
|
|
|
|
// through draw_image_into_new_tilemap_cel(), and the plugin can
|
|
|
|
// do some extra work with it.
|
|
|
|
//
|
|
|
|
// Warning: This must be triggered from the UI thread (because
|
|
|
|
// scripts will listen this event).
|
|
|
|
virtual void onAfterAddTile(DocEvent& ev) {}
|
2018-07-07 08:06:03 +08:00
|
|
|
};
|
|
|
|
|
2018-07-07 13:47:42 +08:00
|
|
|
} // namespace app
|
2018-07-07 08:06:03 +08:00
|
|
|
|
|
|
|
#endif
|