Compare commits

...

38 Commits

Author SHA1 Message Date
b470120075 x2t version 2.4.531 2018-04-11 11:59:36 +03:00
0de5fb6bfc x2t - extended convert by UnicodeConverter 2018-04-10 19:58:48 +03:00
68122490bf . 2018-04-10 16:28:14 +03:00
4833c652d8 x2t version 2.4.520 2018-04-10 16:01:13 +03:00
af0e9be136 PptFormatReader - new converting group shapes 2018-04-10 15:02:31 +03:00
d987233335 Merge pull request #67 from ONLYOFFICE/feature/icu60
Feature/icu60
2018-04-09 18:38:50 +03:00
5f100d4ea0 [ios][x2t] icu fixed 2018-04-09 17:49:56 +03:00
d4e34e244f [ios][x2t] remove warnings 2018-04-09 14:20:56 +03:00
4b8bc2c8e7 OoxmlFormat - convert border in vml shape 2018-04-06 14:19:58 +03:00
b04f44ee2c [ios][x2t] icu fixed 2018-04-06 13:24:37 +03:00
fb3b6aff47 . 2018-04-06 12:59:54 +03:00
531460e37d Merge remote-tracking branch 'origin/hotfix/v5.1.2' into develop 2018-04-06 11:47:42 +03:00
09407b08ba UnicodeConverter - restore icu 55.1 builds for iMac 2018-04-06 11:40:57 +03:00
83bc1b18b6 fix RtfFileReader for iMac 2018-04-05 19:49:20 +03:00
56279f7465 Merge remote-tracking branch 'origin/hotfix/v5.1.2' into develop 2018-04-05 19:05:56 +03:00
566eeb06ae x2t version 2.4.526 2018-04-05 19:03:28 +03:00
7dc6d70b8a Merge remote-tracking branch 'origin/hotfix/v5.1.2' into develop 2018-04-05 18:28:00 +03:00
f5c359650f x2t - fix build 2018-04-05 18:23:06 +03:00
d665d9449e Merge remote-tracking branch 'origin/hotfix/v5.1.2' into develop 2018-04-05 17:50:30 +03:00
3c93563027 . 2018-04-05 17:43:59 +03:00
b525e1deb4 Merge commit '992e62b8c8efa40aede48e3e6732fe6da38171fe' into develop 2018-04-05 17:39:21 +03:00
d5b80e2fa3 x2t - fix https://github.com/ONLYOFFICE/Docker-DocumentServer/issues/87#issuecomment-374490389 2018-04-05 17:34:39 +03:00
2bc2039c01 . 2018-04-05 17:28:17 +03:00
a0fdb1cbcc PptFormatReader - fix shape geometry in files from newest ms office 2018-04-05 17:27:02 +03:00
664007983d x2t fix mac build 2018-04-05 17:14:05 +03:00
a15aee3244 v5.1.1 2018-04-05 15:55:18 +03:00
5e034e2877 Recover icu paths for windows 2018-04-05 12:43:57 +03:00
8d77cdaf24 Merge branch 'feature/icu55-build' into feature/icu60 2018-04-04 18:24:19 +03:00
e73b5c29b2 Fix the target chosing 2018-04-04 18:23:17 +03:00
6a3b4d12a5 Add icu installation to local folder on linux 2018-04-04 16:36:25 +03:00
992e62b8c8 Add icu building from source on linux 2018-04-04 14:25:53 +03:00
021e01af4e . 2018-04-04 14:05:25 +03:00
55a1a2ca59 Merge branch 'feature/icu60' of https://github.com/ONLYOFFICE/core into feature/icu60 2018-04-04 13:15:10 +03:00
e644ef4062 UnicodeConverter - fix build with icu 6.0 win32&win64 2018-04-04 13:14:34 +03:00
45d51a0002 Restore icu version 2018-04-04 12:15:26 +03:00
247f0a7d89 Refactore fetching icu 2018-04-04 12:09:58 +03:00
7c621a4a81 Change devenv to msbuild 2018-04-03 19:57:02 +03:00
62ba68aaa8 Add icu building from source code on windows 2018-04-03 18:25:01 +03:00
1665 changed files with 7534 additions and 328766 deletions

View File

@ -455,7 +455,7 @@
>
</File>
<File
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
RelativePath="..\..\build\lib\win_32\DEBUG\UnicodeConverter.lib"
>
</File>
<File

View File

@ -60,7 +60,7 @@ void _mediaitems::add_or_find(const std::wstring & oox_ref, Type type, std::wst
{
std::wstring output_sub_path;
std::wstring output_fileName;
int number=0;
size_t number = 0;
if (type == typeImage)
{

View File

@ -1101,7 +1101,7 @@ void odf_drawing_context::end_frame()
/////////////////////
void odf_drawing_context::start_element(office_element_ptr elm, office_element_ptr style_elm)
{
int level = (int)impl_->current_level_.size();
size_t level = impl_->current_level_.size();
if (impl_->current_level_.size() > 0 && elm)
impl_->current_level_.back()->add_child_element(elm);

View File

@ -490,7 +490,7 @@ void odf_lists_styles_context::set_numeric_format(std::wstring val)
}
if (r1 < 0) return;//??
r1 = s.find(L"%", 1);
r1 = (int)s.find(L"%", 1);
if (r1 >0)
{
int level = 0;
@ -498,7 +498,7 @@ void odf_lists_styles_context::set_numeric_format(std::wstring val)
int r2=0;
while (r2 < s.length())
{
r2 = s.find(L"%", r2);
r2 = (int)s.find(L"%", r2);
if (r2 >=0) level++;
else break;
r2++;

View File

@ -545,9 +545,9 @@ void odf_number_styles_context::create_currency_style(number_format_state & stat
{
create_element(L"number", L"currency-style", root_elm, odf_context_);
{
int res1 = state.format_code[0].rfind(L"]");
int res2 = state.format_code[0].rfind(L"#");
int res3 = state.format_code[0].rfind(L"0");
int res1 = (int)state.format_code[0].rfind(L"]");
int res2 = (int)state.format_code[0].rfind(L"#");
int res3 = (int)state.format_code[0].rfind(L"0");
office_element_ptr elm_symbol;
create_element(L"number", L"currency-symbol", elm_symbol, odf_context_);

View File

@ -135,7 +135,7 @@ void odf_master_state::add_header(office_element_ptr & elm)
///////////////////////////////////////////////////////////////////////////////
odf_layout_state::odf_layout_state(office_element_ptr & layout_elm )
{
int level =0;
size_t level = 0;
odf_element_state state = {layout_elm,L"",office_element_ptr(),level};
elements_.push_back(state);

View File

@ -517,7 +517,7 @@ void odf_table_context::set_cell_row_span_restart()
int col = impl_->current_table().current_column-1;
odf_column_state & state = impl_->current_table().columns[col];
int sz = state.spanned_row_cell.size();
size_t sz = state.spanned_row_cell.size();
if (sz > 1)
{

View File

@ -400,11 +400,11 @@ bool ods_table_state::is_cell_comment()
int ods_table_state::is_cell_hyperlink(int col, int row)
{
for (size_t i=0; i < hyperlinks_.size();i++)
for (size_t i = 0; i < hyperlinks_.size(); i++)
{
if (hyperlinks_[i].col == col && hyperlinks_[i].row == row)
{
return i;
return (int)i;
}
}
return -1;
@ -415,7 +415,7 @@ int ods_table_state::is_cell_comment(int col, int row, short repeate_col)
{
if ((comments_[i].col < col + repeate_col && comments_[i].col >= col) && comments_[i].row == row)
{
return i;
return (int)i;
}
}
return -1;

View File

@ -200,7 +200,7 @@ void odt_conversion_context::add_text_content(const std::wstring & text)
{
if (drop_cap_state_.enabled)
{
int count = text.length();
size_t count = text.length();
drop_cap_state_.characters += count;
style_text_properties * props = text_context()->get_text_properties();
@ -984,7 +984,7 @@ void odt_conversion_context::start_drop_cap(style_paragraph_properties *paragrap
create_element(L"style", L"drop-cap", drop_cap_state_.paragraph_properties->content_.style_drop_cap_, this);
}
void odt_conversion_context::set_drop_cap_lines(int lines)
void odt_conversion_context::set_drop_cap_lines(size_t lines)
{
if (!drop_cap_state_.enabled) return;
if (!drop_cap_state_.paragraph_properties) return;

View File

@ -110,7 +110,7 @@ public:
void set_master_page_name(std::wstring master_name);
void start_drop_cap (style_paragraph_properties * paragraph_properties);
void set_drop_cap_lines (int lines);
void set_drop_cap_lines (size_t lines);
void set_drop_cap_margin(bool val);
void end_drop_cap ();
bool in_drop_cap () {return drop_cap_state_.enabled;}
@ -221,8 +221,8 @@ private:
style_paragraph_properties *paragraph_properties = NULL;
office_element_ptr text_properties;
int lines = 0;
int characters = 0;
size_t lines = 0;
size_t characters = 0;
bool inline_style = false;
double characters_size_pt = 0;
}drop_cap_state_;

View File

@ -66,10 +66,10 @@ public:
virtual void serialize(std::wostream & _Wostream);
text_text(const std::wstring & Text) : text_(Text) {};
text_text() {};
text_text(const std::wstring & Text) : text_(Text) {}
text_text() {}
std::wstring & attr_text() { return text_; };
std::wstring & attr_text() { return text_; }
virtual void add_text(const std::wstring & Text);
@ -263,7 +263,7 @@ public:
public:
text_reference_mark_start() {}
text_reference_mark_start(const std::wstring & Name) : text_name_(Name){};
text_reference_mark_start(const std::wstring & Name) : text_name_(Name){}
virtual void create_child_element(const std::wstring & Ns, const std::wstring & Name){}
virtual void add_child_element( const office_element_ptr & child_element){}

View File

@ -175,6 +175,7 @@ SOURCES += \
../Reader/SlidePersist.cpp \
../Records/Animations/AnimationTypes.cpp \
../Records/Drawing/ArtBlip.cpp \
../Records/Drawing/ShapeContainer.cpp \
../PPTXWriter/Converter.cpp \
../PPTXWriter/ShapeWriter.cpp
}

View File

@ -37,6 +37,6 @@
#include "../Reader/SlidePersist.cpp"
#include "../Records/Animations/AnimationTypes.cpp"
#include "../Records/Drawing/ArtBlip.cpp"
#include "../Records/Drawing/ShapeContainer.cpp"
#include "../PPTXWriter/Converter.cpp"
#include "../PPTXWriter/ShapeWriter.cpp"

View File

@ -89,9 +89,6 @@ void NSPresentationEditor::CPPTXWriter::CreateFile(CPPTUserInfo* pUserInfo )
m_pDocument = dynamic_cast<CDocument*>(pUserInfo);
m_pDocument->m_oInfo.m_lUnitsHor = 36000 * m_pDocument->m_oInfo.m_lMillimetresHor;
m_pDocument->m_oInfo.m_lUnitsVer = 36000 * m_pDocument->m_oInfo.m_lMillimetresVer;
m_oManager.Clear();
m_oManager.SetDstMedia(m_strTempDirectory + FILE_SEPARATOR_STR + _T("ppt") + FILE_SEPARATOR_STR + _T("media") + FILE_SEPARATOR_STR);
@ -235,7 +232,7 @@ void NSPresentationEditor::CPPTXWriter::WriteContentTypes()
L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\"/>";
for (size_t nL = 0; nL < m_pDocument->m_arThemes[nT].m_arLayouts.size(); nL++, nIndexLayout++)
for (size_t nL = 0; nL < m_pDocument->m_arThemes[nT]->m_arLayouts.size(); nL++, nIndexLayout++)
{
strContentTypes += L"<Override PartName=\"/ppt/slideLayouts/slideLayout" + std::to_wstring(nIndexLayout) +
L".xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\"/>";
@ -284,116 +281,129 @@ void NSPresentationEditor::CPPTXWriter::WriteApp(CFile& oFile)
CP_XML_NODE(L"Properties")
{
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties");
CP_XML_ATTR(L"xmlns:vt", L"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypess");
}
CP_XML_NODE(L"Application")
{
CP_XML_STREAM() << 0;
}
#if defined(INTVER)
CP_XML_NODE(L"AppVersion")
{
std::string s = VALUE2STR(INTVER);
CP_XML_STREAM() << std::wstring(s.begin(), s.end());
}
#endif
CP_XML_NODE(L"TotalTime")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"Words")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"PresentationFormat")
{
CP_XML_STREAM() << L"On-screen Show (4:3)";
}
CP_XML_NODE(L"Paragraphs")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"Slides")
{
CP_XML_STREAM() << m_pDocument->m_arSlides.size();
}
CP_XML_NODE(L"Notes")
{
CP_XML_STREAM() << m_pDocument->m_arNotes.size();
}
CP_XML_NODE(L"HiddenSlides")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"MMClips")
{
CP_XML_STREAM() << 2;
}
CP_XML_NODE(L"ScaleCrop")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"HeadingPairs")
{
CP_XML_NODE(L"vt:vector")
{
CP_XML_ATTR(L"size", 4);
CP_XML_ATTR(L"baseType", L"variant");
CP_XML_NODE(L"vt:variant")
{
CP_XML_ATTR(L"vt:lpstr", L"Theme");
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_ATTR(L"vt:i4", m_pDocument->m_arThemes.size());
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_ATTR(L"vt:lpstr", L"Slide Titles");
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_ATTR(L"vt:i4", m_pDocument->m_arSlides.size());
}
}
}
CP_XML_NODE(L"TitlesOfParts")
{
CP_XML_NODE(L"vt:vector")
{
CP_XML_ATTR(L"size", m_pDocument->m_arSlides.size() + m_pDocument->m_arThemes.size());
CP_XML_ATTR(L"baseType", L"lpstr");
CP_XML_ATTR(L"xmlns:vt", L"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes");
for (size_t i = 1; i <= m_pDocument->m_arThemes.size(); ++i)
CP_XML_NODE(L"TotalTime")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"Words")
{
CP_XML_STREAM() << 0;
}
std::wstring sApplication = L"ONLYOFFICE";
#if defined(INTVER)
std::string s = VALUE2STR(INTVER);
sApplication += L"/" + std::wstring(s.begin(), s.end());
#endif
CP_XML_NODE(L"Application")
{
CP_XML_STREAM() << sApplication;
}
//CP_XML_NODE(L"AppVersion")
//{
// CP_XML_STREAM() << L"1.0";
//}
CP_XML_NODE(L"Paragraphs")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"PresentationFormat")
{
CP_XML_STREAM() << L"On-screen Show (4:3)";
}
CP_XML_NODE(L"Slides")
{
CP_XML_STREAM() << m_pDocument->m_arSlides.size();
}
CP_XML_NODE(L"Notes")
{
CP_XML_STREAM() << m_pDocument->m_arNotes.size();
}
CP_XML_NODE(L"HiddenSlides")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"MMClips")
{
CP_XML_STREAM() << 0;
}
CP_XML_NODE(L"ScaleCrop")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"HeadingPairs")
{
CP_XML_NODE(L"vt:vector")
{
CP_XML_NODE(L"vt:lpstr")
CP_XML_ATTR(L"size", 4);
CP_XML_ATTR(L"baseType", L"variant");
CP_XML_NODE(L"vt:variant")
{
CP_XML_STREAM() << L"Theme " << i;
}
}
for (size_t i = 1; i <= m_pDocument->m_arSlides.size(); ++i)
{
CP_XML_NODE(L"vt:lpstr")
CP_XML_NODE(L"vt:lpstr")
{
CP_XML_STREAM() << L"Theme";
}
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_STREAM() << L"Slide " << i;
CP_XML_NODE(L"vt:i4")
{
CP_XML_STREAM() << m_pDocument->m_arThemes.size();
}
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_NODE(L"vt:lpstr")
{
CP_XML_STREAM() << L"Slide Titles";
}
}
CP_XML_NODE(L"vt:variant")
{
CP_XML_NODE(L"vt:i4")
CP_XML_STREAM() << m_pDocument->m_arSlides.size();
}
}
}
}
CP_XML_NODE(L"TitlesOfParts")
{
CP_XML_NODE(L"vt:vector")
{
CP_XML_ATTR(L"size", m_pDocument->m_arSlides.size() + m_pDocument->m_arThemes.size());
CP_XML_ATTR(L"baseType", L"lpstr");
CP_XML_NODE(L"Company");
CP_XML_NODE(L"LinksUpToDate")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"SharedDoc")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"HyperlinksChanged")
{
CP_XML_STREAM() << L"false";
for (size_t i = 1; i <= m_pDocument->m_arThemes.size(); ++i)
{
CP_XML_NODE(L"vt:lpstr")
{
CP_XML_STREAM() << L"Theme " << i;
}
}
for (size_t i = 1; i <= m_pDocument->m_arSlides.size(); ++i)
{
CP_XML_NODE(L"vt:lpstr")
{
CP_XML_STREAM() << L"Slide " << i;
}
}
}
}
//CP_XML_NODE(L"Company");
CP_XML_NODE(L"LinksUpToDate")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"SharedDoc")
{
CP_XML_STREAM() << L"false";
}
CP_XML_NODE(L"HyperlinksChanged")
{
CP_XML_STREAM() << L"false";
}
}
}
oFile.WriteStringUTF8(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
@ -454,7 +464,7 @@ void NSPresentationEditor::CPPTXWriter::WritePresInfo()
strPresMasters += L"<p:sldMasterId id=\"" + std::to_wstring(0x80000000 + nCountLayouts) + L"\" r:id=\"rId" + std::to_wstring(2 * nIndexTheme + 1) + L"\"/>";
nCountLayouts += m_pDocument->m_arThemes[nIndexTheme].m_arLayouts.size();
nCountLayouts += m_pDocument->m_arThemes[nIndexTheme]->m_arLayouts.size();
nCountLayouts += 1;
}
@ -504,16 +514,16 @@ void NSPresentationEditor::CPPTXWriter::WritePresInfo()
oFile.WriteStringUTF8(strPresRels);
oFile.CloseFile();
std::wstring strSizePres = L"<p:sldSz cx=\"" + std::to_wstring(m_pDocument->m_oInfo.m_lUnitsHor) +
L"\" cy=\"" + std::to_wstring(m_pDocument->m_oInfo.m_lUnitsVer) +
L"\" type=\"screen4x3\" /><p:notesSz cx=\"" + std::to_wstring(m_pDocument->m_oInfo.m_lUnitsVer) +
L"\" cy=\"" + std::to_wstring(m_pDocument->m_oInfo.m_lUnitsHor) + L"\"/>";
std::wstring strSizePres = L"<p:sldSz cx=\"" + std::to_wstring(m_pDocument->m_lSlideWidth) +
L"\" cy=\"" + std::to_wstring(m_pDocument->m_lSlideHeight) +
L"\" type=\"screen4x3\" /><p:notesSz cx=\"" + std::to_wstring(m_pDocument->m_lNotesWidth) +
L"\" cy=\"" + std::to_wstring(m_pDocument->m_lNotesHeight) + L"\"/>";
std::wstring strDefaultTextStyle = _T("<p:defaultTextStyle>");
if (m_pDocument->m_arThemes.size() > 0)
if (false == m_pDocument->m_arThemes.empty())
{
strDefaultTextStyle += CStylesWriter::ConvertStyles(m_pDocument->m_arThemes[0].m_pStyles[0], m_pDocument->m_oInfo, 9);
strDefaultTextStyle += CStylesWriter::ConvertStyles(m_pDocument->m_arThemes[0]->m_pStyles[0], 9);
}
strDefaultTextStyle += _T("</p:defaultTextStyle>");
@ -577,14 +587,14 @@ void NSPresentationEditor::CPPTXWriter::WriteThemes()
for (size_t i = 0; i < m_pDocument->m_arThemes.size(); i++)
{
WriteTheme(&m_pDocument->m_arThemes[i], nIndexTheme, nStartLayout, 1);
WriteTheme(m_pDocument->m_arThemes[i], nIndexTheme, nStartLayout);
}
WriteTheme(m_pDocument->m_pNotesMaster, nIndexTheme, nStartLayout, 2);
WriteTheme(m_pDocument->m_pHandoutMaster, nIndexTheme, nStartLayout, 3);
WriteTheme(m_pDocument->m_pNotesMaster, nIndexTheme, nStartLayout);
WriteTheme(m_pDocument->m_pHandoutMaster, nIndexTheme, nStartLayout);
}
void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexTheme, int & nStartLayout, int Type)
void NSPresentationEditor::CPPTXWriter::WriteTheme(CThemePtr pTheme, int & nIndexTheme, int & nStartLayout)
{
if (!pTheme) return;
@ -665,15 +675,15 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
CStringWriter oWriter;
oWriter.WriteString(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>");
if (Type == 1)
if (pTheme->m_eType == typeMaster)
{
oWriter.WriteString(L"<p:sldMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">");
}
else if (Type == 2)
else if (pTheme->m_eType == typeNotesMaster)
{
oWriter.WriteString(L"<p:notesMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">");
}
else if (Type == 3)
else if (pTheme->m_eType == typeHandoutMaster)
{
oWriter.WriteString(L"<p:handoutMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">");
}
@ -686,15 +696,55 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
oWriter.WriteString(L"<p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr>\
<a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>");
for (size_t nEl = 0; nEl < pTheme->m_arElements.size(); ++nEl)
{
if (isBodyPlaceholder(pTheme->m_arElements[nEl]->m_lPlaceholderType))
pTheme->m_arElements[nEl]->m_lPlaceholderType =100; //body тип прописывать !!
CGroupElement *pGroupElement = !pTheme->m_arElements.empty() ? dynamic_cast<CGroupElement *>(pTheme->m_arElements[0].get()) : NULL;
if (pTheme->m_arElements[nEl]->m_bBoundsEnabled == false)
continue;
WriteElement(oWriter, oRels, pTheme->m_arElements[nEl]);
size_t start_index = 0;
if (pGroupElement)
{
for (size_t i = 0; i < pGroupElement->m_pChildElements.size(); ++i)
{
if (isBodyPlaceholder(pGroupElement->m_pChildElements[i]->m_lPlaceholderType))
pGroupElement->m_pChildElements[i]->m_lPlaceholderType = 100; //body тип прописывать !!
//if (pGroupElement->m_pChildElements[i]->m_bAnchorEnabled == false &&
// pGroupElement->m_pChildElements[i]->m_bChildAnchorEnabled == false)
// continue;
//if (pTheme->m_eType == typeNotesMaster)
//{
// pGroupElement->m_pChildElements[i]->m_lPlaceholderID = -1;
//}
//else if (pTheme->m_eType == typeHandoutMaster)
//{
// pGroupElement->m_pChildElements[i]->m_lPlaceholderID = -1;
// pGroupElement->m_pChildElements[i]->m_lPlaceholderSizePreset = -1;
//}
WriteElement(oWriter, oRels, pGroupElement->m_pChildElements[i]);
}
start_index = 1;
}
for (size_t i = start_index; i < pTheme->m_arElements.size(); ++i)
{
if (isBodyPlaceholder(pTheme->m_arElements[i]->m_lPlaceholderType))
pTheme->m_arElements[i]->m_lPlaceholderType = 100; //body тип прописывать !!
//if (pTheme->m_arElements[i]->m_bAnchorEnabled == false &&
// pTheme->m_arElements[i]->m_bChildAnchorEnabled == false)
// continue;
//if (pTheme->m_eType == typeNotesMaster)
//{
// pTheme->m_arElements[i]->m_lPlaceholderID = -1;
//}
//else if (pTheme->m_eType == typeHandoutMaster)
//{
// pTheme->m_arElements[i]->m_lPlaceholderID = -1;
// pTheme->m_arElements[i]->m_lPlaceholderSizePreset = -1;
//}
WriteElement(oWriter, oRels, pTheme->m_arElements[i]);
}
oWriter.WriteString(std::wstring(L"</p:spTree></p:cSld>"));
@ -702,7 +752,7 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
std::wstring strOverrideColorScheme = _T("<p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/>");
oWriter.WriteString(strOverrideColorScheme);
if (Type == 1)
if (pTheme->m_eType == typeMaster)
{
oWriter.WriteString(std::wstring(L"<p:sldLayoutIdLst>"));
@ -726,34 +776,34 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
if (!pTheme->m_bHasFooter) oWriter.WriteString(std::wstring(L" ftr=\"0\""));
oWriter.WriteString(std::wstring(L"/>"));
}
if (Type == 1)
if (pTheme->m_eType == typeMaster)
{
oWriter.WriteString(std::wstring(L"<p:txStyles>"));
oWriter.WriteString(std::wstring(L"<p:titleStyle>"));
CStylesWriter::ConvertStyles(pTheme->m_pStyles[1], pTheme->m_oInfo, oWriter, 9);
CStylesWriter::ConvertStyles(pTheme->m_pStyles[1], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:titleStyle>"));
oWriter.WriteString(std::wstring(L"<p:bodyStyle>"));
CStylesWriter::ConvertStyles(pTheme->m_pStyles[2], pTheme->m_oInfo, oWriter, 9);
CStylesWriter::ConvertStyles(pTheme->m_pStyles[2], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:bodyStyle>"));
oWriter.WriteString(std::wstring(L"<p:otherStyle>"));
CStylesWriter::ConvertStyles(pTheme->m_pStyles[3], pTheme->m_oInfo, oWriter, 9);
CStylesWriter::ConvertStyles(pTheme->m_pStyles[3], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:otherStyle>"));
oWriter.WriteString(std::wstring(L"</p:txStyles>"));
}
else if (Type == 2)
else if (pTheme->m_eType == typeNotesMaster)
{
oWriter.WriteString(std::wstring(L"<p:notesStyle>"));
CStylesWriter::ConvertStyles(pTheme->m_pStyles[1], pTheme->m_oInfo, oWriter, 9);
CStylesWriter::ConvertStyles(pTheme->m_pStyles[1], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:notesStyle>"));
}
std::wstring strSlideMasterFile;
std::wstring strSlideMasterRelsFile;
if (Type == 1)
if (pTheme->m_eType == typeMaster)
{
oWriter.WriteString(std::wstring(L"</p:sldMaster>"));
@ -763,7 +813,7 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
strSlideMasterRelsFile = L"slideMaster" + std::to_wstring(nIndexTheme + 1) + L".xml.rels";
strSlideMasterRelsFile = strPptDirectory + _T("slideMasters") + FILE_SEPARATOR_STR + _T("_rels") + FILE_SEPARATOR_STR + strSlideMasterRelsFile;
}
else if (Type == 2)
else if (pTheme->m_eType == typeNotesMaster)
{
oWriter.WriteString(std::wstring(L"</p:notesMaster>"));
@ -773,7 +823,7 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CTheme* pTheme, int & nIndexT
strSlideMasterRelsFile = L"notesMaster1.xml.rels";
strSlideMasterRelsFile = strPptDirectory + _T("notesMasters") + FILE_SEPARATOR_STR + _T("_rels") + FILE_SEPARATOR_STR + strSlideMasterRelsFile;
}
else if (Type == 3)
else if (pTheme->m_eType == typeHandoutMaster)
{
oWriter.WriteString(std::wstring(L"</p:handoutMaster>"));
@ -859,13 +909,29 @@ void NSPresentationEditor::CPPTXWriter::WriteBackground(CStringWriter& oWriter,
}
oWriter.WriteString(std::wstring(L"</p:bgPr></p:bg>"));
}
void NSPresentationEditor::CPPTXWriter::WriteGroup(CStringWriter& oWriter, CRelsGenerator& oRels, CElementPtr pElement, CLayout* pLayout)
{
CGroupElement *pGroupElement = dynamic_cast<CGroupElement*>(pElement.get());
m_pShapeWriter->SetElement(pElement);
oWriter.WriteString(m_pShapeWriter->ConvertGroup());
for (size_t i = 0; i < pGroupElement->m_pChildElements.size(); i++)
{
WriteElement(oWriter, oRels, pGroupElement->m_pChildElements[i], pLayout);
}
oWriter.WriteString(L"</p:grpSp>");
}
void NSPresentationEditor::CPPTXWriter::WriteElement(CStringWriter& oWriter, CRelsGenerator& oRels, CElementPtr pElement, CLayout* pLayout)
{
if (!pElement) return;
CGroupElement *pGroupElement = dynamic_cast<CGroupElement*>(pElement.get());
pElement->m_oMetric = m_pDocument->m_oInfo;
pElement->NormalizeCoordsByMetric();
if (pGroupElement)
{
return WriteGroup(oWriter, oRels, pElement, pLayout);
}
bool bObject = m_pShapeWriter->SetElement(pElement);
@ -890,8 +956,16 @@ void NSPresentationEditor::CPPTXWriter::WriteElement(CStringWriter& oWriter, CRe
if (bIsEqualTransform)
{
if (pElement->m_rcBounds.IsEqual(pElLayout->m_rcBounds, 0.5))
pElement->m_bBoundsEnabled = false;
if (pElement->m_bAnchorEnabled == pElLayout->m_bAnchorEnabled && pElLayout->m_bAnchorEnabled == true)
{
if (pElement->m_rcAnchor.IsEqual(pElLayout->m_rcAnchor, 0.5))
pElement->m_bAnchorEnabled = false;
}
if (pElement->m_bChildAnchorEnabled == pElLayout->m_bChildAnchorEnabled && pElLayout->m_bChildAnchorEnabled == true)
{
if (pElement->m_rcChildAnchor.IsEqual(pElLayout->m_rcChildAnchor, 0.5))
pElement->m_bChildAnchorEnabled = false;
}
}
break;
@ -903,8 +977,10 @@ void NSPresentationEditor::CPPTXWriter::WriteElement(CStringWriter& oWriter, CRe
}
}
void NSPresentationEditor::CPPTXWriter::WriteLayout(CLayout& oLayout, int nIndexLayout, int nStartLayout, int nIndexTheme)
void NSPresentationEditor::CPPTXWriter::WriteLayout(CLayoutPtr pLayout, int nIndexLayout, int nStartLayout, int nIndexTheme)
{
if (!pLayout) return;
CStringWriter oWriter;
CRelsGenerator oRels(&m_oManager);
@ -913,29 +989,44 @@ void NSPresentationEditor::CPPTXWriter::WriteLayout(CLayout& oLayout, int nIndex
oWriter.WriteString(std::wstring(L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"));
oWriter.WriteString(std::wstring(L"<p:sldLayout xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\""));
oWriter.WriteString(std::wstring(L" type=\"") + oLayout.m_strLayoutType + _T("\""));
oWriter.WriteString(std::wstring(L" showMasterSp=\"") + (oLayout.m_bShowMasterShapes ? _T("1") : _T("0")));
oWriter.WriteString(std::wstring(L" type=\"") + pLayout->m_strLayoutType + _T("\""));
oWriter.WriteString(std::wstring(L" showMasterSp=\"") + (pLayout->m_bShowMasterShapes ? _T("1") : _T("0")));
oWriter.WriteString(std::wstring(L"\" preserve=\"1\"><p:cSld"));
if ( oLayout.m_sName.empty() == false)
oWriter.WriteString(std::wstring(L" name=\"") + oLayout.m_sName + std::wstring(L"\""));
if ( pLayout->m_sName.empty() == false)
oWriter.WriteString(std::wstring(L" name=\"") + pLayout->m_sName + std::wstring(L"\""));
oWriter.WriteString(std::wstring(L">"));
if (oLayout.m_bIsBackground)
if (pLayout->m_bIsBackground)
{
WriteBackground(oWriter, oRels, oLayout.m_oBackground);
WriteBackground(oWriter, oRels, pLayout->m_oBackground);
}
std::wstring strElems = _T("<p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr>\
<a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>");
oWriter.WriteString(strElems);
size_t nElements = oLayout.m_arElements.size();
for (size_t nEl = 0; nEl < nElements; ++nEl)
size_t start_index = 0;
if (pLayout->m_bIsTitleMaster)
{
WriteElement(oWriter, oRels, oLayout.m_arElements[nEl]);
CGroupElement *pGroupElement = (!pLayout->m_arElements.empty()) ? dynamic_cast<CGroupElement *>(pLayout->m_arElements[0].get()) : NULL;
if (pGroupElement)
{
for (size_t i = 0; i < pGroupElement->m_pChildElements.size(); ++i)
{
WriteElement(oWriter, oRels, pGroupElement->m_pChildElements[i]);
}
start_index = 1;
}
}
for (size_t i = start_index; i < pLayout->m_arElements.size(); ++i)
{
WriteElement(oWriter, oRels, pLayout->m_arElements[i]);
}
oWriter.WriteString(std::wstring(L"</p:spTree></p:cSld>"));
oWriter.WriteString(std::wstring(L"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>"));
@ -968,7 +1059,9 @@ void NSPresentationEditor::CPPTXWriter::WriteSlide(int nIndexSlide)
{
int nLayout = pSlide->m_lLayoutID;
for (int i = 0; i < pSlide->m_lThemeID; ++i)
nLayout += (int)m_pDocument->m_arThemes[i].m_arLayouts.size();
{
nLayout += (int)m_pDocument->m_arThemes[i]->m_arLayouts.size();
}
oRels.StartSlide(nLayout, pSlide->m_lNotesID);
}
@ -994,10 +1087,25 @@ void NSPresentationEditor::CPPTXWriter::WriteSlide(int nIndexSlide)
oWriter.WriteString(std::wstring(L"<p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr>\
<a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>"));
for (size_t nEl = 0; nEl < pSlide->m_arElements.size(); ++nEl)
CGroupElement *pGroupElement = !pSlide->m_arElements.empty() ? dynamic_cast<CGroupElement *>(pSlide->m_arElements[0].get()) : NULL;
size_t start_index = 0;
if (pGroupElement)
{
WriteElement(oWriter, oRels, pSlide->m_arElements[nEl], &m_pDocument->m_arThemes[pSlide->m_lThemeID].m_arLayouts[pSlide->m_lLayoutID]);
for (size_t i = 0; i < pGroupElement->m_pChildElements.size(); ++i)
{
WriteElement(oWriter, oRels, pGroupElement->m_pChildElements[i]);
}
start_index = 1;
}
for (size_t i = start_index; i < pSlide->m_arElements.size(); ++i)
{
WriteElement(oWriter, oRels, pSlide->m_arElements[i]);
}
oWriter.WriteString(std::wstring(L"</p:spTree></p:cSld>"));
oWriter.WriteString(std::wstring(L"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>"));
@ -1234,10 +1342,25 @@ void NSPresentationEditor::CPPTXWriter::WriteNotes(int nIndexNotes)
oWriter.WriteString(std::wstring(L"<p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr>\
<a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>"));
for (size_t nEl = 0; nEl < pNotes->m_arElements.size(); ++nEl)
CGroupElement *pGroupElement = !pNotes->m_arElements.empty() ? dynamic_cast<CGroupElement *>(pNotes->m_arElements[0].get()) : NULL;
size_t start_index = 0;
if (pGroupElement)
{
WriteElement(oWriter, oRels, pNotes->m_arElements[nEl], NULL);
for (size_t i = 0; i < pGroupElement->m_pChildElements.size(); ++i)
{
WriteElement(oWriter, oRels, pGroupElement->m_pChildElements[i]);
}
start_index = 1;
}
for (size_t i = start_index; i < pNotes->m_arElements.size(); ++i)
{
WriteElement(oWriter, oRels, pNotes->m_arElements[i]);
}
oWriter.WriteString(std::wstring(L"</p:spTree></p:cSld>"));
oWriter.WriteString(std::wstring(L"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>"));

View File

@ -72,10 +72,10 @@ namespace NSPresentationEditor
void WritePresInfo ();
void WriteAll ();
void WriteThemes ();
void WriteTheme (CTheme* pTheme, int & nIndexTheme, int & nStartLayout, int Type = 1);
void WriteTheme (CThemePtr pTheme, int & nIndexTheme, int & nStartLayout);
void WriteSlides ();
void WriteNotes ();
void WriteLayout (CLayout& oLayout, int nIndexLayout, int nStartLayout, int nIndexTheme);
void WriteLayout (CLayoutPtr pLayout, int nIndexLayout, int nStartLayout, int nIndexTheme);
void WriteSlide (int nIndexSlide);
void WriteNotes (int nIndexNotes);
@ -83,6 +83,7 @@ namespace NSPresentationEditor
void WriteColorScheme (CStringWriter& oWriter, const std::wstring & name, const std::vector<CColor> & colors, bool extra = false);
void WriteBackground (CStringWriter& oWriter, CRelsGenerator& oRels, CBrush& oBackground);
void WriteElement (CStringWriter& oWriter, CRelsGenerator& oRels, CElementPtr pElement, CLayout* pLayout = NULL);
void WriteGroup (CStringWriter& oWriter, CRelsGenerator& oRels, CElementPtr pElement, CLayout* pLayout = NULL);
};

File diff suppressed because it is too large Load Diff

View File

@ -135,18 +135,14 @@ namespace NSPresentationEditor
return _T("body");
}
class CShapeWriter : public IRenderer
class CShapeWriter
{
private:
NSPresentationEditor::CStringWriter m_oWriterPath;
NSPresentationEditor::CStringWriter m_oWriterVML;
NSPresentationEditor::CStringWriter m_oWriter;
NSPresentationEditor::CDoubleRect m_oBounds;
NSPresentationEditor::CDoubleRect m_oTextRect;
NSPresentationEditor::CMetricInfo m_oMetricInfo;
NSPresentationEditor::CShapeElement* m_pShapeElement;
NSPresentationEditor::CImageElement* m_pImageElement;
NSPresentationEditor::CElementPtr m_pElement;
NSPresentationEditor::CRelsGenerator* m_pRels;
@ -154,6 +150,10 @@ namespace NSPresentationEditor
bool m_bWordArt;
bool m_bTextBox;
std::wstring m_xmlGeomAlternative;
std::wstring m_xmlTxBodyAlternative;
std::wstring m_xmlAlternative;
public:
CShapeWriter();
@ -172,13 +172,16 @@ namespace NSPresentationEditor
bool SetElement(CElementPtr pElem);
//--------------------------------------------------------------------
std::wstring ConvertShape ();
std::wstring ConvertGroup ();
std::wstring ConvertShape ();
std::wstring ConvertImage ();
std::wstring ConvertLine (CPen & pen);
std::wstring ConvertShadow (CShadow & shadow);
std::wstring ConvertBrush (CBrush & brush);
std::wstring ConvertLineEnd (unsigned char cap, unsigned char length, unsigned char width);
static std::wstring ConvertColor (CColor & color, long alpha);
void ParseXmlAlternative(const std::wstring & xml);
// тип рендерера-----------------------------------------------------------------------------
virtual HRESULT get_Type(LONG* lType) ;
//-------- Функции для работы со страницей --------------------------------------------------
@ -395,9 +398,6 @@ namespace NSPresentationEditor
CFont m_oInstalledFont;
double m_dWidth;
double m_dHeight;
public:
inline void MoveTo(const double& dX, const double& dY)
{
@ -447,8 +447,8 @@ namespace NSPresentationEditor
m_oWriterPath.WriteString(str);
}
void WriteGroupInfo();
void WriteShapeInfo();
void WriteImageInfo();
void WriteTextInfo();
};

View File

@ -88,28 +88,27 @@ public:
return L"auto";
}
static std::wstring ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, NSPresentationEditor::CMetricInfo& oMetricInfo, int nCount = 10)
static std::wstring ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, int nCount = 10)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyles(oStyles, oMetricInfo, oWriter, nCount);
ConvertStyles(oStyles, oWriter, nCount);
return oWriter.GetData();
}
static void ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, NSPresentationEditor::CMetricInfo& oMetricInfo,
NSPresentationEditor::CStringWriter& oWriter, int nCount = 10)
static void ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, NSPresentationEditor::CStringWriter& oWriter, int nCount = 10)
{
for (int i = 0; i < nCount; ++i)
{
if (oStyles.m_pLevels[i].is_init())
ConvertStyleLevel(oStyles.m_pLevels[i].get(), oMetricInfo, oWriter, i);
ConvertStyleLevel(oStyles.m_pLevels[i].get(), oWriter, i);
}
}
static std::wstring ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, NSPresentationEditor::CMetricInfo& oMetricInfo, const int& nLevel)
static std::wstring ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, const int& nLevel)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyleLevel(oLevel, oMetricInfo, oWriter, nLevel);
ConvertStyleLevel(oLevel, oWriter, nLevel);
return oWriter.GetData();
}
static void ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, NSPresentationEditor::CMetricInfo& oMetricInfo,
static void ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel,
NSPresentationEditor::CStringWriter& oWriter, const int& nLevel);
};

View File

@ -29,6 +29,8 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include <boost/make_shared.hpp>
#include "PPTDocumentInfo.h"
#include "../Records/ExMIDIAudioContainer.h"
@ -71,6 +73,9 @@ CPPTUserInfo::CPPTUserInfo() : CDocument(),
m_bHasSlideNumber = false;
m_bHasFooter = false;
m_nFormatDate = 1;
m_current_elements = NULL;
m_current_level = 0;
}
CPPTUserInfo::~CPPTUserInfo()
@ -471,18 +476,10 @@ void CPPTUserInfo::ReadExtenalObjects(std::wstring strFolderMem)
for (size_t nIndex = 0; nIndex < oArrayFonts.size(); ++nIndex)
{
CFont oFont;
oFont.Name = oArrayFonts[nIndex]->m_strFaceName;
oFont.Name = oArrayFonts[nIndex]->m_strFaceName;
oFont.Charset = oArrayFonts[nIndex]->m_lfCharSet;
switch (oArrayFonts[nIndex]->m_lfPitchAndFamily / 0x10)
{
case 1: {oFont.PitchFamily = _T("roman"); break;}
case 2: {oFont.PitchFamily = _T("swiss"); break;}
case 3: {oFont.PitchFamily = _T("modern"); break;}
case 4: {oFont.PitchFamily = _T("script"); break;}
case 5: {oFont.PitchFamily = _T("decorative"); break;}
default: {oFont.PitchFamily = _T("unknown"); break;}
}
oFont.PitchFamily = oArrayFonts[nIndex]->m_lfPitchAndFamily;
m_arrFonts.push_back(oFont);
}
@ -544,20 +541,23 @@ void CPPTUserInfo::FromDocument()
for (int i = 0 ; i < 3; i++) m_PlaceholdersReplaceString[i] = oArrayHeadersFootersInfo[0]->m_HeadersFootersString[i];
}
LONG lOriginWidth = oArrayDoc[0]->m_oSlideSize.X;
LONG lOriginHeight = oArrayDoc[0]->m_oSlideSize.Y;
double master_to_emu = 1./576. ;//inch
m_oInfo.m_lUnitsHor = lOriginWidth;
m_oInfo.m_lUnitsVer = lOriginHeight;
m_oInfo.m_lMillimetresHor = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginWidth);
m_oInfo.m_lMillimetresVer = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginHeight);
master_to_emu *= 72;//pt
master_to_emu *= 12700;//emu
m_bRtl = (oArrayDoc[0]->m_bRightToLeft!=0);
m_bShowComments = (oArrayDoc[0]->m_bShowComments!=0);
m_lSlideWidth = (oArrayDoc[0]->m_oSlideSize.X * 1587.5 + 0.5);
m_lSlideHeight = (oArrayDoc[0]->m_oSlideSize.Y * 1587.5 + 0.5);
LoadMasters(lOriginWidth, lOriginHeight);
m_lNotesWidth = (oArrayDoc[0]->m_oNotesSize.X * 1587.5 + 0.5);
m_lNotesHeight = (oArrayDoc[0]->m_oNotesSize.Y * 1587.5 + 0.5);
double DurationSlide = PPT_DEFAULT_SLIDE_DURATION;
m_bRtl = (oArrayDoc[0]->m_bRightToLeft!=0);
m_bShowComments = (oArrayDoc[0]->m_bShowComments!=0);
LoadMasters();
double DurationSlide = PPT_DEFAULT_SLIDE_DURATION;
m_arSlides.reserve(m_arrSlidesOrder.size());
for (size_t i = 0; i < m_arrSlidesOrder.size(); i++)
@ -590,12 +590,6 @@ void CPPTUserInfo::FromDocument()
pSlide->m_dEndTime = DurationSlide;
pSlide->m_dDuration = DurationSlide;
pSlide->m_lOriginalWidth = lOriginWidth;
pSlide->m_lOriginalHeight = lOriginHeight;
pSlide->m_lWidth = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginWidth);
pSlide->m_lHeight = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginHeight);
LoadSlide ( pPair->first, pSlide);
}
@ -615,16 +609,10 @@ void CPPTUserInfo::FromDocument()
CSlide* pSlide = m_arNotes.back();
pSlide->m_lOriginalWidth = lOriginWidth;
pSlide->m_lOriginalHeight = lOriginHeight;
pSlide->m_lWidth = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginWidth);
pSlide->m_lHeight = (LONG)(c_dMasterUnitsToMillimetreKoef * lOriginHeight);
LoadNotes ( pPair->first, pSlide);
}
CalculateEditor(m_oInfo);
CalculateEditor();
}
void CPPTUserInfo::LoadNotes(DWORD dwNoteID, CSlide* pNotes)
@ -681,7 +669,7 @@ void CPPTUserInfo::LoadNotes(DWORD dwNoteID, CSlide* pNotes)
pSlide->m_lNotesID = m_arNotes.size() - 1;
//-----------------------------------------------------
CTheme * pTheme = m_pNotesMaster;
CTheme * pTheme = m_pNotesMaster.get();
CSlideInfo * pThemeWrapper = m_pNotesMasterWrapper;
CLayout* pLayout = NULL;
@ -749,41 +737,44 @@ void CPPTUserInfo::LoadNotes(DWORD dwNoteID, CSlide* pNotes)
for (int i = 0 ; i < 3; i++)
pNotes->m_PlaceholdersReplaceString[i] = oArrayHeadersFootersInfo[0]->m_HeadersFootersString[i];
}
//------------- читаем все элементы ------------------------------------------------------------------------------------------
pNotes->m_bIsBackground = false;
std::vector<CRecordShapeContainer*> oArrayShapes;
pRecordSlide->GetRecordsByType(&oArrayShapes, true);
//-------------------------------------------------------------------------------------------------------
std::vector<CRecordDrawingContainer*> oArrayDrawing;
for (size_t nShape = 0; nShape < oArrayShapes.size(); ++nShape)
pRecordSlide->GetRecordsByType(&oArrayDrawing, true);
m_current_level = 0;
m_current_elements = &pNotes->m_arElements;
if (!oArrayDrawing.empty())
{
CElementPtr pElement = oArrayShapes[nShape]->GetElement(&m_oExMedia, pNotes->m_lOriginalWidth, pNotes->m_lOriginalHeight,
pTheme, pLayout, pThemeWrapper, pNotesWrapper, pNotes);
if (NULL != pElement)
for (size_t nIndex = 0; nIndex < oArrayDrawing[0]->m_arRecords.size(); ++nIndex)
{
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor && !bMasterBackGround)
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pGroup)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape)
LoadGroupShapeContainer(pGroup, NULL, pTheme, pLayout, pThemeWrapper, pNotesWrapper, pNotes);
}
else
{
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pShapeGroup)
{
pShape->SetupProperties(pNotes, pTheme, pLayout);
CElementPtr pElement = pShapeGroup->GetElement(false, &m_oExMedia,
pTheme, pLayout, pThemeWrapper, pNotesWrapper, pNotes);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape && pShape->m_bIsBackground && !pShape->m_bHaveAnchor)
{
pShape->SetupProperties(pNotes, pTheme, pLayout);
pNotes->m_bIsBackground = true;
pNotes->m_oBackground = pShape->m_oBrush;
pNotes->m_bIsBackground = true;
pNotes->m_oBackground = pShape->m_oBrush;
}
}
continue;
}
if (pElement->m_bHaveAnchor)
{
pNotes->m_arElements.push_back(pElement);
}
if ( pElement->m_lPlaceholderType >0)
{
pNotes->m_mapPlaceholders.insert(std::pair<int, int>(pElement->m_lPlaceholderType, pNotes->m_arElements.size()-1));
}
}
}
}
}
@ -873,7 +864,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
//-----------------
pSlide->m_lThemeID = pPairTheme->second;
CTheme * pTheme = &m_arThemes [pSlide->m_lThemeID];
CTheme * pTheme = m_arThemes [pSlide->m_lThemeID].get();
CSlideInfo * pThemeWrapper = &m_arMasterWrapper[pSlide->m_lThemeID];
CLayout* pLayout = NULL;
@ -884,7 +875,7 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
//основан на заголовочном шаблоне
pSlide->m_bShowMasterShapes = bMasterObjects;
pSlide->m_lLayoutID = pPairLayoutTitle->second;
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout = pTheme->m_arLayouts[pSlide->m_lLayoutID].get();
}
else
{
@ -896,13 +887,13 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
{
pSlide->m_lLayoutID = AddNewLayout(pTheme, pRecordSlide, true, bMasterObjects);
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout = pTheme->m_arLayouts[pSlide->m_lLayoutID].get();
pLayout->m_bShowMasterShapes = true;
}
else
{
pSlide->m_lLayoutID = pPairLayoutGeom->second;
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout = pTheme->m_arLayouts[pSlide->m_lLayoutID].get();
}
}
@ -990,57 +981,47 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
pSlide->m_sName = oArrayStrings[i]->m_strText;
}
}
//------------- читаем все элементы ------------------------------------------------------------------------------------------
std::vector<CRecordShapeContainer*> oArrayShapes;
pSlide->m_bIsBackground = false;
//-------------------------------------------------------------------------------------------------------
std::vector<CRecordDrawingContainer*> oArrayDrawing;
pRecordSlide->GetRecordsByType(&oArrayDrawing, true);
pRecordSlide->GetRecordsByType(&oArrayShapes, true);
pSlide->m_bIsBackground = false;
for (size_t nShape = 0; nShape < oArrayShapes.size(); ++nShape)
m_current_level = 0;
m_current_elements = &pSlide->m_arElements;
if (!oArrayDrawing.empty())
{
CElementPtr pElement = oArrayShapes[nShape]->GetElement(&m_oExMedia, pSlide->m_lOriginalWidth, pSlide->m_lOriginalHeight,
pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pElement)
for (size_t nIndex = 0; nIndex < oArrayDrawing[0]->m_arRecords.size(); ++nIndex)
{
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor && !bMasterBackGround)
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pGroup)
{
if (NULL != pShape)
LoadGroupShapeContainer(pGroup, NULL, pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
}
else
{
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pShapeGroup)
{
pShape->SetupProperties(pSlide, pTheme, pLayout);
CElementPtr pElement = pShapeGroup->GetElement(false, &m_oExMedia,
pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor && !bMasterBackGround)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape && pSlide)
{
pShape->SetupProperties(pSlide, pTheme, pLayout);
pSlide->m_bIsBackground = true;
pSlide->m_oBackground = pShape->m_oBrush;
pSlide->m_bIsBackground = true;
pSlide->m_oBackground = pShape->m_oBrush;
}
}
}
continue;
}else
AddAnimation ( dwSlideID, pSlide->m_lOriginalWidth, pSlide->m_lOriginalHeight, pElement );
if (NULL != pShape)
pShape->SetupProperties(pSlide, pTheme, pLayout);
if (pElement->m_bHaveAnchor)
{
pSlide->m_arElements.push_back(pElement);
}
if ( pElement->m_lPlaceholderType >0)
{
pSlide->m_mapPlaceholders.insert(std::pair<int, int>(pElement->m_lPlaceholderType, pSlide->m_arElements.size()-1));
}
}
}
}
//даты и номера могут быть и не только в колонтитулах
//todooo ... возможно нужно все перенести плейсхолдеры без ID a-la как в AddLayout
//AddLayoutSlidePlaceholder(pSlide, MasterSlideNumber , pLayout);
//AddLayoutSlidePlaceholder(pSlide, MasterDate , pLayout);
//-------------элементы колонтитулов
std::multimap<int, int>::iterator it;
if (bHasSlideNumber) AddLayoutSlidePlaceholder(pSlide, MasterSlideNumber, pLayout, true);
@ -1055,42 +1036,126 @@ void CPPTUserInfo::LoadSlide(DWORD dwSlideID, CSlide* pSlide)
if (bHasFooter) AddLayoutSlidePlaceholder(pSlide, MasterFooter, pLayout, true);
}
void CPPTUserInfo::LoadGroupShapeContainer(CRecordGroupShapeContainer* pGroupContainer, std::vector<CElementPtr>* pParentElements, CTheme* pTheme, CLayout* pLayout,
CSlideInfo* pThemeWrapper, CSlideInfo* pSlideWrapper, CSlide* pSlide)
{
if (!pGroupContainer) return;
if (pGroupContainer->m_arRecords.empty()) return;
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(pGroupContainer->m_arRecords[0]);
CElementPtr pElement;
if (pShapeGroup)
{
pShapeGroup->bGroupShape = true;
pElement = pShapeGroup->GetElement(m_current_level > 1, &m_oExMedia, pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
}
if (!pElement) return;
pElement->m_pParentElements = pParentElements;
m_current_elements->push_back(pElement);
m_current_level++;
pParentElements = m_current_elements;
m_current_elements = &pElement->m_pChildElements;
for (size_t i = 1; i < pGroupContainer->m_arRecords.size(); i++)
{
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(pGroupContainer->m_arRecords[i]);
if (pGroup)
{
LoadGroupShapeContainer(pGroup, pParentElements, pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
}
else
{
pShapeGroup = dynamic_cast<CRecordShapeContainer*>(pGroupContainer->m_arRecords[i]);
if (pShapeGroup)
{
CElementPtr pElement = pShapeGroup->GetElement(m_current_level > 1, &m_oExMedia, pTheme, pLayout, pThemeWrapper, pSlideWrapper, pSlide);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pElement)
{
pElement->m_pParentElements = pParentElements;
// AddAnimation ( dwSlideID, pSlide->m_lOriginalWidth, pSlide->m_lOriginalHeight, pElement );
if (NULL != pShape)
pShape->SetupProperties(pSlide, pTheme, pLayout);
if ( pElement->m_lPlaceholderType > 0)
{
if (pSlide)
{
pSlide->m_mapPlaceholders.insert(std::make_pair(pElement->m_lPlaceholderType, pElement));
}
else if (pTheme)
{
pTheme->m_mapPlaceholders.insert(std::make_pair(pElement->m_lPlaceholderType, pElement));
}
else
{
if (pElement->m_lPlaceholderID >= 0)
{
if (pElement->m_lPlaceholderType == MasterSlideNumber) pLayout->m_bHasSlideNumber = true;
if (pElement->m_lPlaceholderType == MasterDate) pLayout->m_bHasDate = true;
if (pElement->m_lPlaceholderType == MasterFooter) pLayout->m_bHasFooter = true;
}
pLayout->m_mapPlaceholders.insert(std::make_pair(pElement->m_lPlaceholderType, pElement));
}
}
if (pElement->m_bHaveAnchor)
{
m_current_elements->push_back(pElement);
}
}
}
}
}
m_current_level--;
m_current_elements = m_current_elements->front()->m_pParentElements;
}
CElementPtr CPPTUserInfo::AddLayoutSlidePlaceholder (CSlide *pSlide, int placeholderType, CLayout *pLayout, bool idx_only)
{
CElementPtr pElement;
for (std::multimap<int, int>::iterator it = pLayout->m_mapPlaceholders.begin(); it != pLayout->m_mapPlaceholders.end(); ++it)
for (std::multimap<int, CElementPtr>::iterator it = pLayout->m_mapPlaceholders.begin(); it != pLayout->m_mapPlaceholders.end(); ++it)
{
pElement = NULL;
CElementPtr pElementPlaceholder = it->second;
if (it->first == placeholderType )
{
if (idx_only == false)
{
if (pLayout->m_arElements[it->second]->m_lPlaceholderID >= 0 ) continue;
if (pElementPlaceholder->m_lPlaceholderID >= 0 ) continue;
pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pElement = pElementPlaceholder->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
pSlide->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pSlide->m_arElements.size()-1));
pSlide->m_mapPlaceholders.insert(std::make_pair(placeholderType, pElement));
}
else
{
if (pLayout->m_arElements[it->second]->m_lPlaceholderID < 0 ) continue;
if (pElementPlaceholder->m_lPlaceholderID < 0 ) continue;
for (std::multimap<int, int>::iterator it1 = pSlide->m_mapPlaceholders.begin(); it1 != pSlide->m_mapPlaceholders.end(); it1++)
for (std::multimap<int, CElementPtr>::iterator it1 = pSlide->m_mapPlaceholders.begin(); it1 != pSlide->m_mapPlaceholders.end(); it1++)
{
if (it1->first == placeholderType && pSlide->m_arElements[it1->second]->m_lPlaceholderID >= 0)
if (it1->first == placeholderType && (it1->second)->m_lPlaceholderID >= 0)
{
pElement = pSlide->m_arElements[it1->second];
pElement = it1->second;
break;
}
}
if (pElement == NULL)
if (!pElement)
{
pElement = pLayout->m_arElements[it->second]->CreateDublicate();
pElement = pElementPlaceholder->CreateDublicate();
pSlide->m_arElements.push_back(pElement);
pSlide->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pSlide->m_arElements.size()-1));
pSlide->m_mapPlaceholders.insert(std::make_pair(placeholderType, pElement));
}
}
}
@ -1103,18 +1168,20 @@ CElementPtr CPPTUserInfo::AddThemeLayoutPlaceholder (CLayout *pLayout, int plac
{
CElementPtr pElement;
for (std::multimap<int, int>::iterator it = pTheme->m_mapPlaceholders.begin(); it != pTheme->m_mapPlaceholders.end(); ++it)
for (std::multimap<int, CElementPtr>::iterator it = pTheme->m_mapPlaceholders.begin(); it != pTheme->m_mapPlaceholders.end(); ++it)
{
CElementPtr pElementPlaceholder = it->second;
if (it->first == placeholderType )
{
if (idx_only && pTheme->m_arElements[it->second]->m_lPlaceholderID < 0) continue;
if (idx_only && pElementPlaceholder->m_lPlaceholderID < 0) continue;
pElement = pTheme->m_arElements[it->second]->CreateDublicate();
pElement = pElementPlaceholder->CreateDublicate();
pElement->m_bPlaceholderSet = true;
pLayout->m_arElements.push_back(pElement);
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(placeholderType, pLayout->m_arElements.size()-1));
pLayout->m_mapPlaceholders.insert(std::make_pair(placeholderType, pElement));
}
}
@ -1132,14 +1199,15 @@ CElementPtr CPPTUserInfo::AddNewLayoutPlaceholder (CLayout *pLayout, int placeho
pShape->m_bPlaceholderSet = false;
pShape->m_bLine = false;
pShape->m_bBoundsEnabled = false;
pShape->m_bAnchorEnabled = false;
pShape->m_bChildAnchorEnabled = false;
CorrectPlaceholderType(pShape->m_lPlaceholderType);
CElementPtr pElement = CElementPtr(pShape);
pLayout->m_arElements.push_back(pElement);
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(pShape->m_lPlaceholderType, pLayout->m_arElements.size()-1));
pLayout->m_mapPlaceholders.insert(std::make_pair(pShape->m_lPlaceholderType, pElement));
return pElement;
}
@ -1158,18 +1226,9 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool
int ind = pTheme->m_arLayouts.size();
CLayout layout;
pTheme->m_arLayouts.push_back(layout);
CLayout *pLayout = &pTheme->m_arLayouts.back();
pTheme->m_arLayouts.push_back(boost::make_shared<NSPresentationEditor::CLayout>());
CLayout *pLayout = pTheme->m_arLayouts.back().get();
pLayout = &pTheme->m_arLayouts.back();
pLayout->m_lOriginalWidth = pTheme->m_lOriginalWidth;
pLayout->m_lOriginalHeight = pTheme->m_lOriginalHeight;
pLayout->m_lWidth = (LONG)(c_dMasterUnitsToMillimetreKoef * pLayout->m_lOriginalWidth);
pLayout->m_lHeight = (LONG)(c_dMasterUnitsToMillimetreKoef * pLayout->m_lOriginalHeight);
pLayout->m_bUseThemeColorScheme = true;
pLayout->m_bShowMasterShapes = true;
@ -1234,17 +1293,18 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool
//if (layoutRecord.m_nGeom==0x0F) return ind; // big object only !!!
//копируем все элементы без idx которые не были прописаны явно
for (std::multimap<int, int>::iterator it = pTheme->m_mapPlaceholders.begin(); it != pTheme->m_mapPlaceholders.end(); ++it)
for (std::multimap<int, CElementPtr>::iterator it = pTheme->m_mapPlaceholders.begin(); it != pTheme->m_mapPlaceholders.end(); ++it)
{
if (pTheme->m_arElements[it->second]->m_lPlaceholderID >= 0) continue;
CElementPtr pElemTheme = it->second;
if (pElemTheme->m_lPlaceholderID >= 0) continue;
bool found = false;
for (std::multimap<int, int>::iterator it1 = pLayout->m_mapPlaceholders.begin(); it1 != pLayout->m_mapPlaceholders.end(); it1++)
for (std::multimap<int, CElementPtr>::iterator it1 = pLayout->m_mapPlaceholders.begin(); it1 != pLayout->m_mapPlaceholders.end(); it1++)
{
if (it1->first == it->first)
{
CElementPtr pElemLayout = pLayout->m_arElements[it1->second];
if (pElemLayout->m_lPlaceholderID == pTheme->m_arElements[it->second]->m_lPlaceholderID)
CElementPtr pElemLayout = it1->second;
if (pElemLayout->m_lPlaceholderID == pElemTheme->m_lPlaceholderID)
{
found = true;
break;
@ -1253,10 +1313,10 @@ int CPPTUserInfo::AddNewLayout(CTheme* pTheme, CRecordSlide* pRecordSlide, bool
}
if (found == false)
{
CElementPtr pElemTheme = pTheme->m_arElements[it->second]->CreateDublicate();
CElementPtr pElement = pElemTheme->CreateDublicate();
pLayout->m_arElements.push_back(pElemTheme);
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(it->first, pLayout->m_arElements.size()-1));
pLayout->m_arElements.push_back(pElement);
pLayout->m_mapPlaceholders.insert(std::make_pair(it->first, pElement));
}
}
@ -1285,18 +1345,19 @@ CElementPtr CPPTUserInfo::AddNewThemePlaceholder (CTheme* pTheme, int placeholde
pShape->m_bPlaceholderSet = false;
pShape->m_bLine = false;
pShape->m_bBoundsEnabled = false;
pShape->m_bAnchorEnabled = false;
pShape->m_bChildAnchorEnabled = false;
CorrectPlaceholderType(pShape->m_lPlaceholderType);
CElementPtr pElement = CElementPtr(pShape);
pTheme->m_arElements.push_back(pElement);
pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pShape->m_lPlaceholderType, pTheme->m_arElements.size()-1));
pTheme->m_mapPlaceholders.insert(std::make_pair(pShape->m_lPlaceholderType, pElement));
return pElement;
}
void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, const LONG& lOriginHeight)
void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID)
{
std::map<DWORD, LONG>::iterator pPair = m_mapMasterToTheme.find(dwMasterID);
if (pPair != m_mapMasterToTheme.end())
@ -1354,12 +1415,8 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
m_mapMasterToTheme.insert(std::pair<DWORD, LONG>(dwMasterID, lIndexTheme));
CTheme theme;
m_arThemes.push_back(theme);
CTheme* pTheme = &m_arThemes[lIndexTheme];
pTheme->m_lOriginalWidth = lOriginWidth;
pTheme->m_lOriginalHeight = lOriginHeight;
m_arThemes.push_back(boost::make_shared<NSPresentationEditor::CTheme>());
CTheme* pTheme = m_arThemes[lIndexTheme].get();
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pMaster->GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
@ -1497,53 +1554,56 @@ void CPPTUserInfo::LoadMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, co
if (pMasterWrapper->m_pStyles[2].is_init())
pTheme->m_pStyles[3].ApplyAfter(pMasterWrapper->m_pStyles[3].get());
// ---------------------------------------------------------------------------------
// читаем все элементы...-----------------------------------------------------------
std::vector<CRecordShapeContainer*> oArrayShapes;
pMaster->GetRecordsByType(&oArrayShapes, true);
pTheme->CalculateStyles();
CLayout* pLayout = NULL; // ну нету тут разметок ...!!
// ---------------------------------------------------------------------------------
for (size_t nShape = 0; nShape < oArrayShapes.size(); ++nShape)
std::vector<CRecordDrawingContainer*> oArrayDrawing;
pMaster->GetRecordsByType(&oArrayDrawing, true);
m_current_level = 0;
m_current_elements = &pTheme->m_arElements;
if (!oArrayDrawing.empty())
{
NSPresentationEditor::CElementPtr pElement = oArrayShapes[nShape]->GetElement(&m_oExMedia, lOriginWidth, lOriginHeight, pTheme, pLayout, pMasterWrapper, pMasterWrapper);
if (pElement)
for (size_t nIndex = 0; nIndex < oArrayDrawing[0]->m_arRecords.size(); ++nIndex)
{
AddAnimation ( dwMasterID, lOriginWidth, lOriginHeight, pElement );
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape)
{
pShape->SetupProperties(NULL, pTheme, pLayout);
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
pTheme->m_bIsBackground = true;
pTheme->m_oBackground = pShape->m_oBrush;
}
continue;
}
pTheme->m_arElements.push_back(pElement);
if ( pElement->m_lPlaceholderType >0)
if (pGroup)
{
pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pElement->m_lPlaceholderType, pTheme->m_arElements.size()-1));
LoadGroupShapeContainer(pGroup, NULL, pTheme, pLayout, pMasterWrapper, pMasterWrapper);
}
else
{
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pShapeGroup)
{
CElementPtr pElement = pShapeGroup->GetElement(false, &m_oExMedia, pTheme, pLayout, pMasterWrapper, pMasterWrapper);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape)
{
pShape->SetupProperties(NULL, pTheme, pLayout);
pTheme->m_bIsBackground = true;
pTheme->m_oBackground = pShape->m_oBrush;
}
}
}
}
}
}
void CPPTUserInfo::LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeight)
void CPPTUserInfo::LoadMasters()
{
for (size_t i = 0; i< m_arrMastersOrder.size(); i++)
{
std::map<DWORD, CRecordSlide*>::iterator pPair = m_mapMasters.find(m_arrMastersOrder[i]);
if (pPair == m_mapMasters.end())continue;
LoadMainMaster(pPair->first, lOriginWidth, lOriginHeight);
LoadMainMaster(pPair->first);
}
for (size_t i = 0; i< m_arrMastersOrder.size(); i++)
@ -1551,7 +1611,7 @@ void CPPTUserInfo::LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeig
std::map<DWORD, CRecordSlide*>::iterator pPair = m_mapMasters.find(m_arrMastersOrder[i]);
if (pPair == m_mapMasters.end())continue;
LoadNoMainMaster(pPair->first, lOriginWidth, lOriginHeight);
LoadNoMainMaster(pPair->first);
}
LoadNotesMasterFromPrevUsers(0);
@ -1559,7 +1619,7 @@ void CPPTUserInfo::LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeig
{
std::map<DWORD, CRecordSlide*>::iterator pPair = m_mapNotesMasters.begin();
LoadMaster(pPair->second, m_pNotesMasterWrapper, m_pNotesMaster);
LoadMaster(typeNotesMaster, pPair->second, m_pNotesMasterWrapper, m_pNotesMaster);
}
LoadHandoutMasterFromPrevUsers(0);
@ -1567,16 +1627,14 @@ void CPPTUserInfo::LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeig
{
std::map<DWORD, CRecordSlide*>::iterator pPair = m_mapHandoutMasters.begin();
LoadMaster(pPair->second, m_pHandoutMasterWrapper, m_pHandoutMaster);
LoadMaster(typeHandoutMaster, pPair->second, m_pHandoutMasterWrapper, m_pHandoutMaster);
}
}
void CPPTUserInfo::LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrapper, CTheme *& pTheme)
void CPPTUserInfo::LoadMaster(_typeMaster type, CRecordSlide* pMaster, CSlideInfo *& pMasterWrapper, CThemePtr & pTheme)
{
if (pMaster == NULL)
return;
LONG lOriginWidth = 0, lOriginHeight = 0;
bool bMasterColorScheme = false;
bool bMasterBackGround = false;
bool bMasterObjects = false;
@ -1609,10 +1667,7 @@ void CPPTUserInfo::LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrappe
}
}
pTheme = new CTheme();
pTheme->m_lOriginalWidth = lOriginWidth;
pTheme->m_lOriginalHeight = lOriginHeight;
pTheme = boost::make_shared<NSPresentationEditor::CTheme>(type);
std::vector<CRecordHeadersFootersContainer*> oArrayHeadersFootersInfo;
pMaster->GetRecordsByType(&oArrayHeadersFootersInfo, true, false);
@ -1719,7 +1774,7 @@ void CPPTUserInfo::LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrappe
pMasterWrapper->m_pStyles[lType] = new NSPresentationEditor::CTextStyles();
pMasterWrapper->m_pStyles[lType]->SetStyles((NSPresentationEditor::CTextStyles*)oArrayTextMasters[i]);
CTheme::CalculateStyle(pTheme, pMasterWrapper->m_pStyles[lType].get());
CTheme::CalculateStyle(pTheme.get(), pMasterWrapper->m_pStyles[lType].get());
}
if (pMasterWrapper->m_pStyles[3].is_init())
pMasterWrapper->m_pStyles[3]->ApplyBefore(m_oDefaultTextStyle);
@ -1727,7 +1782,7 @@ void CPPTUserInfo::LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrappe
pMasterWrapper->m_pStyles[3] = m_oDefaultTextStyle;
CTextStyles oPPTDefaultStyle;
CreateDefaultStyle(oPPTDefaultStyle, pTheme);
CreateDefaultStyle(oPPTDefaultStyle, pTheme.get());
oPPTDefaultStyle.ApplyAfter(m_oDefaultTextStyle);
// выставим стили теме
@ -1743,45 +1798,48 @@ void CPPTUserInfo::LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrappe
if (pMasterWrapper->m_pStyles[2].is_init())
pTheme->m_pStyles[3].ApplyAfter(pMasterWrapper->m_pStyles[3].get());
// ---------------------------------------------------------------------------------
// читаем все элементы...-----------------------------------------------------------
std::vector<CRecordShapeContainer*> oArrayShapes;
pMaster->GetRecordsByType(&oArrayShapes, true);
pTheme->CalculateStyles();
CLayout* pLayout = NULL; // ну нету тут разметок ...!!
//-------------------------------------------------------------------------------------------------------
std::vector<CRecordDrawingContainer*> oArrayDrawing;
pMaster->GetRecordsByType(&oArrayDrawing, true);
for (size_t nShape = 0; nShape < oArrayShapes.size(); ++nShape)
m_current_level = 0;
m_current_elements = &pTheme->m_arElements;
if (!oArrayDrawing.empty())
{
NSPresentationEditor::CElementPtr pElement = oArrayShapes[nShape]->GetElement(&m_oExMedia, lOriginWidth, lOriginHeight, pTheme, pLayout, pMasterWrapper, pMasterWrapper);
if (pElement)
for (size_t nIndex = 0; nIndex < oArrayDrawing[0]->m_arRecords.size(); ++nIndex)
{
//AddAnimation ( dwMasterID, lOriginWidth, lOriginHeight, pElement );
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape)
{
pShape->SetupProperties(NULL, pTheme, pLayout);
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
pTheme->m_bIsBackground = true;
pTheme->m_oBackground = pShape->m_oBrush;
}
continue;
}
pTheme->m_arElements.push_back(pElement);
if ( pElement->m_lPlaceholderType > 0)
if (pGroup)
{
pTheme->m_mapPlaceholders.insert(std::pair<int, int>(pElement->m_lPlaceholderType, pTheme->m_arElements.size()-1));
LoadGroupShapeContainer(pGroup, NULL, pTheme.get(), pLayout, pMasterWrapper, pMasterWrapper);
}
else
{
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pShapeGroup)
{
CElementPtr pElement = pShapeGroup->GetElement(false, &m_oExMedia, pTheme.get(), pLayout, pMasterWrapper, pMasterWrapper);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape && pShape->m_bIsBackground && !pShape->m_bHaveAnchor)
{
pShape->SetupProperties(NULL, pTheme.get(), pLayout);
pTheme->m_bIsBackground = true;
pTheme->m_oBackground = pShape->m_oBrush;
}
}
}
}
}
}
void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth, const LONG& lOriginHeight)
void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID)
{
std::map<DWORD, CRecordSlide*>::iterator pPair = m_mapMasters.find(dwMasterID);
@ -1849,7 +1907,7 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
m_mapMasterToTheme.insert(std::pair<DWORD, LONG>(dwMasterID, pPairTheme->second));
CSlideInfo * pThemeWrapper = &m_arMasterWrapper[pPairTheme->second];
CTheme * pTheme = &m_arThemes [pPairTheme->second];
CTheme * pTheme = m_arThemes [pPairTheme->second].get();
std::wstring strLayoutType = ConvertLayoutType(oArraySlideAtoms[0]->m_oLayout.m_nGeom, oArraySlideAtoms[0]->m_oLayout.m_pPlaceHolderID);
@ -1857,8 +1915,9 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
int lLayoutID = AddNewLayout(pTheme, pCurMaster, false, false);
pLayout = &pTheme->m_arLayouts[lLayoutID];
pLayout = pTheme->m_arLayouts[lLayoutID].get();
pLayout->m_bShowMasterShapes = false;
pLayout->m_bIsTitleMaster = true;
pTheme->m_mapTitleLayout[dwMasterID] = lLayoutID;
@ -1937,46 +1996,41 @@ void CPPTUserInfo::LoadNoMainMaster(DWORD dwMasterID, const LONG& lOriginWidth,
pLayout->m_sName = oArrayStrings[i]->m_strText;
}
}
// читаем все элементы...
std::vector<CRecordShapeContainer*> oArrayShapes;
pCurMaster->GetRecordsByType(&oArrayShapes, true);
//-------------------------------------------------------------------------------------------------------
std::vector<CRecordDrawingContainer*> oArrayDrawing;
pCurMaster->GetRecordsByType(&oArrayDrawing, true);
for (size_t nShape = 0; nShape < oArrayShapes.size(); ++nShape)
m_current_level = 0;
m_current_elements = &pLayout->m_arElements;
if (!oArrayDrawing.empty())
{
CElementPtr pElement =oArrayShapes[nShape]->GetElement(&m_oExMedia, lOriginWidth, lOriginHeight, pTheme, pLayout, pThemeWrapper, pMasterWrapper);
if (pElement)
for (size_t nIndex = 0; nIndex < oArrayDrawing[0]->m_arRecords.size(); ++nIndex)
{
AddAnimation ( dwMasterID, lOriginWidth, lOriginHeight, pElement );
CRecordGroupShapeContainer* pGroup = dynamic_cast<CRecordGroupShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pElement->m_bIsBackground && !pElement->m_bHaveAnchor)
if (pGroup)
{
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape)
{
pShape->SetupProperties(NULL, pTheme, pLayout);
pLayout->m_bIsBackground = true;
pLayout->m_oBackground = pShape->m_oBrush;
}
continue;
LoadGroupShapeContainer(pGroup, NULL, NULL, pLayout, pThemeWrapper, pMasterWrapper);
}
pElement->m_bPlaceholderSet = true;
pLayout->m_arElements.push_back(pElement);
if ( pElement->m_lPlaceholderType >0)
else
{
if (pElement->m_lPlaceholderID >=0)
CRecordShapeContainer* pShapeGroup = dynamic_cast<CRecordShapeContainer*>(oArrayDrawing[0]->m_arRecords[nIndex]);
if (pShapeGroup)
{
if (pElement->m_lPlaceholderType == MasterSlideNumber) pLayout->m_bHasSlideNumber = true;
if (pElement->m_lPlaceholderType == MasterDate) pLayout->m_bHasDate = true;
if (pElement->m_lPlaceholderType == MasterFooter) pLayout->m_bHasFooter = true;
}
pLayout->m_mapPlaceholders.insert(std::pair<int, int>(pElement->m_lPlaceholderType, pLayout->m_arElements.size()-1));
}
CElementPtr pElement = pShapeGroup->GetElement(false, &m_oExMedia, pTheme, pLayout, pThemeWrapper, pMasterWrapper);
CShapeElement* pShape = dynamic_cast<CShapeElement*>(pElement.get());
if (NULL != pShape && pShape->m_bIsBackground && !pShape->m_bHaveAnchor)
{
pShape->SetupProperties(NULL, pTheme, pLayout);
pLayout->m_bIsBackground = true;
pLayout->m_oBackground = pShape->m_oBrush;
}
}
}
}
}

View File

@ -121,6 +121,9 @@ public:
bool m_bRtl;
bool m_bShowComments;
int m_current_level;
std::vector<CElementPtr>* m_current_elements;
//-----------------------------------------------------------------------------------------------------
CPPTUserInfo();
~CPPTUserInfo();
@ -140,12 +143,12 @@ public:
void LoadSlide(DWORD dwSlideID, CSlide* pSlide);
void LoadNotes(DWORD dwNotesID, CSlide* pSlide);
void LoadMasters(const LONG& lOriginWidth, const LONG& lOriginHeight);
void LoadMasters();
void LoadNoMainMaster (DWORD dwMasterID, const LONG& lOriginWidth, const LONG& lOriginHeight);
void LoadMainMaster (DWORD dwMasterID, const LONG& lOriginWidth, const LONG& lOriginHeight);
void LoadNoMainMaster (DWORD dwMasterID);
void LoadMainMaster (DWORD dwMasterID);
void LoadMaster(CRecordSlide* pMaster, CSlideInfo *& pMasterWrapper, CTheme *& pTheme);
void LoadMaster(_typeMaster type, CRecordSlide* pMaster, CSlideInfo *& pMasterWrapper, CThemePtr & pTheme);
void LoadSlideFromPrevUsers (DWORD dwSlideID);
void LoadMasterFromPrevUsers (DWORD dwSlideID);
@ -321,4 +324,7 @@ public:
CElementPtr AddThemeLayoutPlaceholder (CLayout *pLayout, int placeholderType, CTheme* pTheme, bool idx_only = false);
CElementPtr AddLayoutSlidePlaceholder (CSlide *pSlide, int placeholderType, CLayout *pLayout, bool idx_only = false);
void LoadGroupShapeContainer(CRecordGroupShapeContainer* pGroup, std::vector<CElementPtr>* pParentElements,
CTheme* pTheme, CLayout* pLayout, CSlideInfo* pThemeWrapper, CSlideInfo* pSlideWrapper, CSlide* pSlide = NULL);
};

View File

@ -146,7 +146,6 @@ class IRecord
public:
SRecordHeader m_oHeader;
public:
virtual ~IRecord(){}
virtual void ReadFromStream(SRecordHeader & oHeader, const CFStreamPtr &pStream) = 0;
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream) = 0;
@ -186,10 +185,8 @@ IRecord* CreateByType(SRecordHeader oHeader);
class CRecordsContainer : public CUnknownRecord
{
protected:
std::vector<IRecord*> m_arRecords;
public:
std::vector<IRecord*> m_arRecords;
CRecordsContainer() : m_arRecords()
{

View File

@ -53,8 +53,6 @@ public:
BOOL1 m_bShowComments;
public:
CRecordDocumentAtom()
{
}

View File

@ -47,14 +47,5 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
std::vector<CRecordGroupShapeContainer*> oArrayGroupContainer;
this->GetRecordsByType(&oArrayGroupContainer, false, false);
int nCountGroups = oArrayGroupContainer.size();
for (int i = 0; i < nCountGroups; ++i)
{
oArrayGroupContainer[i]->SetGroupRect();
}
}
};

View File

@ -37,7 +37,6 @@ class CRecordGroupShape : public CUnknownRecord
public:
RECT m_oBounds;
public:
CRecordGroupShape()
{
@ -55,10 +54,5 @@ public:
m_oBounds.top = StreamUtils::ReadLONG(pStream);
m_oBounds.right = StreamUtils::ReadLONG(pStream);
m_oBounds.bottom = StreamUtils::ReadLONG(pStream);
m_oBounds.left = (std::max)(0, (int)m_oBounds.left);
m_oBounds.top = (std::max)(0, (int)m_oBounds.top);
m_oBounds.right = (std::max)(0, (int)m_oBounds.right);
m_oBounds.bottom = (std::max)(0, (int)m_oBounds.bottom);
}
};

View File

@ -36,132 +36,16 @@
class CRecordGroupShapeContainer : public CRecordsContainer
{
private:
RECT m_rcGroupBounds;
RECT m_rcGroupClientAnchor;
public:
CRecordGroupShapeContainer()
{
m_rcGroupBounds.left = 0;
m_rcGroupBounds.top = 0;
m_rcGroupBounds.right = 0;
m_rcGroupBounds.bottom = 0;
m_rcGroupClientAnchor.left = 0;
m_rcGroupClientAnchor.top = 0;
m_rcGroupClientAnchor.right = 0;
m_rcGroupClientAnchor.bottom = 0;
}
~CRecordGroupShapeContainer()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
CRecordsContainer::ReadFromStream(oHeader, pStream);
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream);
// вот... а теперь нужно взять и узнать перерасчет системы координат
std::vector<CRecordShapeContainer*> oArrayShapes;
GetRecordsByType(&oArrayShapes, false, false);
if (!oArrayShapes.empty())
oArrayShapes[0]->bGroupShape = true;//тут описание самой группы
int nIndexBreak = -1;
for (size_t nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
{
std::vector<CRecordGroupShape*> oArrayGroupShapes;
oArrayShapes[nIndex]->GetRecordsByType(&oArrayGroupShapes, false, true);
if ( oArrayGroupShapes.size() > 0 )
{
m_rcGroupBounds.left = oArrayGroupShapes[0]->m_oBounds.left;
m_rcGroupBounds.top = oArrayGroupShapes[0]->m_oBounds.top;
m_rcGroupBounds.right = oArrayGroupShapes[0]->m_oBounds.right;
m_rcGroupBounds.bottom = oArrayGroupShapes[0]->m_oBounds.bottom;
std::vector<CRecordClientAnchor*> oArrayClients;
oArrayShapes[nIndex]->GetRecordsByType(&oArrayClients, false, true);
if ( oArrayClients.size() > 0)
{
m_rcGroupClientAnchor.left = (LONG)oArrayClients[0]->m_oBounds.Left;
m_rcGroupClientAnchor.top = (LONG)oArrayClients[0]->m_oBounds.Top;
m_rcGroupClientAnchor.right = (LONG)oArrayClients[0]->m_oBounds.Right;
m_rcGroupClientAnchor.bottom = (LONG)oArrayClients[0]->m_oBounds.Bottom;
}
else
{
std::vector<CRecordChildAnchor*> oArrayChilds;
oArrayShapes[nIndex]->GetRecordsByType(&oArrayChilds, false, true);
if ( oArrayChilds.size() > 0)
{
m_rcGroupClientAnchor.left = (LONG)oArrayChilds[0]->m_oBounds.left;
m_rcGroupClientAnchor.top = (LONG)oArrayChilds[0]->m_oBounds.top;
m_rcGroupClientAnchor.right = (LONG)oArrayChilds[0]->m_oBounds.right;
m_rcGroupClientAnchor.bottom = (LONG)oArrayChilds[0]->m_oBounds.bottom;
}
}
nIndexBreak = nIndex;
break;
}
}
LONG lW1 = m_rcGroupBounds.right - m_rcGroupBounds.left;
LONG lH1 = m_rcGroupBounds.bottom - m_rcGroupBounds.top;
LONG lW2 = m_rcGroupClientAnchor.right - m_rcGroupClientAnchor.left;
LONG lH2 = m_rcGroupClientAnchor.bottom - m_rcGroupClientAnchor.top;
bool bIsRecalc = ((lW1 > 0) && (lH1 > 0) && (lW2 > 0) && (lH2 > 0));
if (bIsRecalc)
{
for (size_t nIndex = 0; nIndex < oArrayShapes.size(); ++nIndex)
{
if (nIndex != nIndexBreak)
{
oArrayShapes[nIndex]->m_pGroupBounds = &m_rcGroupBounds;
oArrayShapes[nIndex]->m_pGroupClientAnchor = &m_rcGroupClientAnchor;
}
}
}
}
void SetGroupRect()
{
std::vector<CRecordGroupShapeContainer*> oArrayGroupContainer;
this->GetRecordsByType(&oArrayGroupContainer, false, false);
int nCountGroups = oArrayGroupContainer.size();
for (int i = 0; i < nCountGroups; ++i)
{
LONG lWidthGroup = m_rcGroupBounds.right - m_rcGroupBounds.left;
LONG lHeightGroup = m_rcGroupBounds.bottom - m_rcGroupBounds.top;
LONG lWidthClient = m_rcGroupClientAnchor.right - m_rcGroupClientAnchor.left;
LONG lHeightClient = m_rcGroupClientAnchor.bottom - m_rcGroupClientAnchor.top;
bool bIsRecalc = ((lWidthClient > 0) && (lHeightClient > 0) && (lWidthGroup > 0) && (lHeightGroup > 0));
if (bIsRecalc)
{
// здесь переводим координаты, чтобы они не зависили от группы
double dScaleX = (double)(lWidthClient) / (lWidthGroup);
double dScaleY = (double)(lHeightClient) / (lHeightGroup);
RECT* prcChildAnchor = &oArrayGroupContainer[i]->m_rcGroupClientAnchor;
prcChildAnchor->left = m_rcGroupClientAnchor.left + (LONG)(dScaleX * (prcChildAnchor->left - m_rcGroupBounds.left));
prcChildAnchor->right = m_rcGroupClientAnchor.left + (LONG)(dScaleX * (prcChildAnchor->right - m_rcGroupBounds.left));
prcChildAnchor->top = m_rcGroupClientAnchor.top + (LONG)(dScaleY * (prcChildAnchor->top - m_rcGroupBounds.top));
prcChildAnchor->bottom = m_rcGroupClientAnchor.top + (LONG)(dScaleY * (prcChildAnchor->bottom - m_rcGroupBounds.top));
}
oArrayGroupContainer[i]->SetGroupRect();
}
}
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -341,138 +341,6 @@
<References>
</References>
<Files>
<Filter
Name="Common"
>
<File
RelativePath="..\..\..\ASCOfficeXlsFile2\source\XlsFormat\Binary\CFRecord.cpp"
>
</File>
<File
RelativePath="..\..\..\ASCOfficeXlsFile2\source\XlsFormat\Binary\CFStream.cpp"
>
</File>
<File
RelativePath="..\..\..\XlsxSerializerCom\Reader\ChartFromToBinary.cpp"
>
</File>
<File
RelativePath="..\..\..\ASCOfficeDocxFile2\DocWrapper\ChartWriter.cpp"
>
</File>
<File
RelativePath="..\..\..\XlsxSerializerCom\Common\Common.cpp"
>
</File>
<File
RelativePath="..\..\..\XlsxSerializerCom\Reader\CommonWriter.cpp"
>
</File>
<File
RelativePath="..\..\..\XlsxSerializerCom\Reader\CSVReader.cpp"
>
</File>
<File
RelativePath="..\..\..\XlsxSerializerCom\Writer\CSVWriter.cpp"
>
</File>
<File
RelativePath="..\..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\Common\FileDownloader\FileDownloader_win.cpp"
>
</File>
<File
RelativePath="..\..\..\DesktopEditor\fontengine\FontManager.cpp"
>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
>
</File>
<File
RelativePath="..\..\..\UnicodeConverter\UnicodeConverter.cpp"
>
</File>
<File
RelativePath="..\..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\ASCOfficePPTXFile\Editor\xmlwriter.h"
>
</File>
<Filter
Name="pole"
>
<File
RelativePath="..\..\..\Common\3dParty\pole\pole.cpp"
>
</File>
<File
RelativePath="..\..\..\Common\3dParty\pole\pole.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="Reader"
>
@ -935,6 +803,10 @@
RelativePath="..\Records\Drawing\Shape.h"
>
</File>
<File
RelativePath="..\Records\Drawing\ShapeContainer.cpp"
>
</File>
<File
RelativePath="..\Records\Drawing\ShapeContainer.h"
>

View File

@ -44,7 +44,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../DesktopEditor/xml/build/vs2005;../../DesktopEditor/xml/libxml2/include"
AdditionalIncludeDirectories="../../DesktopEditor/xml/build/vs2005;../../DesktopEditor/xml/libxml2/include;&quot;../../DesktopEditor/freetype-2.5.2/include&quot;"
PreprocessorDefinitions="_DEBUG;_CONSOLE;_USE_MATH_DEFINES;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;USE_LITE_READER;_USE_XMLLITE_READER_;_PRESENTATION_WRITER_;_SVG_CONVERT_TO_IMAGE_;DONT_WRITE_EMBEDDED_FONTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@ -345,20 +345,48 @@
<Filter
Name="common"
>
<File
RelativePath="..\..\ASCOfficePPTXFile\Editor\BinaryFileReaderWriter.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\BinWriter\BinWriters.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Reader\ChartFromToBinary.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Common\Common.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Reader\CommonWriter.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Reader\CSVReader.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Writer\CSVWriter.cpp"
>
</File>
<File
RelativePath="..\..\Common\FileDownloader\FileDownloader_win.cpp"
>
</File>
<File
RelativePath="..\..\Common\OfficeFileFormatChecker2.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\BinReader\Readers.cpp"
RelativePath="..\..\Common\3dParty\pole\pole.cpp"
>
</File>
<File
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
RelativePath="..\..\ASCOfficeDocxFile2\BinReader\Readers.cpp"
>
</File>
<File
@ -370,10 +398,30 @@
>
</File>
</Filter>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\ChartWriter.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
>
</File>
<File
RelativePath="PptFormatTest.cpp"
>
</File>
<File
RelativePath="..\..\build\lib\win_32\UnicodeConverter.lib"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
>
</File>
</Files>
<Globals>
</Globals>

View File

@ -59,7 +59,6 @@
const double g_emu_koef = 25.4 * 36000 / 72.0;
using namespace NSGuidesVML;
void DUMP_MESSAGE_TO_FILE(const char* strMessage)
{
@ -853,6 +852,10 @@ bool CElementProps::CopyProperty(ASC_VARIANT& oDst, const ASC_VARIANT& oSrc)
}
return true;
}
namespace NSBinPptxRW
{
CDrawingConverter::CElement::CElement()
{
m_pElement = NULL;
@ -2864,6 +2867,8 @@ void CDrawingConverter::doc_LoadShape(PPTX::Logic::SpTreeElem *elem, XmlUtils::C
CheckPenShape(elem, oNodeShape, pPPTShape);
CheckBrushShape(elem, oNodeShape, pPPTShape);
CheckBorderShape(elem, oNodeShape, pPPTShape);
}
}
@ -3914,6 +3919,84 @@ void CDrawingConverter::SendMainProps(const std::wstring& strMainProps, std::wst
*pMainProps = new std::wstring();
**pMainProps = strMainProps;
}
void CDrawingConverter::CheckBorderShape(PPTX::Logic::SpTreeElem* oElem, XmlUtils::CXmlNode& oNode, CPPTShape* pPPTShape)
{
if (!oElem) return;
PPTX::Logic::Shape* pShape = dynamic_cast<PPTX::Logic::Shape*> (oElem->GetElem().operator ->());
PPTX::Logic::Pic* pPicture = dynamic_cast<PPTX::Logic::Pic*> (oElem->GetElem().operator ->());
PPTX::Logic::SpPr *pSpPr = NULL;
if (pShape) pSpPr = &pShape->spPr;
if (pPicture) pSpPr = &pPicture->spPr;
if (!pSpPr) return;
if ( (pSpPr->ln.IsInit()) && (pSpPr->ln->Fill.m_type != PPTX::Logic::UniFill::noFill) )
return; //дублирование обрамлением линией
nullable_string sColorBorder;
oNode.ReadAttributeBase(L"o:borderleftcolor", sColorBorder);
XmlUtils::CXmlNode oNodeBorder = oNode.ReadNode(L"w10:borderleft");
if (oNodeBorder.IsValid())
{
pSpPr->ln.Init();
nullable_int nWidthBorder;
oNode.ReadAttributeBase(L"width", nWidthBorder);
nullable_string sTypeBorder;
oNode.ReadAttributeBase(L"type", sTypeBorder);
if (sTypeBorder.IsInit())
{
SimpleTypes::CBorderType<> borderType;
borderType.FromString(sTypeBorder.get());
if (borderType.GetValue() > 0 &&
borderType.GetValue() < 6)
{
pSpPr->ln->prstDash.Init();
pSpPr->ln->prstDash->val = new PPTX::Limit::PrstDashVal();
switch(borderType.GetValue())
{
case SimpleTypes::bordertypeDash: pSpPr->ln->prstDash->val->SetBYTECode(3); break;
case SimpleTypes::bordertypeDashDotDot: pSpPr->ln->prstDash->val->SetBYTECode(5); break;
case SimpleTypes::bordertypeDashDotStroked: pSpPr->ln->prstDash->val->SetBYTECode(1); break;
case SimpleTypes::bordertypeDashedSmall: pSpPr->ln->prstDash->val->SetBYTECode(0); break;
case SimpleTypes::bordertypeDot: pSpPr->ln->prstDash->val->SetBYTECode(2); break;
case SimpleTypes::bordertypeDotDash: pSpPr->ln->prstDash->val->SetBYTECode(1); break;
}
}
}
if (nWidthBorder.IsInit())
{
pSpPr->ln->w = *nWidthBorder * g_emu_koef;//pt to emu
}
if (sColorBorder.IsInit())
{
PPTX::Logic::SolidFill* pSolid = new PPTX::Logic::SolidFill();
pSolid->m_namespace = L"a";
pSolid->Color.Color = new PPTX::Logic::SrgbClr();
if (std::wstring::npos != sColorBorder->find(L"#"))
{
pSolid->Color.Color->SetHexString(sColorBorder->substr(1));
}
else
{
//"red", L"black" , .. to color
}
pSpPr->ln->Fill.m_type = PPTX::Logic::UniFill::solidFill;
pSpPr->ln->Fill.Fill = pSolid;
}
}
}
void CDrawingConverter::CheckBrushShape(PPTX::Logic::SpTreeElem* oElem, XmlUtils::CXmlNode& oNode, CPPTShape* pPPTShape)
{
@ -5572,3 +5655,4 @@ void CDrawingConverter::SetFontManager(CFontManager* pFontManager)
m_pBinaryWriter->m_pCommon->m_pMediaManager->SetFontManager(pFontManager);
}
}
}

View File

@ -279,6 +279,7 @@ namespace NSBinPptxRW
void CheckBrushShape (PPTX::Logic::SpTreeElem* oElem, XmlUtils::CXmlNode& oNode, CPPTShape* pPPTShape);
void CheckPenShape (PPTX::Logic::SpTreeElem* oElem, XmlUtils::CXmlNode& oNode, CPPTShape* pPPTShape);
void CheckBorderShape (PPTX::Logic::SpTreeElem* oElem, XmlUtils::CXmlNode& oNode, CPPTShape* pPPTShape);
void LoadCoordSize (XmlUtils::CXmlNode& oNode, ::CShapePtr pShape);
void LoadCoordPos (XmlUtils::CXmlNode& oNode, ::CShapePtr pShape);

View File

@ -36,8 +36,6 @@
namespace PPTX2EditorAdvanced
{
using namespace NSBinPptxRW;
DWORD Convert(NSBinPptxRW::CBinaryFileWriter& oBinaryWriter, PPTX::Document& oFolder, const std::wstring& strSourceDirectory, const std::wstring& strDstFile, bool bIsNoBase64)
{
// сначала соберем все объекты для конвертации и сформируем main-таблицы
@ -74,8 +72,8 @@ namespace PPTX2EditorAdvanced
continue;
}
oBinaryWriter.m_pCommon->m_oRels.push_back (_masterSlideInfo());
_masterSlideInfo& oMasterInfo = oBinaryWriter.m_pCommon->m_oRels[oBinaryWriter.m_pCommon->m_oRels.size() - 1];
oBinaryWriter.m_pCommon->m_oRels.push_back (NSBinPptxRW::_masterSlideInfo());
NSBinPptxRW::_masterSlideInfo& oMasterInfo = oBinaryWriter.m_pCommon->m_oRels[oBinaryWriter.m_pCommon->m_oRels.size() - 1];
// записываем mainMaster
LONG lCountSM = (LONG)_slideMasters.size();
@ -232,7 +230,7 @@ namespace PPTX2EditorAdvanced
if (bIsNoBase64)
{
std::wstring strPrefix = L"PPTY;v"+std::to_wstring(g_nFormatVersionNoBase64)+L";0;";
std::wstring strPrefix = L"PPTY;v"+std::to_wstring(NSBinPptxRW::g_nFormatVersionNoBase64)+L";0;";
oBinaryWriter.WriteStringUtf8(strPrefix);
}
_UINT32 nStartPos = oBinaryWriter.GetPosition();
@ -242,15 +240,15 @@ namespace PPTX2EditorAdvanced
oBinaryWriter.WriteReserved(5 * 30);
// Main
oBinaryWriter.StartMainRecord(NSMainTables::Main);
oBinaryWriter.WriteULONG(NSSerFormat::Signature);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::Main);
oBinaryWriter.WriteULONG(NSBinPptxRW::NSSerFormat::Signature);
oBinaryWriter.WriteULONG(0);
// App
smart_ptr<PPTX::App> app = oFolder.Get(OOX::FileTypes::App).smart_dynamic_cast<PPTX::App>();
if (app.is_init())
{
oBinaryWriter.StartMainRecord(NSMainTables::App);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::App);
app->toPPTY(&oBinaryWriter);
}
@ -258,7 +256,7 @@ namespace PPTX2EditorAdvanced
smart_ptr<PPTX::Core> core = oFolder.Get(OOX::FileTypes::Core).smart_dynamic_cast<PPTX::Core>();
if (core.is_init())
{
oBinaryWriter.StartMainRecord(NSMainTables::Core);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::Core);
core->toPPTY(&oBinaryWriter);
}
@ -266,7 +264,7 @@ namespace PPTX2EditorAdvanced
smart_ptr<PPTX::PresProps> presProps = presentation->Get(OOX::Presentation::FileTypes::PresProps).smart_dynamic_cast<PPTX::PresProps>();
if (presProps.is_init())
{
oBinaryWriter.StartMainRecord(NSMainTables::PresProps);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::PresProps);
presProps->toPPTY(&oBinaryWriter);
}
@ -274,7 +272,7 @@ namespace PPTX2EditorAdvanced
smart_ptr<PPTX::ViewProps> viewProps = presentation->Get(OOX::Presentation::FileTypes::ViewProps).smart_dynamic_cast<PPTX::ViewProps>();
if (viewProps.is_init())
{
oBinaryWriter.StartMainRecord(NSMainTables::ViewProps);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::ViewProps);
viewProps->toPPTY(&oBinaryWriter);
}
@ -282,16 +280,16 @@ namespace PPTX2EditorAdvanced
smart_ptr<PPTX::TableStyles> tablestyles = presentation->Get(OOX::Presentation::FileTypes::TableStyles).smart_dynamic_cast<PPTX::TableStyles>();
if (tablestyles.is_init())
{
oBinaryWriter.StartMainRecord(NSMainTables::TableStyles);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::TableStyles);
tablestyles->toPPTY(&oBinaryWriter);
}
// Presentation
oBinaryWriter.StartMainRecord(NSMainTables::Presentation);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::Presentation);
presentation->toPPTY(&oBinaryWriter);
// themes
oBinaryWriter.StartMainRecord(NSMainTables::Themes);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::Themes);
ULONG nCountThemes = 0;
for (size_t i = 0; i < _themes.size(); ++i)
@ -307,7 +305,7 @@ namespace PPTX2EditorAdvanced
}
// slidemasters
oBinaryWriter.StartMainRecord(NSMainTables::SlideMasters);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::SlideMasters);
ULONG nCountSM = 0;
for (size_t i = 0; i < _slideMasters.size(); ++i)
@ -324,7 +322,7 @@ namespace PPTX2EditorAdvanced
}
// slidelayouts
oBinaryWriter.StartMainRecord(NSMainTables::SlideLayouts);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::SlideLayouts);
ULONG nCountL = 0;
for (size_t i = 0; i < _layouts.size(); ++i)
@ -341,7 +339,7 @@ namespace PPTX2EditorAdvanced
}
// slides
oBinaryWriter.StartMainRecord(NSMainTables::Slides);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::Slides);
ULONG nCountS = 0;
for (size_t i = 0; i < _slides.size(); ++i)
@ -358,7 +356,7 @@ namespace PPTX2EditorAdvanced
}
// notes
oBinaryWriter.StartMainRecord(NSMainTables::NotesSlides);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::NotesSlides);
ULONG nCountN = (ULONG)_notes.size();
oBinaryWriter.WriteULONG(nCountN);
for (ULONG i = 0; i < nCountN; ++i)
@ -367,7 +365,7 @@ namespace PPTX2EditorAdvanced
}
// notesmasters
oBinaryWriter.StartMainRecord(NSMainTables::NotesMasters);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::NotesMasters);
ULONG nCountNM = (ULONG)_notesMasters.size();
oBinaryWriter.WriteULONG(nCountNM);
for (ULONG i = 0; i < nCountNM; ++i)
@ -376,8 +374,8 @@ namespace PPTX2EditorAdvanced
}
// ImageMap ---------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::ImageMap);
oBinaryWriter.StartRecord(NSMainTables::ImageMap);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::ImageMap);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::ImageMap);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
std::map<std::wstring, NSShapeImageGen::CMediaInfo>* pIMaps = &oBinaryWriter.m_pCommon->m_pMediaManager->m_mapMediaFiles;
@ -396,8 +394,8 @@ namespace PPTX2EditorAdvanced
// ------------------------------------------------
// FontMap ----------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::FontMap);
oBinaryWriter.StartRecord(NSMainTables::FontMap);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::FontMap);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::FontMap);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
std::map<std::wstring, std::wstring>* pFMaps = &oBinaryWriter.m_pCommon->m_pNativePicker->m_mapPicks;
@ -417,8 +415,8 @@ namespace PPTX2EditorAdvanced
if (TRUE)
{
// SlideRels --------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::SlideRels);
oBinaryWriter.StartRecord(NSMainTables::SlideRels);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::SlideRels);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::SlideRels);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
size_t _s_rels = oBinaryWriter.m_pCommon->m_oSlide_Layout_Rels.size();
@ -432,8 +430,8 @@ namespace PPTX2EditorAdvanced
// ------------------------------------------------
// SlideNotesRels --------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::SlideNotesRels);
oBinaryWriter.StartRecord(NSMainTables::SlideNotesRels);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::SlideNotesRels);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::SlideNotesRels);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
_s_rels = oBinaryWriter.m_pCommon->m_oSlide_Notes_Rels.size();
@ -447,8 +445,8 @@ namespace PPTX2EditorAdvanced
// ------------------------------------------------
// ThemeRels --------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::ThemeRels);
oBinaryWriter.StartRecord(NSMainTables::ThemeRels);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::ThemeRels);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::ThemeRels);
std::vector <NSBinPptxRW::_masterSlideInfo>& th_rels = oBinaryWriter.m_pCommon->m_oRels;
oBinaryWriter.WriteULONG((ULONG)th_rels.size());
@ -486,8 +484,8 @@ namespace PPTX2EditorAdvanced
// ------------------------------------------------
// NoteRels --------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::NotesRels);
oBinaryWriter.StartRecord(NSMainTables::NotesRels);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::NotesRels);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::NotesRels);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
_s_rels = oBinaryWriter.m_pCommon->m_oNote_Rels.size();
@ -501,8 +499,8 @@ namespace PPTX2EditorAdvanced
// ------------------------------------------------
// NoteRels --------------------------------------
oBinaryWriter.StartMainRecord(NSMainTables::NotesMastersRels);
oBinaryWriter.StartRecord(NSMainTables::NotesMastersRels);
oBinaryWriter.StartMainRecord(NSBinPptxRW::NSMainTables::NotesMastersRels);
oBinaryWriter.StartRecord(NSBinPptxRW::NSMainTables::NotesMastersRels);
oBinaryWriter.WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
_s_rels = oBinaryWriter.m_pCommon->m_oNotesMasters_Rels.size();

View File

@ -472,7 +472,7 @@ namespace NSPresentationEditor
public:
CColor Color;
long Alpha;
double Size;
long Size;
unsigned char DashStyle;
unsigned char LineStyle;
@ -579,7 +579,7 @@ namespace NSPresentationEditor
void SetDefaultParams()
{
Alpha = 255;
Size = 0.26458;
Size = 9524;
LineStyle = 0; //single(Simple)
DashStyle = 0; //Solid
@ -896,9 +896,8 @@ namespace NSPresentationEditor
bool StringGID;
double CharSpace;
std::wstring PitchFamily;
BYTE PitchFamily;
BYTE Charset;
std::wstring Panose;
bool Monospace;
bool IsEqual(CFont* pFont)
@ -962,9 +961,8 @@ namespace NSPresentationEditor
StringGID = false;
CharSpace = 0.0;
PitchFamily = _T("");
PitchFamily = 0;
Charset = 0;
Panose = _T("");
Monospace = false;
}
@ -991,7 +989,6 @@ namespace NSPresentationEditor
PitchFamily = other.PitchFamily;
Charset = other.Charset;
Panose = other.Panose;
Monospace = other.Monospace;
return *this;

View File

@ -39,39 +39,43 @@ namespace NSPresentationEditor
class CDocument
{
public:
std::vector<CTheme> m_arThemes;
long m_lSlideWidth;
long m_lSlideHeight;
long m_lNotesWidth;
long m_lNotesHeight;
std::vector<CThemePtr> m_arThemes;
std::vector<CSlide*> m_arSlides;
std::vector<CSlide*> m_arNotes;
CTheme* m_pNotesMaster;
CTheme* m_pHandoutMaster;
CMetricInfo m_oInfo;
CThemePtr m_pNotesMaster;
CThemePtr m_pHandoutMaster;
bool m_bMacros;
std::wstring m_sVbaProjectFile;
CDocument() : m_bMacros (false)
{
m_pHandoutMaster = NULL;
m_pNotesMaster = NULL;
{
m_lSlideWidth = 0;
m_lSlideHeight = 0;
m_lNotesWidth = 0;
m_lNotesHeight = 0;
}
~CDocument()
virtual ~CDocument()
{
Clear();
}
inline void Clear()
void Clear()
{
m_arThemes.clear();
try
{
ClearSlides();
ClearNotes();
RELEASEOBJECT(m_pHandoutMaster);
RELEASEOBJECT(m_pNotesMaster);
}catch(...)
{
}
@ -175,19 +179,14 @@ namespace NSPresentationEditor
}
}
void CalculateEditor(const NSPresentationEditor::CMetricInfo& oInfo, bool bIsPlaceholderSetUp = false)
void CalculateEditor(bool bIsPlaceholderSetUp = false)
{
// автозамены и поля настраиваем тут во избежания путаницы
m_oInfo = oInfo;
double dScaleX = (double)m_oInfo.m_lMillimetresHor / m_oInfo.m_lUnitsHor;
double dScaleY = (double)m_oInfo.m_lMillimetresVer / m_oInfo.m_lUnitsVer;
size_t nCountThemes = m_arThemes.size();
for (size_t i = 0; i < nCountThemes; ++i)
{
CTheme* pTheme = &m_arThemes[i];
CTheme* pTheme = m_arThemes[i].get();
pTheme->CalculateStyles();
size_t nCountElems = pTheme->m_arElements.size();
@ -201,20 +200,12 @@ namespace NSPresentationEditor
}
pElement->m_pTheme = pTheme;
pElement->m_pLayout = NULL;
pElement->m_oMetric = m_oInfo;
pElement->NormalizeCoords(dScaleX, dScaleY);
}
size_t nCountLayouts = pTheme->m_arLayouts.size();
for (size_t nIndexL = 0; nIndexL < nCountLayouts; ++nIndexL)
{
CLayout* pLayout = &pTheme->m_arLayouts[nIndexL];
pLayout->m_lOriginalWidth = m_oInfo.m_lUnitsHor;
pLayout->m_lOriginalHeight = m_oInfo.m_lUnitsVer;
pLayout->m_lWidth = m_oInfo.m_lMillimetresHor;
pLayout->m_lHeight = m_oInfo.m_lMillimetresVer;
CLayout* pLayout = pTheme->m_arLayouts[nIndexL].get();
size_t nCountLayoutElements = pLayout->m_arElements.size();
for (size_t nIndexLayoutEl = 0; nIndexLayoutEl < nCountLayoutElements; ++nIndexLayoutEl)
@ -226,9 +217,6 @@ namespace NSPresentationEditor
ResetAutoText(pElement, pLayout->m_PlaceholdersReplaceString);
}
pElement->m_oMetric = m_oInfo;
pElement->NormalizeCoords(dScaleX, dScaleY);
pElement->m_pTheme = pTheme;
pElement->m_pLayout = NULL;
@ -282,20 +270,15 @@ namespace NSPresentationEditor
{
CSlide* pSlide = m_arSlides[i];
pSlide->m_lOriginalWidth = m_oInfo.m_lUnitsHor;
pSlide->m_lOriginalHeight = m_oInfo.m_lUnitsVer;
pSlide->m_lWidth = m_oInfo.m_lMillimetresHor;
pSlide->m_lHeight = m_oInfo.m_lMillimetresVer;
CTheme* pTheme = NULL;
if ((0 <= pSlide->m_lThemeID) && (pSlide->m_lThemeID < (LONG)nCountThemes))
pTheme = &m_arThemes[pSlide->m_lThemeID];
pTheme = m_arThemes[pSlide->m_lThemeID].get();
CLayout* pLayout = NULL;
if (NULL != pTheme)
{
if ((0 <= pSlide->m_lLayoutID) && (pSlide->m_lLayoutID < (LONG)pTheme->m_arLayouts.size()))
pLayout = &pTheme->m_arLayouts[pSlide->m_lLayoutID];
pLayout = pTheme->m_arLayouts[pSlide->m_lLayoutID].get();
}
size_t nCountElems = pSlide->m_arElements.size();
@ -310,7 +293,6 @@ namespace NSPresentationEditor
pElement->m_pTheme = pTheme;
pElement->m_pLayout = pLayout;
pElement->m_oMetric = m_oInfo;
}
if (NULL != pLayout && bIsPlaceholderSetUp)

View File

@ -38,11 +38,12 @@ namespace NSPresentationEditor
{
enum ElementType
{
etVideo = 0,
etAudio = 1,
etPicture = 2,
etShape = 3,
etText = 4
etGroup = 0,
etVideo = 1,
etAudio = 2,
etPicture = 3,
etShape = 4,
etText = 5
};
enum enumPlaceholderType
@ -124,17 +125,22 @@ namespace NSPresentationEditor
class CLayout;
class CSlide;
class CElement;
typedef boost::shared_ptr<CElement> CElementPtr;
class CElement;
typedef boost::shared_ptr<CElement> CElementPtr;
class CElement
{
public:
ElementType m_etType;
CDoubleRect m_rcBounds;
CDoubleRect m_rcBoundsOriginal;
bool m_bBoundsEnabled;
CDoubleRect m_rcChildAnchor;
CDoubleRect m_rcAnchor;
CDoubleRect m_rcGroupAnchor;
bool m_bChildAnchorEnabled;
bool m_bAnchorEnabled;
bool m_bGroupAnchorEnabled;
double m_dStartTime;
double m_dEndTime;
@ -158,9 +164,6 @@ typedef boost::shared_ptr<CElement> CElementPtr;
int m_lPlaceholderUserStr;
int m_nFormatDate;
// метрика
CMetricInfo m_oMetric;
double m_dRotate; // угол поворота в градусах
bool m_bFlipH; // симметричное отражение относительно горизонтальной оси
bool m_bFlipV; // симметричное отражение относительно вертикальной оси
@ -171,8 +174,6 @@ typedef boost::shared_ptr<CElement> CElementPtr;
bool m_bHaveAnchor;
bool m_bHidden;
bool m_bIsChangeable; // можно ли редактировать элемент
CTheme* m_pTheme;
CLayout* m_pLayout;
@ -181,14 +182,19 @@ typedef boost::shared_ptr<CElement> CElementPtr;
std::wstring m_sHyperlink;
std::vector<CElementPtr>* m_pParentElements;
std::vector<CElementPtr> m_pChildElements;
CElement()
{
m_bIsBackground = false;
m_bHaveAnchor = true;
m_bHidden = false;
m_bIsChangeable = true;
m_bChildAnchorEnabled = false;
m_bAnchorEnabled = false;
m_bGroupAnchorEnabled = false;
m_lID = -1;
m_lLayoutID = -1;
@ -199,20 +205,8 @@ typedef boost::shared_ptr<CElement> CElementPtr;
m_lPlaceholderUserStr = -1;
m_nFormatDate = 1;
m_etType = etPicture;
m_bBoundsEnabled = true;
m_rcBounds.left = 0;
m_rcBounds.top = 0;
m_rcBounds.right = 1;
m_rcBounds.bottom = 1;
m_rcBoundsOriginal.left = 0;
m_rcBoundsOriginal.top = 0;
m_rcBoundsOriginal.right = 1;
m_rcBoundsOriginal.bottom = 1;
m_etType = etShape;
m_dStartTime = 0.0;
m_dEndTime = 30.0;
@ -223,28 +217,12 @@ typedef boost::shared_ptr<CElement> CElementPtr;
m_pTheme = NULL;
m_pLayout = NULL;
m_pParentElements = NULL;
}
virtual ~CElement()
{
}
virtual void NormalizeCoords(double dScaleX, double dScaleY)
{
m_rcBounds.left = dScaleX * m_rcBoundsOriginal.left;
m_rcBounds.right = dScaleX * m_rcBoundsOriginal.right;
m_rcBounds.top = dScaleY * m_rcBoundsOriginal.top;
m_rcBounds.bottom = dScaleY * m_rcBoundsOriginal.bottom;
}
virtual void NormalizeCoordsByMetric()
{
double dScaleX = (double)m_oMetric.m_lUnitsHor / m_oMetric.m_lMillimetresHor;
double dScaleY = (double)m_oMetric.m_lUnitsVer / m_oMetric.m_lMillimetresVer;
m_rcBoundsOriginal.left = dScaleX * m_rcBounds.left;
m_rcBoundsOriginal.right = dScaleX * m_rcBounds.right;
m_rcBoundsOriginal.top = dScaleY * m_rcBounds.top;
m_rcBoundsOriginal.bottom = dScaleY * m_rcBounds.bottom;
}
virtual CElementPtr CreateDublicate() = 0;
virtual void SetProperiesToDublicate(CElementPtr pDublicate)
@ -252,18 +230,19 @@ typedef boost::shared_ptr<CElement> CElementPtr;
if (!pDublicate)
return;
pDublicate->m_bBoundsEnabled = m_bBoundsEnabled;
pDublicate->m_bIsBackground = m_bIsBackground;
pDublicate->m_bHaveAnchor = m_bHaveAnchor;
pDublicate->m_bHidden = m_bHidden;
pDublicate->m_bIsChangeable = m_bIsChangeable;
pDublicate->m_etType = m_etType;
pDublicate->m_rcBounds = m_rcBounds;
pDublicate->m_rcBoundsOriginal = m_rcBoundsOriginal;
pDublicate->m_rcChildAnchor = m_rcChildAnchor;
pDublicate->m_rcAnchor = m_rcAnchor;
pDublicate->m_rcGroupAnchor = m_rcGroupAnchor;
pDublicate->m_bChildAnchorEnabled = m_bChildAnchorEnabled;
pDublicate->m_bAnchorEnabled = m_bAnchorEnabled;
pDublicate->m_bGroupAnchorEnabled = m_bGroupAnchorEnabled;
pDublicate->m_dStartTime = m_dStartTime;
pDublicate->m_dEndTime = m_dEndTime;
@ -284,8 +263,6 @@ typedef boost::shared_ptr<CElement> CElementPtr;
pDublicate->m_lPlaceholderUserStr = m_lPlaceholderUserStr;
pDublicate->m_nFormatDate = m_nFormatDate;
pDublicate->m_oMetric = m_oMetric;
pDublicate->m_dRotate = m_dRotate;
pDublicate->m_bFlipH = m_bFlipH;
pDublicate->m_bFlipV = m_bFlipV;
@ -298,5 +275,16 @@ typedef boost::shared_ptr<CElement> CElementPtr;
pDublicate->m_oBrush = m_oBrush;
pDublicate->m_oShadow = m_oShadow;
}
void NormalizeCoordsByMetric()
{
if (!m_bAnchorEnabled) return;
double dScale = 1587.5; //master to emu
m_rcAnchor.left = dScale * m_rcAnchor.left;
m_rcAnchor.right = dScale * m_rcAnchor.right;
m_rcAnchor.top = dScale * m_rcAnchor.top;
m_rcAnchor.bottom = dScale * m_rcAnchor.bottom;
}
};
}

View File

@ -408,7 +408,7 @@ namespace NSPresentationEditor
m_pShape = CShapePtr( new CShape(ClassType, eType));
m_pShape->m_rcBounds = m_rcBounds;
m_pShape->m_rcBounds = m_bChildAnchorEnabled ? m_rcChildAnchor : m_rcAnchor;
m_pShape->m_dStartTime = m_dStartTime;
m_pShape->m_dStartTime = m_dEndTime;
@ -436,18 +436,18 @@ namespace NSPresentationEditor
m_ClassType = m_pShape->getBaseShape()->GetClassType();
}
virtual void NormalizeCoordsByMetric()
{
CElement::NormalizeCoordsByMetric();
//virtual void NormalizeCoordsByMetric()
//{
// CElement::NormalizeCoordsByMetric();
double dScaleX = (double)m_oMetric.m_lUnitsHor / m_oMetric.m_lMillimetresHor;
double dScaleY = (double)m_oMetric.m_lUnitsVer / m_oMetric.m_lMillimetresVer;
// double dScaleX = (double)m_oMetric.m_lUnitsHor / m_oMetric.m_lMillimetresHor;
// double dScaleY = (double)m_oMetric.m_lUnitsVer / m_oMetric.m_lMillimetresVer;
m_pShape->m_oText.m_oBounds.left = (int)(dScaleX * m_pShape->m_oText.m_oBounds.left);
m_pShape->m_oText.m_oBounds.right = (int)(dScaleX * m_pShape->m_oText.m_oBounds.right);
m_pShape->m_oText.m_oBounds.top = (int)(dScaleY * m_pShape->m_oText.m_oBounds.top);
m_pShape->m_oText.m_oBounds.bottom = (int)(dScaleY * m_pShape->m_oText.m_oBounds.bottom);
}
// m_pShape->m_oText.m_oBounds.left = (int)(dScaleX * m_pShape->m_oText.m_oBounds.left);
// m_pShape->m_oText.m_oBounds.right = (int)(dScaleX * m_pShape->m_oText.m_oBounds.right);
// m_pShape->m_oText.m_oBounds.top = (int)(dScaleY * m_pShape->m_oText.m_oBounds.top);
// m_pShape->m_oText.m_oBounds.bottom = (int)(dScaleY * m_pShape->m_oText.m_oBounds.bottom);
//}
virtual ~CShapeElement()
{
}
@ -794,5 +794,33 @@ namespace NSPresentationEditor
}
};
class CGroupElement : public CElement
{
public:
CGroupElement() : CElement()
{
m_etType = etGroup;
}
virtual ~CGroupElement()
{
}
virtual CElementPtr CreateDublicate()
{
CGroupElement* pGroupElement = new CGroupElement();
CElementPtr pElement = CElementPtr( pGroupElement );
SetProperiesToDublicate(pElement);
return pElement;
}
AVSINLINE std::wstring ConvertPPTShapeToPPTX(bool bIsNamespace = false)
{
return L"";
}
};
}

View File

@ -37,25 +37,17 @@ namespace NSPresentationEditor
class CLayout
{
public:
std::vector<CElementPtr>m_arElements;
std::vector<CColor> m_arColorScheme;
std::multimap<int,int> m_mapPlaceholders;
std::vector<CElementPtr> m_arElements;
std::vector<CColor> m_arColorScheme;
std::multimap<int, CElementPtr> m_mapPlaceholders;
bool m_bIsTitleMaster;
bool m_bUseThemeColorScheme;
// "настоящие"(в логической системе координат), чтобы масштабировать
long m_lOriginalWidth;
long m_lOriginalHeight;
bool m_bIsBackground;
CBrush m_oBackground;
// размеры в миллиметрах
long m_lWidth;
long m_lHeight;
CMetricInfo m_oInfo;
bool m_bHasDate;
bool m_bHasSlideNumber;
bool m_bHasFooter;
@ -71,65 +63,12 @@ namespace NSPresentationEditor
{
Clear();
}
CLayout(const CLayout& oSrc)
{
*this = oSrc;
}
CLayout& operator=(const CLayout& oSrc)
{
Clear();
size_t nCount = oSrc.m_arElements.size();
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
{
m_arElements.push_back(oSrc.m_arElements[nIndex]->CreateDublicate());
}
m_mapPlaceholders = oSrc.m_mapPlaceholders;
m_arColorScheme = oSrc.m_arColorScheme;
m_bUseThemeColorScheme = oSrc.m_bUseThemeColorScheme;
m_lOriginalWidth = oSrc.m_lOriginalWidth;
m_lOriginalHeight = oSrc.m_lOriginalHeight;
m_lWidth = oSrc.m_lWidth;
m_lHeight = oSrc.m_lHeight;
m_bIsBackground = oSrc.m_bIsBackground;
m_oBackground = oSrc.m_oBackground;
m_bHasDate = oSrc.m_bHasDate;
m_bHasSlideNumber = oSrc.m_bHasSlideNumber;
m_bHasFooter = oSrc.m_bHasFooter;
m_nFormatDate = oSrc.m_nFormatDate;
for (int i = 0 ; i < 3 ; i++)
m_PlaceholdersReplaceString[i] = oSrc.m_PlaceholdersReplaceString[i];
m_bShowMasterShapes = oSrc.m_bShowMasterShapes;
m_strLayoutType = oSrc.m_strLayoutType;
m_sName = oSrc.m_sName;
return *this;
}
void SetMetricInfo(const CMetricInfo& oInfo)
{
m_oInfo = oInfo;
m_lWidth = m_oInfo.m_lMillimetresHor;
m_lHeight = m_oInfo.m_lMillimetresVer;
m_lOriginalWidth = m_oInfo.m_lUnitsHor;
m_lOriginalHeight = m_oInfo.m_lUnitsVer;
}
void Clear()
{
m_arElements.clear();
m_mapPlaceholders.clear();
m_bIsTitleMaster = false;
m_bHasDate = false;
m_bHasSlideNumber = false;
@ -143,8 +82,6 @@ namespace NSPresentationEditor
m_bShowMasterShapes = true;
m_strLayoutType = _T("obj");
m_bIsBackground = false;
m_lWidth = m_lHeight = m_lOriginalWidth = m_lOriginalHeight = 0;
}
void CreateDublicateElements()
@ -161,13 +98,6 @@ namespace NSPresentationEditor
}
}
CLayout* CreateDublicate()
{
CLayout* pNew = new CLayout(*this);
pNew->CreateDublicateElements();
return pNew;
}
CElementPtr GetPlaceholder(LONG lID)
{
size_t nCount = m_arElements.size();
@ -241,5 +171,6 @@ namespace NSPresentationEditor
lTypeStyle = 0;
}
}
};
};
typedef boost::shared_ptr<CLayout> CLayoutPtr;
}

View File

@ -37,49 +37,6 @@
namespace NSPresentationEditor
{
const double c_dMasterUnitsToInchKoef = 1.0 / 576;
const double c_dInchToMillimetreKoef = 25.4;
const double c_dMasterUnitsToMillimetreKoef = c_dMasterUnitsToInchKoef * c_dInchToMillimetreKoef;
class CMetricInfo
{
public:
DWORD m_lUnitsHor;
DWORD m_lUnitsVer;
DWORD m_lMillimetresHor;
DWORD m_lMillimetresVer;
public:
CMetricInfo()
{
m_lUnitsHor = 5000;
m_lUnitsVer = 5000;
m_lMillimetresHor = 5000;
m_lMillimetresVer = 5000;
}
CMetricInfo& operator =(const CMetricInfo& oSrc)
{
m_lUnitsHor = oSrc.m_lUnitsHor;
m_lUnitsVer = oSrc.m_lUnitsVer;
m_lMillimetresHor = oSrc.m_lMillimetresHor;
m_lMillimetresVer = oSrc.m_lMillimetresVer;
return *this;
}
void SetUnitsContainerSize(DWORD lSizeX, DWORD lSizeY)
{
m_lUnitsHor = lSizeX;
m_lUnitsVer = lSizeY;
m_lMillimetresHor = (DWORD)(m_lUnitsHor * c_dMasterUnitsToMillimetreKoef);
m_lMillimetresVer = (DWORD)(m_lUnitsVer * c_dMasterUnitsToMillimetreKoef);
}
};
class CDoubleRect
{
public:
@ -88,13 +45,18 @@ namespace NSPresentationEditor
double right;
double bottom;
public:
CDoubleRect()
{
void Clear()
{
left = 0;
top = 0;
right = 0;
bottom = 0;
bottom = 0;
}
CDoubleRect()
{
Clear();
}
CDoubleRect& operator=(const CDoubleRect& oSrc)
{
@ -140,11 +102,15 @@ namespace NSPresentationEditor
public:
double dX;
double dY;
public:
CPointD()
{
void Clear()
{
dX = 0;
dY = 0;
}
CPointD()
{
Clear();
}
CPointD& operator= (const CPointD& oSrc)
@ -161,7 +127,7 @@ namespace NSPresentationEditor
}
};
public:
double m_dLeft;
double m_dTop;
double m_dWidth;
@ -180,9 +146,8 @@ namespace NSPresentationEditor
LONG m_lOriginalWidth;
LONG m_lOriginalHeight;
public:
CGeomShapeInfo()
{
void Clear()
{
m_dLeft = 0;
m_dTop = 0;
m_dWidth = 720;
@ -200,6 +165,11 @@ namespace NSPresentationEditor
m_lOriginalWidth = 0;
m_lOriginalHeight = 0;
}
CGeomShapeInfo()
{
Clear();
}
~CGeomShapeInfo()
{

View File

@ -109,10 +109,10 @@ namespace NSPresentationEditor
virtual bool SetAdjustment(long index, long value) = 0;
virtual void ReCalculate() = 0;
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, CMetricInfo& MetricInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen) = 0;
virtual void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo)
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen) = 0;
virtual void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore)
{
m_oPath.ToRenderer(pRenderer, pGeomInfo, dStartTime, dEndTime, pPen, pFore, pInfo, GetClassType());
m_oPath.ToRenderer(pRenderer, pGeomInfo, dStartTime, dEndTime, pPen, pFore, GetClassType());
}
virtual void SetWidthHeightLogic(const double& dWidth, const double& dHeight)

View File

@ -131,9 +131,6 @@ namespace NSPresentationEditor
m_bStroke = (1 == XmlUtils::GetInteger(oXmlNode.GetAttributeOrValue(_T("stroke"), _T("0"))));
m_bFill = (1 == XmlUtils::GetInteger(oXmlNode.GetAttributeOrValue(_T("fill"), _T("0"))));
m_dWidthMM = XmlUtils::GetDouble(oXmlNode.GetAttributeOrValue(_T("widthmm"), _T("210")));
m_dHeightMM = XmlUtils::GetDouble(oXmlNode.GetAttributeOrValue(_T("heightmm"), _T("190")));
m_dAngle = XmlUtils::GetDouble(oXmlNode.GetAttributeOrValue(_T("angle"), _T("0")));
m_lFlags = XmlUtils::GetInteger(oXmlNode.GetAttributeOrValue(_T("flags"), _T("0")));
@ -169,9 +166,6 @@ namespace NSPresentationEditor
m_bFill = false;
m_bStroke = true;
m_dWidthMM = 210;
m_dHeightMM = 190;
m_dAngle = 0;
m_lFlags = 0;
}
@ -188,10 +182,7 @@ namespace NSPresentationEditor
if (NULL == pRenderer)
return;
pRenderer->put_Width((float)m_dWidthMM);
pRenderer->put_Height((float)m_dHeightMM);
// вообще можно каждый раз выставлять pen/brush.
// вообще можно каждый раз выставлять pen/brush.
// но у нас сейчас pen и brush выставляются в shape
pRenderer->SetCommandParams(m_dAngle, m_oBounds.left, m_oBounds.top, m_oBounds.GetWidth(), m_oBounds.GetHeight(), m_lFlags);
@ -919,8 +910,6 @@ namespace NSPresentationEditor
bool m_bFill;
bool m_bStroke;
double m_dWidthMM;
double m_dHeightMM;
double m_dAngle;
CDoubleRect m_oBounds;

View File

@ -34,8 +34,6 @@
#include "PptShape.h"
#include "PresetShapesHeader.h"
const double EMU_MM = 36000;
//-------------------------------------------------------------------------------
#define CREATE_BY_SPT(SHAPE_TYPE, CLASS_SHAPE_NAME) \
case SHAPE_TYPE: { pShape = new CLASS_SHAPE_NAME(); break; } \

View File

@ -231,7 +231,7 @@ public:
return FALSE;
}
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, CMetricInfo& MetricInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen)
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen)
{
if ((_T("") != m_strPathLimoX) || _T("") != m_strPathLimoY)
{
@ -240,7 +240,7 @@ public:
m_oPath.SetCoordsize(21600, 21600);
}
return m_oPath.ToXml(GeomInfo, StartTime, EndTime, Pen, Brush, MetricInfo, NSBaseShape::ppt);
return m_oPath.ToXml(GeomInfo, StartTime, EndTime, Pen, Brush, NSBaseShape::ppt);
}
virtual void ReCalculate()

View File

@ -485,19 +485,19 @@ public:
return FALSE;
}
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, CMetricInfo& MetricInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen)
virtual std::wstring ToXML(CGeomShapeInfo& GeomInfo, double StartTime, double EndTime, CBrush& Brush, CPen& Pen)
{
FManager.SetWidthHeight(GeomInfo.m_dWidth, GeomInfo.m_dHeight);
ReCalculate();
return m_oPath.ToXml(GeomInfo, StartTime, EndTime, Pen, Brush, MetricInfo, NSBaseShape::pptx);
return m_oPath.ToXml(GeomInfo, StartTime, EndTime, Pen, Brush, NSBaseShape::pptx);
}
virtual void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo)
virtual void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore)
{
FManager.SetWidthHeight(pGeomInfo.m_dWidth, pGeomInfo.m_dHeight);
ReCalculate();
m_oPath.ToRenderer(pRenderer, pGeomInfo, dStartTime, dEndTime, pPen, pFore, pInfo, GetClassType());
m_oPath.ToRenderer(pRenderer, pGeomInfo, dStartTime, dEndTime, pPen, pFore, GetClassType());
}
virtual void ReCalculate()

View File

@ -1010,12 +1010,12 @@ namespace NSPresentationEditor
}
}
std::wstring ToXml(CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo, NSBaseShape::ClassType ClassType)
std::wstring ToXml(CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, NSBaseShape::ClassType ClassType)
{
return _T("");
}
void ToRenderer(CGraphicPath* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo, NSBaseShape::ClassType ClassType)
void ToRenderer(CGraphicPath* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, NSBaseShape::ClassType ClassType)
{
pRenderer->m_bStroke = m_bStroke;
pRenderer->m_bFill = m_bFill;
@ -1023,9 +1023,6 @@ namespace NSPresentationEditor
pRenderer->Pen = pPen;
pRenderer->Brush = pFore;
pRenderer->m_dWidthMM = pInfo.m_lMillimetresHor;
pRenderer->m_dHeightMM = pInfo.m_lMillimetresVer;
//pRenderer->SetCommandParams(pGeomInfo.m_dRotate, pGeomInfo.m_dLeft, pGeomInfo.m_dTop,
// pGeomInfo.m_dWidth, pGeomInfo.m_dHeight, pGeomInfo.GetFlags());
@ -1041,14 +1038,11 @@ namespace NSPresentationEditor
//pRenderer->SetCommandParams(0, -1, -1, -1, -1, 0);
}
void ToRendererOOX(CGraphicPath* pRenderer, CGeomShapeInfo& pGeomInfo, CMetricInfo& pInfo, NSBaseShape::ClassType ClassType)
void ToRendererOOX(CGraphicPath* pRenderer, CGeomShapeInfo& pGeomInfo, NSBaseShape::ClassType ClassType)
{
pRenderer->m_bStroke = m_bStroke;
pRenderer->m_bFill = m_bFill;
pRenderer->m_dWidthMM = pInfo.m_lMillimetresHor;
pRenderer->m_dHeightMM = pInfo.m_lMillimetresVer;
for (size_t nIndex = 0; nIndex < m_arSlices.size(); ++nIndex)
{
m_arSlices[nIndex].ToRenderer(pRenderer, pGeomInfo, width, height, ClassType);
@ -1119,18 +1113,18 @@ namespace NSPresentationEditor
m_arParts.back().FromXML(oArray[nIndex], pManager);
}
}
std::wstring ToXml(CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo, NSBaseShape::ClassType ClassType)
std::wstring ToXml(CGeomShapeInfo& pGeomInfo, double dStartTime, double dEndTime, CPen& pPen, CBrush& pFore, NSBaseShape::ClassType ClassType)
{
std::wstring strResult = _T("");
for (size_t nIndex = 0; nIndex < m_arParts.size(); ++nIndex)
{
strResult += m_arParts[nIndex].ToXml(pGeomInfo, dStartTime, dEndTime, pPen, pFore, pInfo, ClassType);
strResult += m_arParts[nIndex].ToXml(pGeomInfo, dStartTime, dEndTime, pPen, pFore, ClassType);
}
return strResult;
}
void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& pGeomInfo, double dStartTime,
double dEndTime, CPen& pPen, CBrush& pFore, CMetricInfo& pInfo, NSBaseShape::ClassType ClassType)
double dEndTime, CPen& pPen, CBrush& pFore, NSBaseShape::ClassType ClassType)
{
CGraphicPath oPath;
oPath.Pen = pPen;
@ -1139,7 +1133,7 @@ namespace NSPresentationEditor
for (size_t nIndex = 0; nIndex < m_arParts.size(); ++nIndex)
{
oPath.Clear();
m_arParts[nIndex].ToRenderer(&oPath, pGeomInfo, dStartTime, dEndTime, pPen, pFore, pInfo, ClassType);
m_arParts[nIndex].ToRenderer(&oPath, pGeomInfo, dStartTime, dEndTime, pPen, pFore, ClassType);
oPath.Draw(pRenderer);
}

View File

@ -82,6 +82,7 @@ public:
LONG m_lDrawType;
std::wstring m_strPPTXShape;
std::wstring m_strXmlString; //alternative
NSBaseShape::ClassType m_classType;
@ -122,10 +123,10 @@ public:
m_pShape->SetType(NSBaseShape::ppt, ShapeType_);
}
m_dTextMarginX = 2.54;
m_dTextMarginY = 1.27;
m_dTextMarginRight = 2.54;
m_dTextMarginBottom = 1.27;
m_dTextMarginX = 91440;
m_dTextMarginY = 45720;
m_dTextMarginRight = 91440;
m_dTextMarginBottom = 45720;
m_dWidthLogic = ShapeSizeVML;
m_dHeightLogic = ShapeSizeVML;
@ -158,147 +159,22 @@ public:
}
virtual void GetTextRect(CGeomShapeInfo& oInfo)
{
// пока сделаем типо - заглушку
// здесь - пересчет координат, у нас пока textrect = bounds
// поэтому пока ничего не меняем...
bool bIsFound = false;
if (m_classType == NSBaseShape::ppt)
{
// не очень удобно мне пересчет ректов вести
// сделаю так, отдельным методом в ппт
double dPercentLeft = 0;
double dPercentTop = 0;
double dPercentRight = 0;
double dPercentBottom = 0;
if (NSBaseShape::ppt == m_pShape->GetClassType())
{
// как будто могло быть иначе
CPPTShape* pPPTShape = dynamic_cast<CPPTShape*>(m_pShape.get());
if (NULL != pPPTShape)
{
pPPTShape->CalcTextRectOffsets(dPercentLeft, dPercentTop, dPercentRight, dPercentBottom);
oInfo.m_dLeft += (dPercentLeft * oInfo.m_dWidth);
oInfo.m_dTop += (dPercentTop * oInfo.m_dHeight);
oInfo.m_dWidth -= ((dPercentLeft + dPercentRight) * oInfo.m_dWidth);
oInfo.m_dHeight -= ((dPercentTop + dPercentBottom) * oInfo.m_dHeight);
}
}
// только учтем маргины
oInfo.m_dLeft += m_dTextMarginX;
oInfo.m_dTop += m_dTextMarginY;
oInfo.m_dWidth -= (m_dTextMarginX + m_dTextMarginRight);
oInfo.m_dHeight -= (m_dTextMarginY + m_dTextMarginBottom);
bIsFound = true;
}
if (m_classType == NSBaseShape::pptx)
{
if (0 < m_pShape->m_arTextRects.size())
{
double koef = (std::max)(oInfo.m_dWidth, oInfo.m_dHeight)/ShapeSize;
oInfo.m_dLeft += m_pShape->m_arTextRects[0].left * koef;
oInfo.m_dTop += m_pShape->m_arTextRects[0].top * koef;
oInfo.m_dWidth = (m_pShape->m_arTextRects[0].right - m_pShape->m_arTextRects[0].left) * koef;
oInfo.m_dHeight = (m_pShape->m_arTextRects[0].bottom - m_pShape->m_arTextRects[0].top) * koef;
oInfo.m_dLeft += m_dTextMarginX;
oInfo.m_dTop += m_dTextMarginY;
oInfo.m_dWidth -= (m_dTextMarginX + m_dTextMarginRight);
oInfo.m_dHeight -= (m_dTextMarginY + m_dTextMarginBottom);
}
bIsFound = true;
}
if (oInfo.m_dWidth < 0)
oInfo.m_dWidth = 1;
if (oInfo.m_dHeight < 0)
oInfo.m_dHeight = 1;
oInfo.m_dLeft = m_dTextMarginX;
oInfo.m_dTop = m_dTextMarginY;
oInfo.m_dWidth = m_dTextMarginRight - m_dTextMarginX;
oInfo.m_dHeight = m_dTextMarginBottom - m_dTextMarginY;
}
virtual void GetTextRect(CDoubleRect& oInfo)
{
// пока сделаем типо - заглушку
// здесь - пересчет координат, у нас пока textrect = bounds
// поэтому пока ничего не меняем...
double dLeft = oInfo.left;
double dTop = oInfo.top;
double dWidth = oInfo.GetWidth();
double dHeight = oInfo.GetHeight();
bool bIsFound = false;
if (m_classType == NSBaseShape::ppt)
{
// не очень удобно мне пересчет ректов вести
// сделаю так, отдельным методом в ппт
double dPercentLeft = 0;
double dPercentTop = 0;
double dPercentRight = 0;
double dPercentBottom = 0;
if ((m_pShape) && (NSBaseShape::ppt == m_pShape->GetClassType()))
{
// как будто могло быть иначе
CPPTShape* pPPTShape = dynamic_cast<CPPTShape*>(m_pShape.get());
if (NULL != pPPTShape)
{
//pPPTShape->CalcTextRectOffsets(dPercentLeft, dPercentTop, dPercentRight, dPercentBottom);
//dLeft += (dPercentLeft * dWidth);
//dTop += (dPercentTop * dHeight);
//dWidth -= ((dPercentLeft + dPercentRight) * dWidth);
//dHeight -= ((dPercentTop + dPercentBottom) * dHeight);
}
}
// только учтем маргины
dLeft += m_dTextMarginX;
dTop += m_dTextMarginY;
dWidth -= (m_dTextMarginX + m_dTextMarginRight);
dHeight -= (m_dTextMarginY + m_dTextMarginBottom);
bIsFound = true;
}
if (m_classType == NSBaseShape::pptx && m_pShape)
{
if (0 < m_pShape->m_arTextRects.size())
{
double koef = (std::max)(dWidth, dHeight)/ShapeSize;
dLeft += m_pShape->m_arTextRects[0].left * koef;
dTop += m_pShape->m_arTextRects[0].top * koef;
dWidth = (m_pShape->m_arTextRects[0].right - m_pShape->m_arTextRects[0].left) * koef;
dHeight = (m_pShape->m_arTextRects[0].bottom - m_pShape->m_arTextRects[0].top) * koef;
dLeft += m_dTextMarginX;
dTop += m_dTextMarginY;
dWidth -= (m_dTextMarginX + m_dTextMarginRight);
dHeight -= (m_dTextMarginY + m_dTextMarginBottom);
}
bIsFound = true;
}
if (dWidth < 0) dWidth = 1;
if (dHeight < 0) dHeight = 1;
oInfo.left = dLeft;
oInfo.top = dTop;
oInfo.right = dLeft + dWidth;
oInfo.bottom = dTop + dHeight;
oInfo.left = m_dTextMarginX;
oInfo.top = m_dTextMarginY;
oInfo.right = m_dTextMarginRight;
oInfo.bottom = m_dTextMarginBottom;
}
void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& oGeomInfo, CMetricInfo& pInfo, double dStartTime, double dEndTime)
void ToRenderer(IRenderer* pRenderer, CGeomShapeInfo& oGeomInfo, double dStartTime, double dEndTime)
{
if (m_pShape == NULL)
return;
@ -315,12 +191,12 @@ public:
CBrush brush; //копии с уровня выше нужны
CPen pen;
m_pShape->ToRenderer(pRenderer, oGeomInfo, dStartTime, dEndTime, pen, brush, pInfo);
m_pShape->ToRenderer(pRenderer, oGeomInfo, dStartTime, dEndTime, pen, brush);
}
}
virtual bool LoadFromXML(const std::wstring& xml)
virtual bool LoadFromXML(const std::wstring& xml)
{
XmlUtils::CXmlNode oNodePict;
if (oNodePict.FromXmlString(xml))

View File

@ -44,17 +44,9 @@ namespace NSPresentationEditor
LONG m_lSlideID; //for notes rels
LONG m_lNotesID; //for slide rels
std::vector<CElementPtr>m_arElements;
CSlideShowInfo m_oSlideShow;
std::multimap<int,int> m_mapPlaceholders;
// размеры в миллиметрах
long m_lWidth;
long m_lHeight;
// а вот эти - "настоящие" (в логической системе координат), чтобы масштабировать
long m_lOriginalWidth;
long m_lOriginalHeight;
std::vector<CElementPtr> m_arElements;
CSlideShowInfo m_oSlideShow;
std::multimap<int,CElementPtr> m_mapPlaceholders;
double m_dStartTime;
double m_dEndTime;
@ -67,8 +59,6 @@ namespace NSPresentationEditor
bool m_bUseLayoutColorScheme;
bool m_bShowMasterShapes;
CMetricInfo m_oInfo;
vector_string m_PlaceholdersReplaceString[3];
std::wstring m_strComment;
std::wstring m_sName;
@ -92,12 +82,6 @@ namespace NSPresentationEditor
m_lSlideID = -1;
m_lNotesID = -1;
m_lWidth = 270;
m_lHeight = 190;
m_lOriginalWidth = 6000;
m_lOriginalHeight = 5000;
m_dStartTime = 0.0;
m_dEndTime = 0.0;
m_dDuration = 30000.0;
@ -129,12 +113,6 @@ namespace NSPresentationEditor
m_lNotesID = oSrc.m_lNotesID;
m_lSlideID = oSrc.m_lSlideID;
m_lWidth = oSrc.m_lWidth;
m_lHeight = oSrc.m_lHeight;
m_lOriginalWidth = oSrc.m_lOriginalWidth;
m_lOriginalHeight = oSrc.m_lOriginalHeight;
m_dStartTime = oSrc.m_dStartTime;
m_dEndTime = oSrc.m_dEndTime;
m_dDuration = oSrc.m_dDuration;
@ -150,16 +128,6 @@ namespace NSPresentationEditor
m_sName = oSrc.m_sName;
}
void SetMetricInfo(const CMetricInfo& oInfo)
{
m_oInfo = oInfo;
m_lWidth = m_oInfo.m_lMillimetresHor;
m_lHeight = m_oInfo.m_lMillimetresVer;
m_lOriginalWidth = m_oInfo.m_lUnitsHor;
m_lOriginalHeight = m_oInfo.m_lUnitsVer;
}
void SetUpPlaceholderStyles(NSPresentationEditor::CLayout* pLayout)
{
size_t nCountElements = m_arElements.size();

View File

@ -39,7 +39,14 @@ typedef std::vector<std::wstring> vector_string;
namespace NSPresentationEditor
{
static void CorrectColorPPT(LONG& lSchemeIndex)
enum _typeMaster
{
typeMaster,
typeNotesMaster,
typeHandoutMaster
};
static void CorrectColorPPT(LONG& lSchemeIndex)
{
//0x00 //Background color
//0x01 //Text color
@ -104,13 +111,6 @@ namespace NSPresentationEditor
{
LONG X;
LONG Y;
// std::wstring ToString()
// {
// std::wstring str = _T("");
// str.Format(_T("<Point info='(%d,%d)' />"), X, Y);
// return str;
// }
};
struct SRectAtom
@ -119,13 +119,6 @@ namespace NSPresentationEditor
LONG Top;
LONG Right;
LONG Bottom;
// std::wstring ToString()
// {
// std::wstring str = _T("");
// str.Format(_T("<Rect info='(%d,%d,%d,%d)' />"), Left, Top, Right, Bottom);
// return str;
// }
};
struct SSmallRectAtom
@ -134,13 +127,6 @@ namespace NSPresentationEditor
SHORT Top;
SHORT Right;
SHORT Bottom;
// std::wstring ToString()
// {
// std::wstring str = _T("");
// str.Format(_T("Rect(%d,%d,%d,%d)"), Left, Top, Right, Bottom);
// return str;
// }
};
struct SColorAtom
@ -200,21 +186,6 @@ namespace NSPresentationEditor
return *this;
}
// std::wstring ToString()
// {
// std::wstring str = _T("");
// str.Format(_T("<Color R='%d' G='%d' B='%d' index='%d' />"), R, G, B, Index);
// return str;
// }
// std::wstring ToString(std::wstring name)
// {
// std::wstring str = _T("");
// str.Format(_T(" R='%d' G='%d' B='%d' index='%d' />"), R, G, B, Index);
// str = _T("<Color_") + name + str;
// return str;
// }
DWORD ToValue()
{
DWORD dwVal = (R | (G << 8) | (B << 16));
@ -250,16 +221,6 @@ namespace NSPresentationEditor
void FromValue(DWORD dwValue)
{
//R = (BYTE)(dwValue);
//G = (BYTE)(dwValue >> 8);
//B = (BYTE)(dwValue >> 16);
//Index = (BYTE)(dwValue >> 24);
//bPaletteIndex = (0x01 == (Index & 0x01));
//bPaletteRGB = (0x02 == (Index & 0x02));
//bSystemRGB = (0x04 == (Index & 0x04));
//bSchemeIndex = (0x08 == (Index & 0x08));
//bSysIndex = (0x10 == (Index & 0x10));
R = static_cast<unsigned char>(GETBITS(dwValue, 0, 7));
G = static_cast<unsigned char>(GETBITS(dwValue, 8, 15));
@ -312,41 +273,6 @@ namespace NSPresentationEditor
{
UINT Begin;
UINT End;
// std::wstring ToString()
// {
// std::wstring str = _T("");
// str.Format(_T("TextRange(%d,%d)"), Begin, End);
// return str;
// }
};
class CElemInfo
{
public:
bool m_bIsBackground;
bool m_bIsChangeable;
LONG m_lID;
CElemInfo()
{
m_bIsBackground = false;
m_bIsChangeable = false;
m_lID = 0;
}
CElemInfo(const CElemInfo& oSrc)
{
*this = oSrc;
}
CElemInfo& operator=(const CElemInfo& oSrc)
{
m_bIsBackground = oSrc.m_bIsBackground;
m_bIsChangeable = oSrc.m_bIsChangeable;
m_lID = oSrc.m_lID;
return *this;
}
};
}
}

View File

@ -210,6 +210,12 @@ namespace NSPresentationEditor
if (m_oStyles.m_pLevels[lLevel]->m_oPFRun.spaceBefore.is_init())
spaceBefore = m_oStyles.m_pLevels[lLevel]->m_oPFRun.spaceBefore;
}
if (bulletChar.is_init() && !bulletFontRef.is_init())
{
//Demo-The-Winter-Olympics.ppt
//стоит ли брать с предыдущего уровня?
}
if (!m_arParagraphs[nIndexP].m_oPFRun.hasBullet.is_init())
{
@ -237,9 +243,9 @@ namespace NSPresentationEditor
if (!m_arParagraphs[nIndexP].m_oPFRun.spaceBefore.is_init())
m_arParagraphs[nIndexP].m_oPFRun.spaceBefore = spaceBefore;
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties.reset();
if (m_arParagraphs[nIndexP].m_oPFRun.bulletFontRef.is_init())
{
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties.reset();
m_arParagraphs[nIndexP].m_oPFRun.bulletFontProperties = new CFontProperties();
int ref = m_arParagraphs[nIndexP].m_oPFRun.bulletFontRef.get();

View File

@ -86,13 +86,11 @@ namespace NSPresentationEditor
public:
BYTE FontNameProp;
std::wstring strFontName;
std::wstring strPanose;
std::wstring strPitchFamily;
LONG lFontFixed;
std::vector<BYTE> arFontCharsets;
BYTE nPitchFamily;
bool bFontFixed;
BYTE nFontCharset;
public:
CFontProperties() : FontNameProp(0), strFontName(_T("")), strPanose(_T("")), strPitchFamily(_T("")), lFontFixed(0), arFontCharsets()
CFontProperties() : FontNameProp(0), bFontFixed(false), nPitchFamily(0), nFontCharset(0)
{
}
~CFontProperties()
@ -106,12 +104,9 @@ namespace NSPresentationEditor
{
FontNameProp = oSrc.FontNameProp;
strFontName = oSrc.strFontName;
strPanose = oSrc.strPanose;
strPitchFamily = oSrc.strPitchFamily;
lFontFixed = oSrc.lFontFixed;
for (size_t i =0 ; i< oSrc.arFontCharsets.size(); i++)
arFontCharsets.push_back(oSrc.arFontCharsets[i]);
nPitchFamily = oSrc.nPitchFamily;
bFontFixed = oSrc.bFontFixed;
nFontCharset = oSrc.nFontCharset;
return *this;
}
@ -119,11 +114,9 @@ namespace NSPresentationEditor
AVSINLINE void SetFont(CFont& oFont)
{
strFontName = oFont.Name;
strPanose = oFont.Panose;
strPitchFamily = oFont.PitchFamily;
lFontFixed = (LONG)oFont.Monospace;
arFontCharsets.clear();
arFontCharsets.push_back(oFont.Charset);
nPitchFamily = oFont.PitchFamily;
bFontFixed = oFont.Monospace;
nFontCharset = oFont.Charset;
}
};
@ -154,11 +147,7 @@ namespace NSPresentationEditor
NSCommon::nullable_base<CFontProperties> FontPropertiesEA;
NSCommon::nullable_base<CFontProperties> FontPropertiesSym;
public:
CTextCFRun() : FontBold(), FontItalic(), FontUnderline(), FontStrikeout(), FontShadow(),
Typeface(), EAFontRef(), AnsiFontRef(), SymbolFontRef(),
BaseLineOffset(), Color(), Size(), FontProperties(), Cap()
CTextCFRun()
{
}
CTextCFRun(const CTextCFRun& oSrc)
@ -287,9 +276,7 @@ namespace NSPresentationEditor
NSCommon::nullable_base<WORD> wrapFlags;
CTextPFRun() : hasBullet(), bulletFontRef(), bulletSize(), bulletChar(), bulletColor(),
textAlignment(), lineSpacing(), spaceBefore(), spaceAfter(), leftMargin(), indent(),
defaultTabSize(), tabStops(), bIsOneLine(false), fontAlign(), wrapFlags()
CTextPFRun() : bIsOneLine(false)
{
}
@ -423,11 +410,7 @@ namespace NSPresentationEditor
NSCommon::nullable_base<LONG> Indent4;
NSCommon::nullable_base<LONG> Indent5;
public:
CTextRuler() : DefaultTabSize(), CLevels(), TabStops(),
LeftMargin1(), LeftMargin2(), LeftMargin3(), LeftMargin4(), LeftMargin5(),
Indent1(), Indent2(), Indent3(), Indent4(), Indent5(), tabsStops()
CTextRuler()
{
}
@ -630,7 +613,7 @@ namespace NSPresentationEditor
bool m_bField;
bool m_bBreak;
CSpan() : m_oRun(), m_strText(_T("")), m_bField(false), m_bBreak(false)
CSpan() : m_bField(false), m_bBreak(false)
{
}
CSpan(const CSpan& oSrc)
@ -658,7 +641,7 @@ namespace NSPresentationEditor
CTextCFRun m_oCFRun;
public:
CTextStyleLevel() : m_oPFRun(), m_oCFRun()
CTextStyleLevel()
{
}
CTextStyleLevel(const CTextStyleLevel& oSrc)
@ -685,35 +668,6 @@ namespace NSPresentationEditor
}
};
//нигде не применяется ???
//class CTextFullInfo
//{
//public:
// CTextPFRun m_oPF;
// CTextCFRun m_oCF;
// CTextRuler m_oRuler;
// CTextSIRun m_oSI;
//public:
// CTextFullInfo() : m_oPF(), m_oCF(), m_oRuler(), m_oSI()
// {
// }
// CTextFullInfo(const CTextFullInfo& oSrc)
// {
// *this = oSrc;
// }
// CTextFullInfo& operator=(const CTextFullInfo& oSrc)
// {
// m_oPF = oSrc.m_oPF;
// m_oCF = oSrc.m_oCF;
// m_oRuler = oSrc.m_oRuler;
// m_oSI = oSrc.m_oSI;
// return *this;
// }
//};
class CTextStyles
{
public:
@ -801,7 +755,7 @@ namespace NSPresentationEditor
std::vector<CSpan> m_arSpans;
public:
CParagraph() : m_oPFRun(), m_arSpans()
CParagraph()
{
m_lTextType = -1;
m_lTextLevel = 0;

View File

@ -40,10 +40,11 @@ namespace NSPresentationEditor
class CTheme
{
public:
_typeMaster m_eType;
std::map<_UINT64, LONG> m_mapGeomToLayout;// типовые шаблоны
std::map<DWORD, LONG> m_mapTitleLayout; // заголовочные шаблоны
std::multimap<int,int> m_mapPlaceholders;
std::multimap<int,CElementPtr> m_mapPlaceholders;
std::vector<CColor> m_arColorScheme;
std::vector<CFont> m_arFonts;
@ -52,21 +53,16 @@ namespace NSPresentationEditor
std::vector<CEffects> m_arEffects;
CTextStyles m_pStyles[g_ThemeTextStylesCount];
std::vector<CLayout> m_arLayouts;
std::vector<CLayoutPtr> m_arLayouts;
bool m_bIsBackground;
CBrush m_oBackground;
std::vector<CElementPtr> m_arElements;
CMetricInfo m_oInfo;
std::wstring m_sThemeName;
std::vector<std::vector<CColor>>m_arExtraColorScheme;
long m_lOriginalWidth;
long m_lOriginalHeight;
bool m_bHasDate;
bool m_bHasSlideNumber;
@ -77,86 +73,11 @@ namespace NSPresentationEditor
vector_string m_PlaceholdersReplaceString[3]; //0-dates, 1 - headers, 2 - footers
//------------------------------------------------------------------------------------
CTheme() : m_arColorScheme(), m_arFonts(), m_arBrushes(),
m_arPens(), m_arEffects(), m_arLayouts()
CTheme(_typeMaster type = typeMaster) : m_arColorScheme(), m_arFonts(), m_arBrushes(),
m_arPens(), m_arEffects(), m_arLayouts(), m_eType(type)
{
Clear();
}
CTheme(const CTheme& oSrc)
{
*this = oSrc;
}
CTheme& operator=(const CTheme& oSrc)
{
m_arColorScheme = oSrc.m_arColorScheme;
m_arFonts = oSrc.m_arFonts;
m_arBrushes = oSrc.m_arBrushes;
m_arPens = oSrc.m_arPens;
m_arEffects = oSrc.m_arEffects;
m_sThemeName = oSrc.m_sThemeName;
m_lOriginalWidth = oSrc.m_lOriginalWidth ;
m_lOriginalHeight = oSrc.m_lOriginalHeight;
m_bHasDate = oSrc.m_bHasDate;
m_bHasSlideNumber = oSrc.m_bHasSlideNumber;
m_bHasFooter = oSrc.m_bHasFooter;
m_nFormatDate = oSrc.m_nFormatDate;
for (size_t i = 0 ; i < 3 ; i++) m_PlaceholdersReplaceString[i] = oSrc.m_PlaceholdersReplaceString[i];
for (size_t i = 0; i < oSrc.m_arExtraColorScheme.size(); ++i)
{
m_arExtraColorScheme.push_back(oSrc.m_arExtraColorScheme[i]);
}
for (int i = 0; i < g_ThemeTextStylesCount; ++i)
m_pStyles[i] = oSrc.m_pStyles[i];
m_arLayouts = oSrc.m_arLayouts;
m_mapTitleLayout = oSrc.m_mapTitleLayout;
m_mapGeomToLayout = oSrc.m_mapGeomToLayout;
m_mapPlaceholders = oSrc.m_mapPlaceholders;
m_bIsBackground = oSrc.m_bIsBackground;
m_oBackground = oSrc.m_oBackground;
// теперь сделаем копию всех элементов layout'ов
size_t nCount = m_arLayouts.size();
for (size_t i = 0; i < nCount; ++i)
{
m_arLayouts[i].CreateDublicateElements();
}
m_arElements = oSrc.m_arElements;
CreateDublicateElements();
for (long nIndexStyle = 0; nIndexStyle < g_ThemeTextStylesCount; ++nIndexStyle)
{
m_pStyles[nIndexStyle] = oSrc.m_pStyles[nIndexStyle];
}
return (*this);
}
void CreateDublicateElements()
{
// просто из всех своих элементов делаем дубликата
size_t nCount = m_arElements.size();
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
{
CElementPtr pElem = m_arElements[nIndex];
if (NULL != pElem)
{
m_arElements[nIndex] = pElem->CreateDublicate();
}
}
}
void Clear()
{
m_arElements.clear();
@ -165,8 +86,6 @@ namespace NSPresentationEditor
m_mapGeomToLayout.clear();
m_mapPlaceholders.clear();
m_lOriginalWidth = m_lOriginalHeight = 0;
m_sThemeName = L"Default";
m_bHasDate = false;
@ -178,7 +97,7 @@ namespace NSPresentationEditor
m_PlaceholdersReplaceString[i].clear();
}
~CTheme()
virtual ~CTheme()
{
}
NSPresentationEditor::CColor GetColor(const LONG& lIndexScheme)
@ -303,4 +222,6 @@ namespace NSPresentationEditor
}
}
};
typedef boost::shared_ptr<CTheme> CThemePtr;
}

View File

@ -209,25 +209,25 @@ namespace NSBinPptxRW
LONG nCountSlides = 0;
bool bNotesMasterPresent = false;
pPair = m_mainTables.find(NSMainTables::Themes);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Themes);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
nCountThemes = m_oReader.GetLong();
}
pPair = m_mainTables.find(NSMainTables::SlideMasters);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideMasters);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
nCountMasters = m_oReader.GetLong();
}
pPair = m_mainTables.find(NSMainTables::SlideLayouts);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideLayouts);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
nCountLayouts = m_oReader.GetLong();
}
pPair = m_mainTables.find(NSMainTables::Slides);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Slides);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -256,7 +256,7 @@ namespace NSBinPptxRW
m_arSlides_Notes.push_back(-1);
// ThemeRels
pPair = m_mainTables.find(NSMainTables::ThemeRels);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::ThemeRels);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -286,7 +286,7 @@ namespace NSBinPptxRW
}
// готово, теперь нужно слайдам проставить шаблоны
pPair = m_mainTables.find(NSMainTables::SlideRels);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideRels);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -304,7 +304,7 @@ namespace NSBinPptxRW
m_arSlides_Layout[index++] = m_oReader.GetULong();
}
}
pPair = m_mainTables.find(NSMainTables::SlideNotesRels);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideNotesRels);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -323,7 +323,7 @@ namespace NSBinPptxRW
}
}
pPair = m_mainTables.find(NSMainTables::NotesMastersRels);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::NotesMastersRels);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -377,7 +377,7 @@ namespace NSBinPptxRW
m_arSlideMasters_Theme[i].m_lThemeIndex = arThemesDst[i];
}
// themes
pPair = m_mainTables.find(NSMainTables::Themes);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Themes);
if (m_mainTables.end() != pPair)
{
OOX::CPath pathFolder = m_oReader.m_strFolderThemes;
@ -420,7 +420,7 @@ namespace NSBinPptxRW
}
// slideMasters
pPair = m_mainTables.find(NSMainTables::SlideMasters);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideMasters);
if (m_mainTables.end() != pPair)
{
OOX::CPath pathFolder = m_strDstFolder + FILE_SEPARATOR_STR + _T("ppt") + FILE_SEPARATOR_STR + _T("slideMasters");
@ -472,7 +472,7 @@ namespace NSBinPptxRW
}
// slideLayouts
pPair = m_mainTables.find(NSMainTables::SlideLayouts);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::SlideLayouts);
if (m_mainTables.end() != pPair)
{
OOX::CPath pathFolder = m_strDstFolder + FILE_SEPARATOR_STR+ _T("ppt") + FILE_SEPARATOR_STR + _T("slideLayouts");
@ -507,7 +507,7 @@ namespace NSBinPptxRW
}
}
// notes
pPair = m_mainTables.find(NSMainTables::NotesSlides);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::NotesSlides);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -556,7 +556,7 @@ namespace NSBinPptxRW
}
}
// noteMasters
pPair = m_mainTables.find(NSMainTables::NotesMasters);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::NotesMasters);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -601,7 +601,7 @@ namespace NSBinPptxRW
}
// slides
int nComment = 1;
pPair = m_mainTables.find(NSMainTables::Slides);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Slides);
if (m_mainTables.end() != pPair)
{
OOX::CPath pathFolder = m_strDstFolder + FILE_SEPARATOR_STR + _T("ppt") + FILE_SEPARATOR_STR + _T("slides");
@ -658,7 +658,7 @@ namespace NSBinPptxRW
if (false)
{
// app
pPair = m_mainTables.find(NSMainTables::App);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::App);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -666,7 +666,7 @@ namespace NSBinPptxRW
}
// core
pPair = m_mainTables.find(NSMainTables::Core);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Core);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -674,7 +674,7 @@ namespace NSBinPptxRW
}
// tableStyles
pPair = m_mainTables.find(NSMainTables::TableStyles);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::TableStyles);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -682,7 +682,7 @@ namespace NSBinPptxRW
}
// presProps
pPair = m_mainTables.find(NSMainTables::PresProps);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::PresProps);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -690,7 +690,7 @@ namespace NSBinPptxRW
}
// viewProps
pPair = m_mainTables.find(NSMainTables::ViewProps);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::ViewProps);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -707,7 +707,7 @@ namespace NSBinPptxRW
CreateDefaultViewProps();
// presProps
pPair = m_mainTables.find(NSMainTables::PresProps);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::PresProps);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -718,7 +718,7 @@ namespace NSBinPptxRW
CreateDefaultPresProps();
}
pPair = m_mainTables.find(NSMainTables::TableStyles);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::TableStyles);
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
@ -771,7 +771,7 @@ namespace NSBinPptxRW
// presentation
bool bIsAuthors = false;
pPair = m_mainTables.find(NSMainTables::Presentation);
pPair = m_mainTables.find(NSBinPptxRW::NSMainTables::Presentation);
if (m_mainTables.end() != pPair)
{
OOX::CPath pathFolder = m_strDstFolder + FILE_SEPARATOR_STR + _T("ppt");

View File

@ -39,8 +39,6 @@
#include "Logic/PartTitle.h"
#include "Logic/HeadingVariant.h"
using namespace NSBinPptxRW;
namespace PPTX
{
class App : public WrapperFile
@ -130,9 +128,9 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->StartRecord(NSMainTables::App);
pWriter->StartRecord(NSBinPptxRW::NSMainTables::App);
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteString2(0, Template);
pWriter->WriteString2(1, Application);
@ -153,7 +151,7 @@ namespace PPTX
pWriter->WriteBool2(14, SharedDoc);
pWriter->WriteBool2(15, HyperlinksChanged);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->EndRecord();
}

View File

@ -39,8 +39,6 @@
#include "Limit/ContentStatus.h"
#include "FileTypes.h"
using namespace NSBinPptxRW;
namespace PPTX
{
class Core : public WrapperFile
@ -105,9 +103,9 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->StartRecord(NSMainTables::Core);
pWriter->StartRecord(NSBinPptxRW::NSMainTables::Core);
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteString2(0, title);
pWriter->WriteString2(1, creator);
@ -116,7 +114,7 @@ namespace PPTX
pWriter->WriteString2(4, created);
pWriter->WriteString2(5, modified);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->EndRecord();
}

View File

@ -548,9 +548,18 @@ namespace PPTX
public:
void SetHexString(const std::wstring& val)
{
red = HexString2Int(val.substr(0, 2));
green = HexString2Int(val.substr(2, 2));
blue = HexString2Int(val.substr(4, 2));
if (val.length() == 6)
{
red = HexString2Int(val.substr(0, 2));
green = HexString2Int(val.substr(2, 2));
blue = HexString2Int(val.substr(4, 2));
}
else if (val.length() == 3)
{
red = HexString2Int(val.substr(0, 1) + val.substr(0, 1));
green = HexString2Int(val.substr(1, 1) + val.substr(1, 1));
blue = HexString2Int(val.substr(2, 1) + val.substr(2, 1));
}
}
std::vector<ColorModifier> Modifiers;

View File

@ -93,19 +93,15 @@ namespace PPTX
pOOXToVMLGeometry->NewShape();
NSPresentationEditor::CGraphicPath oGrPath;
CMetricInfo oMetricInfo;
for (size_t nIndex = 0; nIndex < oPath.m_arParts.size(); ++nIndex)
{
oGrPath.Clear();
oPath.m_arParts[nIndex].ToRendererOOX(&oGrPath, oInfo, oMetricInfo, NSBaseShape::pptx);
oPath.m_arParts[nIndex].ToRendererOOX(&oGrPath, oInfo, NSBaseShape::pptx);
pOOXToVMLRenderer->put_PenAlpha(oGrPath.m_bStroke ? 255 : 0);
pOOXToVMLRenderer->put_BrushAlpha1(oGrPath.m_bFill ? 255 : 0);
oGrPath.m_dWidthMM = (double)lCoordSize / dCoordSizeX;
oGrPath.m_dHeightMM = (double)lCoordSize / dCoordSizeY;
oGrPath.Draw(pOOXToVMLRenderer);
}
if(NULL != pOOXToVMLGeometry)

View File

@ -78,7 +78,7 @@ namespace PPTX
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->StartRecord(NSMainTables::PresProps);
pWriter->StartRecord(NSBinPptxRW::NSMainTables::PresProps);
pWriter->WriteRecordArray(0, 0, ClrMru);
pWriter->WriteRecord2(1, showPr);

View File

@ -46,8 +46,6 @@
#include "ViewProps/SlideViewPr.h"
#include "ViewProps/SorterViewPr.h"
using namespace NSBinPptxRW;
namespace PPTX
{
class ViewProps : public WrapperFile, public PPTX::FileContainer
@ -126,14 +124,14 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->StartRecord(NSMainTables::ViewProps);
pWriter->StartRecord(NSBinPptxRW::NSMainTables::ViewProps);
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteLimit2(0, attrLastView);
pWriter->WriteBool2(1, attrShowComments);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->WriteRecord2(0, GridSpacing);
pWriter->WriteRecord2(1, NormalViewPr);

View File

@ -64,12 +64,12 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteInt2(0, pos);
pWriter->WriteLimit2(1, orient);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const

View File

@ -62,12 +62,12 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteString2(0, id);
pWriter->WriteBool2(1, collapse);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const

View File

@ -66,9 +66,9 @@ namespace PPTX
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->WriteBYTE(g_nodeAttributeStart);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart);
pWriter->WriteBool2(0, attrShowFormatting);
pWriter->WriteBYTE(g_nodeAttributeEnd);
pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd);
pWriter->WriteRecord1(0, CViewPr);
}

View File

@ -831,6 +831,7 @@
696791821D9E8B81002CA4BA /* MathParaWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 696791801D9E8B81002CA4BA /* MathParaWrapper.cpp */; };
696791831D9E8B81002CA4BA /* MathParaWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 696791811D9E8B81002CA4BA /* MathParaWrapper.h */; };
697DFC1E200F51A700F0A9AF /* WavAudioFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 697DFC1D200F51A600F0A9AF /* WavAudioFile.cpp */; };
8A9FACE120777BA7007787F6 /* Structures.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9FACE020777BA7007787F6 /* Structures.h */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -1661,6 +1662,7 @@
696791801D9E8B81002CA4BA /* MathParaWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathParaWrapper.cpp; sourceTree = "<group>"; };
696791811D9E8B81002CA4BA /* MathParaWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathParaWrapper.h; sourceTree = "<group>"; };
697DFC1D200F51A600F0A9AF /* WavAudioFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WavAudioFile.cpp; sourceTree = "<group>"; };
8A9FACE020777BA7007787F6 /* Structures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Structures.h; path = Drawing/Structures.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -2272,6 +2274,7 @@
17D91A211AC5A4DF0096D788 /* PPTXWriter.h */,
17D91A221AC5A4DF0096D788 /* WMFToImageConverter.h */,
17D91A231AC5A4DF0096D788 /* XmlWriter.h */,
8A9FACE020777BA7007787F6 /* Structures.h */,
);
name = Editor;
path = ../../Editor;
@ -2787,6 +2790,7 @@
69656F061FC2FF800028C4BA /* CSnip2DiagRect.h in Headers */,
17C1FCF51ACC429D006B99B3 /* HslEffect.h in Headers */,
69656DDA1FC2FF800028C4BA /* AccentCallout1Type.h in Headers */,
8A9FACE120777BA7007787F6 /* Structures.h in Headers */,
17C1FCF61ACC429D006B99B3 /* NotesTextViewPr.h in Headers */,
69656EA51FC2FF800028C4BA /* CDonut.h in Headers */,
17C1FCF71ACC429D006B99B3 /* AlphaCeiling.h in Headers */,

View File

@ -204,9 +204,16 @@ std::wstring RtfChar::renderRtfText( std::wstring& sText, void* poDocument, int
ansiStr = RtfUtility::convert_string(unicodeStr.begin(), unicodeStr.end(), nCodePage);
std::wstring sTextBack = RtfUtility::convert_string(ansiStr.begin(), ansiStr.end(), nCodePage);
//обратное преобразование чтобы понять какие символы свонвертировались неправильно
// std::wstring sTextBack = RtfUtility::convert_string(ansiStr.begin(), ansiStr.end(), nCodePage);
std::wstring sTextBack = RtfUtility::convert_string_icu(ansiStr.begin(), ansiStr.end(), nCodePage);
if (!ansiStr.empty() && sTextBack.empty())
{
//code page not support in icu !!!
sTextBack = RtfUtility::convert_string(ansiStr.begin(), ansiStr.end(), nCodePage);
}
//обратное преобразование чтобы понять какие символы свонвертировались неправильно
while (sTextBack.length() < sText.length())
sTextBack += L"-";

View File

@ -33,8 +33,6 @@
#include "Writer/OOXWriter.h"
#include "DestinationCommand.h"
const std::map<int, std::string> RtfUtility::mapEncodingsICU = RtfUtility::create_mapEncodingsICU();
RtfReader::RtfReader(RtfDocument& oDocument, std::wstring sFilename ) : m_oDocument(oDocument), m_sFilename(sFilename)
{
m_oState = ReaderStatePtr(new ReaderState());

View File

@ -356,82 +356,6 @@ static const struct
class RtfUtility
{
public:
static std::map<int, std::string> create_mapEncodingsICU()
{
std::map<int, std::string> m;
m[28596] = "ISO-8859-6";
m[720] = "DOS-720";
m[1256] = "windows-1256";
m[28594] = "ISO-8859-4";
m[28603] = "ISO-8859-13";
m[775] = "IBM775";
m[1257] = "windows-1257";
m[28604] = "ISO-8859-14";
m[28595] = "ISO-8859-5";
m[20866] = "KOI8-R";
m[21866] = "KOI8-U";
m[10007] = "x-mac-cyrillic";
m[855] = "IBM855";
m[866] = "cp866";
m[1251] = "windows-1251";
m[852] = "IBM852";
m[1250] = "windows-1250";
m[950] = "Big5";
m[936] = "GB2312";
m[28592] = "ISO-8859-2";
m[28597] = "ISO-8859-7";
m[737] = "IBM737";
m[869] = "IBM869";
m[1253] = "windows-1253";
m[28598] = "ISO-8859-8";
m[862] = "DOS-862";
m[1255] = "windows-1255";
m[932] = "Shift_JIS";
m[949] = "KS_C_5601-1987";
m[51949] = "EUC-KR";
m[861] = "IBM861";
m[865] = "IBM865";
m[874] = "windows-874";
m[28593] = "ISO-8859-3";
m[28599] = "ISO-8859-9";
m[857] = "IBM857";
m[1254] = "windows-1254";
m[28591] = "ISO-8859-1";
m[28605] = "ISO-8859-15";
m[850] = "IBM850";
m[858] = "IBM858";
m[860] = "IBM860";
m[863] = "IBM863";
m[437] = "IBM437";
m[1252] = "windows-1252";
m[1258] = "windows-1258";
m[65001] = "UTF-8";
m[65000] = "UTF-7";
m[1200] = "UTF-16LE";
m[1201] = "UTF-16BE";
m[12000] = "UTF-32LE";
m[12001] = "UTF-32BE";
return m;
}
static const std::map<int, std::string> mapEncodingsICU;
//--------------------------------------------------------------------------------------------
static std::wstring convertDateTime (int dt)
{
@ -776,7 +700,7 @@ public:
sResult.erase(outsize_with_0 - 1);
ansi = false;
}
#else
#elif defined(__linux__)
std::string sCodepage = "CP" + std::to_string(nCodepage);
iconv_t ic= iconv_open("WCHAR_T", sCodepage.c_str());
@ -808,40 +732,35 @@ public:
static std::wstring convert_string_icu(std::string::const_iterator start, std::string::const_iterator end, int nCodepage = 0)
{
std::string sCodePage;
std::map<int, std::string>::const_iterator pFind = mapEncodingsICU.find(nCodepage);
if (pFind != mapEncodingsICU.end())
std::map<int, std::string>::const_iterator pFind = NSUnicodeConverter::mapEncodingsICU.find(nCodepage);
if (pFind != NSUnicodeConverter::mapEncodingsICU.end())
{
sCodePage = pFind->second;
}
unsigned int insize = (unsigned int)(end - start);
const char* inptr = (const char*)start.operator ->();
if (sCodePage.empty() && nCodepage > 0)
sCodePage = "CP" + std::to_string(nCodepage);
if (sCodePage.empty())
{
return std::wstring(start, end);
if (!sCodePage.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicodeExact(inptr, insize, sCodePage.c_str());
}
else
{
unsigned int insize = (unsigned int)(end - start);
const char* inptr = (const char*)start.operator ->();
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicodeExact(inptr, insize, sCodePage.c_str());
return oConverter.toUnicodeExact(inptr, insize, nCodepage);
}
}
static std::string convert_string(std::wstring::const_iterator start, std::wstring::const_iterator end, int nCodepage = 0)
{
std::string sCodePage;
for (size_t i = 0; i < UNICODE_CONVERTER_ENCODINGS_COUNT; ++i)
{
if (nCodepage == NSUnicodeConverter::Encodings[i].WindowsCodePage)
{
sCodePage = NSUnicodeConverter::Encodings[i].Name;
break;
}
}
if (sCodePage.empty())
std::map<int, std::string>::const_iterator pFind = NSUnicodeConverter::mapEncodingsICU.find(nCodepage);
if (pFind != NSUnicodeConverter::mapEncodingsICU.end())
{
sCodePage = pFind->second;
}
if (sCodePage.empty() && nCodepage > 0)
sCodePage = "CP" + std::to_string(nCodepage);
unsigned int insize = (unsigned int)(end - start);

View File

@ -39,9 +39,14 @@
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string.hpp>
#if defined(_WIN32) || defined(__WIN64)
#include "Windows.h"
#else
#include "iconv.h"
#endif
namespace AUX
{
const int normalizeColumn(const int column)
{
int norm_col = column;
@ -445,54 +450,106 @@ const size_t hex_str2int(const std::wstring::const_iterator& it_begin, const std
}
return numeric;
}
const std::wstring toStdWStringSystem(std::string ansi_string, const unsigned int code_page)
{
bool ansi = true;
std::wstring sResult;
size_t insize = ansi_string.length();
char* inptr = (char*)ansi_string.c_str();
if (code_page > 0)
{
#if defined (_WIN32) || defined (_WIN64)
int outsize_with_0 = MultiByteToWideChar(code_page, 0, inptr, -1, NULL, NULL);
sResult.resize(outsize_with_0);
if (MultiByteToWideChar(code_page, 0, inptr, -1, (LPWSTR)sResult.c_str(), outsize_with_0) > 0)
{
sResult.erase(outsize_with_0 - 1);
ansi = false;
}
#elif defined(__linux__)
std::string sCodepage = "CP" + std::to_string(code_page);
iconv_t ic= iconv_open("WCHAR_T", sCodepage.c_str());
if (ic != (iconv_t) -1)
{
sResult.resize(insize);
char* outptr = (char*)sResult.c_str();
size_t nconv = 0, avail = (insize) * sizeof(wchar_t), outsize = insize;
nconv = iconv (ic, &inptr, &insize, &outptr, &avail);
if (nconv == 0)
{
if (avail > 0)
{
outsize = outsize - avail/sizeof(wchar_t);
sResult.erase(sResult.begin() + outsize);
}
ansi = false;
}
iconv_close(ic);
}
#endif
}
if (ansi)
sResult = std::wstring(ansi_string.begin(), ansi_string.end());
return sResult;
}
const std::wstring toStdWString(std::string ansi_string, const unsigned int code_page)
{
std::string sCodePage;
for (int i = 0; i < UNICODE_CONVERTER_ENCODINGS_COUNT; ++i)
{
if (code_page == NSUnicodeConverter::Encodings[i].WindowsCodePage)
{
sCodePage = NSUnicodeConverter::Encodings[i].Name;
break;
}
}
if (sCodePage.empty())
sCodePage = "CP" + std::to_string(code_page);
std::map<int, std::string>::const_iterator pFind = NSUnicodeConverter::mapEncodingsICU.find(code_page);
if (pFind != NSUnicodeConverter::mapEncodingsICU.end())
{
sCodePage = pFind->second;
}
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi_string, sCodePage.c_str());
if (!sCodePage.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi_string, sCodePage.c_str());
}
else
{
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi_string, code_page);
}
}
const std::wstring toStdWString(char* ansi, int size, const unsigned int code_page)
{
std::string sCodePage;
for (int i = 0; i < UNICODE_CONVERTER_ENCODINGS_COUNT; ++i)
{
if (code_page == NSUnicodeConverter::Encodings[i].WindowsCodePage)
{
sCodePage = NSUnicodeConverter::Encodings[i].Name;
break;
}
}
if (sCodePage.empty())
sCodePage = "CP" + std::to_string(code_page);
std::map<int, std::string>::const_iterator pFind = NSUnicodeConverter::mapEncodingsICU.find(code_page);
if (pFind != NSUnicodeConverter::mapEncodingsICU.end())
{
sCodePage = pFind->second;
}
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi, size, sCodePage.c_str());
if (!sCodePage.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi, size, sCodePage.c_str());
}
else
{
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.toUnicode(ansi, size, code_page);
}
}
const std::string toStdString(std::wstring wide_string, const unsigned int code_page)
{
std::string sCodePage;
for (int i = 0; i < UNICODE_CONVERTER_ENCODINGS_COUNT; ++i)
{
if (code_page == NSUnicodeConverter::Encodings[i].WindowsCodePage)
{
sCodePage = NSUnicodeConverter::Encodings[i].Name;
break;
}
}
if (sCodePage.empty())
std::map<int, std::string>::const_iterator pFind = NSUnicodeConverter::mapEncodingsICU.find(code_page);
if (pFind != NSUnicodeConverter::mapEncodingsICU.end())
{
sCodePage = pFind->second;
}
if (sCodePage.empty() && code_page > 0)
{
sCodePage = "CP" + std::to_string(code_page);
}
NSUnicodeConverter::CUnicodeConverter oConverter;
return oConverter.fromUnicode(wide_string, sCodePage.c_str());

View File

@ -90,6 +90,7 @@ namespace STR
const std::string toStdString (std::wstring wide_string, const unsigned int code_page);
const std::wstring toStdWString(std::string ansi_string, const unsigned int code_page);
const std::wstring toStdWString(char* ansi, int size, const unsigned int code_page);
const std::wstring toStdWStringSystem(std::string ansi_string, const unsigned int code_page);
};
namespace XMLSTUFF

View File

@ -60,7 +60,14 @@ PropertyStr::PropertyStr(unsigned int prop_type, const unsigned short value_type
{
char *s = new char[size];
stream->read(s,size);
value = STR::toStdWString(s, size, code_page_);
try
{
value = STR::toStdWString(s, size, code_page_);
}
catch(...)
{
value = STR::toStdWStringSystem(std::string(s, size), code_page_);
}
delete []s;
}
}

View File

@ -46,45 +46,6 @@ namespace NSCustomShapesConvert
const double c_dInchToMillimetreKoef = 25.4;
const double c_dMasterUnitsToMillimetreKoef = c_dMasterUnitsToInchKoef * c_dInchToMillimetreKoef;
class CMetricInfo
{
public:
DWORD m_lUnitsHor;
DWORD m_lUnitsVer;
DWORD m_lMillimetresHor;
DWORD m_lMillimetresVer;
public:
CMetricInfo()
{
m_lUnitsHor = 5000;
m_lUnitsVer = 5000;
m_lMillimetresHor = 5000;
m_lMillimetresVer = 5000;
}
CMetricInfo& operator =(const CMetricInfo& oSrc)
{
m_lUnitsHor = oSrc.m_lUnitsHor;
m_lUnitsVer = oSrc.m_lUnitsVer;
m_lMillimetresHor = oSrc.m_lMillimetresHor;
m_lMillimetresVer = oSrc.m_lMillimetresVer;
return *this;
}
void SetUnitsContainerSize(DWORD lSizeX, DWORD lSizeY)
{
m_lUnitsHor = lSizeX;
m_lUnitsVer = lSizeY;
m_lMillimetresHor = (DWORD)(m_lUnitsHor * c_dMasterUnitsToMillimetreKoef);
m_lMillimetresVer = (DWORD)(m_lUnitsVer * c_dMasterUnitsToMillimetreKoef);
}
};
class CDoubleRect
{
public:

View File

@ -1,55 +1,64 @@
SET SCRIPTPATH=%~dp0
CD /D %~dp0
SET platform=win_32
SET ICU_MAJOR_VER=60
SET ICU_MINOR_VER=2
SET build_platform=win_32
if defined ProgramFiles(x86) (
SET platform=win_64
SET build_platform=win_64
)
if defined TARGET (
SET platform=%TARGET%
SET build_platform=%TARGET%
)
if not exist "%platform%" (
md "%platform%"
if "%build_platform%" == "win_32" (
SET MACHINE=x86
)
if not exist "%platform%\build" (
md "%platform%\build"
if "%build_platform%" == "win_64" (
SET MACHINE=x64
)
if "%platform%" == "win_64" (
SET URL=http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-Win64-msvc10.zip
if not exist "%build_platform%" (
md "%build_platform%"
)
if not exist "%build_platform%\build" (
md "%build_platform%\build"
)
cd "%SCRIPTPATH%%build_platform%"
if exist "%SCRIPTPATH%%build_platform%\icu\" (
echo "icu already exported"
) else (
SET URL=http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-Win32-msvc10.zip
svn export http://source.icu-project.org/repos/icu/tags/release-%ICU_MAJOR_VER%-%ICU_MINOR_VER%/icu4c ./icu
)
if exist "%SCRIPTPATH%%platform%\icu.zip" (
echo "icu already downloaded"
SET VC=%ProgramFiles%\Microsoft Visual Studio 14.0\VC
SET VC64=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC
if exist %VC64% (
SET VC=%VC64%
)
call "%VC%\vcvarsall.bat" %MACHINE%
if "%build_platform%" == "win_64" (
MSBuild.exe icu\source\allinone\allinone.sln /p:Configuration=Release /p:PlatformToolset=v140 /p:Platform="X64"
) else (
Powershell.exe Invoke-WebRequest -OutFile %platform%\icu.zip -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox "%URL%"
MSBuild.exe icu\source\allinone\allinone.sln /p:Configuration=Release /p:PlatformToolset=v140 /p:Platform="Win32"
)
SET UNSIP_PROGRAMM="C:\Program Files\7-Zip\7z.exe"
SET UNSIP_PROGRAMM2="C:\Program Files (x86)\7-Zip\7z.exe"
if exist %UNSIP_PROGRAMM2% (
SET UNSIP_PROGRAMM=%UNSIP_PROGRAMM2%
)
if exist "%SCRIPTPATH%%platform%\icu\" (
echo "icu already extracted"
if "%build_platform%" == "win_64" (
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\bin64\icudt%ICU_MAJOR_VER%.dll" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\bin64\icuuc%ICU_MAJOR_VER%.dll" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\lib64\icudt.lib" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\lib64\icuuc.lib" "%SCRIPTPATH%%build_platform%\build\"
) else (
call %UNSIP_PROGRAMM% x "%SCRIPTPATH%%platform%\icu.zip" -o"%SCRIPTPATH%%platform%\"
)
if "%platform%" == "win_64" (
XCOPY /Y "%SCRIPTPATH%%platform%\icu\bin64\icudt55.dll" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\bin64\icuuc55.dll" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\lib64\icudt.lib" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\lib64\icuuc.lib" "%SCRIPTPATH%%platform%\build\"
) else (
XCOPY /Y "%SCRIPTPATH%%platform%\icu\bin\icudt55.dll" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\bin\icuuc55.dll" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\lib\icudt.lib" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%platform%\icu\lib\icuuc.lib" "%SCRIPTPATH%%platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\bin\icudt%ICU_MAJOR_VER%.dll" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\bin\icuuc%ICU_MAJOR_VER%.dll" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\lib\icudt.lib" "%SCRIPTPATH%%build_platform%\build\"
XCOPY /Y "%SCRIPTPATH%%build_platform%\icu\lib\icuuc.lib" "%SCRIPTPATH%%build_platform%\build\"
)

View File

@ -3,15 +3,29 @@
SCRIPT=$(readlink -f "$0" || grealpath "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
ICU_MAJOR_VER=60
ICU_MINOR_VER=2
SHARED_LIB_VER=$ICU_MAJOR_VER.$ICU_MINOR_VER
os=$(uname -s)
platform=""
case "$os" in
Linux*) platform="linux" ;;
Darwin*) platform="mac" ;;
Linux*)
platform="linux"
BUILD_PLATFORM=Linux
SHARED_LIB_EXT=.so.$SHARED_LIB_VER
;;
Darwin*)
platform="mac"
BUILD_PLATFORM=MacOSX
SHARED_LIB_EXT=.$SHARED_LIB_VER.dylib
;;
*) exit ;;
esac
architecture=$(uname -m)
arch=""
@ -31,46 +45,33 @@ cd "$SCRIPTPATH/$platform$arch"
if [ -d "build" ]
then
echo ""
echo ""
else
mkdir "build"
mkdir "build"
fi
if [[ "$platform" == *"linux"* ]]
then
if [[ -f "./icu.zip" ]]
then
echo "icu already downloaded"
else
if [[ "$arch" == *"_64"* ]]
then
wget -O icu.zip http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-RHEL6-x64.tgz
else
wget -O icu.zip http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-RHEL6-i386.tgz
fi
fi
if [ -d "./icu" ]
then
echo "icu already extracted"
echo "icu already exported"
else
7z x -so "./icu.zip" | tar xf -
fi
cp "./usr/local/lib/libicudata.so.55.1" "build/libicudata.so.55"
cp "./usr/local/lib/libicuuc.so.55.1" "build/libicuuc.so.55"
svn export http://source.icu-project.org/repos/icu/tags/release-$ICU_MAJOR_VER-$ICU_MINOR_VER/icu4c ./icu
fi
if [[ "$platform" == *"mac"* ]]
then
if [ -d "./icu" ]
then
echo "icu already extracted"
else
svn export http://source.icu-project.org/repos/icu/icu/tags/release-55-1 ./icu
fi
cd ./icu/source/
./runConfigureICU MacOSX
make
cd ../../
cp "./icu/source/lib/libicudata.55.1.dylib" "build/libicudata.55.1.dylib"
cp "./icu/source/lib/libicuuc.55.1.dylib" "build/libicuuc.55.1.dylib"
if [ ! -f "./Makefile" ]
then
./runConfigureICU $BUILD_PLATFORM
fi
make
if [ ! -d "$SCRIPTPATH/$platform$arch/usr/local" ]
then
DESTDIR="$SCRIPTPATH/$platform$arch" make install
fi
cd ../../
cp "./icu/source/lib/libicudata$SHARED_LIB_EXT" "build/libicudata$SHARED_LIB_EXT"
cp "./icu/source/lib/libicuuc$SHARED_LIB_EXT" "build/libicuuc$SHARED_LIB_EXT"

View File

@ -1,4 +1,5 @@
core_windows {
message($$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/icu/include)
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/icu/include
}
@ -13,13 +14,13 @@ core_win_32 {
core_linux {
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/usr/local/include
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicuuc.so.55
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicudata.so.55
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicuuc.so.60.2
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicudata.so.60.2
}
core_mac {
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/icu/source/common
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/usr/local/include
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicuuc.55.1.dylib
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicudata.55.1.dylib
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicuuc.60.2.dylib
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicudata.60.2.dylib
}

View File

@ -50,318 +50,318 @@ public:
}
MS_LCID_converter()
{
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0401, L"ar-SA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0402, L"bg-BG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0403, L"ca-ES"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0404, L"zh-TW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0405, L"cs-CZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0406, L"da-DK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0407, L"de-DE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0408, L"el-GR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0409, L"en-US"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040a, L"es-ES_tradnl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040b, L"fi-FI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040c, L"fr-FR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040d, L"he-IL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040e, L"hu-HU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x040f, L"is-IS"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0410, L"it-IT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0411, L"ja-JP"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0412, L"ko-KR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0413, L"nl-NL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0414, L"nb-NO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0415, L"pl-PL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0416, L"pt-BR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0417, L"rm-CH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0418, L"ro-RO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0419, L"ru-RU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041a, L"hr-HR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041b, L"sk-SK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041c, L"sq-AL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041d, L"sv-SE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041e, L"th-TH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x041f, L"tr-TR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0420, L"ur-PK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0421, L"id-ID"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0422, L"uk-UA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0423, L"be-BY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0424, L"sl-SI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0425, L"et-EE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0426, L"lv-LV"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0427, L"lt-LT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0428, L"tg-Cyrl-TJ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0429, L"fa-IR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042a, L"vi-VN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042b, L"hy-AM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042c, L"az-Latn-AZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042d, L"eu-ES"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042e, L"hsb-DE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x042f, L"mk-MK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0430, L"st-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0431, L"ts-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0432, L"tn-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0433, L"ve-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0434, L"xh-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0435, L"zu-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0436, L"af-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0437, L"ka-GE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0438, L"fo-FO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0439, L"hi-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x043a, L"mt-MT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x043b, L"se-NO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x043d, L"yi-Hebr"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x043e, L"ms-MY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x043f, L"kk-KZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0440, L"ky-KG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0441, L"sw-KE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0442, L"tk-TM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0443, L"uz-Latn-UZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0444, L"tt-RU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0445, L"bn-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0446, L"pa-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0447, L"gu-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0448, L"or-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0449, L"ta-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044a, L"te-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044b, L"kn-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044c, L"ml-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044d, L"as-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044e, L"mr-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x044f, L"sa-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0450, L"mn-MN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0451, L"bo-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0452, L"cy-GB"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0453, L"km-KH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0454, L"lo-LA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0455, L"my-MM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0456, L"gl-ES"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0457, L"kok-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0458, L"mni-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0459, L"sd-Deva-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045a, L"syr-SY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045b, L"si-LK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045c, L"chr-Cher-US"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045d, L"iu-Cans-CA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045e, L"am-ET"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x045f, L"tzm-Arab-MA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0460, L"ks-Arab"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0461, L"ne-NP"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0462, L"fy-NL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0463, L"ps-AF"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0464, L"fil-PH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0465, L"dv-MV"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0466, L"bin-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0467, L"fuv-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0468, L"ha-Latn-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0469, L"ibb-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046a, L"yo-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046b, L"quz-BO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046c, L"nso-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046d, L"ba-RU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046e, L"lb-LU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x046f, L"kl-GL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0470, L"ig-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0471, L"kr-NG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0472, L"om-ET"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0473, L"ti-ET"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0474, L"gn-PY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0475, L"haw-US"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0476, L"la-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0477, L"so-SO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0478, L"ii-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0479, L"pap-029"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x047a, L"arn-CL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x047c, L"moh-CA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x047e, L"br-FR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0480, L"ug-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0481, L"mi-NZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0482, L"oc-FR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0483, L"co-FR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0484, L"gsw-FR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0485, L"sah-RU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0486, L"qut-GT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0487, L"rw-RW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0488, L"wo-SN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x048c, L"prs-AF"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x048d, L"plt-MG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x048e, L"zh-yue-HK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x048f, L"tdd-Tale-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0490, L"khb-Talu-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0491, L"gd-GB"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0492, L"ku-Arab-IQ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0493, L"quc-CO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0501, L"qps-ploc"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x05fe, L"qps-ploca"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0801, L"ar-IQ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0803, L"ca-ES-valencia"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0804, L"zh-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0807, L"de-CH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0809, L"en-GB"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x080a, L"es-MX"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x080c, L"fr-BE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0810, L"it-CH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0811, L"ja-Ploc-JP"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0813, L"nl-BE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0814, L"nn-NO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0816, L"pt-PT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0818, L"ro-MD"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0819, L"ru-MD"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x081a, L"sr-Latn-CS"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x081d, L"sv-FI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0820, L"ur-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x082c, L"az-Cyrl-AZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x082e, L"dsb-DE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0832, L"tn-BW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x083b, L"se-SE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x083c, L"ga-IE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x083e, L"ms-BN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0843, L"uz-Cyrl-UZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0845, L"bn-BD"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0846, L"pa-Arab-PK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0849, L"ta-LK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0850, L"mn-Mong-CN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0851, L"bo-BT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0859, L"sd-Arab-PK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x085d, L"iu-Latn-CA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x085f, L"tzm-Latn-DZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0860, L"ks-Deva"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0861, L"ne-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0867, L"ff-Latn-SN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x086b, L"quz-EC"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0873, L"ti-ER"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x09ff, L"qps-plocm"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c01, L"ar-EG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c04, L"zh-HK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c07, L"de-AT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c09, L"en-AU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c0a, L"es-ES"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c0c, L"fr-CA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c1a, L"sr-Cyrl-CS"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c3b, L"se-FI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c50, L"mn-Mong-MN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c51, L"dz-BT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c5f, L"tmz-MA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x0c6b, L"quz-PE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1001, L"ar-LY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1004, L"zh-SG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1007, L"de-LU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1009, L"en-CA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x100a, L"es-GT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x100c, L"fr-CH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x101a, L"hr-BA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x103b, L"smj-NO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x105f, L"tzm-Tfng-MA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1401, L"ar-DZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1404, L"zh-MO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1407, L"de-LI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1409, L"en-NZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x140a, L"es-CR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x140c, L"fr-LU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x141a, L"bs-Latn-BA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x143b, L"smj-SE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1801, L"ar-MA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1809, L"en-IE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x180a, L"es-PA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x180c, L"fr-MC"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x181a, L"sr-Latn-BA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x183b, L"sma-NO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1c01, L"ar-TN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1c09, L"en-ZA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1c0a, L"es-DO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1c1a, L"sr-Cyrl-BA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x1c3b, L"sma-SE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2001, L"ar-OM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2009, L"en-JM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x200a, L"es-VE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x200c, L"fr-RE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x201a, L"bs-Cyrl-BA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x203b, L"sms-FI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2401, L"ar-YE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2409, L"en-029"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x240a, L"es-CO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x240c, L"fr-CD"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x241a, L"sr-Latn-RS"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x243b, L"smn-FI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2801, L"ar-SY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2809, L"en-BZ"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x280a, L"es-PE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x280c, L"fr-SN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x281a, L"sr-Cyrl-RS"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2c01, L"ar-JO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2c09, L"en-TT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2c0a, L"es-AR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2c0c, L"fr-CM"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x2c1a, L"sr-Latn-ME"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3001, L"ar-LB"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3009, L"en-ZW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x300a, L"es-EC"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x300c, L"fr-CI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x301a, L"sr-Cyrl-ME"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3401, L"ar-KW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3409, L"en-PH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x340a, L"es-CL"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x340c, L"fr-ML"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3801, L"ar-AE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3809, L"en-ID"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x380a, L"es-UY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x380c, L"fr-MA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3c01, L"ar-BH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3c09, L"en-HK"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3c0a, L"es-PY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x3c0c, L"fr-HT"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4001, L"ar-QA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4009, L"en-IN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x400a, L"es-BO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4401, L"ar-Ploc-SA"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4409, L"en-MY"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x440a, L"es-SV"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4801, L"ar-145"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4809, L"en-SG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x480a, L"es-HN"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4c09, L"en-AE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x4c0a, L"es-NI"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x5009, L"en-BH"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x500a, L"es-PR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x5409, L"en-EG"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x540a, L"es-US"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x5809, L"en-JO"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x580a, L"es-419"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x5c09, L"en-KW"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x5c0a, L"es-CU"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x6009, L"en-TR"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x6409, L"en-YE"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x641a, L"bs-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x681a, L"bs-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x6c1a, L"sr-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x701a, L"sr-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x703b, L"smn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x742c, L"az-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x743b, L"sms"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7804, L"zh"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7814, L"nn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x781a, L"bs"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x782c, L"az-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x783b, L"sma"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7843, L"uz-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7850, L"mn-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x785d, L"iu-Cans"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x785f, L"tzm-Tfng"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c04, L"zh-Hant"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c14, L"nb"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c1a, L"sr"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c28, L"tg-Cyrl"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c2e, L"dsb"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c3b, L"smj"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c43, L"uz-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c46, L"pa-Arab"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c50, L"mn-Mong"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c59, L"sd-Arab"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c5c, L"chr-Cher"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c5d, L"iu-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c5f, L"tzm-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c67, L"ff-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c68, L"ha-Latn"));
m_mapLCID.insert(std::pair<int,std::wstring>( 0x7c92, L"ku-Arab"));
m_mapLCID.insert(std::make_pair( 0x0401, L"ar-SA"));
m_mapLCID.insert(std::make_pair( 0x0402, L"bg-BG"));
m_mapLCID.insert(std::make_pair( 0x0403, L"ca-ES"));
m_mapLCID.insert(std::make_pair( 0x0404, L"zh-TW"));
m_mapLCID.insert(std::make_pair( 0x0405, L"cs-CZ"));
m_mapLCID.insert(std::make_pair( 0x0406, L"da-DK"));
m_mapLCID.insert(std::make_pair( 0x0407, L"de-DE"));
m_mapLCID.insert(std::make_pair( 0x0408, L"el-GR"));
m_mapLCID.insert(std::make_pair( 0x0409, L"en-US"));
m_mapLCID.insert(std::make_pair( 0x040a, L"es-ES_tradnl"));
m_mapLCID.insert(std::make_pair( 0x040b, L"fi-FI"));
m_mapLCID.insert(std::make_pair( 0x040c, L"fr-FR"));
m_mapLCID.insert(std::make_pair( 0x040d, L"he-IL"));
m_mapLCID.insert(std::make_pair( 0x040e, L"hu-HU"));
m_mapLCID.insert(std::make_pair( 0x040f, L"is-IS"));
m_mapLCID.insert(std::make_pair( 0x0410, L"it-IT"));
m_mapLCID.insert(std::make_pair( 0x0411, L"ja-JP"));
m_mapLCID.insert(std::make_pair( 0x0412, L"ko-KR"));
m_mapLCID.insert(std::make_pair( 0x0413, L"nl-NL"));
m_mapLCID.insert(std::make_pair( 0x0414, L"nb-NO"));
m_mapLCID.insert(std::make_pair( 0x0415, L"pl-PL"));
m_mapLCID.insert(std::make_pair( 0x0416, L"pt-BR"));
m_mapLCID.insert(std::make_pair( 0x0417, L"rm-CH"));
m_mapLCID.insert(std::make_pair( 0x0418, L"ro-RO"));
m_mapLCID.insert(std::make_pair( 0x0419, L"ru-RU"));
m_mapLCID.insert(std::make_pair( 0x041a, L"hr-HR"));
m_mapLCID.insert(std::make_pair( 0x041b, L"sk-SK"));
m_mapLCID.insert(std::make_pair( 0x041c, L"sq-AL"));
m_mapLCID.insert(std::make_pair( 0x041d, L"sv-SE"));
m_mapLCID.insert(std::make_pair( 0x041e, L"th-TH"));
m_mapLCID.insert(std::make_pair( 0x041f, L"tr-TR"));
m_mapLCID.insert(std::make_pair( 0x0420, L"ur-PK"));
m_mapLCID.insert(std::make_pair( 0x0421, L"id-ID"));
m_mapLCID.insert(std::make_pair( 0x0422, L"uk-UA"));
m_mapLCID.insert(std::make_pair( 0x0423, L"be-BY"));
m_mapLCID.insert(std::make_pair( 0x0424, L"sl-SI"));
m_mapLCID.insert(std::make_pair( 0x0425, L"et-EE"));
m_mapLCID.insert(std::make_pair( 0x0426, L"lv-LV"));
m_mapLCID.insert(std::make_pair( 0x0427, L"lt-LT"));
m_mapLCID.insert(std::make_pair( 0x0428, L"tg-Cyrl-TJ"));
m_mapLCID.insert(std::make_pair( 0x0429, L"fa-IR"));
m_mapLCID.insert(std::make_pair( 0x042a, L"vi-VN"));
m_mapLCID.insert(std::make_pair( 0x042b, L"hy-AM"));
m_mapLCID.insert(std::make_pair( 0x042c, L"az-Latn-AZ"));
m_mapLCID.insert(std::make_pair( 0x042d, L"eu-ES"));
m_mapLCID.insert(std::make_pair( 0x042e, L"hsb-DE"));
m_mapLCID.insert(std::make_pair( 0x042f, L"mk-MK"));
m_mapLCID.insert(std::make_pair( 0x0430, L"st-ZA"));
m_mapLCID.insert(std::make_pair( 0x0431, L"ts-ZA"));
m_mapLCID.insert(std::make_pair( 0x0432, L"tn-ZA"));
m_mapLCID.insert(std::make_pair( 0x0433, L"ve-ZA"));
m_mapLCID.insert(std::make_pair( 0x0434, L"xh-ZA"));
m_mapLCID.insert(std::make_pair( 0x0435, L"zu-ZA"));
m_mapLCID.insert(std::make_pair( 0x0436, L"af-ZA"));
m_mapLCID.insert(std::make_pair( 0x0437, L"ka-GE"));
m_mapLCID.insert(std::make_pair( 0x0438, L"fo-FO"));
m_mapLCID.insert(std::make_pair( 0x0439, L"hi-IN"));
m_mapLCID.insert(std::make_pair( 0x043a, L"mt-MT"));
m_mapLCID.insert(std::make_pair( 0x043b, L"se-NO"));
m_mapLCID.insert(std::make_pair( 0x043d, L"yi-Hebr"));
m_mapLCID.insert(std::make_pair( 0x043e, L"ms-MY"));
m_mapLCID.insert(std::make_pair( 0x043f, L"kk-KZ"));
m_mapLCID.insert(std::make_pair( 0x0440, L"ky-KG"));
m_mapLCID.insert(std::make_pair( 0x0441, L"sw-KE"));
m_mapLCID.insert(std::make_pair( 0x0442, L"tk-TM"));
m_mapLCID.insert(std::make_pair( 0x0443, L"uz-Latn-UZ"));
m_mapLCID.insert(std::make_pair( 0x0444, L"tt-RU"));
m_mapLCID.insert(std::make_pair( 0x0445, L"bn-IN"));
m_mapLCID.insert(std::make_pair( 0x0446, L"pa-IN"));
m_mapLCID.insert(std::make_pair( 0x0447, L"gu-IN"));
m_mapLCID.insert(std::make_pair( 0x0448, L"or-IN"));
m_mapLCID.insert(std::make_pair( 0x0449, L"ta-IN"));
m_mapLCID.insert(std::make_pair( 0x044a, L"te-IN"));
m_mapLCID.insert(std::make_pair( 0x044b, L"kn-IN"));
m_mapLCID.insert(std::make_pair( 0x044c, L"ml-IN"));
m_mapLCID.insert(std::make_pair( 0x044d, L"as-IN"));
m_mapLCID.insert(std::make_pair( 0x044e, L"mr-IN"));
m_mapLCID.insert(std::make_pair( 0x044f, L"sa-IN"));
m_mapLCID.insert(std::make_pair( 0x0450, L"mn-MN"));
m_mapLCID.insert(std::make_pair( 0x0451, L"bo-CN"));
m_mapLCID.insert(std::make_pair( 0x0452, L"cy-GB"));
m_mapLCID.insert(std::make_pair( 0x0453, L"km-KH"));
m_mapLCID.insert(std::make_pair( 0x0454, L"lo-LA"));
m_mapLCID.insert(std::make_pair( 0x0455, L"my-MM"));
m_mapLCID.insert(std::make_pair( 0x0456, L"gl-ES"));
m_mapLCID.insert(std::make_pair( 0x0457, L"kok-IN"));
m_mapLCID.insert(std::make_pair( 0x0458, L"mni-IN"));
m_mapLCID.insert(std::make_pair( 0x0459, L"sd-Deva-IN"));
m_mapLCID.insert(std::make_pair( 0x045a, L"syr-SY"));
m_mapLCID.insert(std::make_pair( 0x045b, L"si-LK"));
m_mapLCID.insert(std::make_pair( 0x045c, L"chr-Cher-US"));
m_mapLCID.insert(std::make_pair( 0x045d, L"iu-Cans-CA"));
m_mapLCID.insert(std::make_pair( 0x045e, L"am-ET"));
m_mapLCID.insert(std::make_pair( 0x045f, L"tzm-Arab-MA"));
m_mapLCID.insert(std::make_pair( 0x0460, L"ks-Arab"));
m_mapLCID.insert(std::make_pair( 0x0461, L"ne-NP"));
m_mapLCID.insert(std::make_pair( 0x0462, L"fy-NL"));
m_mapLCID.insert(std::make_pair( 0x0463, L"ps-AF"));
m_mapLCID.insert(std::make_pair( 0x0464, L"fil-PH"));
m_mapLCID.insert(std::make_pair( 0x0465, L"dv-MV"));
m_mapLCID.insert(std::make_pair( 0x0466, L"bin-NG"));
m_mapLCID.insert(std::make_pair( 0x0467, L"fuv-NG"));
m_mapLCID.insert(std::make_pair( 0x0468, L"ha-Latn-NG"));
m_mapLCID.insert(std::make_pair( 0x0469, L"ibb-NG"));
m_mapLCID.insert(std::make_pair( 0x046a, L"yo-NG"));
m_mapLCID.insert(std::make_pair( 0x046b, L"quz-BO"));
m_mapLCID.insert(std::make_pair( 0x046c, L"nso-ZA"));
m_mapLCID.insert(std::make_pair( 0x046d, L"ba-RU"));
m_mapLCID.insert(std::make_pair( 0x046e, L"lb-LU"));
m_mapLCID.insert(std::make_pair( 0x046f, L"kl-GL"));
m_mapLCID.insert(std::make_pair( 0x0470, L"ig-NG"));
m_mapLCID.insert(std::make_pair( 0x0471, L"kr-NG"));
m_mapLCID.insert(std::make_pair( 0x0472, L"om-ET"));
m_mapLCID.insert(std::make_pair( 0x0473, L"ti-ET"));
m_mapLCID.insert(std::make_pair( 0x0474, L"gn-PY"));
m_mapLCID.insert(std::make_pair( 0x0475, L"haw-US"));
m_mapLCID.insert(std::make_pair( 0x0476, L"la-Latn"));
m_mapLCID.insert(std::make_pair( 0x0477, L"so-SO"));
m_mapLCID.insert(std::make_pair( 0x0478, L"ii-CN"));
m_mapLCID.insert(std::make_pair( 0x0479, L"pap-029"));
m_mapLCID.insert(std::make_pair( 0x047a, L"arn-CL"));
m_mapLCID.insert(std::make_pair( 0x047c, L"moh-CA"));
m_mapLCID.insert(std::make_pair( 0x047e, L"br-FR"));
m_mapLCID.insert(std::make_pair( 0x0480, L"ug-CN"));
m_mapLCID.insert(std::make_pair( 0x0481, L"mi-NZ"));
m_mapLCID.insert(std::make_pair( 0x0482, L"oc-FR"));
m_mapLCID.insert(std::make_pair( 0x0483, L"co-FR"));
m_mapLCID.insert(std::make_pair( 0x0484, L"gsw-FR"));
m_mapLCID.insert(std::make_pair( 0x0485, L"sah-RU"));
m_mapLCID.insert(std::make_pair( 0x0486, L"qut-GT"));
m_mapLCID.insert(std::make_pair( 0x0487, L"rw-RW"));
m_mapLCID.insert(std::make_pair( 0x0488, L"wo-SN"));
m_mapLCID.insert(std::make_pair( 0x048c, L"prs-AF"));
m_mapLCID.insert(std::make_pair( 0x048d, L"plt-MG"));
m_mapLCID.insert(std::make_pair( 0x048e, L"zh-yue-HK"));
m_mapLCID.insert(std::make_pair( 0x048f, L"tdd-Tale-CN"));
m_mapLCID.insert(std::make_pair( 0x0490, L"khb-Talu-CN"));
m_mapLCID.insert(std::make_pair( 0x0491, L"gd-GB"));
m_mapLCID.insert(std::make_pair( 0x0492, L"ku-Arab-IQ"));
m_mapLCID.insert(std::make_pair( 0x0493, L"quc-CO"));
m_mapLCID.insert(std::make_pair( 0x0501, L"qps-ploc"));
m_mapLCID.insert(std::make_pair( 0x05fe, L"qps-ploca"));
m_mapLCID.insert(std::make_pair( 0x0801, L"ar-IQ"));
m_mapLCID.insert(std::make_pair( 0x0803, L"ca-ES-valencia"));
m_mapLCID.insert(std::make_pair( 0x0804, L"zh-CN"));
m_mapLCID.insert(std::make_pair( 0x0807, L"de-CH"));
m_mapLCID.insert(std::make_pair( 0x0809, L"en-GB"));
m_mapLCID.insert(std::make_pair( 0x080a, L"es-MX"));
m_mapLCID.insert(std::make_pair( 0x080c, L"fr-BE"));
m_mapLCID.insert(std::make_pair( 0x0810, L"it-CH"));
m_mapLCID.insert(std::make_pair( 0x0811, L"ja-Ploc-JP"));
m_mapLCID.insert(std::make_pair( 0x0813, L"nl-BE"));
m_mapLCID.insert(std::make_pair( 0x0814, L"nn-NO"));
m_mapLCID.insert(std::make_pair( 0x0816, L"pt-PT"));
m_mapLCID.insert(std::make_pair( 0x0818, L"ro-MD"));
m_mapLCID.insert(std::make_pair( 0x0819, L"ru-MD"));
m_mapLCID.insert(std::make_pair( 0x081a, L"sr-Latn-CS"));
m_mapLCID.insert(std::make_pair( 0x081d, L"sv-FI"));
m_mapLCID.insert(std::make_pair( 0x0820, L"ur-IN"));
m_mapLCID.insert(std::make_pair( 0x082c, L"az-Cyrl-AZ"));
m_mapLCID.insert(std::make_pair( 0x082e, L"dsb-DE"));
m_mapLCID.insert(std::make_pair( 0x0832, L"tn-BW"));
m_mapLCID.insert(std::make_pair( 0x083b, L"se-SE"));
m_mapLCID.insert(std::make_pair( 0x083c, L"ga-IE"));
m_mapLCID.insert(std::make_pair( 0x083e, L"ms-BN"));
m_mapLCID.insert(std::make_pair( 0x0843, L"uz-Cyrl-UZ"));
m_mapLCID.insert(std::make_pair( 0x0845, L"bn-BD"));
m_mapLCID.insert(std::make_pair( 0x0846, L"pa-Arab-PK"));
m_mapLCID.insert(std::make_pair( 0x0849, L"ta-LK"));
m_mapLCID.insert(std::make_pair( 0x0850, L"mn-Mong-CN"));
m_mapLCID.insert(std::make_pair( 0x0851, L"bo-BT"));
m_mapLCID.insert(std::make_pair( 0x0859, L"sd-Arab-PK"));
m_mapLCID.insert(std::make_pair( 0x085d, L"iu-Latn-CA"));
m_mapLCID.insert(std::make_pair( 0x085f, L"tzm-Latn-DZ"));
m_mapLCID.insert(std::make_pair( 0x0860, L"ks-Deva"));
m_mapLCID.insert(std::make_pair( 0x0861, L"ne-IN"));
m_mapLCID.insert(std::make_pair( 0x0867, L"ff-Latn-SN"));
m_mapLCID.insert(std::make_pair( 0x086b, L"quz-EC"));
m_mapLCID.insert(std::make_pair( 0x0873, L"ti-ER"));
m_mapLCID.insert(std::make_pair( 0x09ff, L"qps-plocm"));
m_mapLCID.insert(std::make_pair( 0x0c01, L"ar-EG"));
m_mapLCID.insert(std::make_pair( 0x0c04, L"zh-HK"));
m_mapLCID.insert(std::make_pair( 0x0c07, L"de-AT"));
m_mapLCID.insert(std::make_pair( 0x0c09, L"en-AU"));
m_mapLCID.insert(std::make_pair( 0x0c0a, L"es-ES"));
m_mapLCID.insert(std::make_pair( 0x0c0c, L"fr-CA"));
m_mapLCID.insert(std::make_pair( 0x0c1a, L"sr-Cyrl-CS"));
m_mapLCID.insert(std::make_pair( 0x0c3b, L"se-FI"));
m_mapLCID.insert(std::make_pair( 0x0c50, L"mn-Mong-MN"));
m_mapLCID.insert(std::make_pair( 0x0c51, L"dz-BT"));
m_mapLCID.insert(std::make_pair( 0x0c5f, L"tmz-MA"));
m_mapLCID.insert(std::make_pair( 0x0c6b, L"quz-PE"));
m_mapLCID.insert(std::make_pair( 0x1001, L"ar-LY"));
m_mapLCID.insert(std::make_pair( 0x1004, L"zh-SG"));
m_mapLCID.insert(std::make_pair( 0x1007, L"de-LU"));
m_mapLCID.insert(std::make_pair( 0x1009, L"en-CA"));
m_mapLCID.insert(std::make_pair( 0x100a, L"es-GT"));
m_mapLCID.insert(std::make_pair( 0x100c, L"fr-CH"));
m_mapLCID.insert(std::make_pair( 0x101a, L"hr-BA"));
m_mapLCID.insert(std::make_pair( 0x103b, L"smj-NO"));
m_mapLCID.insert(std::make_pair( 0x105f, L"tzm-Tfng-MA"));
m_mapLCID.insert(std::make_pair( 0x1401, L"ar-DZ"));
m_mapLCID.insert(std::make_pair( 0x1404, L"zh-MO"));
m_mapLCID.insert(std::make_pair( 0x1407, L"de-LI"));
m_mapLCID.insert(std::make_pair( 0x1409, L"en-NZ"));
m_mapLCID.insert(std::make_pair( 0x140a, L"es-CR"));
m_mapLCID.insert(std::make_pair( 0x140c, L"fr-LU"));
m_mapLCID.insert(std::make_pair( 0x141a, L"bs-Latn-BA"));
m_mapLCID.insert(std::make_pair( 0x143b, L"smj-SE"));
m_mapLCID.insert(std::make_pair( 0x1801, L"ar-MA"));
m_mapLCID.insert(std::make_pair( 0x1809, L"en-IE"));
m_mapLCID.insert(std::make_pair( 0x180a, L"es-PA"));
m_mapLCID.insert(std::make_pair( 0x180c, L"fr-MC"));
m_mapLCID.insert(std::make_pair( 0x181a, L"sr-Latn-BA"));
m_mapLCID.insert(std::make_pair( 0x183b, L"sma-NO"));
m_mapLCID.insert(std::make_pair( 0x1c01, L"ar-TN"));
m_mapLCID.insert(std::make_pair( 0x1c09, L"en-ZA"));
m_mapLCID.insert(std::make_pair( 0x1c0a, L"es-DO"));
m_mapLCID.insert(std::make_pair( 0x1c1a, L"sr-Cyrl-BA"));
m_mapLCID.insert(std::make_pair( 0x1c3b, L"sma-SE"));
m_mapLCID.insert(std::make_pair( 0x2001, L"ar-OM"));
m_mapLCID.insert(std::make_pair( 0x2009, L"en-JM"));
m_mapLCID.insert(std::make_pair( 0x200a, L"es-VE"));
m_mapLCID.insert(std::make_pair( 0x200c, L"fr-RE"));
m_mapLCID.insert(std::make_pair( 0x201a, L"bs-Cyrl-BA"));
m_mapLCID.insert(std::make_pair( 0x203b, L"sms-FI"));
m_mapLCID.insert(std::make_pair( 0x2401, L"ar-YE"));
m_mapLCID.insert(std::make_pair( 0x2409, L"en-029"));
m_mapLCID.insert(std::make_pair( 0x240a, L"es-CO"));
m_mapLCID.insert(std::make_pair( 0x240c, L"fr-CD"));
m_mapLCID.insert(std::make_pair( 0x241a, L"sr-Latn-RS"));
m_mapLCID.insert(std::make_pair( 0x243b, L"smn-FI"));
m_mapLCID.insert(std::make_pair( 0x2801, L"ar-SY"));
m_mapLCID.insert(std::make_pair( 0x2809, L"en-BZ"));
m_mapLCID.insert(std::make_pair( 0x280a, L"es-PE"));
m_mapLCID.insert(std::make_pair( 0x280c, L"fr-SN"));
m_mapLCID.insert(std::make_pair( 0x281a, L"sr-Cyrl-RS"));
m_mapLCID.insert(std::make_pair( 0x2c01, L"ar-JO"));
m_mapLCID.insert(std::make_pair( 0x2c09, L"en-TT"));
m_mapLCID.insert(std::make_pair( 0x2c0a, L"es-AR"));
m_mapLCID.insert(std::make_pair( 0x2c0c, L"fr-CM"));
m_mapLCID.insert(std::make_pair( 0x2c1a, L"sr-Latn-ME"));
m_mapLCID.insert(std::make_pair( 0x3001, L"ar-LB"));
m_mapLCID.insert(std::make_pair( 0x3009, L"en-ZW"));
m_mapLCID.insert(std::make_pair( 0x300a, L"es-EC"));
m_mapLCID.insert(std::make_pair( 0x300c, L"fr-CI"));
m_mapLCID.insert(std::make_pair( 0x301a, L"sr-Cyrl-ME"));
m_mapLCID.insert(std::make_pair( 0x3401, L"ar-KW"));
m_mapLCID.insert(std::make_pair( 0x3409, L"en-PH"));
m_mapLCID.insert(std::make_pair( 0x340a, L"es-CL"));
m_mapLCID.insert(std::make_pair( 0x340c, L"fr-ML"));
m_mapLCID.insert(std::make_pair( 0x3801, L"ar-AE"));
m_mapLCID.insert(std::make_pair( 0x3809, L"en-ID"));
m_mapLCID.insert(std::make_pair( 0x380a, L"es-UY"));
m_mapLCID.insert(std::make_pair( 0x380c, L"fr-MA"));
m_mapLCID.insert(std::make_pair( 0x3c01, L"ar-BH"));
m_mapLCID.insert(std::make_pair( 0x3c09, L"en-HK"));
m_mapLCID.insert(std::make_pair( 0x3c0a, L"es-PY"));
m_mapLCID.insert(std::make_pair( 0x3c0c, L"fr-HT"));
m_mapLCID.insert(std::make_pair( 0x4001, L"ar-QA"));
m_mapLCID.insert(std::make_pair( 0x4009, L"en-IN"));
m_mapLCID.insert(std::make_pair( 0x400a, L"es-BO"));
m_mapLCID.insert(std::make_pair( 0x4401, L"ar-Ploc-SA"));
m_mapLCID.insert(std::make_pair( 0x4409, L"en-MY"));
m_mapLCID.insert(std::make_pair( 0x440a, L"es-SV"));
m_mapLCID.insert(std::make_pair( 0x4801, L"ar-145"));
m_mapLCID.insert(std::make_pair( 0x4809, L"en-SG"));
m_mapLCID.insert(std::make_pair( 0x480a, L"es-HN"));
m_mapLCID.insert(std::make_pair( 0x4c09, L"en-AE"));
m_mapLCID.insert(std::make_pair( 0x4c0a, L"es-NI"));
m_mapLCID.insert(std::make_pair( 0x5009, L"en-BH"));
m_mapLCID.insert(std::make_pair( 0x500a, L"es-PR"));
m_mapLCID.insert(std::make_pair( 0x5409, L"en-EG"));
m_mapLCID.insert(std::make_pair( 0x540a, L"es-US"));
m_mapLCID.insert(std::make_pair( 0x5809, L"en-JO"));
m_mapLCID.insert(std::make_pair( 0x580a, L"es-419"));
m_mapLCID.insert(std::make_pair( 0x5c09, L"en-KW"));
m_mapLCID.insert(std::make_pair( 0x5c0a, L"es-CU"));
m_mapLCID.insert(std::make_pair( 0x6009, L"en-TR"));
m_mapLCID.insert(std::make_pair( 0x6409, L"en-YE"));
m_mapLCID.insert(std::make_pair( 0x641a, L"bs-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x681a, L"bs-Latn"));
m_mapLCID.insert(std::make_pair( 0x6c1a, L"sr-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x701a, L"sr-Latn"));
m_mapLCID.insert(std::make_pair( 0x703b, L"smn"));
m_mapLCID.insert(std::make_pair( 0x742c, L"az-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x743b, L"sms"));
m_mapLCID.insert(std::make_pair( 0x7804, L"zh"));
m_mapLCID.insert(std::make_pair( 0x7814, L"nn"));
m_mapLCID.insert(std::make_pair( 0x781a, L"bs"));
m_mapLCID.insert(std::make_pair( 0x782c, L"az-Latn"));
m_mapLCID.insert(std::make_pair( 0x783b, L"sma"));
m_mapLCID.insert(std::make_pair( 0x7843, L"uz-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x7850, L"mn-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x785d, L"iu-Cans"));
m_mapLCID.insert(std::make_pair( 0x785f, L"tzm-Tfng"));
m_mapLCID.insert(std::make_pair( 0x7c04, L"zh-Hant"));
m_mapLCID.insert(std::make_pair( 0x7c14, L"nb"));
m_mapLCID.insert(std::make_pair( 0x7c1a, L"sr"));
m_mapLCID.insert(std::make_pair( 0x7c28, L"tg-Cyrl"));
m_mapLCID.insert(std::make_pair( 0x7c2e, L"dsb"));
m_mapLCID.insert(std::make_pair( 0x7c3b, L"smj"));
m_mapLCID.insert(std::make_pair( 0x7c43, L"uz-Latn"));
m_mapLCID.insert(std::make_pair( 0x7c46, L"pa-Arab"));
m_mapLCID.insert(std::make_pair( 0x7c50, L"mn-Mong"));
m_mapLCID.insert(std::make_pair( 0x7c59, L"sd-Arab"));
m_mapLCID.insert(std::make_pair( 0x7c5c, L"chr-Cher"));
m_mapLCID.insert(std::make_pair( 0x7c5d, L"iu-Latn"));
m_mapLCID.insert(std::make_pair( 0x7c5f, L"tzm-Latn"));
m_mapLCID.insert(std::make_pair( 0x7c67, L"ff-Latn"));
m_mapLCID.insert(std::make_pair( 0x7c68, L"ha-Latn"));
m_mapLCID.insert(std::make_pair( 0x7c92, L"ku-Arab"));
}
};

View File

@ -144,20 +144,25 @@ bool COfficeFileFormatChecker::isDocFormatFile (POLE::Storage * storage)
POLE::Stream stream(storage, L"WordDocument");
unsigned char buffer[10];
if (stream.read(buffer, 10) > 0)
unsigned char buffer[64];
if (stream.read(buffer, 64) > 0)
{
//ms office 2007 encrypted contains stream WordDocument !!
std::list<std::wstring> entries = storage->entries(L"DataSpaces");
if (entries.size() > 0)
return false;
if ((buffer[0] == 0xEC && buffer[1] == 0xA5) || // word 1997-2003
(buffer[0] == 0xDC && buffer[1] == 0xA5)) // word 1995
if ((buffer[0] == 0xEC && buffer[1] == 0xA5) || // word 1997-2003
(buffer[0] == 0xDC && buffer[1] == 0xA5) || // word 1995
(buffer[0] == 0xDB && buffer[1] == 0xA5)) // word 2.0
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC;
}
else if ( isHtmlFormatFile(buffer, 64, false) )
{
nFileType = AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER;
return true;
}
if (storage->isDirectory(L"Macros"))
{
bMacroEnabled = true;
@ -278,7 +283,7 @@ bool COfficeFileFormatChecker::isOfficeFile(const std::wstring & fileName)
nFileType = AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO;
return true;
}
}
}
COfficeUtils OfficeUtils(NULL);
if (OfficeUtils.IsArchive(fileName) == S_OK)

View File

@ -50,6 +50,7 @@
#define AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT_FLAT AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000e
#define AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000f
#define AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC_FLAT AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0010
#define AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML_IN_CONTAINER AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0011
#define AVS_OFFICESTUDIO_FILE_PRESENTATION 0x0080
#define AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0001

View File

@ -1,4 +1,4 @@
VERSION = 2.4.525.0
VERSION = 2.4.530.0
DEFINES += INTVER=$$VERSION
# CONFIGURATION

View File

@ -251,7 +251,7 @@
7C560F671AA71A91000E5860 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System";
TargetAttributes = {
7C560F6E1AA71A91000E5860 = {
@ -345,12 +345,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -396,12 +398,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -727,7 +727,7 @@
17D918631AC5A19D0096D788 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17D918661AC5A19D0096D788 /* Build configuration list for PBXProject "agg" */;
@ -856,12 +856,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -907,12 +909,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -278,7 +278,7 @@
17D91A341AC5A7C20096D788 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17D91A371AC5A7C20096D788 /* Build configuration list for PBXProject "cximage" */;
@ -406,12 +406,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -457,12 +459,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -457,7 +457,7 @@
175CBDA41AC93C09007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CBDA71AC93C09007D7DEC /* Build configuration list for PBXProject "jasper" */;
@ -551,12 +551,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -602,12 +604,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -93,7 +93,7 @@
175CBE931AC9458E007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CBE961AC9458E007D7DEC /* Build configuration list for PBXProject "jbig" */;
@ -138,12 +138,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -189,12 +191,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -335,7 +335,7 @@
175CBEBF1AC94658007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CBEC21AC94658007D7DEC /* Build configuration list for PBXProject "jpeg" */;
@ -446,12 +446,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -497,12 +499,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -281,7 +281,7 @@
175CBF9A1AC948D9007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CBF9D1AC948D9007D7DEC /* Build configuration list for PBXProject "libpsd" */;
@ -374,12 +374,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -425,12 +427,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -228,7 +228,7 @@
175CC0451AC949B4007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CC0481AC949B4007D7DEC /* Build configuration list for PBXProject "mng" */;
@ -290,12 +290,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -341,12 +343,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -159,7 +159,7 @@
175CC1791AC9569C007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CC17C1AC9569C007D7DEC /* Build configuration list for PBXProject "png" */;
@ -218,12 +218,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -269,12 +271,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -90,7 +90,7 @@
175CC14D1AC9560E007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CC1501AC9560E007D7DEC /* Build configuration list for PBXProject "raw" */;
@ -134,12 +134,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -185,12 +187,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -249,7 +249,7 @@
175CC0AE1AC94D62007D7DEC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 175CC0B11AC94D62007D7DEC /* Build configuration list for PBXProject "tiff" */;
@ -330,12 +330,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -381,12 +383,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -495,7 +495,7 @@
17D913FD1AC59C860096D788 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17D914001AC59C860096D788 /* Build configuration list for PBXProject "freetype" */;
@ -642,12 +642,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -693,12 +695,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -814,7 +814,7 @@
17A762B21B0F35320046BC0B /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0920;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17A762B51B0F35320046BC0B /* Build configuration list for PBXProject "metafile" */;
@ -1023,12 +1023,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -1071,12 +1073,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -97,7 +97,7 @@
17D913D51AC59B6E0096D788 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17D913D81AC59B6E0096D788 /* Build configuration list for PBXProject "raster" */;
@ -182,12 +182,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -233,12 +235,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -153,7 +153,7 @@
69676CA11CA58B7400D7A1D1 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ascensio System SIA";
TargetAttributes = {
69676CA81CA58B7400D7A1D1 = {
@ -210,12 +210,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -262,12 +264,14 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;

View File

@ -31,7 +31,8 @@
*/
#include "./UnicodeConverter.h"
#include "unicode/utypes.h" /* Basic ICU data types */
#include "unicode/utypes.h"
#include "unicode/ustring.h"
#include "unicode/ucnv.h" /* C Converter API */
#include "../DesktopEditor/common/File.h"
@ -116,6 +117,47 @@ namespace NSUnicodeConverter
return fromUnicode(sInput.c_str(), (unsigned int)sInput.size(), converterName);
}
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, int nCodePage)
{
std::wstring sRes = L"";
UErrorCode status = U_ZERO_ERROR;
UConverter* conv = ucnv_openCCSID(nCodePage, UCNV_UNKNOWN, &status);
if (U_SUCCESS(status))
{
std::string sss = ucnv_getName(conv, &status);
int iii = ucnv_getCCSID(conv, &status);
//UConverter* conv = ucnv_openCCSID(5347, UCNV_IBM, &status);
if (U_SUCCESS(status))
{
const char* source = sInput;
const char* sourceLimit = source + nInputLen;
unsigned int uBufSize = (nInputLen / ucnv_getMinCharSize(conv));
UChar* targetStart = (UChar*)malloc(uBufSize * sizeof(UChar));
UChar* target = targetStart;
UChar* targetLimit = target + uBufSize;
ucnv_toUnicode(conv, &target, targetLimit, &source, sourceLimit, NULL, TRUE, &status);
if (U_SUCCESS(status))
{
unsigned int nTargetSize = target - targetStart;
sRes.resize(nTargetSize * 2);// UTF-16 uses 2 code-points per char
int32_t nResLen = 0;
u_strToWCS(&sRes[0], sRes.size(), &nResLen, targetStart, nTargetSize, &status);
sRes.resize(nResLen);
}
ucnv_close(conv);
}
}
if (sRes.empty() && nInputLen > 0)
{
std::string ws(sInput, nInputLen);
sRes = std::wstring(ws.begin(), ws.end());
}
return sRes;
}
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, const char* converterName)
{
std::wstring sRes = L"";
@ -194,10 +236,50 @@ namespace NSUnicodeConverter
return sRes;
}
std::wstring toUnicodeExact(const char* sInput, const unsigned int& nInputLen, int nCodePage)
{
std::wstring sRes = L"";
UErrorCode status = U_ZERO_ERROR;
UConverter* conv = ucnv_openCCSID(nCodePage, UCNV_UNKNOWN, &status);
if (U_SUCCESS(status))
{
std::string sss = ucnv_getName(conv, &status);
int iii = ucnv_getCCSID(conv, &status);
//UConverter* conv = ucnv_openCCSID(5347, UCNV_IBM, &status);
if (U_SUCCESS(status))
{
const char* source = sInput;
const char* sourceLimit = source + nInputLen;
unsigned int uBufSize = (nInputLen / ucnv_getMinCharSize(conv));
UChar* targetStart = (UChar*)malloc(uBufSize * sizeof(UChar));
UChar* target = targetStart;
UChar* targetLimit = target + uBufSize;
ucnv_toUnicode(conv, &target, targetLimit, &source, sourceLimit, NULL, TRUE, &status);
if (U_SUCCESS(status))
{
unsigned int nTargetSize = target - targetStart;
sRes.resize(nTargetSize * 2);// UTF-16 uses 2 code-points per char
int32_t nResLen = 0;
u_strToWCS(&sRes[0], sRes.size(), &nResLen, targetStart, nTargetSize, &status);
sRes.resize(nResLen);
}
ucnv_close(conv);
}
}
return sRes;
}
inline std::wstring toUnicode(const std::string& sInput, const char* converterName)
{
return toUnicode(sInput.c_str(), (unsigned int)sInput.size(), converterName);
}
inline std::wstring toUnicode(const std::string& sInput, int nCodePage)
{
return toUnicode(sInput.c_str(), (unsigned int)sInput.size(), nCodePage);
}
};
}
@ -232,4 +314,16 @@ namespace NSUnicodeConverter
{
return m_pInternal->toUnicode(sSrc, sCodePage);
}
std::wstring CUnicodeConverter::toUnicode(const char* sInput, const unsigned int& nInputLen, int nCodePage)
{
return m_pInternal->toUnicode(sInput, nInputLen, nCodePage);
}
std::wstring CUnicodeConverter::toUnicode(const std::string &sSrc, int nCodePage)
{
return m_pInternal->toUnicode(sSrc, nCodePage);
}
std::wstring CUnicodeConverter::toUnicodeExact(const char* sInput, const unsigned int& nInputLen, int nCodePage)
{
return m_pInternal->toUnicodeExact(sInput, nInputLen, nCodePage);
}
}

View File

@ -57,7 +57,11 @@ namespace NSUnicodeConverter
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, const char* converterName);
std::wstring toUnicode(const std::string& sSrc, const char* sCodePage);
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, int nCodePage);
std::wstring toUnicode(const std::string& sSrc, int nCodePage);
std::wstring toUnicodeExact(const char* sInput, const unsigned int& nInputLen, const char* converterName);
std::wstring toUnicodeExact(const char* sInput, const unsigned int& nInputLen, int nCodePage);
private:
CUnicodeConverter_Private* m_pInternal;
};

View File

@ -1,6 +1,6 @@
QT -= core gui
VERSION = 1.0.0.5
VERSION = 1.0.0.6
TARGET = UnicodeConverter
TEMPLATE = lib

View File

@ -32,6 +32,10 @@
#ifndef _SERVER_COMPONENTS_UNICODE_CONVERTER_ENCODINGS_H
#define _SERVER_COMPONENTS_UNICODE_CONVERTER_ENCODINGS_H
#pragma once
#include <map>
namespace NSUnicodeConverter
{
struct EncodindId
@ -116,6 +120,86 @@ namespace NSUnicodeConverter
{ 50, 12000, "UTF-32LE", "Unicode (UTF-32)" },
{ 51, 12001, "UTF-32BE", "Unicode (UTF-32 Big Endian)" }
};
static std::map<int, std::string> create_mapEncodingsICU()
{
std::map<int, std::string> m;
m[28596] = "ISO-8859-6";
m[720] = "DOS-720";
m[1256] = "windows-1256";
m[28594] = "ISO-8859-4";
m[28603] = "ISO-8859-13";
m[775] = "IBM775";
m[1257] = "windows-1257";
m[28604] = "ISO-8859-14";
m[28595] = "ISO-8859-5";
m[20866] = "KOI8-R";
m[21866] = "KOI8-U";
m[10007] = "x-mac-cyrillic";
m[855] = "IBM855";
m[866] = "cp866";
m[1251] = "windows-1251";
m[852] = "IBM852";
m[1250] = "windows-1250";
m[950] = "Big5";
m[936] = "GB2312";
m[28592] = "ISO-8859-2";
m[28597] = "ISO-8859-7";
m[737] = "IBM737";
m[869] = "IBM869";
m[1253] = "windows-1253";
m[28598] = "ISO-8859-8";
m[862] = "DOS-862";
m[1255] = "windows-1255";
m[932] = "Shift_JIS";
m[949] = "KS_C_5601-1987";
m[51949] = "EUC-KR";
m[861] = "IBM861";
m[865] = "IBM865";
m[874] = "windows-874";
m[28593] = "ISO-8859-3";
m[28599] = "ISO-8859-9";
m[857] = "IBM857";
m[1254] = "windows-1254";
m[28591] = "ISO-8859-1";
m[28605] = "ISO-8859-15";
m[850] = "IBM850";
m[858] = "IBM858";
m[860] = "IBM860";
m[863] = "IBM863";
m[437] = "IBM437";
m[1252] = "windows-1252";
m[1258] = "windows-1258";
m[65001] = "UTF-8";
m[65000] = "UTF-7";
m[1200] = "UTF-16LE";
m[1201] = "UTF-16BE";
m[12000] = "UTF-32LE";
m[12001] = "UTF-32BE";
m[10000] = "macintosh";
return m;
}
static const std::map<int, std::string> mapEncodingsICU = create_mapEncodingsICU();
}
#endif // _SERVER_COMPONENTS_UNICODE_CONVERTER_ENCODINGS_H

View File

@ -92,7 +92,7 @@
69EC66B91E0176F2003527E2 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = OnlyOffce;
TargetAttributes = {
69EC66C01E0176F2003527E2 = {
@ -144,6 +144,7 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
@ -151,6 +152,7 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -197,6 +199,7 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
@ -204,6 +207,7 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -249,10 +253,9 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
/usr/include/,
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/**",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/common",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/i18n",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/io",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/common/**",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/i18n",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/io",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
@ -278,10 +281,9 @@
HEADER_SEARCH_PATHS = (
"$(inherited)",
/usr/include/,
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/**",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/common",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/i18n",
"$(PROJECT_DIR)/../../../UnicodeConverter/icubuilds/mac/icu/icu/io",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/common/**",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/i18n",
"$(PROJECT_DIR)/../../../Common/3dParty/icu/mac_64/icu/source/io",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";

Some files were not shown because too many files have changed in this diff Show More