1 // psd-test.cpp : Defines the entry point for the console application.
5 #include "../../modules/psd/doc.h"
6 #include "../../modules/psd/layer.h"
7 #include "../../common/utf.h"
12 #include <boost/property_tree/ptree.hpp>
13 #include <boost/property_tree/detail/file_parser_error.hpp>
14 #include <boost/property_tree/xml_parser.hpp>
17 int _tmain(int argc, _TCHAR* argv[])
21 caspar::psd::psd_document doc;
22 if(doc.parse(argv[1]))
24 std::wstringstream trace;
26 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;
27 if(doc.has_timeline())
29 trace << L"<timeline>" << std::endl;
30 boost::property_tree::xml_writer_settings<wchar_t> w(' ', 3);
31 boost::property_tree::write_xml(trace, doc.timeline(), w);
33 trace << L"</timeline>" << std::endl;
37 auto end = doc.layers().end();
38 for(auto it = doc.layers().begin(); it != end; ++it)
40 caspar::psd::layer_ptr layer = (*it);
41 trace << L" <layer name='" << layer->name() << L"' opacity='" << layer->opacity() << L"' visible='" << layer->is_visible() << L"' protected='" << layer->is_position_protected() << L"'>" << std::endl;
43 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;
45 // 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;
48 trace << L" <text value='" << (*it)->text_data().get(L"EngineDict.Editor.Text", L"") << L"' />" << std::endl;
49 boost::property_tree::xml_writer_settings<wchar_t> w(' ', 3);
50 boost::property_tree::write_xml(trace, (*it)->text_data(), w);
52 if(layer->has_timeline())
54 trace << L" <timeline>" << std::endl;
55 boost::property_tree::xml_writer_settings<wchar_t> w(' ', 3);
56 boost::property_tree::write_xml(trace, (*it)->timeline_data(), w);
57 trace << L" </timeline>" << std::endl;
59 trace << L" </layer>" << std::endl;
62 trace << L"</doc>" << std::endl;
64 std::ofstream log("psd-log.txt");
65 log << caspar::u8(trace.str());
66 std::cout << caspar::u8(trace.str());