mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-01 10:21:04 +00:00
Add support to read tags color/userdata from crash sessions from v1.2 and v1.3
This commit is contained in:
parent
0ec8efd366
commit
ab4accb60d
@ -502,7 +502,8 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Tag* readTag(std::ifstream& s) {
|
Tag* readTag(std::ifstream& s) {
|
||||||
return read_tag(s, false);
|
const bool oldVersion = (m_docFormatVer < DOC_FORMAT_VERSION_1);
|
||||||
|
return read_tag(s, false, oldVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
Slice* readSlice(std::ifstream& s) {
|
Slice* readSlice(std::ifstream& s) {
|
||||||
|
@ -36,19 +36,34 @@ void write_tag(std::ostream& os, const Tag* tag)
|
|||||||
write_user_data(os, tag->userData());
|
write_user_data(os, tag->userData());
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag* read_tag(std::istream& is, bool setId)
|
Tag* read_tag(std::istream& is,
|
||||||
|
const bool setId,
|
||||||
|
const bool oldVersion)
|
||||||
{
|
{
|
||||||
ObjectId id = read32(is);
|
ObjectId id = read32(is);
|
||||||
frame_t from = read32(is);
|
frame_t from = read32(is);
|
||||||
frame_t to = read32(is);
|
frame_t to = read32(is);
|
||||||
|
|
||||||
|
// If we are reading a session from v1.2.x, there is a color field
|
||||||
|
color_t color;
|
||||||
|
if (oldVersion)
|
||||||
|
color = read32(is);
|
||||||
|
|
||||||
AniDir aniDir = (AniDir)read8(is);
|
AniDir aniDir = (AniDir)read8(is);
|
||||||
std::string name = read_string(is);
|
std::string name = read_string(is);
|
||||||
UserData userData = read_user_data(is);
|
UserData userData;
|
||||||
|
|
||||||
|
// If we are reading the new v1.3.x version, there is a user data with the color + text
|
||||||
|
if (!oldVersion)
|
||||||
|
userData = read_user_data(is);
|
||||||
|
|
||||||
std::unique_ptr<Tag> tag(new Tag(from, to));
|
std::unique_ptr<Tag> tag(new Tag(from, to));
|
||||||
tag->setAniDir(aniDir);
|
tag->setAniDir(aniDir);
|
||||||
tag->setName(name);
|
tag->setName(name);
|
||||||
tag->setUserData(userData);
|
if (oldVersion)
|
||||||
|
tag->setColor(color);
|
||||||
|
else
|
||||||
|
tag->setUserData(userData);
|
||||||
if (setId)
|
if (setId)
|
||||||
tag->setId(id);
|
tag->setId(id);
|
||||||
return tag.release();
|
return tag.release();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite Document Library
|
// Aseprite Document Library
|
||||||
// Copyright (C) 2019 Igara Studio S.A.
|
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||||
// Copyright (C) 2001-2015 David Capello
|
// Copyright (C) 2001-2015 David Capello
|
||||||
//
|
//
|
||||||
// This file is released under the terms of the MIT license.
|
// This file is released under the terms of the MIT license.
|
||||||
@ -16,7 +16,9 @@ namespace doc {
|
|||||||
class Tag;
|
class Tag;
|
||||||
|
|
||||||
void write_tag(std::ostream& os, const Tag* tag);
|
void write_tag(std::ostream& os, const Tag* tag);
|
||||||
Tag* read_tag(std::istream& is, bool setId = true);
|
Tag* read_tag(std::istream& is,
|
||||||
|
const bool setId = true,
|
||||||
|
const bool oldVersion = false);
|
||||||
|
|
||||||
} // namespace doc
|
} // namespace doc
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user