aseprite/src/app/xml_document.cpp

56 lines
1.2 KiB
C++
Raw Normal View History

2015-02-12 23:16:25 +08:00
// Aseprite
// Copyright (C) 2019 Igara Studio S.A.
2015-02-12 23:16:25 +08:00
// Copyright (C) 2001-2015 David Capello
//
2016-08-27 04:02:58 +08:00
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "app/xml_document.h"
#include "app/xml_exception.h"
#include "base/file_handle.h"
#include "tinyxml.h"
namespace app {
using namespace base;
XmlDocumentRef open_xml(const std::string& filename)
{
FileHandle file(open_file(filename, "rb"));
if (!file)
throw Exception("Error loading file: " + filename);
// Try to load the XML file
auto doc = std::make_shared<TiXmlDocument>();
doc->SetValue(filename.c_str());
if (!doc->LoadFile(file.get()))
throw XmlException(doc.get());
return doc;
}
void save_xml(XmlDocumentRef doc, const std::string& filename)
{
FileHandle file(open_file(filename, "wb"));
if (!file)
throw Exception("Error loading file: " + filename);
if (!doc->SaveFile(file.get()))
throw XmlException(doc.get());
}
2021-09-07 00:20:20 +08:00
bool bool_attr(const TiXmlElement* elem, const char* attrName, bool defaultVal)
{
const char* value = elem->Attribute(attrName);
2021-09-07 00:20:20 +08:00
return value == NULL ? defaultVal : strcmp(value, "true") == 0;
}
} // namespace app