]> git.sesse.net Git - casparcg/blobdiff - test/psd-test/psd-test.cpp
Fixed bug where audio filter did not use the input channel layout of a stream
[casparcg] / test / psd-test / psd-test.cpp
index 8bbe94bdbbad84c5f6431e866016fa66efbeee37..046988411cfe2eb22efa65375c83190943bd8bd7 100644 (file)
 #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;
 }