diff --git a/OdfFile/Reader/Format/anim_elements.cpp b/OdfFile/Reader/Format/anim_elements.cpp index 5aec245829..b83df357d4 100644 --- a/OdfFile/Reader/Format/anim_elements.cpp +++ b/OdfFile/Reader/Format/anim_elements.cpp @@ -1185,8 +1185,6 @@ void anim_transitionFilter::convert_slide_transition_filter(oox::pptx_conversion else if (filter_attlist_.smil_subtype_.get() == L"combHorizontal") { type = L"comb"; dir = L"horz"; } break; case smil_transition_type::slideWipe: - type = L"pull"; - break; case smil_transition_type::boxWipe: type = L"cover"; break; @@ -1237,20 +1235,20 @@ void anim_transitionFilter::convert_slide_transition_filter(oox::pptx_conversion else dir = L"d"; } - if (filter_attlist_.smil_subtype_.get() == L"fromTop") dir = L"d"; + if (filter_attlist_.smil_subtype_.get() == L"fromTop") dir = L"d"; else if (filter_attlist_.smil_subtype_.get() == L"fromLeft") dir = L"r"; else if (filter_attlist_.smil_subtype_.get() == L"fromRight") dir = L"l"; - else if (filter_attlist_.smil_subtype_.get() == L"fromBottom") dir = L"u"; + else if (filter_attlist_.smil_subtype_.get() == L"fromBottom") dir = L"u"; else if (filter_attlist_.smil_subtype_.get() == L"topRight") dir = L"ld"; - else if (filter_attlist_.smil_subtype_.get() == L"bottomLeft") dir = L"lu"; - else if (filter_attlist_.smil_subtype_.get() == L"bottomRight") dir = L"ru"; - else if (filter_attlist_.smil_subtype_.get() == L"topLeft") dir = L"rd"; + else if (filter_attlist_.smil_subtype_.get() == L"bottomLeft") dir = L"lu"; + else if (filter_attlist_.smil_subtype_.get() == L"bottomRight") dir = L"ru"; + else if (filter_attlist_.smil_subtype_.get() == L"topLeft") dir = L"rd"; - else if (filter_attlist_.smil_subtype_.get() == L"fromTopLeft") dir = L"rd"; - else if (filter_attlist_.smil_subtype_.get() == L"fromBottomLeft")dir = L"ru"; + else if (filter_attlist_.smil_subtype_.get() == L"fromTopLeft") dir = L"rd"; + else if (filter_attlist_.smil_subtype_.get() == L"fromBottomLeft") dir = L"ru"; else if (filter_attlist_.smil_subtype_.get() == L"fromTopRight") dir = L"ld"; - else if (filter_attlist_.smil_subtype_.get() == L"fromBottomRight")dir = L"lu"; + else if (filter_attlist_.smil_subtype_.get() == L"fromBottomRight") dir = L"lu"; } diff --git a/OdfFile/Writer/Converter/PptxConverter.cpp b/OdfFile/Writer/Converter/PptxConverter.cpp index 010c602f8b..343efc3814 100644 --- a/OdfFile/Writer/Converter/PptxConverter.cpp +++ b/OdfFile/Writer/Converter/PptxConverter.cpp @@ -1830,22 +1830,35 @@ void PptxConverter::convert(PPTX::Logic::EightDirectionTransition *oox_transitio if (!oox_transition) return; if (oox_transition->name == L"cover") - odp_context->current_slide().set_transition_type(1); + odp_context->current_slide().set_transition_type(35); if (oox_transition->name == L"pull") odp_context->current_slide().set_transition_type(35); - if (oox_transition->dir.IsInit()) - { - if (oox_transition->dir->get() == L"d") odp_context->current_slide().set_transition_subtype(L"fromTop"); - else if (oox_transition->dir->get() == L"l") odp_context->current_slide().set_transition_subtype(L"fromRight"); - else if (oox_transition->dir->get() == L"r") odp_context->current_slide().set_transition_subtype(L"fromLeft"); - else if (oox_transition->dir->get() == L"u") odp_context->current_slide().set_transition_subtype(L"fromBottom"); + const std::wstring default_subtype = L"l"; + std::wstring dir = oox_transition->dir.get_value_or(default_subtype); + if (dir.empty()) + dir = default_subtype; - else if (oox_transition->dir->get() == L"rd") odp_context->current_slide().set_transition_subtype(L"horizontalLeft"); - else if (oox_transition->dir->get() == L"lu") odp_context->current_slide().set_transition_subtype(L"horizontalRight"); - else if (oox_transition->dir->get() == L"ld") odp_context->current_slide().set_transition_subtype(L"verticalRight"); - else if (oox_transition->dir->get() == L"ru") odp_context->current_slide().set_transition_subtype(L"verticalLeft"); + if (dir == L"d") odp_context->current_slide().set_transition_subtype(L"fromTop"); + else if (dir == L"l") odp_context->current_slide().set_transition_subtype(L"fromRight"); + else if (dir == L"r") odp_context->current_slide().set_transition_subtype(L"fromLeft"); + else if (dir == L"u") odp_context->current_slide().set_transition_subtype(L"fromBottom"); + + if(oox_transition->name == L"cover") + { + if (dir == L"rd") odp_context->current_slide().set_transition_subtype(L"fromTopLeft"); + else if (dir == L"lu") odp_context->current_slide().set_transition_subtype(L"fromBottomRight"); + else if (dir == L"ld") odp_context->current_slide().set_transition_subtype(L"fromTopRight"); + else if (dir == L"ru") odp_context->current_slide().set_transition_subtype(L"fromBottomLeft"); } + else + { + if (dir == L"rd") odp_context->current_slide().set_transition_subtype(L"horizontalLeft"); + else if (dir == L"lu") odp_context->current_slide().set_transition_subtype(L"horizontalRight"); + else if (dir == L"ld") odp_context->current_slide().set_transition_subtype(L"verticalRight"); + else if (dir == L"ru") odp_context->current_slide().set_transition_subtype(L"verticalLeft"); + } + } void PptxConverter::convert(PPTX::Logic::OptionalBlackTransition *oox_transition) { @@ -1905,8 +1918,19 @@ void PptxConverter::convert(PPTX::Logic::SplitTransition *oox_transition) { if (!oox_transition) return; //name == split + + const std::wstring& orient = oox_transition->orient.get_value_or(L"horz"); + const std::wstring& dir = oox_transition->dir.get_value_or(L"out"); + odp_context->current_slide().set_transition_type(3); - odp_context->current_slide().set_transition_subtype(L"vertical"); + + if(orient == L"horz" || orient == L"") + odp_context->current_slide().set_transition_subtype(L"horizontal"); + else if (orient == L"vert") + odp_context->current_slide().set_transition_subtype(L"vertical"); + + if (dir == L"in") + odp_context->current_slide().set_transition_direction(L"reverse"); } void PptxConverter::convert(PPTX::Logic::ZoomTransition *oox_transition) { diff --git a/OdfFile/Writer/Format/odp_page_state.cpp b/OdfFile/Writer/Format/odp_page_state.cpp index 50b52ecda1..91adaf20ce 100644 --- a/OdfFile/Writer/Format/odp_page_state.cpp +++ b/OdfFile/Writer/Format/odp_page_state.cpp @@ -627,19 +627,19 @@ void odp_page_state::set_transition_speed(int val) { if (page_properties_) page_properties_->content_.presentation_transition_speed_ = L"fast"; - trans->common_attlist_.smil_dur_ = odf_types::clockvalue(2000); + trans->common_attlist_.smil_dur_ = odf_types::clockvalue(250); } if (val == 1) { if (page_properties_) page_properties_->content_.presentation_transition_speed_ = L"medium"; - trans->common_attlist_.smil_dur_ = odf_types::clockvalue(3000); + trans->common_attlist_.smil_dur_ = odf_types::clockvalue(500); } if (val == 2) { if (page_properties_) page_properties_->content_.presentation_transition_speed_ = L"slow"; - trans->common_attlist_.smil_dur_ = odf_types::clockvalue(4000); + trans->common_attlist_.smil_dur_ = odf_types::clockvalue(1000); } } }