[aseprite] 91/308: Serialize user data for layers and cel data
Tobias Hansen
thansen at moszumanska.debian.org
Tue Mar 8 02:44:56 UTC 2016
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 <davidcapello at gmail.com>
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
More information about the Pkg-games-commits
mailing list