diff --git a/src/undo/undo_history_backward.cpp b/src/undo/undo_history_backward.cpp index 3586193dd..0f2188fea 100644 --- a/src/undo/undo_history_backward.cpp +++ b/src/undo/undo_history_backward.cpp @@ -8,6 +8,7 @@ #include "undo/undo_history.h" +#include "raster/palette.h" #include "undo/undoers_stack.h" #include "undoers/add_cel.h" #include "undoers/add_image.h" @@ -122,12 +123,12 @@ void UndoHistory::undo_set_layer(Sprite* sprite) void UndoHistory::undo_add_palette(Sprite* sprite, Palette* palette) { - pushUndoer(new undoers::AddPalette(getObjects(), sprite, palette)); + pushUndoer(new undoers::AddPalette(getObjects(), sprite, palette->getFrame())); } void UndoHistory::undo_remove_palette(Sprite* sprite, Palette* palette) { - pushUndoer(new undoers::RemovePalette(getObjects(), sprite, palette)); + pushUndoer(new undoers::RemovePalette(getObjects(), sprite, palette->getFrame())); } void UndoHistory::undo_set_palette_colors(Sprite* sprite, Palette* palette, int from, int to) diff --git a/src/undoers/add_palette.cpp b/src/undoers/add_palette.cpp index cbcc72d02..e5276a392 100644 --- a/src/undoers/add_palette.cpp +++ b/src/undoers/add_palette.cpp @@ -28,9 +28,9 @@ using namespace undo; using namespace undoers; -AddPalette::AddPalette(ObjectsContainer* objects, Sprite* sprite, Palette* palette) +AddPalette::AddPalette(ObjectsContainer* objects, Sprite* sprite, int paletteFrame) : m_spriteId(objects->addObject(sprite)) - , m_paletteId(objects->addObject(palette)) + , m_paletteFrame(paletteFrame) { } @@ -42,9 +42,9 @@ void AddPalette::dispose() void AddPalette::revert(ObjectsContainer* objects, UndoersCollector* redoers) { Sprite* sprite = objects->getObjectT(m_spriteId); - Palette* palette = objects->getObjectT(m_paletteId); + Palette* palette = sprite->getPalette(m_paletteFrame); - redoers->pushUndoer(new RemovePalette(objects, sprite, palette)); + redoers->pushUndoer(new RemovePalette(objects, sprite, m_paletteFrame)); sprite->deletePalette(palette); } diff --git a/src/undoers/add_palette.h b/src/undoers/add_palette.h index 1bcd31115..f9c5b5d1f 100644 --- a/src/undoers/add_palette.h +++ b/src/undoers/add_palette.h @@ -22,7 +22,6 @@ #include "undo/object_id.h" #include "undoers/undoer_base.h" -class Palette; class Sprite; namespace undoers { @@ -30,7 +29,7 @@ namespace undoers { class AddPalette : public UndoerBase { public: - AddPalette(undo::ObjectsContainer* objects, Sprite* sprite, Palette* palette); + AddPalette(undo::ObjectsContainer* objects, Sprite* sprite, int palette_frame); void dispose() OVERRIDE; int getMemSize() const OVERRIDE { return sizeof(*this); } @@ -38,7 +37,7 @@ public: private: undo::ObjectId m_spriteId; - undo::ObjectId m_paletteId; + int m_paletteFrame; }; } // namespace undoers diff --git a/src/undoers/remove_palette.cpp b/src/undoers/remove_palette.cpp index abf655ac1..153a04c27 100644 --- a/src/undoers/remove_palette.cpp +++ b/src/undoers/remove_palette.cpp @@ -20,21 +20,21 @@ #include "undoers/remove_palette.h" +#include "base/unique_ptr.h" #include "raster/palette.h" #include "raster/palette_io.h" #include "raster/sprite.h" #include "undo/objects_container.h" #include "undo/undoers_collector.h" #include "undoers/add_palette.h" -#include "undoers/object_io.h" using namespace undo; using namespace undoers; -RemovePalette::RemovePalette(ObjectsContainer* objects, Sprite* sprite, Palette* palette) +RemovePalette::RemovePalette(ObjectsContainer* objects, Sprite* sprite, int paletteFrame) : m_spriteId(objects->addObject(sprite)) { - write_object(objects, m_stream, palette, raster::write_palette); + raster::write_palette(m_stream, sprite->getPalette(paletteFrame)); } void RemovePalette::dispose() @@ -45,10 +45,10 @@ void RemovePalette::dispose() void RemovePalette::revert(ObjectsContainer* objects, UndoersCollector* redoers) { Sprite* sprite = objects->getObjectT(m_spriteId); - UniquePtr palette(read_object(objects, m_stream, raster::read_palette)); + UniquePtr palette(raster::read_palette(m_stream)); // Push an AddPalette as redoer - redoers->pushUndoer(new AddPalette(objects, sprite, palette)); + redoers->pushUndoer(new AddPalette(objects, sprite, palette->getFrame())); sprite->setPalette(palette, true); diff --git a/src/undoers/remove_palette.h b/src/undoers/remove_palette.h index 156f73582..765a20094 100644 --- a/src/undoers/remove_palette.h +++ b/src/undoers/remove_palette.h @@ -24,7 +24,6 @@ #include -class Palette; class Sprite; namespace undoers { @@ -32,7 +31,7 @@ namespace undoers { class RemovePalette : public UndoerBase { public: - RemovePalette(undo::ObjectsContainer* objects, Sprite* sprite, Palette* palette); + RemovePalette(undo::ObjectsContainer* objects, Sprite* sprite, int paletteFrame); void dispose() OVERRIDE; int getMemSize() const OVERRIDE { return sizeof(*this) + getStreamSize(); } diff --git a/src/undoers/set_mask.cpp b/src/undoers/set_mask.cpp index a2481f9c5..ca625f7fd 100644 --- a/src/undoers/set_mask.cpp +++ b/src/undoers/set_mask.cpp @@ -26,7 +26,6 @@ #include "raster/mask_io.h" #include "undo/objects_container.h" #include "undo/undoers_collector.h" -#include "undoers/object_io.h" using namespace undo; using namespace undoers; @@ -36,7 +35,7 @@ SetMask::SetMask(ObjectsContainer* objects, Document* document) , m_isMaskVisible(document->isMaskVisible()) { if (m_isMaskVisible) - write_object(objects, m_stream, document->getMask(), raster::write_mask); + raster::write_mask(m_stream, document->getMask()); } void SetMask::dispose() @@ -52,7 +51,7 @@ void SetMask::revert(ObjectsContainer* objects, UndoersCollector* redoers) redoers->pushUndoer(new SetMask(objects, document)); if (m_isMaskVisible) { - UniquePtr mask(read_object(objects, m_stream, raster::read_mask)); + UniquePtr mask(raster::read_mask(m_stream)); document->setMask(mask);