}
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':
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;