mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@63021 954022d7-b5bf-4e40-9824-e11837661b57
96 lines
1.9 KiB
C++
96 lines
1.9 KiB
C++
|
|
#include "mediaitems.h"
|
|
#include "odf_rels.h"
|
|
|
|
#include <boost/regex.h>
|
|
#include <boost/foreach.hpp>
|
|
#include <boost/algorithm/string/case_conv.hpp>
|
|
|
|
#include <cpdoccore/xml/utils.h>
|
|
|
|
#include "mediaitems_utils.h"
|
|
|
|
namespace cpdoccore {
|
|
namespace odf_writer {
|
|
|
|
|
|
_mediaitems::item::item( std::wstring const & _oox_ref,
|
|
Type _type,
|
|
std::wstring const & _odf_ref
|
|
)
|
|
: oox_ref(_oox_ref),
|
|
type(_type),
|
|
odf_ref(_odf_ref)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void _mediaitems::add_or_find(const std::wstring & oox_ref, Type type, std::wstring & odf_ref)
|
|
{
|
|
std::wstring output_sub_path;//
|
|
std::wstring output_fileName;
|
|
int number=0;
|
|
|
|
if (type == typeImage)
|
|
{
|
|
output_sub_path = L"Pictures/";
|
|
number= count_image+1;
|
|
}
|
|
else
|
|
{
|
|
output_sub_path = L"Media/";
|
|
number= count_media+1;
|
|
}
|
|
|
|
|
|
output_fileName = utils::media::create_file_name(oox_ref, type, number);//guid???
|
|
|
|
std::wstring input_path = oox_ref;
|
|
|
|
#if defined (_WIN32) || defined(_WIN64) // + mac???
|
|
boost::to_lower(input_path);
|
|
#endif
|
|
|
|
std::wstring output_path ;
|
|
|
|
BOOST_FOREACH(item const & elm, items_)
|
|
{
|
|
if (elm.oox_ref == input_path)
|
|
{
|
|
output_path = elm.odf_ref;
|
|
break;
|
|
}
|
|
}
|
|
if (output_path .length() < 1)
|
|
{
|
|
output_path = ( output_sub_path + output_fileName) ;
|
|
if ( type == typeImage)
|
|
{
|
|
count_image++;
|
|
}
|
|
else
|
|
count_media++;
|
|
|
|
|
|
items_.push_back( item(input_path, type, xml::utils::replace_text_to_xml(output_path)) );
|
|
}
|
|
odf_ref = output_path;
|
|
}
|
|
void _mediaitems::dump_rels(rels & Rels, std::wstring local_path)
|
|
{
|
|
size_t i = 0;
|
|
BOOST_FOREACH(item & elm, items_)
|
|
{
|
|
Rels.add( relationship(
|
|
utils::media::get_rel_type(elm.type),
|
|
local_path + elm.odf_ref)
|
|
);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|