[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