#include <iostream>
#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/json_parser.hpp>
+#include <boost/property_tree/detail/file_parser_error.hpp>
+#include <boost/property_tree/xml_parser.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
- caspar::psd::psd_document doc;
- doc.parse(L"C:\\Lokala Filer\\Utveckling\\CasparCG\\Server 2.1\\test\\data\\test1.psd");
+ if(argc > 1)
+ {
+ caspar::psd::psd_document doc;
+ if(doc.parse(argv[1]))
+ {
+ std::wstringstream trace;
- int a = 42;
+ trace << L"<doc filename='" << doc.filename() << L"' color_mode='" << caspar::psd::color_mode_to_string(doc.color_mode()) << L"' color_depth='" << doc.color_depth() << L"' channel_count='" << doc.channels_count() << L"' width='" << doc.width() << L"' height='" << doc.height() << L"'>" << std::endl;
+ if(doc.has_timeline())
+ {
+ trace << L"<timeline>" << std::endl;
+ boost::property_tree::xml_writer_settings<std::wstring> w(' ', 3);
+ boost::property_tree::write_xml(trace, doc.timeline(), w);
- //std::wstringstream trace;
+ trace << L"</timeline>" << std::endl;
- //trace << L"<doc filename='" << doc.filename() << L"' color_mode='" << caspar::psd::color_mode_to_string(doc.color_mode()) << L"' color_depth='" << doc.color_depth() << L"' channel_count='" << doc.channels_count() << L"' width='" << doc.width() << L"' height='" << doc.height() << L"'>" << std::endl;
+ }
+
+ auto end = doc.layers().end();
+ for(auto it = doc.layers().begin(); it != end; ++it)
+ {
+ caspar::psd::layer_ptr layer = (*it);
+ trace << L" <layer name='" << layer->name() << L"' opacity='" << layer->opacity() << L"' visible='" << layer->is_visible() << L"' protected='" << layer->is_position_protected() << L"'>" << std::endl;
+ if(layer->bitmap())
+ trace << L" <bounding-box x='" << layer->location().x << L"' y='" << layer->location().y << L"' width='" << layer->bitmap()->width() << L"' height='" << layer->bitmap()->height() << L"' />" << std::endl;
+ //if(layer->mask())
+ // trace << L" <mask default-value='" << layer->mask_info().default_value_ << L"' enabled=" << layer->mask_info().enabled() << L" linked=" << layer->mask_info().linked() << L" inverted=" << layer->mask_info().inverted() << L" left='" << layer->mask_info().rect_.left << L"' top='" << layer->mask_info().rect_.top << "' right='" << layer->mask_info().rect_.right << "' bottom='" << layer->mask_info().rect_.bottom << "' />" << std::endl;
+ if(layer->is_text())
+ {
+ trace << L" <text value='" << (*it)->text_data().get(L"EngineDict.Editor.Text", L"") << L"' />" << std::endl;
+ boost::property_tree::xml_writer_settings<std::wstring> w(' ', 3);
+ boost::property_tree::write_xml(trace, (*it)->text_data(), w);
+ }
+ if(layer->has_timeline())
+ {
+ trace << L" <timeline>" << std::endl;
+ boost::property_tree::xml_writer_settings<std::wstring> w(' ', 3);
+ boost::property_tree::write_xml(trace, (*it)->timeline_data(), w);
+ trace << L" </timeline>" << std::endl;
+ }
+ trace << L" </layer>" << std::endl;
+ }
- //
- //auto end = doc.layers().end();
- //for(auto it = doc.layers().begin(); it != end; ++it)
- //{
- // caspar::psd::layer_ptr layer = (*it);
- // trace << L" <layer name='" << layer->name() << L"' opacity='" << layer->opacity() << L"'>" << std::endl;
- // if(layer->image())
- // trace << L" <bounding-box left='" << layer->rect().left << "' top='" << layer->rect().top << "' right='" << layer->rect().right << "' bottom='" << layer->rect().bottom << "' />" << std::endl;
- // if(layer->mask())
- // trace << L" <mask default-value='" << layer->default_mask_value() << "' left='" << layer->mask_rect().left << "' top='" << layer->mask_rect().top << "' right='" << layer->mask_rect().right << "' bottom='" << layer->mask_rect().bottom << "' />" << std::endl;
- // trace << L" </layer>" << std::endl;
- //}
-
- //trace << L"</doc>" << std::endl;
-
- //std::cout << caspar::u8(trace.str());
+ trace << L"</doc>" << std::endl;
+
+ std::ofstream log("psd-log.txt");
+ log << caspar::u8(trace.str());
+ std::cout << caspar::u8(trace.str());
+ }
+ }
return 0;
}