This is an automated email from the git hooks/post-receive script. thansen pushed a commit to branch master in repository aseprite.
commit 8b5d013b036156aca391be179f965e3e03ecf769 Author: David Capello <[email protected]> Date: Fri Dec 11 15:11:24 2015 -0300 Serialize user data for layers and cel data In this way undo/redo restore user data. --- src/doc/CMakeLists.txt | 3 ++- src/doc/cel_data_io.cpp | 5 +++++ src/doc/layer_io.cpp | 7 ++++++- src/doc/user_data_io.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/doc/user_data_io.h | 22 ++++++++++++++++++++++ src/doc/with_user_data.h | 4 +--- 6 files changed, 72 insertions(+), 5 deletions(-) diff --git a/src/doc/CMakeLists.txt b/src/doc/CMakeLists.txt index 44e46cb..1a57c06 100644 --- a/src/doc/CMakeLists.txt +++ b/src/doc/CMakeLists.txt @@ -55,7 +55,8 @@ add_library(doc-lib sprite.cpp sprites.cpp string_io.cpp - subobjects_io.cpp) + subobjects_io.cpp + user_data_io.cpp) # TODO Remove 'she' as dependency and move conversion_she.cpp/h files # to other library/layer (render-lib? new conversion-lib?) diff --git a/src/doc/cel_data_io.cpp b/src/doc/cel_data_io.cpp index 4090b1d..7ea2a9a 100644 --- a/src/doc/cel_data_io.cpp +++ b/src/doc/cel_data_io.cpp @@ -14,6 +14,7 @@ #include "base/unique_ptr.h" #include "doc/cel_data.h" #include "doc/subobjects_io.h" +#include "doc/user_data_io.h" #include <iostream> @@ -29,6 +30,7 @@ void write_celdata(std::ostream& os, const CelData* celdata) write32(os, (int16_t)celdata->position().y); write8(os, celdata->opacity()); write32(os, celdata->image()->id()); + write_user_data(os, celdata->userData()); } CelData* read_celdata(std::istream& is, SubObjectsIO* subObjects, bool setId) @@ -38,6 +40,8 @@ CelData* read_celdata(std::istream& is, SubObjectsIO* subObjects, bool setId) int y = read32(is); int opacity = read8(is); ObjectId imageId = read32(is); + UserData userData = read_user_data(is); + ImageRef image(subObjects->getImageRef(imageId)); if (!image) return nullptr; @@ -45,6 +49,7 @@ CelData* read_celdata(std::istream& is, SubObjectsIO* subObjects, bool setId) base::UniquePtr<CelData> celdata(new CelData(image)); celdata->setPosition(x, y); celdata->setOpacity(opacity); + celdata->setUserData(userData); if (setId) celdata->setId(id); return celdata.release(); diff --git a/src/doc/layer_io.cpp b/src/doc/layer_io.cpp index 047b3a8..066b034 100644 --- a/src/doc/layer_io.cpp +++ b/src/doc/layer_io.cpp @@ -22,6 +22,7 @@ #include "doc/sprite.h" #include "doc/string_io.h" #include "doc/subobjects_io.h" +#include "doc/user_data_io.h" #include <iostream> #include <vector> @@ -99,6 +100,8 @@ void write_layer(std::ostream& os, const Layer* layer) } } + + write_user_data(os, layer->userData()); } Layer* read_layer(std::istream& is, SubObjectsFromSprite* subObjects) @@ -107,7 +110,6 @@ Layer* read_layer(std::istream& is, SubObjectsFromSprite* subObjects) std::string name = read_string(is); uint32_t flags = read32(is); // Flags uint16_t layer_type = read16(is); // Type - base::UniquePtr<Layer> layer; switch (static_cast<ObjectType>(layer_type)) { @@ -169,10 +171,13 @@ Layer* read_layer(std::istream& is, SubObjectsFromSprite* subObjects) } + UserData userData = read_user_data(is); + if (layer) { layer->setName(name); layer->setFlags(static_cast<LayerFlags>(flags)); layer->setId(id); + layer->setUserData(userData); } return layer.release(); diff --git a/src/doc/user_data_io.cpp b/src/doc/user_data_io.cpp new file mode 100644 index 0000000..fa98d8e --- /dev/null +++ b/src/doc/user_data_io.cpp @@ -0,0 +1,36 @@ +// Aseprite Document Library +// Copyright (c) 2001-2015 David Capello +// +// This file is released under the terms of the MIT license. +// Read LICENSE.txt for more information. + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "doc/user_data_io.h" + +#include "base/serialization.h" +#include "doc/string_io.h" +#include "doc/user_data.h" + +#include <iostream> + +namespace doc { + +using namespace base::serialization; +using namespace base::serialization::little_endian; + +void write_user_data(std::ostream& os, const UserData& userData) +{ + write_string(os, userData.text()); +} + +UserData read_user_data(std::istream& is) +{ + UserData userData; + userData.setText(read_string(is)); + return userData; +} + +} diff --git a/src/doc/user_data_io.h b/src/doc/user_data_io.h new file mode 100644 index 0000000..de0b06c --- /dev/null +++ b/src/doc/user_data_io.h @@ -0,0 +1,22 @@ +// Aseprite Document Library +// Copyright (c) 2001-2015 David Capello +// +// This file is released under the terms of the MIT license. +// Read LICENSE.txt for more information. + +#ifndef DOC_USER_DATA_IO_H_INCLUDED +#define DOC_USER_DATA_IO_H_INCLUDED +#pragma once + +#include <iosfwd> + +namespace doc { + + class UserData; + + void write_user_data(std::ostream& os, const UserData& userData); + UserData read_user_data(std::istream& is); + +} // namespace doc + +#endif diff --git a/src/doc/with_user_data.h b/src/doc/with_user_data.h index 5aeff0a..e6acfce 100644 --- a/src/doc/with_user_data.h +++ b/src/doc/with_user_data.h @@ -18,9 +18,7 @@ namespace doc { WithUserData(ObjectType type) : Object(type) { } - const UserData& userData() const { - return m_userData; - } + const UserData& userData() const { return m_userData; } void setUserData(const UserData& userData) { m_userData = userData; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

