mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 00:03:33 +08:00
Test pptx to odp animation audio, refactor tests project
This commit is contained in:
@ -35,6 +35,10 @@
|
||||
#include "../../OfficeUtils/src/OfficeUtils.h"
|
||||
#include "Reader/Converter/pptx_package.h"
|
||||
|
||||
#include "Writer/Converter/Converter.h"
|
||||
#include "Writer/Converter/PptxConverter.h"
|
||||
#include "Writer/Format/office_elements.h"
|
||||
|
||||
boost::shared_ptr<cpdoccore::odf_reader::odf_document> ReadOdfDocument(const std::wstring& from, const std::wstring& temp, const std::wstring& tempUnpackedOdf)
|
||||
{
|
||||
COfficeUtils oCOfficeUtils(NULL);
|
||||
@ -90,3 +94,131 @@ void ODP2OOX_AnimationEnvironment::TearDown()
|
||||
NSDirectory::DeleteDirectory(sTemp);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
OOX2ODP_AnimationEnvironment::OOX2ODP_AnimationEnvironment(const std::wstring& exampleFilename, boost::shared_ptr<Oox2Odf::Converter>* converter, cpdoccore::odf_writer::odp_conversion_context** context)
|
||||
{
|
||||
mExampleFilename = exampleFilename;
|
||||
mConverter = converter;
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
void OOX2ODP_AnimationEnvironment::SetUp()
|
||||
{
|
||||
std::wstring rootDir = NSFile::GetProcessDirectory() + CH_DIR("..");
|
||||
std::wstring exampleFilesDirectory = rootDir + CH_DIR("ExampleFiles");
|
||||
|
||||
mFrom = exampleFilesDirectory + FILE_SEPARATOR_STR + mExampleFilename;
|
||||
mTemp = mFrom + _T(".tmp");
|
||||
mTempUnpackedOox = mTemp + CH_DIR("pptx_unpacked");
|
||||
|
||||
NSDirectory::CreateDirectory(mTemp);
|
||||
NSDirectory::CreateDirectory(mTempUnpackedOox);
|
||||
|
||||
COfficeUtils oCOfficeUtils(NULL);
|
||||
if (S_OK == oCOfficeUtils.ExtractToDirectory(mFrom, mTempUnpackedOox, NULL, 0))
|
||||
{
|
||||
*mConverter = boost::make_shared<Oox2Odf::Converter>(mTempUnpackedOox, _T("presentation"), L"", false, mTemp);
|
||||
|
||||
try
|
||||
{
|
||||
(*mConverter)->convert();
|
||||
*mContext = dynamic_cast<cpdoccore::odf_writer::odp_conversion_context*>((*mConverter)->get_ooxConverter()->odf_context());
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
_CP_LOG << L"[ error ]: Failed to setup OOX2ODP_EntranceAnimationTestEnvironment";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OOX2ODP_AnimationEnvironment::TearDown()
|
||||
{
|
||||
NSDirectory::DeleteDirectory(mTemp);
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetTimingRoot()
|
||||
{
|
||||
using namespace cpdoccore::odf_writer;
|
||||
draw_page* page = dynamic_cast<draw_page*>(mContext->current_slide().page_elm_.get());
|
||||
if (!page)
|
||||
return nullptr;
|
||||
|
||||
anim_par* timing_root = dynamic_cast<anim_par*>(page->animation_.get());
|
||||
if (!timing_root)
|
||||
return nullptr;
|
||||
|
||||
return timing_root;
|
||||
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::anim_seq* OOX2ODP_AnimationTest::GetMainSequence()
|
||||
{
|
||||
using namespace cpdoccore::odf_writer;
|
||||
const anim_par* timing_root = GetTimingRoot();
|
||||
if (!timing_root)
|
||||
return nullptr;
|
||||
|
||||
if (timing_root->anim_seq_array_.size() < 1)
|
||||
return nullptr;
|
||||
|
||||
const anim_seq* main_sequence = dynamic_cast<anim_seq*>(timing_root->anim_seq_array_.at(0).get());
|
||||
if (!main_sequence)
|
||||
return nullptr;
|
||||
|
||||
return main_sequence;
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetMainSequenceParByIndex(size_t index)
|
||||
{
|
||||
using namespace cpdoccore::odf_writer;
|
||||
const anim_seq* main_sequence = GetMainSequence();
|
||||
|
||||
if (index >= main_sequence->anim_par_array_.size())
|
||||
return nullptr;
|
||||
|
||||
const anim_par* par = dynamic_cast<anim_par*>(main_sequence->anim_par_array_[index].get());
|
||||
if (!par)
|
||||
return nullptr;
|
||||
|
||||
return par;
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetInnerPar(const cpdoccore::odf_writer::anim_par* par)
|
||||
{
|
||||
using namespace cpdoccore::odf_writer;
|
||||
|
||||
if (!par)
|
||||
return nullptr;
|
||||
|
||||
const anim_par* inner_par = dynamic_cast<anim_par*>(par->anim_par_.get());
|
||||
|
||||
if (!inner_par)
|
||||
return nullptr;
|
||||
|
||||
return inner_par;
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::anim_par* OOX2ODP_AnimationTest::GetInnermostPar(const cpdoccore::odf_writer::anim_par* par)
|
||||
{
|
||||
using namespace cpdoccore::odf_writer;
|
||||
|
||||
if (!par)
|
||||
return nullptr;
|
||||
|
||||
const anim_par* innermost = GetInnerPar(par);
|
||||
|
||||
while (innermost->anim_par_)
|
||||
{
|
||||
innermost = dynamic_cast<anim_par*>(innermost->anim_par_.get());
|
||||
if (!innermost)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return innermost;
|
||||
}
|
||||
|
||||
const cpdoccore::odf_writer::odp_conversion_context* OOX2ODP_AnimationTest::GetContext() const
|
||||
{
|
||||
return mContext;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user