]> git.sesse.net Git - casparcg/commitdiff
* psd-importer: fixed support for new descriptor value-type
authorniklaspandersson <niklas.p.andersson@svt.se>
Wed, 14 Aug 2013 09:04:30 +0000 (11:04 +0200)
committerniklaspandersson <niklas.p.andersson@svt.se>
Wed, 14 Aug 2013 09:04:30 +0000 (11:04 +0200)
modules/psd/descriptor.cpp
test/psd-test/psd-test.cpp

index c512b20734d556da1c3615f01d883d2fa3a730f5..79f797150fec2897d0eea3270ff5ba90b5b29060 100644 (file)
@@ -145,8 +145,17 @@ void descriptor::read_value(const std::wstring& key, BEFileInputStream& stream)
                }
                break;
 
-       case 'obj ': 
        case 'UntF': 
+               {
+                       context::scoped_holder list(key, context_);
+                       unsigned long unit = stream.read_long();
+                       std::string type(reinterpret_cast<char*>(&unit), 4);
+                       std::wstring wtype(type.rbegin(), type.rend());
+                       context_->stack.back()->put(wtype, stream.read_double());
+               }
+               break;
+
+       case 'obj ': 
        case 'GlbO': 
        case 'type':
        case 'GlbC':
index 721f9a31b5ef0cfe1c479eb1ff12c1471d89bd56..c1777f6a094ae45629e5604bf799330af911cb57 100644 (file)
@@ -24,16 +24,25 @@ int _tmain(int argc, _TCHAR* argv[])
                        std::wstringstream trace;
 
                        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<wchar_t> w(' ', 3);
+                                       boost::property_tree::write_xml(trace, doc.timeline(), w);
+
+                               trace << L"</timeline>" << 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->visible() << L"' protection-flags='" << std::hex << layer->protection_flags() << std::dec << L"'>" << std::endl;
-                               //if(layer->image())
-                               //      trace << L"             <bounding-box left='" << layer->rect().left << L"' top='" << layer->rect().top << L"' right='" << layer->rect().right << L"' bottom='" << layer->rect().bottom << 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->image())
+                                       trace << L"             <bounding-box left='" << layer->rect().left << L"' top='" << layer->rect().top << L"' right='" << layer->rect().right << L"' bottom='" << layer->rect().bottom << 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;