mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Compare commits
38 Commits
core-linux
...
core-win-6
| Author | SHA1 | Date | |
|---|---|---|---|
| b470120075 | |||
| 0de5fb6bfc | |||
| 68122490bf | |||
| 4833c652d8 | |||
| af0e9be136 | |||
| d987233335 | |||
| 5f100d4ea0 | |||
| d4e34e244f | |||
| 4b8bc2c8e7 | |||
| b04f44ee2c | |||
| fb3b6aff47 | |||
| 531460e37d | |||
| 09407b08ba | |||
| 83bc1b18b6 | |||
| 56279f7465 | |||
| 566eeb06ae | |||
| 7dc6d70b8a | |||
| f5c359650f | |||
| d665d9449e | |||
| 3c93563027 | |||
| b525e1deb4 | |||
| d5b80e2fa3 | |||
| 2bc2039c01 | |||
| a0fdb1cbcc | |||
| 664007983d | |||
| a15aee3244 | |||
| 5e034e2877 | |||
| 8d77cdaf24 | |||
| e73b5c29b2 | |||
| 6a3b4d12a5 | |||
| 992e62b8c8 | |||
| 021e01af4e | |||
| 55a1a2ca59 | |||
| e644ef4062 | |||
| 45d51a0002 | |||
| 247f0a7d89 | |||
| 7c621a4a81 | |||
| 62ba68aaa8 |
@ -455,7 +455,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
|
||||
RelativePath="..\..\build\lib\win_32\DEBUG\UnicodeConverter.lib"
|
||||
>
|
||||
</File>
|
||||
<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)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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++;
|
||||
|
||||
@ -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_);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
@ -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){}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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>"));
|
||||
|
||||
@ -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
@ -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();
|
||||
};
|
||||
|
||||
@ -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);
|
||||
};
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
};
|
||||
|
||||
@ -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()
|
||||
{
|
||||
|
||||
@ -53,8 +53,6 @@ public:
|
||||
|
||||
BOOL1 m_bShowComments;
|
||||
|
||||
public:
|
||||
|
||||
CRecordDocumentAtom()
|
||||
{
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
2276
ASCOfficePPTFile/PPTFormatLib/Records/Drawing/ShapeContainer.cpp
Normal file
2276
ASCOfficePPTFile/PPTFormatLib/Records/Drawing/ShapeContainer.cpp
Normal file
File diff suppressed because it is too large
Load Diff
2254
ASCOfficePPTFile/PPTFormatLib/Records/Drawing/ShapeContainer.h
Normal file → Executable file
2254
ASCOfficePPTFile/PPTFormatLib/Records/Drawing/ShapeContainer.h
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||
>
|
||||
|
||||
@ -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;"../../DesktopEditor/freetype-2.5.2/include""
|
||||
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>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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"";
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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()
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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; } \
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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");
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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 */,
|
||||
|
||||
@ -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"-";
|
||||
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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\"
|
||||
)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
624
Common/MS-LCID.h
624
Common/MS-LCID.h
@ -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"));
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
VERSION = 2.4.525.0
|
||||
VERSION = 2.4.530.0
|
||||
DEFINES += INTVER=$$VERSION
|
||||
|
||||
# CONFIGURATION
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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>
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
QT -= core gui
|
||||
|
||||
VERSION = 1.0.0.5
|
||||
VERSION = 1.0.0.6
|
||||
TARGET = UnicodeConverter
|
||||
TEMPLATE = lib
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
Reference in New Issue
Block a user