Compare commits

..

12 Commits

Author SHA1 Message Date
c93989767e raster pri fix 2018-08-09 17:02:41 +03:00
a965b30d72 GIF palette generator 2018-08-08 16:04:03 +03:00
dd3dd1e42a [x2t] For bug 38295 2018-08-06 19:47:20 +03:00
d2f1460f1b [x2t] Fix bug 38360 2018-08-06 13:54:43 +03:00
bf02eec8ef XlsFormatReader - fix #38293 2018-08-02 17:07:55 +03:00
8513ec5ae7 OdfFormatReader - fix after testing 2018-08-01 20:12:59 +03:00
35b43e0683 PptFormatReader - fix bug#37445 2018-08-01 20:11:05 +03:00
421e58fe34 x2t - 2.4.541 fix after testing 2018-08-01 12:51:13 +03:00
048cac74b6 . 2018-07-30 18:28:40 +03:00
c23ff4c8cd OdfFormatReader - fix after testing.
x2t - version up 2.4.540
2018-07-27 12:59:44 +03:00
ccc27a2e1b x2t - fix after testing 2018-07-26 19:06:06 +03:00
3843f52601 XlsFormat - fix user file 2018-07-26 15:17:54 +03:00
74 changed files with 2168 additions and 1075 deletions

View File

@ -104,7 +104,7 @@ OleObject::OleObject( const CharacterPropertyExceptions* chpx, WordDocument* doc
szData = szData >> 16;
}
unsigned char* bytes = reader.ReadBytes( szData, true );
if (bytes)
if (bytes && szData < 0xffff)
{
emeddedData = std::string((char*)bytes, szData);
delete []bytes;

View File

@ -51,6 +51,7 @@ namespace formulasconvert {
void replace_cells_range(std::wstring& expr, bool withTableName);
bool check_formula(std::wstring& expr);
void replace_semicolons(std::wstring& expr);
void replace_tilda(std::wstring& expr);
void replace_vertical(std::wstring& expr);
void replace_space(std::wstring& expr);
@ -291,7 +292,17 @@ namespace formulasconvert {
else
return L"";
}
std::wstring replace_tilda_formater(boost::wsmatch const & what)
{
if (what[1].matched)
return L";";
else if (what[2].matched)
return what[2].str();
else if (what[3].matched)
return what[3].str();
else
return L"";
}
// TODO
// заменить точки с запятой во всех вхождениях кроме находящихся в кавычках --*и в фигурных скобках*--
void odf2oox_converter::Impl::replace_semicolons(std::wstring& expr)
@ -302,9 +313,20 @@ namespace formulasconvert {
boost::wregex(L"(;)|(\".*?\")|('.*?')"),
&replace_semicolons_formater,
boost::match_default | boost::format_all);
expr = res;
}
void odf2oox_converter::Impl::replace_tilda(std::wstring& expr)
{
const std::wstring res = boost::regex_replace(
expr,
//boost::wregex(L"(;)|(?:\".*?\")|(?:'.*?')"),
boost::wregex(L"(~)|(\".*?\")|('.*?')"),
&replace_semicolons_formater,
boost::match_default | boost::format_all);
expr = res;
}
std::wstring replace_vertical_formater(boost::wsmatch const & what)
{
if (what[1].matched)
@ -462,6 +484,7 @@ namespace formulasconvert {
replace_cells_range (workstr, true);
replace_semicolons (workstr);
replace_tilda (workstr);
replace_vertical (workstr);
if (isFormula)

View File

@ -32,7 +32,6 @@
#include "formulasconvert.h"
#include <boost/regex.hpp>
#include <boost/foreach.hpp>
#include <boost/algorithm/string.hpp>
#include"../../Common/DocxFormat/Source/XML/Utils.h"
@ -221,6 +220,20 @@ void oox2odf_converter::Impl::replace_named_ref(std::wstring & expr)
namespace
{
std::wstring replace_tilda_formater(boost::wsmatch const & what)
{
if (what[1].matched)
return L";";
else if (what[2].matched)
return what[2].str();
else if (what[3].matched)
return what[3].str();
//else if (what[4].matched)
// return what[4].str();
else
return L"";
}
std::wstring replace_semicolons_formater(boost::wsmatch const & what)
{
@ -251,7 +264,6 @@ void oox2odf_converter::Impl::replace_semicolons(std::wstring& expr)
boost::match_default | boost::format_all);
expr = res;
}
namespace
{
@ -306,9 +318,9 @@ std::wstring forbidden_formulas1[] =
bool is_forbidden1(const std::wstring & formula)
{
BOOST_FOREACH(const std::wstring & s, forbidden_formulas1)
{
if (boost::algorithm::contains(formula, s))
for (size_t i = 0; i < 1; i++)
{
if (boost::algorithm::contains(formula, forbidden_formulas1[i]))
return true;
}
return false;
@ -669,9 +681,10 @@ size_t getColAddressInv(const std::wstring & a_)
size_t mul = 1;
bool f = true;
size_t res = 0;
BOOST_REVERSE_FOREACH(const wchar_t c, a)
for (int i = a.length() - 1; i >= 0; i--)
{
size_t v = c - L'A';
size_t v = a[i] - L'A';
if (f)
f = false;
else
@ -700,14 +713,13 @@ void splitCellAddress(const std::wstring & a_, std::wstring & col, std::wstring
::XmlUtils::replace_all( a, L"$", L"");
//::XmlUtils::replace_all( a, L"'", L"");
::boost::algorithm::to_upper(a);
BOOST_FOREACH(wchar_t c, a)
for (size_t i = 0; i < a.length(); i++)
{
if (c >= L'0' && c <= L'9')
row +=c;
if (a[i] >= L'0' && a[i] <= L'9')
row += a[i];
else
col += c;
col += a[i];
}
std::reverse(col.begin(), col.end());
std::reverse(row.begin(), row.end());

View File

@ -52,8 +52,10 @@ enum ElementType
typeTextReferenceMarkEnd,
typeTextReferenceRef,
typeTextFieldFieldmarkStart,
typeTextFieldFieldmarkEnd,
typeFieldFieldmarkStart,
typeFieldFieldmarkEnd,
typeFieldFieldmark,
typeFieldParam,
typeTextSpan,
typeTextA,
@ -501,6 +503,7 @@ enum ElementType
typeFormTextarea,
typeFormTime,
typeFormValueRange,
typeFormItem,
typeDrawPage,
typePresentationFooterDecl,

View File

@ -45,7 +45,7 @@ namespace utils {
std::wstring replace_xml_to_text_ImplRegEx(const std::wstring & Text);
std::string replace_xml_to_text_ImplRegEx(const std::string & Text);
std::wstring replace_text_to_xml_ImplReplace(const std::wstring & Text);
std::wstring replace_text_to_xml_ImplReplace(const std::wstring & Text, bool dDeleteUnicode = false);
std::string replace_text_to_xml_ImplReplace(const std::string & Text);
std::wstring replace_amp_text_to_xml_ImplReplace(const std::wstring & Text);
@ -55,7 +55,7 @@ namespace utils {
std::string replace_xml_to_text_ImplReplace(const std::string & Text);
}
std::wstring replace_text_to_xml(const std::wstring & Text);
std::wstring replace_text_to_xml(const std::wstring & Text, bool dDeleteUnicode = false);
std::string replace_text_to_xml(const std::string & Text);
std::wstring replace_amp_text_to_xml(const std::wstring & Text);

View File

@ -31,7 +31,6 @@
*/
#include <string>
#include <boost/foreach.hpp>
#include <cmath>
#include <boost/optional/optional_io.hpp>
@ -78,14 +77,13 @@ std::wstring RGBToString(int r, int g, int b)
color v(r, g, b);
double minDist = (std::numeric_limits<double>::max)();
BOOST_FOREACH(color const & c, colors)
for (size_t i = 0; i < 6; i++)
{
double dist = color_dist(v, c);
double dist = color_dist(v, colors[i]);
if (dist < minDist)
{
minDist = dist;
result = c.name_;
result = colors[i].name_;
}
}

View File

@ -30,9 +30,6 @@
*
*/
#include <boost/foreach.hpp>
#include <iostream>
#include <xml/utils.h>
@ -443,21 +440,7 @@ void docx_conversion_context::start_index_content()
sInstrText += L" \\c \"" + table_content_context_.caption_sequence_name + L"\"";
}
}
output_stream() << L"<w:r>";
output_stream() << L"<w:fldChar w:fldCharType=\"begin\"/>";
output_stream() << L"</w:r>";
output_stream() << L"<w:r>";
output_stream() << L"<w:instrText xml:space=\"preserve\">" << sInstrText << L" </w:instrText>";
output_stream() << L"</w:r>";
output_stream() << L"<w:r>";
//output_stream() << L"<w:rPr>
//output_stream() << L"<w:rFonts w:ascii="Minion Pro" w:eastAsia="DejaVuSans" w:hAnsi="Minion Pro"/>
//output_stream() << L"<w:bCs w:val="0"/>
//output_stream() << L"<w:sz w:val="21"/>
//output_stream() << L"<w:szCs w:val="24"/>
//output_stream() << L"</w:rPr>
output_stream() << L"<w:fldChar w:fldCharType=\"separate\"/>";
output_stream() << L"</w:r>";
start_field(sInstrText, L"");
finish_paragraph();
}
@ -466,15 +449,38 @@ void docx_conversion_context::end_index_content()
if (!in_table_content_) return;
start_paragraph(false);
end_field();
finish_paragraph();
}
void docx_conversion_context::start_field(const std::wstring & sInstrText, const std::wstring & sName)
{
output_stream() << L"<w:r>";
output_stream() << L"<w:fldChar w:fldCharType=\"begin\">";
if (!sName.empty())
{
output_stream() << L"<w:ffData><w:name w:val=\"" << sName << L"\"/><w:enabled/><w:calcOnExit w:val=\"0\"/></w:ffData>";
}
output_stream() << L"</w:fldChar>";
output_stream() << L"</w:r>";
output_stream() << L"<w:r>";
output_stream() << L"<w:instrText xml:space=\"preserve\">" << sInstrText << L" </w:instrText>";
output_stream() << L"</w:r>";
output_stream() << L"<w:r>";
output_stream() << L"<w:fldChar w:fldCharType=\"separate\"/>";
output_stream() << L"</w:r>";
}
void docx_conversion_context::end_field()
{
output_stream() << L"<w:r>";
//output_stream() << L"<w:rPr>";
//output_stream() << L"<w:rFonts w:ascii="Minion Pro" w:hAnsi="Minion Pro"/>";
//output_stream() << L"<w:sz w:val="20"/>
//output_stream() << L"</w:rPr>";
output_stream() << L"<w:fldChar w:fldCharType=\"end\"/>";
output_stream() << L"</w:r>";
finish_paragraph();
output_stream() << L"</w:r>";
}
void docx_conversion_context::end_sdt()
{
@ -917,21 +923,23 @@ xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"
mc:Ignorable=\"w14 wp14\">";
std::vector<int> numIds;
BOOST_FOREACH(odf_reader::list_style_instance_ptr & inst, list_styles.instances())
{
odf_reader::office_element_ptr_array & content = inst->get_text_list_style()->get_content();
odf_reader::list_style_container::instances_array & arListStyles = list_styles.instances();
for (size_t i = 0; i < arListStyles.size(); i++)
{
odf_reader::office_element_ptr_array & content = arListStyles[i]->get_text_list_style()->get_content();
if (content.size() < 1)
continue;
const int abstractNumId = list_styles.id_by_name(inst->get_style_name());
const int abstractNumId = list_styles.id_by_name(arListStyles[i]->get_style_name());
strm << L"<w:abstractNum w:abstractNumId=\"" << abstractNumId << "\">";
numIds.push_back(abstractNumId);
for (size_t i = 0; i < (std::min)( content.size(), (size_t)9); i++)
{
start_text_list_style(inst->get_text_list_style()->get_style_name());
start_text_list_style(arListStyles[i]->get_text_list_style()->get_style_name());
content[i]->docx_convert(*this);
// TODO
end_text_list_style();
@ -963,21 +971,25 @@ void docx_conversion_context::process_fonts()
odf_reader::odf_read_context & context = doc->odf_context();
odf_reader::fonts_container & fonts = context.fontContainer();
BOOST_FOREACH(odf_reader::font_instance_ptr & inst, fonts.instances())
odf_reader::fonts_container::instances_array &arFonts = fonts.instances();
for (size_t i = 0; i < arFonts.size(); i++)
{
strm << L"<w:font w:name=\"" << inst->name() << L"\" >";
if (!arFonts[i]) continue;
if (arFonts[i]->name().empty()) continue;
if (!inst->charset().empty())
strm << L"<w:charset w:val=\"" << inst->charset() <<"\" />";
strm << L"<w:font w:name=\"" << arFonts[i]->name() << L"\" >";
if (!inst->family().empty())
strm << L"<w:family w:val=\"" << inst->family() << "\" />";
if (!arFonts[i]->charset().empty())
strm << L"<w:charset w:val=\"" << arFonts[i]->charset() <<"\" />";
if (!inst->pitch().empty())
strm << L"<w:pitch w:val=\"" << inst->pitch() << "\" />";
if (!arFonts[i]->family().empty())
strm << L"<w:family w:val=\"" << arFonts[i]->family() << "\" />";
if (!inst->alt_name().empty())
strm << L"<w:altName w:val=\"" << inst->alt_name() << "\" />";
if (!arFonts[i]->pitch().empty())
strm << L"<w:pitch w:val=\"" << arFonts[i]->pitch() << "\" />";
if (!arFonts[i]->alt_name().empty())
strm << L"<w:altName w:val=\"" << arFonts[i]->alt_name() << "\" />";
strm << L"</w:font>";
}
@ -1008,9 +1020,11 @@ void docx_conversion_context::process_styles()
odf_reader::styles_container & styles = context.styleContainer();
// add all styles to the map
BOOST_FOREACH(odf_reader::style_instance_ptr & inst, styles.instances())
odf_reader::styles_container::instances_array &arStyles = styles.instances();
for (size_t i = 0; i < arStyles.size(); i++)
{
styles_map_.get(inst->name(), inst->type());
if (!arStyles[i]) continue;
styles_map_.get(arStyles[i]->name(), arStyles[i]->type());
}
_Wostream << L"<w:docDefaults>";
@ -1029,51 +1043,51 @@ void docx_conversion_context::process_styles()
_Wostream << L"</w:docDefaults>";
BOOST_FOREACH(odf_reader::style_instance_ptr & inst, styles.instances())
{
if (!inst->is_automatic() &&
for (size_t i = 0; i < arStyles.size(); i++)
{
if (!arStyles[i]->is_automatic() &&
(
inst->type() == odf_types::style_family::Paragraph ||
inst->type() == odf_types::style_family::Text
arStyles[i]->type() == odf_types::style_family::Paragraph ||
arStyles[i]->type() == odf_types::style_family::Text
))
{
const std::wstring id = styles_map_.get(inst->name(), inst->type());
_Wostream << L"<w:style w:styleId=\"" << id << L"\" w:type=\"" << StyleTypeOdf2Docx(inst->type()) << L"\"";
if (!inst->is_default())
const std::wstring id = styles_map_.get(arStyles[i]->name(), arStyles[i]->type());
_Wostream << L"<w:style w:styleId=\"" << id << L"\" w:type=\"" << StyleTypeOdf2Docx(arStyles[i]->type()) << L"\"";
if (!arStyles[i]->is_default())
{
_Wostream << L" w:customStyle=\"1\"";
}
_Wostream << L">";
const std::wstring displayName = StyleDisplayName(inst->name(), inst->type());
const std::wstring displayName = StyleDisplayName(arStyles[i]->name(), arStyles[i]->type());
_Wostream << L"<w:name w:val=\"" << displayName << L"\" />";
if (odf_reader::style_instance * baseOn = inst->parent())
if (odf_reader::style_instance * baseOn = arStyles[i]->parent())
{
const std::wstring basedOnId = styles_map_.get(baseOn->name(), baseOn->type());
_Wostream << L"<w:basedOn w:val=\"" << basedOnId << "\" />";
}
else if (!inst->is_default() && styles_map_.check(L"", inst->type()))
else if (!arStyles[i]->is_default() && styles_map_.check(L"", arStyles[i]->type()))
{
const std::wstring basedOnId = styles_map_.get(L"", inst->type());
const std::wstring basedOnId = styles_map_.get(L"", arStyles[i]->type());
_Wostream << L"<w:basedOn w:val=\"" << basedOnId << "\" />";
}
if (odf_reader::style_instance * next = inst->next())
if (odf_reader::style_instance * next = arStyles[i]->next())
{
const std::wstring nextId = styles_map_.get(next->name(), next->type());
_Wostream << L"<w:next w:val=\"" << nextId << "\" />";
}
else if (inst->is_default())
else if (arStyles[i]->is_default())
{
// self
_Wostream << L"<w:next w:val=\"" << id << "\" />";
}
if (odf_reader::style_content * content = inst->content())
if (odf_reader::style_content * content = arStyles[i]->content())
{
get_styles_context().start_process_style(inst.get());
get_styles_context().start_process_style(arStyles[i].get());
content->docx_convert(*this, true);
get_styles_context().end_process_style();
}
@ -1334,10 +1348,11 @@ void docx_conversion_context::pop_text_properties()
odf_reader::style_text_properties_ptr docx_conversion_context::current_text_properties()
{
odf_reader::style_text_properties_ptr cur = boost::make_shared<odf_reader::style_text_properties>();
BOOST_FOREACH(const odf_reader::style_text_properties * prop, text_properties_stack_)
for (size_t i = 0; i < text_properties_stack_.size(); i++)
{
if (prop)
cur->content().apply_from( prop->content() );
if (text_properties_stack_[i])
cur->content().apply_from( text_properties_stack_[i]->content() );
}
return cur;
}
@ -1754,10 +1769,7 @@ namespace
{
// обработка Header/Footer
// конвертируем содержимое header/footer и сохраняем результат в виде строки
void process_one_header_footer(docx_conversion_context & Context,
const std::wstring & styleName,
odf_reader::office_element * elm,
headers_footers::Type type)
void process_one_header_footer(docx_conversion_context & Context, const std::wstring & styleName, odf_reader::office_element *elm, headers_footers::Type type)
{
if (!elm) return;
@ -1775,13 +1787,7 @@ namespace
Context.dump_hyperlinks(internal_rels, hyperlinks::document_place);
Context.get_headers_footers().add(styleName, dbgStr, type, internal_rels);
if (type == headers_footers::headerLeft || type == headers_footers::footerLeft)
{
Context.set_settings_property(odf_reader::_property(L"evenAndOddHeaders",true));
}
}
}
}
void docx_conversion_context::set_settings_property(const odf_reader::_property & prop)
{
@ -1803,21 +1809,39 @@ void docx_conversion_context::process_headers_footers()
odf_reader::page_layout_container & pageLayouts = context.pageLayoutContainer();
// проходим по всем page layout
BOOST_FOREACH(const odf_reader::style_master_page* page, pageLayouts.master_pages())
{
const std::wstring & styleName = page->attlist_.style_name_.get_value_or( L"" );
const std::wstring masterPageNameLayout =context.pageLayoutContainer().page_layout_name_by_style(styleName);
add_page_properties(masterPageNameLayout);
process_one_header_footer(*this, styleName, page->style_header_.get(), headers_footers::header);
process_one_header_footer(*this, styleName, page->style_footer_.get(), headers_footers::footer );
process_one_header_footer(*this, styleName, page->style_header_first_.get(), headers_footers::headerFirst);
process_one_header_footer(*this, styleName, page->style_footer_first_.get(), headers_footers::footerFirst );
process_one_header_footer(*this, styleName, page->style_header_left_.get(), headers_footers::headerLeft );
process_one_header_footer(*this, styleName, page->style_footer_left_.get(), headers_footers::footerLeft );
std::vector<odf_reader::style_master_page*> & master_pages = pageLayouts.master_pages();
if (!page->style_header_ && !page->style_footer_ && !page->style_header_first_ && !page->style_footer_first_
&& !page->style_header_left_ && !page->style_footer_left_)
bool bOddEvenPages = false;
for (size_t i = 0; i < master_pages.size(); i++)
{
if (master_pages[i]->style_header_left_ || master_pages[i]->style_footer_left_)
bOddEvenPages = true;
}
if (bOddEvenPages)
{
set_settings_property(odf_reader::_property(L"evenAndOddHeaders", true));
}
for (size_t i = 0; i < master_pages.size(); i++)
{
const std::wstring & styleName = master_pages[i]->attlist_.style_name_.get_value_or( L"" );
const std::wstring masterPageNameLayout =context.pageLayoutContainer().page_layout_name_by_style(styleName);
add_page_properties(masterPageNameLayout);
process_one_header_footer(*this, styleName, master_pages[i]->style_header_.get(), headers_footers::header);
process_one_header_footer(*this, styleName, master_pages[i]->style_footer_.get(), headers_footers::footer );
process_one_header_footer(*this, styleName, master_pages[i]->style_header_first_.get(), headers_footers::headerFirst);
process_one_header_footer(*this, styleName, master_pages[i]->style_footer_first_.get(), headers_footers::footerFirst );
process_one_header_footer(*this, styleName, master_pages[i]->style_header_left_.get(), headers_footers::headerLeft );
process_one_header_footer(*this, styleName, master_pages[i]->style_footer_left_.get(), headers_footers::footerLeft );
if (bOddEvenPages && !master_pages[i]->style_header_left_)
process_one_header_footer(*this, styleName, master_pages[i]->style_header_.get(), headers_footers::headerLeft);
if (bOddEvenPages && !master_pages[i]->style_footer_left_)
process_one_header_footer(*this, styleName, master_pages[i]->style_footer_.get(), headers_footers::footerLeft );
if (!master_pages[i]->style_header_ && !master_pages[i]->style_footer_ && !master_pages[i]->style_header_first_ && !master_pages[i]->style_footer_first_
&& !master_pages[i]->style_header_left_ && !master_pages[i]->style_footer_left_)
{
//отключенные колонтитулы
rels rels_;

View File

@ -842,8 +842,8 @@ public:
void start_body ();
void end_body ();
void start_office_text ();
void end_office_text ();
void start_office_text ();
void end_office_text ();
void start_sdt (int type);
void end_sdt ();
@ -854,6 +854,9 @@ public:
void start_index_element();
void end_index_element();
void start_field(const std::wstring & sInstrText, const std::wstring & sName);
void end_field();
void process_styles ();
void process_fonts ();

View File

@ -94,8 +94,16 @@ std::wstring docx_table_state::current_row_style() const
double docx_table_state::get_current_cell_width()
{
if (current_table_column_ < columns_width_.size())
return columns_width_[current_table_column_];
if (current_table_column_ + columns_spanned_num_ < columns_width_.size())
{
//return columns_width_[current_table_column_];
double res = 0;
for (int i = 0; i < columns_spanned_num_ + 1; i++)
{
res += columns_width_[current_table_column_ + i];
}
return res;
}
else
return 0;
}

View File

@ -31,7 +31,6 @@
*/
#include "headers_footers.h"
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
namespace cpdoccore {
@ -88,12 +87,12 @@ std::wstring get_rel_type(headers_footers::Type _Type)
void headers_footers::dump_rels(rels & Rels) const//внешние релсы
{
BOOST_FOREACH(const instances_map::value_type & instAr, instances_)
for (boost::unordered_map<std::wstring, instances_array>::const_iterator it = instances_.begin(); it != instances_.end(); ++it)
{
BOOST_FOREACH(const instance_ptr & inst, instAr.second)
for (size_t i = 0; i < it->second.size(); i++)
{
if (inst->type_ == none) continue;
Rels.add( relationship( inst->id_, get_rel_type(inst->type_), inst->name_, L"" ) );
if (it->second[i]->type_ == none) continue;
Rels.add( relationship( it->second[i]->id_, get_rel_type(it->second[i]->type_), it->second[i]->name_, L"" ) );
}
}
}
@ -107,9 +106,13 @@ bool headers_footers::write_sectPr(const std::wstring & StyleName, bool next_pag
bool first = false, left = false;
bool res = false;
instances_array & pFind = instances_.at(StyleName);
BOOST_FOREACH(const instance_ptr & inst, instances_.at(StyleName))
for (size_t i = 0; i < pFind.size(); i++)
{
instance_ptr & inst = pFind[i];
std::wstring type = L"default";
if ( inst->type_ == headerFirst || inst->type_ == footerFirst )

View File

@ -317,8 +317,8 @@ void _oox_drawing::serialize_bodyPr(std::wostream & strm, const std::wstring & n
if ((iWrap) && (*iWrap == 0)) CP_XML_ATTR(L"wrap", L"none");
}
_CP_OPT(int) iAlign;
odf_reader::GetProperty(prop,L"textarea-vertical_align",iAlign);
_CP_OPT(int) iAlign, iVert;
odf_reader::GetProperty(prop, L"textarea-vertical_align", iAlign);
if (iAlign)
{
switch (iAlign.get())
@ -336,6 +336,16 @@ void _oox_drawing::serialize_bodyPr(std::wostream & strm, const std::wstring & n
CP_XML_ATTR(L"anchor", L"just");break;
}
}
odf_reader::GetProperty(prop, L"text_vert", iVert);
if (iVert)
{
switch (iVert.get())
{
case 1: CP_XML_ATTR(L"vert", L"vert"); break;
case 2: CP_XML_ATTR(L"vert", L"vert270"); break;
}
}
_CP_OPT(bool) bAutoGrowHeight;
_CP_OPT(bool) bFitToSize;
odf_reader::GetProperty(prop,L"fit-to-size", bFitToSize);
@ -357,7 +367,7 @@ void _oox_drawing::serialize_bodyPr(std::wostream & strm, const std::wstring & n
if (bWordArt)
{
_CP_OPT(int) iVal;
odf_reader::GetProperty(prop, L"odf-custom-draw-index",iVal);
odf_reader::GetProperty(prop, L"oox-geom-index", iVal);
if (iVal)
{
std::wstring shapeType = _OO_OOX_wordart[*iVal].oox;

View File

@ -32,7 +32,6 @@
#include "xlsx_borders.h"
#include <boost/foreach.hpp>
#include <boost/functional.hpp>
#include <boost/unordered_set.hpp>
#include <xml/simple_xml_writer.h>
@ -203,9 +202,9 @@ public:
{
std::vector<xlsx_border> inst_array;
BOOST_FOREACH(const xlsx_border & inst, borders_)
for (boost::unordered_set<xlsx_border, boost::hash<xlsx_border>>::iterator it = borders_.begin(); it != borders_.end(); ++it)
{
inst_array.push_back(inst);
inst_array.push_back(*it);
}
std::sort(inst_array.begin(), inst_array.end(), compare_());
@ -215,9 +214,10 @@ public:
CP_XML_NODE(L"borders")
{
CP_XML_ATTR(L"count", inst_array.size());
BOOST_FOREACH( xlsx_border & border, inst_array)
for (size_t i = 0; i < inst_array.size(); i++)
{
cpdoccore::oox::xlsx_serialize(CP_XML_STREAM(), border);
cpdoccore::oox::xlsx_serialize(CP_XML_STREAM(), inst_array[i]);
}
}
}

View File

@ -34,7 +34,6 @@
#include <xml/simple_xml_writer.h>
#include <boost/foreach.hpp>
#include <boost/functional.hpp>
#include <boost/unordered_set.hpp>
@ -155,10 +154,10 @@ struct compare_xlsx_fills
void xlsx_fills::serialize(std::wostream & _Wostream) const
{
std::vector<xlsx_fill> inst_array;
BOOST_FOREACH(const xlsx_fill & inst, impl_->fills_)
{
inst_array.push_back(inst);
for (boost::unordered_set<xlsx_fill, boost::hash<xlsx_fill>>::iterator it = impl_->fills_.begin(); it != impl_->fills_.end(); ++it)
{
inst_array.push_back(*it);
}
std::sort(inst_array.begin(), inst_array.end(), compare_xlsx_fills());
@ -169,7 +168,7 @@ void xlsx_fills::serialize(std::wostream & _Wostream) const
{
CP_XML_ATTR(L"count", inst_array.size());
for (int i = 0; i < inst_array.size(); i++)
for (size_t i = 0; i < inst_array.size(); i++)
{
xlsx_serialize(CP_XML_STREAM(), inst_array[i]);
}

View File

@ -35,7 +35,6 @@
#include <xml/simple_xml_writer.h>
#include <boost/foreach.hpp>
#include <boost/functional.hpp>
#include <boost/unordered_set.hpp>
@ -79,9 +78,9 @@ void xlsx_fonts::Impl::serialize(std::wostream & _Wostream) const
{
std::vector<xlsx_font> fonts;
BOOST_FOREACH(const xlsx_font & fnt, fonts_)
for (boost::unordered_set<xlsx_font, boost::hash<xlsx_font>>::iterator it = fonts_.begin(); it != fonts_.end(); ++it)
{
fonts.push_back(fnt);
fonts.push_back(*it);
}
std::sort(fonts.begin(), fonts.end(), compare_xlsx_fonts());
@ -91,6 +90,7 @@ void xlsx_fonts::Impl::serialize(std::wostream & _Wostream) const
CP_XML_NODE(L"fonts")
{
CP_XML_ATTR(L"count", fonts.size());
for (size_t i = 0; i < fonts.size(); ++i)
{
xlsx_serialize(CP_XML_STREAM(), fonts[i]);

View File

@ -423,6 +423,8 @@ void xlsx_pivots_context::Impl::sort_fields()
bool bAddRepeateRow = false;
bool bAddRepeateCol = false;
bool bShowEmptyCol = true;
bool bShowEmptyRow = true;
int count_items_col = -1, count_items_row = -1;
@ -480,30 +482,15 @@ void xlsx_pivots_context::Impl::sort_fields()
if (count_items_col != current_.fields[i].caches.size())
bAddRepeateCol = true;
}
if (!current_.fields[i].show_empty || !current_.fields[i].repeat_item_labels )
bShowEmptyCol = false;
}
else if (current_.fields[i].name_enabled)
{
count_items_col = 0;
bAddRepeateCol = true; //add col axis
}
//if (current_.fields[i].data_layout)
//{
// bAddRepeateCol = false;
// if ((current_.fields[i].name.empty() && (!current_.identify_categories || current_.fields[i].hierarchy >= 0)) ||
// current_.fields[i].used_in_referenes )
// {
// if ((current_.col_fields.empty()) || (current_.col_fields.back() != -2))
// {
// bAddRepeateCol = true;
// }
// }
//}
//if (current_.fields[i].caches.empty())
// bEmptyColCache = true;
}break;
case 1: // data
{
@ -553,10 +540,20 @@ void xlsx_pivots_context::Impl::sort_fields()
}
else
{
if (count_items_row != current_.fields[i].caches.size())
if (count_items_row < current_.fields[i].caches.size())
bAddRepeateRow = true;
}
}
else if (current_.fields[i].name_enabled)
{
count_items_row = 0;
bAddRepeateRow = true; //add row axis
}
if (!current_.fields[i].show_empty)
bShowEmptyRow = false;
if (!current_.fields[i].repeat_item_labels)
bAddRepeateCol = false;
if (current_.fields[i].data_layout)
{
@ -581,10 +578,10 @@ void xlsx_pivots_context::Impl::sort_fields()
i--;
}
}
if (bAddRepeateCol || (count_items_col == 0 && current_.bAxisCol)) ///* || (bEmptyColCache && current_.grand_total < 0)*/?? Financial Execution (template).ods
if ((bAddRepeateCol || (count_items_col == 0 && current_.bAxisCol))/* && bShowEmptyCol*/) ///* || (bEmptyColCache && current_.grand_total < 0)*/?? Financial Execution (template).ods
current_.col_fields.push_back(-2);
if (bAddRepeateRow || (count_items_row == 0 && current_.bAxisRow))
if ((bAddRepeateRow || (count_items_row == 0 && current_.bAxisRow))/* && bShowEmptyRow*/)
current_.row_fields.push_back(-2);
}
void xlsx_pivots_context::Impl::serialize_view(std::wostream & strm)

View File

@ -30,7 +30,6 @@
*
*/
#include <boost/foreach.hpp>
#include "../odf/style_text_properties.h"
#include "../odf/style_paragraph_properties.h"
@ -223,11 +222,11 @@ namespace
void xlsx_style_manager::Impl::serialize_xf(std::wostream & _Wostream, const xlsx_xf_array & xfArray, const std::wstring & nodeName)
{
std::vector<xlsx_xf> xfs_;
BOOST_FOREACH(const xlsx_xf & xfRecord, xfArray)
{
xfs_.push_back(xfRecord);
}
for (boost::unordered_set<xlsx_xf, boost::hash<xlsx_xf>>::iterator it = xfArray.begin(); it != xfArray.end(); ++it)
{
xfs_.push_back(*it);
}
std::sort(xfs_.begin(), xfs_.end(), compare_xlsx_xf());

View File

@ -220,7 +220,9 @@ void xlsx_table_state::start_cell(size_t columnsSpanned, size_t rowsSpanned)
// в случае если объединение имеет место добавляем запись о нем
if (columnsSpanned != 0 || rowsSpanned != 0)
xlsx_merge_cells_.add_merge(current_table_column_, current_table_row_, columnsSpanned, rowsSpanned);
{
xlsx_merge_cells_.add_merge(current_table_column_, current_table_row_, columnsSpanned, rowsSpanned);
}
if ( current_columns_spaned() > 0 )
{

View File

@ -33,7 +33,6 @@
#include "xlsx_utils.h"
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
#include <boost/regex.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
@ -90,14 +89,15 @@ std::wstring getCellAddress(size_t col, size_t row)
size_t getColAddressInv(const std::wstring & a_)
{
std::wstring a = a_;
::boost::algorithm::to_upper(a);
boost::algorithm::to_upper(a);
static const size_t r = (L'Z' - L'A' + 1);
size_t mul = 1;
bool f = true;
size_t res = 0;
BOOST_REVERSE_FOREACH(const wchar_t c, a)
{
size_t v = c - L'A';
for (int i = a.length() - 1; i >= 0; i--)
{
size_t v = a[i] - L'A';
if (f)
f = false;
else
@ -129,13 +129,12 @@ void splitCellAddress(const std::wstring & a_, std::wstring & col, std::wstring
boost::algorithm::to_upper(a);
BOOST_FOREACH(wchar_t c, a)
{
if (c >= L'0' && c <= L'9')
row +=c;
for (size_t i = 0; i < a.length(); i++)
{
if (a[i] >= L'0' && a[i] <= L'9')
row += a[i];
else
col += c;
col += a[i];
}
std::reverse(col.begin(), col.end());
std::reverse(row.begin(), row.end());

View File

@ -201,8 +201,8 @@ style_table_cell_properties_attlist calc_table_cell_properties(const style_insta
std::vector<const style_table_cell_properties*> props;
while (styleInstance)
{
if (const style_content * content = styleInstance->content())
if (const style_table_cell_properties * prop = content->get_style_table_cell_properties())
if (style_content * content = styleInstance->content())
if (style_table_cell_properties * prop = content->get_style_table_cell_properties())
{
props.insert(props.begin(), prop);
}

View File

@ -29,8 +29,6 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include <boost/foreach.hpp>
#include "../docx/xlsx_textcontext.h"
#include "../docx/xlsx_num_format_context.h"
@ -61,17 +59,17 @@ class office_element;
typedef shared_ptr<const office_element>::Type office_element_ptr_const;
#define ACCEPT_ALL_CONTENT(VAL) \
BOOST_FOREACH(office_element_ptr & elm, (VAL)) \
for (size_t ii = 0; ii < VAL.size(); ++ii) \
{ \
if (elm) \
elm->accept(*this); \
if (VAL[ii]) \
VAL[ii]->accept(*this); \
}
#define ACCEPT_ALL_CONTENT_CONST(VAL) \
BOOST_FOREACH(const office_element_ptr_const & elm, (VAL)) \
for (size_t ii = 0; ii < VAL.size(); ++ii) \
{ \
if (elm) \
elm->accept(*this); \
if (VAL[ii]) \
VAL[ii]->accept(*this); \
}

View File

@ -774,6 +774,20 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, union_comm
style_instance * defaultStyle = Context.root()->odf_context().styleContainer().style_default_by_type(odf_types::style_family::Graphic);
if (defaultStyle)instances.push_back(defaultStyle);
}
else if (styleInst->content())
{
style_paragraph_properties *para_props = styleInst->content()->get_style_paragraph_properties();
if ((para_props) && (para_props->content_.style_writing_mode_))
{
switch(para_props->content_.style_writing_mode_->get_type())
{
case writing_mode::TbLr:
drawing->additional.push_back(odf_reader::_property(L"text_vert", 2)); break;
case writing_mode::TbRl:
drawing->additional.push_back(odf_reader::_property(L"text_vert", 1)); break;
}
}
}
instances.push_back(styleInst);
}
@ -870,7 +884,7 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, union_comm
}
}
drawing->number_wrapped_paragraphs=graphicProperties.style_number_wrapped_paragraphs_.
drawing->number_wrapped_paragraphs = graphicProperties.style_number_wrapped_paragraphs_.
get_value_or( integer_or_nolimit( integer_or_nolimit::NoLimit) ).get_value();
if (anchor && anchor->get_type() == anchor_type::AsChar && drawing->posOffsetV< 0)
{
@ -1232,7 +1246,7 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
const std::wstring & content = Context.get_drawing_context().get_text_stream_frame();
drawing->additional.push_back(_property(L"text-content",content));
drawing->additional.push_back(_property(L"text-content", content));
Context.get_drawing_context().clear_stream_frame();
/////////
@ -1302,6 +1316,12 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
}
else if (auto_fit_text)
drawing->additional.push_back(_property(L"fit-to-size", auto_fit_text));
if (drawing->cx < 1 && drawing->cy < 1)
{
drawing->cx = 10;
drawing->cy = 10;
}
}
void draw_g::docx_convert(oox::docx_conversion_context & Context)
{
@ -1425,8 +1445,7 @@ void draw_frame::docx_convert(oox::docx_conversion_context & Context)
Context.get_drawing_context().start_frame(this);
const _CP_OPT(std::wstring) name =
common_draw_attlists_.shape_with_text_and_styles_.
common_shape_draw_attlist_.draw_name_;
common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_;
Context.get_drawing_context().add_name_object(name.get_value_or(L"Object"));
@ -1654,6 +1673,11 @@ void draw_control::docx_convert(oox::docx_conversion_context & Context)
oox::text_forms_context::_state & state = Context.get_forms_context().get_state_element(*control_id_);
if (state.id.empty()) return;
if ((state.type == 6 || state.type == 4) && state.element)
{
return state.element->docx_convert_sdt(Context, this);
}
Context.get_drawing_context().start_shape(NULL);
Context.get_drawing_context().add_name_object(state.name.empty() ? L"Control" : state.name);
@ -1706,7 +1730,7 @@ void draw_control::docx_convert(oox::docx_conversion_context & Context)
Context.add_new_run(L"");
Context.output_stream() << L"<w:t xml:space=\"preserve\">";
Context.output_stream() << xml::utils::replace_text_to_xml( text );
Context.output_stream() << xml::utils::replace_text_to_xml( text, true );
Context.output_stream() << L"</w:t>";
Context.finish_run();
}

View File

@ -37,7 +37,6 @@
#include <sstream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/regex.h>
#include <xml/xmlchar.h>
@ -438,9 +437,9 @@ int draw_enhanced_geometry::parsing(_CP_OPT(std::wstring) val)
int pos = 0, res = -1;
if (!val) return res;
BOOST_FOREACH(wchar_t c, val.get())
for (size_t i = 0; i < val->length(); i++)
{
if (c < L'0' && c > L'9')
if (val->at(i) < L'0' && val->at(i) > L'9')
return res;
}

View File

@ -32,7 +32,6 @@
#include "number_style.h"
#include <boost/foreach.hpp>
#include <odf/odf_document.h>
#include <xml/xmlchar.h>
@ -78,10 +77,10 @@ void number_style_base::oox_convert_impl(oox::num_format_context & Context)
}
}
BOOST_FOREACH(const office_element_ptr & elm, content_)
for (size_t i = 0; i < content_.size(); i++)
{
number_style_base *number_style_ = dynamic_cast<number_style_base *> (elm.get());
number_element *number_element_ = dynamic_cast<number_element *> (elm.get());
number_style_base *number_style_ = dynamic_cast<number_style_base *> (content_[i].get());
number_element *number_element_ = dynamic_cast<number_element *> (content_[i].get());
if (number_style_) number_style_->oox_convert(Context);
if (number_element_) number_element_->oox_convert(Context);
@ -93,9 +92,9 @@ void number_style_base::oox_convert(oox::num_format_context & Context)
{
if (!style_map_.empty())
{
BOOST_FOREACH(const office_element_ptr & elm, style_map_)
{
if (const style_map * styleMap = dynamic_cast<const style_map *>(elm.get()))
for (size_t i = 0; i < style_map_.size(); i++)
{
if (const style_map * styleMap = dynamic_cast<const style_map *>(style_map_[i].get()))
{
const std::wstring applyStyleName = styleMap->style_apply_style_name_;
const std::wstring condition = styleMap->style_condition_;
@ -309,12 +308,13 @@ void number_currency_symbol::add_text(const std::wstring & Text)
void number_currency_symbol::oox_convert(oox::num_format_context & Context)
{
std::wostream & strm = Context.output();
strm << L"[$";//xml::utils::replace_text_to_xml(L"\"");
BOOST_FOREACH(const std::wstring & t, text_)
strm << L"[$";
for (size_t i = 0; i < text_.size(); i++)
{
strm << xml::utils::replace_text_to_xml(t);
strm << xml::utils::replace_text_to_xml(text_[i]);
}
strm << L"]";;//xml::utils::replace_text_to_xml(L"\"");
strm << L"]";
}

View File

@ -296,9 +296,20 @@ bool odf_document::Impl::decrypt_folder (const std::wstring &password, const std
if (false == result)
break;
}
else
else
{
NSFile::CFileBinary::Copy(arFiles[i], dstPath + FILE_SEPARATOR_STR + sFileName);
pFind = map_encryptions_extra_.find(arFiles[i]);
if ( pFind != map_encryptions_.end() )
{
result = decrypt_file(password, arFiles[i], dstPath + FILE_SEPARATOR_STR + sFileName, pFind->second.first, pFind->second.second);
if (false == result)
break;
}
else
{
NSFile::CFileBinary::Copy(arFiles[i], dstPath + FILE_SEPARATOR_STR + sFileName);
}
}
}
for (size_t i = 0; result && i < arDirectories.size(); ++i)
@ -573,7 +584,14 @@ void odf_document::Impl::parse_manifests(office_element *element)
XmlUtils::replace_all( file_path, L"/", FILE_SEPARATOR_STR);
file_path = base_folder_ + FILE_SEPARATOR_STR + file_path;
map_encryptions_.insert(std::make_pair(file_path, std::make_pair(entry->encryption_data_, entry->size)));
if (0 == entry->full_path_.find(L"Basic/")) //Cuaderno de notas 1.2.ods
{
map_encryptions_extra_.insert(std::make_pair(file_path, std::make_pair(entry->encryption_data_, entry->size)));
}
else
{
map_encryptions_.insert(std::make_pair(file_path, std::make_pair(entry->encryption_data_, entry->size)));
}
}
if (entry->full_path_ == L"/")

View File

@ -80,7 +80,9 @@ public:
int get_office_mime_type() {return office_mime_type_;}
bool get_encrypted() {return (false == map_encryptions_.empty());}
bool get_encrypted() {return (false == map_encryptions_.empty());}
bool get_encrypted_extra() {return (false == map_encryptions_extra_.empty());}
bool get_error() {return bError;}
bool UpdateProgress(long Complete);
@ -122,7 +124,8 @@ private:
int GetMimetype(std::wstring value);
std::map<std::wstring, std::pair<office_element_ptr, int>> map_encryptions_;
std::map<std::wstring, std::pair<office_element_ptr, int>> map_encryptions_extra_;
};
}

View File

@ -71,7 +71,7 @@ style_instance::style_instance(
style_instance * styles_container::hyperlink_style()
{
if (hyperlink_style_pos_ > 0)
if (hyperlink_style_pos_ > 0 && hyperlink_style_pos_ < instances_.size())
return instances_[hyperlink_style_pos_].get();
else
return NULL;

View File

@ -75,14 +75,22 @@ public:
virtual void afterCreate()
{
if (context_ && this->get_type() != typeTextSection)
if (!context_) return;
ElementType type_ = this->get_type();
if (type_ != typeTextSection)
{
context_->level++;
}
}
virtual void afterReadContent()
{
if (context_ && this->get_type() != typeTextSection)
if (!context_) return;
ElementType type_ = this->get_type();
if (type_ != typeTextSection)
{
if (context_->level == 4)
{

View File

@ -406,12 +406,76 @@ void form_combobox::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
form_element::add_attributes(Attributes);
}
void form_combobox::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
{
if CP_CHECK_NAME(L"form", L"item")
{
CP_CREATE_ELEMENT(items_);
}
else
{
form_element::add_child_element(Reader, Ns, Name);
}
}
void form_combobox::docx_convert(oox::docx_conversion_context & Context)
{
Context.get_forms_context().start_element(4);
Context.get_forms_context().set_element(dynamic_cast<form_element*>(this));
form_element::docx_convert(Context);
}
void form_combobox::docx_convert_sdt(oox::docx_conversion_context & Context, draw_control *draw)
{
Context.finish_run();
Context.output_stream() << L"<w:sdt>";
Context.output_stream() << L"<w:sdtPr>";
{
if (name_)
{
Context.output_stream() << L"<w:alias w:val=\"" + xml::utils::replace_text_to_xml(*name_) + L"\"/>";
}
Context.output_stream() << L"<w:id w:val=\"" + std::to_wstring(Context.get_drawing_context().get_current_shape_id()) + L"\"/>";
Context.output_stream() << L"<w:dropDownList>";
for (size_t i = 0; i < items_.size(); i++)
{
form_item* item = dynamic_cast<form_item*>(items_[i].get());
if (!item) continue;
Context.output_stream() << L"<w:listItem w:displayText=\"" << (item->text_.empty() ? item->label_ : item->text_);
Context.output_stream() << L"\" w:value=\"" << item->label_ << L"\"/>";
}
Context.output_stream() << L"</w:dropDownList>";
}
Context.output_stream() << L"</w:sdtPr>";
Context.output_stream() << L"<w:sdtContent>";
{
Context.add_new_run(L"");
Context.output_stream() << L"<w:t xml:space=\"preserve\">";
if (current_value_)
{
Context.output_stream() << xml::utils::replace_text_to_xml(*current_value_ );
}
Context.output_stream() << L"</w:t>";
Context.finish_run();
}
Context.output_stream() << L"</w:sdtContent>";
Context.output_stream() << L"</w:sdt>";
if (label_)
{
Context.add_new_run(L"");
Context.output_stream() << L"<w:t xml:space=\"preserve\">";
Context.output_stream() << xml::utils::replace_text_to_xml(*label_ );
Context.output_stream() << L"</w:t>";
Context.finish_run();
}
}
// form:listbox
//----------------------------------------------------------------------------------
const wchar_t * form_listbox::ns = L"form";
@ -427,5 +491,83 @@ void form_listbox::docx_convert(oox::docx_conversion_context & Context)
form_element::docx_convert(Context);
}
// form:button
//----------------------------------------------------------------------------------
const wchar_t * form_date::ns = L"form";
const wchar_t * form_date::name = L"date";
void form_date::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
form_element::add_attributes(Attributes);
}
void form_date::docx_convert(oox::docx_conversion_context & Context)
{
Context.get_forms_context().start_element(6);
Context.get_forms_context().set_element(dynamic_cast<form_element*>(this));
form_element::docx_convert(Context);
}
void form_date::docx_convert_sdt(oox::docx_conversion_context & Context, draw_control *draw)
{
Context.finish_run();
Context.output_stream() << L"<w:sdt>";
Context.output_stream() << L"<w:sdtPr>";
{
if (name_)
{
Context.output_stream() << L"<w:alias w:val=\"" + xml::utils::replace_text_to_xml(*name_) + L"\"/>";
}
Context.output_stream() << L"<w:id w:val=\"" + std::to_wstring(Context.get_drawing_context().get_current_shape_id()) + L"\"/>";
Context.output_stream() << L"<w:date>";
Context.output_stream() << L"<w:dateFormat w:val=\"\"/>";
Context.output_stream() << L"<w:lid w:val=\"en-US\"/>";
Context.output_stream() << L"<w:storeMappedDataAs w:val=\"dateTime\"/>";
Context.output_stream() << L"<w:calendar w:val=\"gregorian\"/>";
Context.output_stream() << L"</w:date>";
}
Context.output_stream() << L"</w:sdtPr>";
Context.output_stream() << L"<w:sdtContent>";
{
Context.add_new_run(L"");
Context.output_stream() << L"<w:t xml:space=\"preserve\">";
if (current_value_)
{
Context.output_stream() << xml::utils::replace_text_to_xml(*current_value_ );
}
else
{
Context.output_stream() << L"[Insert date]";
}
Context.output_stream() << L"</w:t>";
Context.finish_run();
}
Context.output_stream() << L"</w:sdtContent>";
Context.output_stream() << L"</w:sdt>";
if (label_)
{
Context.add_new_run(L"");
Context.output_stream() << L"<w:t xml:space=\"preserve\">";
Context.output_stream() << xml::utils::replace_text_to_xml(*label_ );
Context.output_stream() << L"</w:t>";
Context.finish_run();
}
}
// form:item
//----------------------------------------------------------------------------------
const wchar_t * form_item::ns = L"form";
const wchar_t * form_item::name = L"item";
void form_item::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"form:label", label_, std::wstring(L""));
}
void form_item::add_text(const std::wstring & Text)
{
text_ = Text;
}
}
}

View File

@ -337,10 +337,16 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
virtual void docx_convert (oox::docx_conversion_context & Context) ;
virtual void docx_convert_sdt (oox::docx_conversion_context & Context, draw_control* draw);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
public:
_CP_OPT(odf_types::Bool) dropdown_;
office_element_ptr_array items_;
_CP_OPT(int ) size_;
//form:list-source-type
//form:size
//form:auto-complete
@ -367,10 +373,9 @@ private:
public:
//form:list-source-type
//form:size
//form:list-source
//form:source-cell-range
//form:dropdown
//form:bound-column
//form:xforms-list-source
//form:multiple
@ -380,10 +385,50 @@ public:
};
CP_REGISTER_OFFICE_ELEMENT2(form_listbox);
// form:date
class form_date : public form_element
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeFormDate;
CPDOCCORE_DEFINE_VISITABLE();
virtual void docx_convert (oox::docx_conversion_context & Context) ;
virtual void docx_convert_sdt (oox::docx_conversion_context & Context, draw_control* draw);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
public:
};
CP_REGISTER_OFFICE_ELEMENT2(form_date);
// form:item
class form_item : public office_element_impl<form_item>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeFormItem;
CPDOCCORE_DEFINE_VISITABLE();
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name){}
virtual void add_text(const std::wstring & Text);
public:
std::wstring label_;
std::wstring text_;
};
CP_REGISTER_OFFICE_ELEMENT2(form_item);
}
}
//<form:connection-resource>7.6.2,
//<form:date> 13.5.8,
//<form:connection-resource>7.6.2,
//<form:file> 13.5.5,
//<form:fixed-text> 13.5.10,
//<form:form> 13.3,

View File

@ -122,7 +122,7 @@ const wchar_t * text::name = L"";
std::wostream & text::text_to_stream(std::wostream & _Wostream) const
{
_Wostream << xml::utils::replace_text_to_xml( text_ );
_Wostream << xml::utils::replace_text_to_xml( text_, true );
return _Wostream;
}
@ -174,7 +174,7 @@ void text::docx_convert(oox::docx_conversion_context & Context)
Context.output_stream() << L" xml:space=\"preserve\"";
Context.output_stream() << L">";
Context.output_stream() << xml::utils::replace_text_to_xml( text_ );
Context.output_stream() << xml::utils::replace_text_to_xml( text_, true );
Context.output_stream() << L"</" << textNode << L">";
if (add_del_run)
@ -1647,17 +1647,23 @@ void bibliography_mark::add_attributes( const xml::attributes_wc_ptr & Attribute
CP_APPLY_ATTR(L"text:school", school_);
CP_APPLY_ATTR(L"text:series", series_);
CP_APPLY_ATTR(L"text:volume", volume_);
if (std::wstring::npos != identifier_.find(L"CITATION "))
{
XmlUtils::replace_all(identifier_, L"CITATION ", L"");
}
XmlUtils::replace_all(identifier_, L" ", L"");
XmlUtils::replace_all(identifier_, L"\\", L"");
}
void bibliography_mark::add_text(const std::wstring & Text)
{
office_element_ptr elm = text::create(Text) ;
content_ = elm;
text_ = text::create(Text) ;
}
std::wostream & bibliography_mark::text_to_stream(std::wostream & _Wostream) const
{
CP_SERIALIZE_TEXT(content_);
CP_SERIALIZE_TEXT(text_);
return _Wostream;
}
void bibliography_mark::serialize(std::wostream & strm)
@ -1826,6 +1832,20 @@ void bibliography_mark::docx_convert(oox::docx_conversion_context & Context)
serialize(strm);
Context.add_bibliography_item(strm.str());
if (text_)
{
docx_serialize_field(L"CITATION " + XmlUtils::EncodeXmlString(identifier_), text_, Context, false);
//Context.finish_run();
//Context.output_stream() << L"<w:fldSimple w:instr=\" CITATION " << content_ << L" \\h\"/>";
//Context.add_new_run();
// content_->docx_convert(Context);
//Context.finish_run();
//Context.output_stream() << L"</w:fldSimple>";
}
}
void bibliography_mark::pptx_convert(oox::pptx_conversion_context & Context)
@ -2030,8 +2050,103 @@ void field_fieldmark_start::add_attributes( const xml::attributes_wc_ptr & Attri
CP_APPLY_ATTR(L"text:name", text_name_);
CP_APPLY_ATTR(L"field:type", field_type_);
}
void field_fieldmark_start::docx_convert(oox::docx_conversion_context & Context)
{
if (!field_type_) return;
if (!text_name_) return;
if (std::wstring::npos != field_type_->find(L"vnd.oasis.opendocument.field."))
{
Context.start_field(field_type_->substr(29), *text_name_);
}
}
//------------------------------------------------------------------------------------------------------------
const wchar_t * field_fieldmark_end::ns = L"field";
const wchar_t * field_fieldmark_end::name = L"fieldmark-end";
void field_fieldmark_end::docx_convert(oox::docx_conversion_context & Context)
{
Context.end_field();
}
//------------------------------------------------------------------------------------------------------------
const wchar_t * field_fieldmark::ns = L"field";
const wchar_t * field_fieldmark::name = L"fieldmark";
void field_fieldmark::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"text:name", text_name_);
CP_APPLY_ATTR(L"field:type", field_type_);
}
void field_fieldmark::add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name)
{
CP_CREATE_ELEMENT(field_params_);
}
void field_fieldmark::docx_convert(oox::docx_conversion_context & Context)
{
if (!field_type_) return;
if (!text_name_) return;
if (std::wstring::npos != field_type_->find(L"FORMCHECKBOX"))
{
XmlUtils::replace_all( *text_name_, L" ", L"_");
Context.output_stream() << L"<w:r><w:fldChar w:fldCharType=\"begin\"><w:ffData><w:name w:val=\"" << *text_name_ << L"\"/><w:enabled/>";
Context.output_stream() << L"<w:checkBox>";
//Context.output_stream() << L"<w:default w:val=\"" << std::to_wstring(current_state_) << L"\"/>
Context.output_stream() << L"<w:sizeAuto/>";
for (size_t i = 0; i < field_params_.size(); i++)
{
field_param *param = dynamic_cast<field_param*>(field_params_[i].get());
if ((param) && (param->field_name_) && (std::wstring::npos != param->field_name_->find(L"Checkbox_Checked")))
{
odf_types::Bool value = Bool::parse(*param->field_value_);
if (value.get())
Context.output_stream() << L"<w:checked/>";
break;
}
}
Context.output_stream() << L"</w:checkBox></w:ffData>";
Context.output_stream() << L"</w:fldChar></w:r>";
Context.output_stream() << L"<w:r><w:instrText>FORMCHECKBOX</w:instrText></w:r>";
Context.output_stream() << L"<w:r><w:fldChar w:fldCharType=\"separate\"/></w:r>";
Context.output_stream() << L"<w:r><w:t>" << L"" << L"</w:t></w:r>";
Context.output_stream() << L"<w:r><w:fldChar w:fldCharType=\"end\"/></w:r>";
}
else if (std::wstring::npos != field_type_->find(L"FORMDROPDOWN"))
{
std::wostream & strm = Context.output_stream();
Context.finish_run();
strm << L"<w:r><w:fldChar w:fldCharType=\"begin\"><w:ffData><w:name w:val=\"" << text_name_.get_value_or(L"") << L"\"/><w:enabled/>";
strm << L"<w:ddList><w:result w:val=\"0\"/>";
for (size_t i = 0; i < field_params_.size(); i++)
{
field_params_[i]->docx_convert(Context);
}
strm << L"</w:ddList></w:ffData>";
strm << L"</w:fldChar></w:r>";
strm << L"<w:r><w:instrText>FORMDROPDOWN</w:instrText></w:r>";
strm << L"<w:r><w:fldChar w:fldCharType=\"separate\"/></w:r>";
strm << L"<w:r><w:fldChar w:fldCharType=\"end\"/></w:r>";
}
else if (std::wstring::npos != field_type_->find(L"FORMTEXT"))
{
}
}
//------------------------------------------------------------------------------------------------------------
const wchar_t * field_param::ns = L"field";
const wchar_t * field_param::name = L"param";
void field_param::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"field:name", field_name_);
CP_APPLY_ATTR(L"field:value", field_value_);
}
void field_param::docx_convert(oox::docx_conversion_context & Context)
{
}
}
}

View File

@ -1295,7 +1295,7 @@ public:
_CP_OPT(std::wstring) series_;
_CP_OPT(std::wstring) volume_;
office_element_ptr content_;
office_element_ptr text_;
private:
virtual void add_attributes ( const xml::attributes_wc_ptr & Attributes );
@ -1585,11 +1585,13 @@ public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeTextFieldFieldmarkStart;
static const ElementType type = typeFieldFieldmarkStart;
CPDOCCORE_DEFINE_VISITABLE();
_CP_OPT(std::wstring) text_name_;
_CP_OPT(std::wstring) field_type_;
void docx_convert(oox::docx_conversion_context & Context);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name) {}
@ -1605,14 +1607,60 @@ public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeTextFieldFieldmarkStart;
static const ElementType type = typeFieldFieldmarkStart;
CPDOCCORE_DEFINE_VISITABLE();
void docx_convert(oox::docx_conversion_context & Context);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes ){}
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name) {}
};
CP_REGISTER_OFFICE_ELEMENT2(field_fieldmark_end);
//-------------------------------------------------------------------------------------------------------------------
// field:fieldmark
//-------------------------------------------------------------------------------------------------------------------
class field_fieldmark : public text::paragraph_content_element<field_fieldmark>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeFieldFieldmark;
CPDOCCORE_DEFINE_VISITABLE();
_CP_OPT(std::wstring) text_name_;
_CP_OPT(std::wstring) field_type_;
office_element_ptr_array field_params_;
void docx_convert(oox::docx_conversion_context & Context);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name);
};
CP_REGISTER_OFFICE_ELEMENT2(field_fieldmark);
//-------------------------------------------------------------------------------------------------------------------
// field:param
//-------------------------------------------------------------------------------------------------------------------
class field_param : public text::paragraph_content_element<field_param>
{
public:
static const wchar_t * ns;
static const wchar_t * name;
static const xml::NodeType xml_type = xml::typeElement;
static const ElementType type = typeFieldParam;
CPDOCCORE_DEFINE_VISITABLE();
_CP_OPT(std::wstring) field_name_;
_CP_OPT(std::wstring) field_value_;
void docx_convert(oox::docx_conversion_context & Context);
private:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
virtual void add_child_element( xml::sax * Reader, const std::wstring & Ns, const std::wstring & Name){}
};
CP_REGISTER_OFFICE_ELEMENT2(field_param);
} // namespace odf_reader
} // namespace cpdoccore

View File

@ -207,29 +207,45 @@ void style_table_column_properties::docx_convert(oox::docx_conversion_context &
{
std::wostream & strm = Context.output_stream();
double page_width = 0;
const page_layout_instance * pp = Context.root()->odf_context().pageLayoutContainer().page_layout_first();
if ((pp) && (pp->properties()))
{
style_page_layout_properties_attlist & attr_page = pp->properties()->attlist_;
if (attr_page.fo_page_width_)
{
page_width = attr_page.fo_page_width_->get_value_unit(odf_types::length::pt);
}
if (attr_page.common_horizontal_margin_attlist_.fo_margin_left_)
{
page_width -= attr_page.common_horizontal_margin_attlist_.fo_margin_left_->get_length().get_value_unit(odf_types::length::pt);
}
if (attr_page.common_horizontal_margin_attlist_.fo_margin_right_)
{
page_width -= attr_page.common_horizontal_margin_attlist_.fo_margin_right_->get_length().get_value_unit(odf_types::length::pt);
}
}
if (attlist_.style_column_width_)
{
double kf_max_width_ms = 1.;
const page_layout_instance * pp = Context.root()->odf_context().pageLayoutContainer().page_layout_first();//
if ((pp) && (pp->properties()))
{
style_page_layout_properties_attlist & attr_page = pp->properties()->attlist_;
if (attr_page.fo_page_width_)
{
int val = 0.5 + 20.0 * attr_page.fo_page_width_->get_value_unit(length::pt);
if (val > 31680.)
kf_max_width_ms = 31680./val;
}
}
int val = 0.5 + 20.0 * page_width;
if (val > 31680.)
kf_max_width_ms = 31680./val;
int val = attlist_.style_column_width_->get_value_unit(length::pt);
double width = 0.5 + 20.0 * val * kf_max_width_ms;
double width = 0.5 + 20.0 * attlist_.style_column_width_->get_value_unit(length::pt) * kf_max_width_ms;
Context.get_table_context().add_column_width(width);
strm << L"<w:gridCol w:w=\"" << (int)(width) << "\"/>";
}
else if ((attlist_.style_rel_column_width_) && (attlist_.style_rel_column_width_->get_unit() == length::rel))
{
double width = 0.5 + 20.0 * page_width * attlist_.style_rel_column_width_->get_value() / 65534.;
Context.get_table_context().add_column_width(width);
strm << L"<w:gridCol w:w=\"" << (int)(width) << "\"/>";
}
else
{
Context.get_table_context().add_column_width(0);

View File

@ -244,6 +244,8 @@ public:
CPDOCCORE_DEFINE_VISITABLE();
style_table_cell_properties() {}
virtual void docx_convert(oox::docx_conversion_context & Context) ;
private:

View File

@ -176,9 +176,12 @@ style_section_properties * style_content::get_style_section_properties() const
return dynamic_cast<style_section_properties *>(style_section_properties_.get());
}
style_table_cell_properties * style_content::get_style_table_cell_properties() const
style_table_cell_properties * style_content::get_style_table_cell_properties(bool always)
{
return dynamic_cast<style_table_cell_properties *>(style_table_cell_properties_.get());
if (!style_table_cell_properties_ && always)
style_table_cell_properties_ = boost::make_shared<style_table_cell_properties>();
return dynamic_cast<style_table_cell_properties *>(style_table_cell_properties_.get());
}
style_table_row_properties * style_content::get_style_table_row_properties() const

View File

@ -96,11 +96,11 @@ public:
style_paragraph_properties * get_style_paragraph_properties() const;
style_table_properties * get_style_table_properties() const;
style_section_properties * get_style_section_properties() const;
style_table_cell_properties * get_style_table_cell_properties() const;
style_table_row_properties * get_style_table_row_properties() const;
style_table_column_properties * get_style_table_column_properties() const;
style_chart_properties * get_style_chart_properties() const;
style_drawing_page_properties* get_style_drawing_page_properties() const;
style_table_cell_properties * get_style_table_cell_properties (bool always =false);
private:
odf_types::style_family style_family_;

View File

@ -381,6 +381,9 @@ bool table_table_cell::empty()
{
if (!content_.elements_.empty()) return false;
if (attlist_.table_formula_) return false;
if (attlist_extra_.table_number_columns_spanned_ > 1) return false;
if (attlist_extra_.table_number_rows_spanned_ > 1) return false;
return true;
}

View File

@ -69,15 +69,32 @@ void table_table_row::docx_convert(oox::docx_conversion_context & Context)
const std::wstring styleName = attlist_.table_style_name_.get_value_or(L"");
const std::wstring defaultCellStyle = attlist_.table_default_cell_style_name_.get_value_or(L"");
const style_instance * inst =
Context.root()->odf_context().styleContainer().style_by_name( styleName , style_family::TableRow,Context.process_headers_footers_);
style_table_cell_properties* cell_props = NULL;
style_table_row_properties* row_props = NULL;
if (inst && inst->content())
{
cell_props = inst->content()->get_style_table_cell_properties(true);
row_props = inst->content()->get_style_table_row_properties();
if ((row_props) && (row_props->attlist_.common_background_color_attlist_.fo_background_color_))
{
if (!cell_props->attlist_.common_background_color_attlist_.fo_background_color_)
cell_props->attlist_.common_background_color_attlist_.fo_background_color_ = row_props->attlist_.common_background_color_attlist_.fo_background_color_;
}
}
for (unsigned int i = 0; i < attlist_.table_number_rows_repeated_; ++i)
{
_Wostream << L"<w:tr>";
const style_instance * inst =
Context.root()->odf_context().styleContainer().style_by_name( styleName , style_family::TableRow,Context.process_headers_footers_);
_Wostream << L"<w:trPr>";
_Wostream << L"<w:cantSplit w:val=\"false\" />";
if (inst && inst->content())inst->content()->docx_convert(Context);
if (cell_props)
cell_props->docx_convert(Context);
_Wostream << L"</w:trPr>";
Context.get_table_context().start_row(styleName, defaultCellStyle);
@ -304,28 +321,45 @@ void table_table_cell::docx_convert(oox::docx_conversion_context & Context)
);
}
if (attlist_extra_.table_number_columns_spanned_ > 1)
{
_Wostream << L"<w:gridSpan w:val=\"" << attlist_extra_.table_number_columns_spanned_ << "\"/>";
Context.get_table_context().set_columns_spanned(attlist_extra_.table_number_columns_spanned_ - 1);
}
double width = Context.get_table_context().get_current_cell_width();
if (width > 0.01)
{
_Wostream << L"<w:tcW w:w=\"" << (int)width << L"\" w:type=\"dxa\"/>";
}
if (attlist_extra_.table_number_columns_spanned_ > 1)
{
_Wostream << L"<w:gridSpan w:val=\"" << attlist_extra_.table_number_columns_spanned_ << "\"/>";
Context.get_table_context().set_columns_spanned(attlist_extra_.table_number_columns_spanned_ - 1);
}
const style_instance * inst =
Context.root()->odf_context().styleContainer().style_by_name( styleName , style_family::TableCell,Context.process_headers_footers_);
Context.root()->odf_context().styleContainer().style_by_name( styleName , style_family::TableCell, Context.process_headers_footers_);
if (inst && inst->content())
{
if (inst->content()->get_style_table_cell_properties())
{
inst->content()->get_style_table_cell_properties()->docx_convert(Context);
}
const std::wstring & currentRowStyle = Context.get_table_context().current_row_style();
const style_instance * inst_row =
Context.root()->odf_context().styleContainer().style_by_name(currentRowStyle, style_family::TableRow, Context.process_headers_footers_);
style_table_cell_properties *row_cell_props = NULL;
if (inst_row && inst_row->content())
{
row_cell_props = inst_row->content()->get_style_table_cell_properties();
}
if (inst && inst->content())
{
style_table_cell_properties merge_cell_props;
style_table_cell_properties * cell_props = inst->content()->get_style_table_cell_properties();
if (row_cell_props)
merge_cell_props.attlist_.apply_from(row_cell_props->attlist_);
if (cell_props)
merge_cell_props.attlist_.apply_from(cell_props->attlist_);
merge_cell_props.docx_convert(Context);
if (inst->content()->get_style_text_properties())
{
@ -341,7 +375,7 @@ void table_table_cell::docx_convert(oox::docx_conversion_context & Context)
Context.get_table_context().get_default_cell_style_col(Context.get_table_context().current_column());
if (const style_instance * inst =
Context.root()->odf_context().styleContainer().style_by_name(defaultCellStyle, style_family::TableCell,Context.process_headers_footers_))
Context.root()->odf_context().styleContainer().style_by_name(defaultCellStyle, style_family::TableCell, Context.process_headers_footers_))
{
if (const style_content * content = inst->content())
{
@ -359,7 +393,7 @@ void table_table_cell::docx_convert(oox::docx_conversion_context & Context)
const std::wstring & defaultCellStyle = Context.get_table_context().get_default_cell_style_row();
if (const style_instance * inst =
Context.root()->odf_context().styleContainer().style_by_name(defaultCellStyle, style_family::TableCell,Context.process_headers_footers_))
Context.root()->odf_context().styleContainer().style_by_name(defaultCellStyle, style_family::TableCell, Context.process_headers_footers_))
{
if (const style_content * content = inst->content())
{

View File

@ -688,7 +688,44 @@ void section::docx_convert(oox::docx_conversion_context & Context)
for (size_t i = 0; i < content_.size(); i++)
{
content_[i]->docx_convert(Context);
if (content_[i]->element_style_name)
{
std::wstring text___ = *content_[i]->element_style_name;
const _CP_OPT(std::wstring) masterPageName = Context.root()->odf_context().styleContainer().master_page_name_by_name(*content_[i]->element_style_name);
if (masterPageName)
{
std::wstring masterPageNameLayout = Context.root()->odf_context().pageLayoutContainer().page_layout_name_by_style(*masterPageName);
if (false == masterPageNameLayout.empty())
{
Context.set_master_page_name(*masterPageName); //проверка на то что тема действительно существует????
Context.remove_page_properties();
Context.add_page_properties(masterPageNameLayout);
}
}
}
if (content_[i]->next_element_style_name)
{
std::wstring text___ = *content_[i]->next_element_style_name;
// проверяем не сменится ли свойства страницы.
// если да — устанавливаем контексту флаг на то что необходимо в текущем параграфе
// распечатать свойства раздела/секции
//проверить ... не она ли текущая - может быть прописан дубляж - и тогда разрыв нарисуется ненужный
const _CP_OPT(std::wstring) next_masterPageName = Context.root()->odf_context().styleContainer().master_page_name_by_name(*content_[i]->next_element_style_name);
if ((next_masterPageName) && (Context.get_master_page_name() != *next_masterPageName))
{
if (false == Context.root()->odf_context().pageLayoutContainer().compare_page_properties(Context.get_master_page_name(), *next_masterPageName))
{
Context.next_dump_page_properties(true);
//is_empty = false;
}
}
}
content_[i]->docx_convert(Context);
}
}
@ -843,6 +880,11 @@ void table_of_content::add_child_element( xml::sax * Reader, const std::wstring
}
void table_of_content::docx_convert(oox::docx_conversion_context & Context)
{
std::wstring current_page_properties = Context.get_page_properties();
Context.get_section_context().add_section (section_attr_.name_, section_attr_.style_name_.get_value_or(L""), current_page_properties);
Context.add_page_properties(current_page_properties);
if (index_body_)
{
Context.start_sdt(1);

View File

@ -34,8 +34,6 @@
#include <string>
#include <iostream>
#include <boost/foreach.hpp>
#include "../../include/xml/attributes.h"
#include "../../include/xml/sax.h"

View File

@ -96,9 +96,9 @@ std::string replace_xml_to_text_ImplRegEx(const std::string & Text)
return boost::regex_replace(Text, replace_xml_to_text_expr, replace_xml_to_text_fmt, boost::match_default | boost::format_all);
}
std::wstring replace_text_to_xml_ImplReplace(const std::wstring & Text)
std::wstring replace_text_to_xml_ImplReplace(const std::wstring & Text, bool dDeleteUnicode)
{
return XmlUtils::EncodeXmlString(Text);
return XmlUtils::EncodeXmlString(Text, dDeleteUnicode);
}
std::string replace_text_to_xml_ImplReplace(const std::string & Text)
@ -164,9 +164,9 @@ std::wstring replace_amp_text_to_xml(const std::wstring & Text)
{
return details::replace_amp_text_to_xml_ImplReplace(Text);
}
std::wstring replace_text_to_xml(const std::wstring & Text)
std::wstring replace_text_to_xml(const std::wstring & Text, bool dDeleteUnicode)
{
return details::replace_text_to_xml_ImplReplace(Text);
return details::replace_text_to_xml_ImplReplace(Text, dDeleteUnicode);
}
std::string replace_text_to_xml(const std::string & Text)

View File

@ -1519,6 +1519,10 @@
RelativePath="..\src\odf\odf_document_impl.h"
>
</File>
<File
RelativePath="..\include\odf\odf_elements_type.h"
>
</File>
<File
RelativePath="..\src\odf\odfcontext.cpp"
>
@ -1571,10 +1575,6 @@
RelativePath="..\src\odf\office_elements.h"
>
</File>
<File
RelativePath="..\src\odf\office_elements_type.h"
>
</File>
<File
RelativePath="..\src\odf\office_event_listeners.cpp"
>

View File

@ -523,7 +523,8 @@ void NSPresentationEditor::CPPTXWriter::WritePresInfo()
if (false == m_pDocument->m_arThemes.empty())
{
strDefaultTextStyle += CStylesWriter::ConvertStyles(m_pDocument->m_arThemes[0]->m_pStyles[0], 9);
CStylesWriter styleWriter(m_pDocument->m_arThemes[0].get());
strDefaultTextStyle += styleWriter.ConvertStyles(m_pDocument->m_arThemes[0]->m_pStyles[0], 9);
}
strDefaultTextStyle += _T("</p:defaultTextStyle>");
@ -587,7 +588,9 @@ void NSPresentationEditor::CPPTXWriter::WriteThemes()
for (size_t i = 0; i < m_pDocument->m_arThemes.size(); i++)
{
WriteTheme(m_pDocument->m_arThemes[i], nIndexTheme, nStartLayout);
m_pShapeWriter->m_pTheme = m_pDocument->m_arThemes[i].get();
WriteTheme(m_pDocument->m_arThemes[i], nIndexTheme, nStartLayout);
m_pShapeWriter->m_pTheme = NULL;
}
WriteTheme(m_pDocument->m_pNotesMaster, nIndexTheme, nStartLayout);
@ -776,20 +779,23 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CThemePtr pTheme, int & nInde
if (!pTheme->m_bHasFooter) oWriter.WriteString(std::wstring(L" ftr=\"0\""));
oWriter.WriteString(std::wstring(L"/>"));
}
CStylesWriter styleWriter;
styleWriter.m_pTheme = pTheme.get();
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], oWriter, 9);
styleWriter.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], oWriter, 9);
styleWriter.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], oWriter, 9);
styleWriter.ConvertStyles(pTheme->m_pStyles[3], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:otherStyle>"));
oWriter.WriteString(std::wstring(L"</p:txStyles>"));
@ -797,7 +803,7 @@ void NSPresentationEditor::CPPTXWriter::WriteTheme(CThemePtr pTheme, int & nInde
else if (pTheme->m_eType == typeNotesMaster)
{
oWriter.WriteString(std::wstring(L"<p:notesStyle>"));
CStylesWriter::ConvertStyles(pTheme->m_pStyles[1], oWriter, 9);
styleWriter.ConvertStyles(pTheme->m_pStyles[1], oWriter, 9);
oWriter.WriteString(std::wstring(L"</p:notesStyle>"));
}

View File

@ -31,6 +31,7 @@
*/
#include "ShapeWriter.h"
#include "StylesWriter.h"
#include "../../../ASCOfficePPTXFile/Editor/Drawing/Theme.h"
#include "../../../ASCOfficeXlsFile2/source/XlsXlsxConverter/ShapeType.h"
#include "../../../Common/MS-LCID.h"
@ -39,6 +40,9 @@
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Shape.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTree.h"
CStylesWriter::CStylesWriter() : m_pTheme(NULL) {}
CStylesWriter::CStylesWriter(NSPresentationEditor::CTheme* pTheme) : m_pTheme(pTheme) {}
void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, NSPresentationEditor::CStringWriter& oWriter, const int& nLevel)
{//дублирование CTextPFRun и CTextCFRun с ShapeWriter - todooo - вынести отдельно
std::wstring str1;
@ -243,24 +247,31 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
oWriter.WriteString(L"<a:solidFill><a:srgbClr val=\"" + strColor + L"\"/></a:solidFill>");
}
}
if (pCF->Typeface.is_init())
if ((pCF->FontProperties.is_init()) && (!pCF->FontProperties->strFontName.empty()))
{
if (0 == pCF->Typeface.get())
oWriter.WriteString(L"<a:latin typeface=\"" + pCF->FontProperties->strFontName + L"\"/>");
}
else if (pCF->fontRef.is_init())
{
if ((m_pTheme) && (pCF->fontRef.get() < m_pTheme->m_arFonts.size()))
{
oWriter.WriteString(L"<a:latin typeface=\"+mj-lt\"/>");
oWriter.WriteString(L"<a:latin typeface=\"" + m_pTheme->m_arFonts[pCF->fontRef.get()].Name + L"\"/>");
}
else
{
oWriter.WriteString(L"<a:latin typeface=\"+mn-lt\"/>");
if (0 == pCF->fontRef.get())
{
oWriter.WriteString(L"<a:latin typeface=\"+mj-lt\"/>");
}
else
{
oWriter.WriteString(L"<a:latin typeface=\"+mn-lt\"/>");
}
}
}
else if ((pCF->FontProperties.is_init()) && (!pCF->FontProperties->strFontName.empty()))
{
oWriter.WriteString(L"<a:latin typeface=\"" + pCF->FontProperties->strFontName + L"\"/>");
}
if (pCF->FontPropertiesEA.is_init())
{
oWriter.WriteString(L"<a:ea typeface=\"" + pCF->FontPropertiesEA->strFontName + L"\"/>");
oWriter.WriteString(L"<a:cs typeface=\"" + pCF->FontPropertiesEA->strFontName + L"\"/>");
}
if (pCF->FontPropertiesSym.is_init())
{
@ -278,6 +289,7 @@ void CStylesWriter::ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLe
}
NSPresentationEditor::CShapeWriter::CShapeWriter()
{
m_pTheme = NULL;
m_pRels = NULL;
m_lNextShapeID = 1000;
@ -979,7 +991,8 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
if (!m_bWordArt)
{
CStylesWriter::ConvertStyles(pShapeElement->m_pShape->m_oText.m_oStyles, m_oWriter);
CStylesWriter styleWriter(m_pTheme);
styleWriter.ConvertStyles(pShapeElement->m_pShape->m_oText.m_oStyles, m_oWriter);
}
m_oWriter.WriteString(std::wstring(L"</a:lstStyle>"));
@ -1267,24 +1280,32 @@ void NSPresentationEditor::CShapeWriter::WriteTextInfo()
}
}
if (pCF->Typeface.is_init())
{
if (0 == pCF->Typeface.get())
{
m_oWriter.WriteString(L"<a:latin typeface=\"+mj-lt\"/>");
}
else
{
m_oWriter.WriteString(L"<a:latin typeface=\"+mn-lt\"/>");
}
}
else if (pCF->FontProperties.is_init())
if (pCF->FontProperties.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:latin typeface=\"") + pCF->FontProperties->strFontName + _T("\"/>"));
}
else if (pCF->fontRef.is_init())
{
if ((m_pTheme) && (pCF->fontRef.get() < m_pTheme->m_arFonts.size()))
{
m_oWriter.WriteString(L"<a:latin typeface=\"" + m_pTheme->m_arFonts[pCF->fontRef.get()].Name + L"\"/>");
}
else
{
if (0 == pCF->fontRef.get())
{
m_oWriter.WriteString(L"<a:latin typeface=\"+mj-lt\"/>");
}
else
{
m_oWriter.WriteString(L"<a:latin typeface=\"+mn-lt\"/>");
}
}
}
if (pCF->FontPropertiesEA.is_init())
{
m_oWriter.WriteString(std::wstring(L"<a:ea typeface=\"") + pCF->FontPropertiesEA->strFontName + _T("\"/>"));
m_oWriter.WriteString(std::wstring(L"<a:cs typeface=\"") + pCF->FontPropertiesEA->strFontName + L"\"/>");
}
if (pCF->FontPropertiesSym.is_init())
{

View File

@ -146,6 +146,8 @@ namespace NSPresentationEditor
NSPresentationEditor::CRelsGenerator* m_pRels;
NSPresentationEditor::CTheme* m_pTheme;
LONG m_lNextShapeID;
bool m_bWordArt;

View File

@ -31,9 +31,42 @@
*/
#pragma once
namespace NSPresentationEditor
{
class CTheme;
}
class CStylesWriter
{
public:
CStylesWriter(NSPresentationEditor::CTheme* m_pTheme);
CStylesWriter();
NSPresentationEditor::CTheme* m_pTheme;
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(), oWriter, i);
}
}
std::wstring ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, const int& nLevel)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyleLevel(oLevel, oWriter, nLevel);
return oWriter.GetData();
}
void ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel,
NSPresentationEditor::CStringWriter& oWriter, const int& nLevel);
std::wstring ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, int nCount = 10)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyles(oStyles, oWriter, nCount);
return oWriter.GetData();
}
AVSINLINE static std::wstring GetTextAnchor(const WORD& value)
{
if (0 == value) return L"t";
@ -88,27 +121,5 @@ public:
return L"auto";
}
static std::wstring ConvertStyles(NSPresentationEditor::CTextStyles& oStyles, int nCount = 10)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyles(oStyles, oWriter, nCount);
return oWriter.GetData();
}
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(), oWriter, i);
}
}
static std::wstring ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel, const int& nLevel)
{
NSPresentationEditor::CStringWriter oWriter;
ConvertStyleLevel(oLevel, oWriter, nLevel);
return oWriter.GetData();
}
static void ConvertStyleLevel(NSPresentationEditor::CTextStyleLevel& oLevel,
NSPresentationEditor::CStringWriter& oWriter, const int& nLevel);
};

View File

@ -471,7 +471,7 @@ void CTextCFRun_ppt::LoadFromStream(POLE::Stream* pStream, bool bIsIndentation)
}
if (typeface_)
m_oRun.Typeface = StreamUtils::ReadWORD(pStream);
m_oRun.fontRef = StreamUtils::ReadWORD(pStream);
if (EAFontRef_)
m_oRun.EAFontRef = StreamUtils::ReadWORD(pStream);

View File

@ -43,6 +43,16 @@
#if defined(_WIN64)
#pragma comment(lib, "../../build/bin/icu/win_64/icuuc.lib")
#elif defined (_WIN32)
#if defined(_DEBUG)
#pragma comment(lib, "../../build/lib/win_32/DEBUG/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/UnicodeConverter.lib")
#else
#pragma comment(lib, "../../build/lib/win_32/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/UnicodeConverter.lib")
#endif
#pragma comment(lib, "../../build/bin/icu/win_32/icuuc.lib")
#endif

View File

@ -2,102 +2,26 @@ Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPTXFormat", "..\..\ASCOfficePPTXFile\PPTXLib\PPTXFormat.vcproj", "{36636678-AE25-4BE6-9A34-2561D1BCF302}"
ProjectSection(ProjectDependencies) = postProject
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\..\DesktopEditor\graphics\graphics_vs2005.vcproj", "{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}"
ProjectSection(ProjectDependencies) = postProject
{818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470}
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239} = {764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "agg2d", "..\..\DesktopEditor\agg-2.4\agg_vs2005.vcproj", "{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}"
ProjectSection(ProjectDependencies) = postProject
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239} = {764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}
{818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg", "..\..\DesktopEditor\cximage\jpeg\Jpeg_vs2005.vcproj", "{818753F2-DBB9-4D3B-898A-A604309BE470}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "font_engine", "..\..\DesktopEditor\fontengine\font_engine_vs2005.vcproj", "{C739151F-5384-41DF-A1A6-F089E2C1AD56}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "..\..\DesktopEditor\freetype-2.5.2\builds\windows\vc2005\freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raster", "..\..\DesktopEditor\raster\raster_vs2005.vcproj", "{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}"
ProjectSection(ProjectDependencies) = postProject
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdcr", "..\..\DesktopEditor\cximage\raw\libdcr_vs2005.vcproj", "{DF861D33-9BC1-418C-82B1-581F590FE169}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "png", "..\..\DesktopEditor\cximage\png\png_vs2005.vcproj", "{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mng", "..\..\DesktopEditor\cximage\mng\mng_vs2005.vcproj", "{40A69F40-063E-43FD-8543-455495D8733E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff", "..\..\DesktopEditor\cximage\tiff\Tiff_vs2005.vcproj", "{0588563C-F05C-428C-B21A-DD74756628B3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpsd", "..\..\DesktopEditor\cximage\libpsd\libpsd_vs2005.vcproj", "{9A037A69-D1DF-4505-AB2A-6CB3641C476E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPTFormatLib", "..\PPTFormatLib\Win32\PPTFormatLib.vcproj", "{7B27E40E-F70A-4A74-A77C-0944D7931D15}"
ProjectSection(ProjectDependencies) = postProject
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig", "..\..\DesktopEditor\cximage\jbig\jbig_vs2005.vcproj", "{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig2", "..\..\DesktopEditor\raster\JBig2\win32\jbig2.vcproj", "{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OfficeUtilsLib", "..\..\OfficeUtils\win32\OfficeUtilsLib.vcproj", "{F8274B05-168E-4D6E-B843-AA7510725363}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PptFormatTest", "PptFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
ProjectSection(ProjectDependencies) = postProject
{7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15}
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\DesktopEditor\xml\build\vs2005\libxml2.vcproj", "{21663823-DE45-479B-91D0-B4FEF4916EF0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OfficeFileCrypt", "..\..\OfficeCryptReader\win32\ECMACryptReader.vcproj", "{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}"
@ -154,126 +78,6 @@ Global
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|Win32.Build.0 = Release|Win32
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.ActiveCfg = Release|x64
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Unicode Release|x64.Build.0 = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.ActiveCfg = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.Build.0 = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.ActiveCfg = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.Build.0 = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Debug|x64.Build.0 = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|Win32.Build.0 = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|x64.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.DLL-Import Release|x64.Build.0 = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.ActiveCfg = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.Build.0 = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.Build.0 = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseASC|Win32.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseASC|x64.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseASC|x64.Build.0 = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.ReleaseOpenSource|x64.Build.0 = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|Win32.Build.0 = Debug|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.ActiveCfg = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Debug|x64.Build.0 = Debug|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.ActiveCfg = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|Win32.Build.0 = Release|Win32
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.ActiveCfg = Release|x64
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Unicode Release|x64.Build.0 = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.ActiveCfg = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.Build.0 = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.ActiveCfg = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.Build.0 = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Debug|x64.Build.0 = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|Win32.Build.0 = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|x64.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.DLL-Import Release|x64.Build.0 = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.ActiveCfg = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.Build.0 = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.Build.0 = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseASC|Win32.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseASC|x64.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseASC|x64.Build.0 = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.ReleaseOpenSource|x64.Build.0 = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|Win32.Build.0 = Debug|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.ActiveCfg = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Debug|x64.Build.0 = Debug|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.ActiveCfg = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|Win32.Build.0 = Release|Win32
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.ActiveCfg = Release|x64
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Unicode Release|x64.Build.0 = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.ActiveCfg = Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.Build.0 = Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.ActiveCfg = Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.Build.0 = Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Debug|x64.Build.0 = Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|Win32.Build.0 = Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|x64.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.DLL-Import Release|x64.Build.0 = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.ActiveCfg = Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.Build.0 = Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.Build.0 = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseASC|Win32.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseASC|x64.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseASC|x64.Build.0 = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.ReleaseOpenSource|x64.Build.0 = Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Unicode Release|x64.Build.0 = Unicode Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.ActiveCfg = Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.Build.0 = Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.ActiveCfg = Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.Build.0 = Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Debug|x64.Build.0 = Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|Win32.Build.0 = Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|x64.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.DLL-Import Release|x64.Build.0 = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.ActiveCfg = Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.Build.0 = Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.Build.0 = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseASC|Win32.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseASC|x64.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseASC|x64.Build.0 = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.ReleaseOpenSource|x64.Build.0 = Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{818753F2-DBB9-4D3B-898A-A604309BE470}.Unicode Release|x64.Build.0 = Unicode Release|x64
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.ActiveCfg = Debug|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|Win32.Build.0 = Debug|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Debug|x64.ActiveCfg = Debug|x64
@ -305,276 +109,6 @@ Global
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|Win32.Build.0 = Release|Win32
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.ActiveCfg = Release|x64
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Unicode Release|x64.Build.0 = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.ActiveCfg = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.Build.0 = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.ActiveCfg = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.Build.0 = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Debug|x64.Build.0 = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|Win32.Build.0 = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|x64.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.DLL-Import Release|x64.Build.0 = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.ActiveCfg = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.Build.0 = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.Build.0 = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseASC|Win32.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseASC|x64.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseASC|x64.Build.0 = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.ReleaseOpenSource|x64.Build.0 = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|Win32.Build.0 = Debug|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.ActiveCfg = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Debug|x64.Build.0 = Debug|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.ActiveCfg = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|Win32.Build.0 = Release|Win32
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.ActiveCfg = Release|x64
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Unicode Release|x64.Build.0 = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Debug|x64.Build.0 = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|Win32.Build.0 = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.DLL-Import Release|x64.Build.0 = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseASC|Win32.ActiveCfg = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseASC|x64.ActiveCfg = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseASC|x64.Build.0 = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseOpenSource|Win32.ActiveCfg = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseOpenSource|x64.ActiveCfg = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.ReleaseOpenSource|x64.Build.0 = Release Singlethreaded|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|Win32.Build.0 = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Debug|x64.Build.0 = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|Win32.Build.0 = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Unicode Release|x64.Build.0 = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.ActiveCfg = Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.Build.0 = Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.ActiveCfg = Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.Build.0 = Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Debug|x64.Build.0 = Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|Win32.Build.0 = Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|x64.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.DLL-Import Release|x64.Build.0 = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.ActiveCfg = Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.Build.0 = Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.Build.0 = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseASC|Win32.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseASC|x64.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseASC|x64.Build.0 = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.ReleaseOpenSource|x64.Build.0 = Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Unicode Release|x64.Build.0 = Unicode Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.ActiveCfg = Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.Build.0 = Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.ActiveCfg = Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.Build.0 = Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Debug|x64.Build.0 = Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|Win32.Build.0 = Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|x64.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.DLL-Import Release|x64.Build.0 = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.ActiveCfg = Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.Build.0 = Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.Build.0 = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseASC|Win32.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseASC|x64.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseASC|x64.Build.0 = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.ReleaseOpenSource|x64.Build.0 = Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Unicode Release|x64.Build.0 = Unicode Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.ActiveCfg = Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.Build.0 = Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.ActiveCfg = Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.Build.0 = Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Debug|x64.Build.0 = Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|Win32.Build.0 = Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|x64.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.DLL-Import Release|x64.Build.0 = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.ActiveCfg = Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.Build.0 = Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.Build.0 = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseASC|Win32.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseASC|x64.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseASC|x64.Build.0 = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.ReleaseOpenSource|x64.Build.0 = Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{DF861D33-9BC1-418C-82B1-581F590FE169}.Unicode Release|x64.Build.0 = Unicode Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.ActiveCfg = Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.Build.0 = Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.ActiveCfg = Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.Build.0 = Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Debug|x64.Build.0 = Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|Win32.Build.0 = Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|x64.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.DLL-Import Release|x64.Build.0 = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.ActiveCfg = Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.Build.0 = Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.Build.0 = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseASC|Win32.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseASC|x64.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseASC|x64.Build.0 = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.ReleaseOpenSource|x64.Build.0 = Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Unicode Release|x64.Build.0 = Unicode Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.ActiveCfg = Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.Build.0 = Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.ActiveCfg = Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.Build.0 = Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Debug|x64.Build.0 = Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|Win32.Build.0 = Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|x64.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.DLL-Import Release|x64.Build.0 = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.ActiveCfg = Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.Build.0 = Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.Build.0 = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseASC|Win32.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseASC|x64.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseASC|x64.Build.0 = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.ReleaseOpenSource|x64.Build.0 = Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{40A69F40-063E-43FD-8543-455495D8733E}.Unicode Release|x64.Build.0 = Unicode Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.ActiveCfg = Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.Build.0 = Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.ActiveCfg = Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.Build.0 = Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Debug|x64.Build.0 = Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|Win32.Build.0 = Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|x64.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.DLL-Import Release|x64.Build.0 = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.ActiveCfg = Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.Build.0 = Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.Build.0 = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseASC|Win32.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseASC|x64.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseASC|x64.Build.0 = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.ReleaseOpenSource|x64.Build.0 = Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{0588563C-F05C-428C-B21A-DD74756628B3}.Unicode Release|x64.Build.0 = Unicode Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.ActiveCfg = Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.Build.0 = Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.ActiveCfg = Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.Build.0 = Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Debug|x64.Build.0 = Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|Win32.Build.0 = Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|x64.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.DLL-Import Release|x64.Build.0 = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.ActiveCfg = Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.Build.0 = Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.Build.0 = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseASC|Win32.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseASC|x64.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseASC|x64.Build.0 = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.ReleaseOpenSource|x64.Build.0 = Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Unicode Release|x64.Build.0 = Unicode Release|x64
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|Win32.ActiveCfg = Debug|Win32
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|Win32.Build.0 = Debug|Win32
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Debug|x64.ActiveCfg = Debug|x64
@ -605,96 +139,6 @@ Global
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Unicode Release|Win32.Build.0 = Release|Win32
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Unicode Release|x64.ActiveCfg = Release|x64
{7B27E40E-F70A-4A74-A77C-0944D7931D15}.Unicode Release|x64.Build.0 = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.ActiveCfg = Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.Build.0 = Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.ActiveCfg = Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.Build.0 = Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Debug|x64.Build.0 = Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Release|Win32.Build.0 = Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Release|x64.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.DLL-Import Release|x64.Build.0 = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.ActiveCfg = Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.Build.0 = Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.Build.0 = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseASC|Win32.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseASC|x64.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseASC|x64.Build.0 = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.ReleaseOpenSource|x64.Build.0 = Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Unicode Release|x64.Build.0 = Unicode Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.ActiveCfg = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.Build.0 = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.ActiveCfg = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.Build.0 = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Debug|x64.Build.0 = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|Win32.Build.0 = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|x64.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.DLL-Import Release|x64.Build.0 = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.ActiveCfg = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.Build.0 = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.Build.0 = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseASC|Win32.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseASC|x64.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseASC|x64.Build.0 = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.ReleaseOpenSource|x64.Build.0 = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|Win32.Build.0 = Debug|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.ActiveCfg = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Debug|x64.Build.0 = Debug|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.ActiveCfg = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|Win32.Build.0 = Release|Win32
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.ActiveCfg = Release|x64
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Unicode Release|x64.Build.0 = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.ActiveCfg = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.Build.0 = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.ActiveCfg = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.Build.0 = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Debug|x64.Build.0 = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|Win32.Build.0 = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|x64.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.DLL-Import Release|x64.Build.0 = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.ActiveCfg = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.Build.0 = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.Build.0 = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseASC|Win32.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseASC|x64.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseASC|x64.Build.0 = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.ReleaseOpenSource|x64.Build.0 = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|Win32.Build.0 = Debug|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.ActiveCfg = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Debug|x64.Build.0 = Debug|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.ActiveCfg = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|Win32.Build.0 = Release|Win32
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.ActiveCfg = Release|x64
{F8274B05-168E-4D6E-B843-AA7510725363}.Unicode Release|x64.Build.0 = Release|x64
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.ActiveCfg = Debug|Win32
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.Build.0 = Debug|Win32
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|x64.ActiveCfg = Debug|x64
@ -725,36 +169,6 @@ Global
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|Win32.Build.0 = Release|Win32
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|x64.ActiveCfg = Release|x64
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Unicode Release|x64.Build.0 = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.ActiveCfg = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.Build.0 = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.ActiveCfg = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.Build.0 = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Debug|x64.Build.0 = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|Win32.Build.0 = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|x64.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.DLL-Import Release|x64.Build.0 = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.ActiveCfg = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.Build.0 = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.Build.0 = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseASC|Win32.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseASC|x64.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseASC|x64.Build.0 = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseOpenSource|x64.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.ReleaseOpenSource|x64.Build.0 = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|Win32.Build.0 = Debug|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.ActiveCfg = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Debug|x64.Build.0 = Debug|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.ActiveCfg = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|Win32.Build.0 = Release|Win32
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.ActiveCfg = Release|x64
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Unicode Release|x64.Build.0 = Release|x64
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.ActiveCfg = Debug|Win32
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.Build.0 = Debug|Win32
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|x64.ActiveCfg = Debug|x64

View File

@ -48,7 +48,7 @@
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"
RuntimeLibrary="1"
RuntimeLibrary="3"
EnableEnhancedInstructionSet="0"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)\PptFileFormatTest.pdb"
@ -357,6 +357,10 @@
RelativePath="..\..\XlsxSerializerCom\Reader\ChartFromToBinary.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\ChartWriter.cpp"
>
</File>
<File
RelativePath="..\..\XlsxSerializerCom\Common\Common.cpp"
>
@ -374,7 +378,11 @@
>
</File>
<File
RelativePath="..\..\Common\FileDownloader\FileDownloader_win.cpp"
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
>
</File>
<File
@ -390,38 +398,14 @@
>
</File>
<File
RelativePath="..\..\DesktopEditor\xml\src\xmldom.cpp"
>
</File>
<File
RelativePath="..\..\DesktopEditor\xml\src\xmllight.cpp"
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
>
</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\DEBUG\UnicodeConverter.lib"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
>
</File>
</Files>
<Globals>
</Globals>

View File

@ -97,13 +97,13 @@ void NSPresentationEditor::CShapeElement::SetupTextProperties(CSlide* pSlide, CT
}
if (NULL != pTheme)
{
if ((pRun->Typeface.is_init()) && (pRun->Typeface.get() < pTheme->m_arFonts.size()))
if ((pRun->fontRef.is_init()) && (pRun->fontRef.get() < pTheme->m_arFonts.size()))
{
pRun->FontProperties = new CFontProperties();
pRun->FontProperties->SetFont(pTheme->m_arFonts[pRun->Typeface.get()]);
pRun->FontProperties->SetFont(pTheme->m_arFonts[pRun->fontRef.get()]);
if (1 < pRun->Typeface.get())
pRun->Typeface.reset();
if (1 < pRun->fontRef.get())
pRun->fontRef.reset();
}
if ((pRun->EAFontRef.is_init()) && (pRun->EAFontRef.get() < pTheme->m_arFonts.size()))
{

View File

@ -130,7 +130,7 @@ namespace NSPresentationEditor
NSCommon::nullable_base<bool> FontStrikeout;
NSCommon::nullable_base<bool> FontShadow;
NSCommon::nullable_base<WORD> Typeface; // fontRef
NSCommon::nullable_base<WORD> fontRef; // fontRef
NSCommon::nullable_base<WORD> EAFontRef; // eaFontRef
NSCommon::nullable_base<WORD> AnsiFontRef; // ansiFontRef
NSCommon::nullable_base<WORD> SymbolFontRef; // SymbolFontRef
@ -162,7 +162,7 @@ namespace NSPresentationEditor
FontStrikeout = oSrc.FontStrikeout;
FontShadow = oSrc.FontShadow;
Typeface = oSrc.Typeface;
fontRef = oSrc.fontRef;
EAFontRef = oSrc.EAFontRef;
AnsiFontRef = oSrc.AnsiFontRef;
SymbolFontRef = oSrc.SymbolFontRef;
@ -192,7 +192,7 @@ namespace NSPresentationEditor
if (!FontStrikeout.is_init()) FontStrikeout = oSrc.FontStrikeout;
if (!FontShadow.is_init()) FontShadow = oSrc.FontShadow;
if (!Typeface.is_init()) Typeface = oSrc.Typeface;
if (!fontRef.is_init()) fontRef = oSrc.fontRef;
if (!EAFontRef.is_init()) EAFontRef = oSrc.EAFontRef;
if (!AnsiFontRef.is_init()) AnsiFontRef = oSrc.AnsiFontRef;
if (!SymbolFontRef.is_init()) SymbolFontRef = oSrc.SymbolFontRef;
@ -217,11 +217,11 @@ namespace NSPresentationEditor
if (oSrc.FontStrikeout.is_init()) FontStrikeout = oSrc.FontStrikeout;
if (oSrc.FontShadow.is_init()) FontShadow = oSrc.FontShadow;
bool bTypefaceSetUp = false;
if (oSrc.Typeface.is_init())
bool bFontRefSetUp = false;
if (oSrc.fontRef.is_init())
{
Typeface = oSrc.Typeface;
bTypefaceSetUp = true;
fontRef = oSrc.fontRef;
bFontRefSetUp = true;
}
if (oSrc.EAFontRef.is_init()) EAFontRef = oSrc.EAFontRef;
if (oSrc.AnsiFontRef.is_init()) AnsiFontRef = oSrc.AnsiFontRef;
@ -238,8 +238,8 @@ namespace NSPresentationEditor
if (oSrc.FontProperties.is_init())
{
FontProperties = oSrc.FontProperties;
if (!bTypefaceSetUp)
Typeface.reset();
if (!bFontRefSetUp)
fontRef.reset();
}
if (oSrc.Language.is_init())
Language = oSrc.Language;

View File

@ -147,9 +147,9 @@ namespace NSPresentationEditor
oColor.A = m_arColorScheme[oColor.m_lSchemeIndex].A;
}
}
if (pLevel->m_oCFRun.Typeface.IsInit())
if (pLevel->m_oCFRun.fontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.Typeface.get();
WORD lFontIndex = pLevel->m_oCFRun.fontRef.get();
if (lFontIndex < (WORD)m_arFonts.size())
{
if (!pLevel->m_oCFRun.FontProperties.is_init())
@ -208,9 +208,9 @@ namespace NSPresentationEditor
oColor.A = pTheme->m_arColorScheme[oColor.m_lSchemeIndex].A;
}
}
if (pLevel->m_oCFRun.Typeface.IsInit())
if (pLevel->m_oCFRun.fontRef.IsInit())
{
WORD lFontIndex = pLevel->m_oCFRun.Typeface.get();
WORD lFontIndex = pLevel->m_oCFRun.fontRef.get();
if (lFontIndex < (WORD)pTheme->m_arFonts.size())
{
if (!pLevel->m_oCFRun.FontProperties.is_init())

View File

@ -47,12 +47,15 @@
#if defined(_DEBUG)
#pragma comment(lib, "../../build/lib/win_32/DEBUG/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/UnicodeConverter.lib")
#else
#pragma comment(lib, "../../build/lib/win_32/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/UnicodeConverter.lib")
#endif
#pragma comment(lib, "../../build/bin/icu/win_32/icuuc.lib")
#endif
HRESULT convert_single(std::wstring srcFileName)
{
int n1 = srcFileName.rfind(_T('.'));

View File

@ -383,10 +383,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\Common\FileDownloader\FileDownloader_win.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\FontProcessor.cpp"
>
@ -411,10 +407,6 @@
RelativePath="..\..\Common\DocxFormat\Source\Base\unicode_util.cpp"
>
</File>
<File
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeDocxFile2\DocWrapper\XlsxSerializer.cpp"
>

View File

@ -48,6 +48,16 @@
#if defined(_WIN64)
#pragma comment(lib, "../../build/bin/icu/win_64/icuuc.lib")
#elif defined (_WIN32)
#if defined(_DEBUG)
#pragma comment(lib, "../../build/lib/win_32/DEBUG/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/DEBUG/UnicodeConverter.lib")
#else
#pragma comment(lib, "../../build/lib/win_32/graphics.lib")
#pragma comment(lib, "../../build/lib/win_32/kernel.lib")
#pragma comment(lib, "../../build/lib/win_32/UnicodeConverter.lib")
#endif
#pragma comment(lib, "../../build/bin/icu/win_32/icuuc.lib")
#endif

View File

@ -335,18 +335,6 @@
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\UnicodeConverter\UnicodeConverter.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\XlsFormatTest.cpp"
>
@ -424,14 +412,6 @@
>
</File>
</Filter>
<File
RelativePath="..\..\build\lib\win_32\DEBUG\graphics.lib"
>
</File>
<File
RelativePath="..\..\build\lib\win_32\DEBUG\kernel.lib"
>
</File>
</Files>
<Globals>
</Globals>

View File

@ -165,7 +165,7 @@ int AUTOFILTER::serialize(std::wostream & stream)
int pos = ref.find(sheet_name);
if (pos >= 0)
{
pos = ref.find(L"!");
pos = ref.rfind(L"!");
if (pos > 0)
ref.erase(0, pos + 1);
}

View File

@ -212,6 +212,10 @@ int SUPBOOK::serialize(std::wostream & strm)
int SUPBOOK::serialize_book(std::wostream & strm)
{
SupBook *book = dynamic_cast<SupBook*>(m_SupBook.get());
if (book->virtPath.empty())
return 0;
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"externalBook")
@ -219,7 +223,7 @@ int SUPBOOK::serialize_book(std::wostream & strm)
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_ATTR(L"r:id", L"rId1");
sExternPathLink = book->virtPath.back();
sExternPathLink = book->virtPath.back();
if (!m_arXCT.empty() && !book->rgst.empty())
{
@ -355,6 +359,10 @@ int SUPBOOK::serialize_book(std::wostream & strm)
int SUPBOOK::serialize_dde(std::wostream & strm)
{
SupBook *book = dynamic_cast<SupBook*>(m_SupBook.get());
if (book->virtPath.empty())
return 0;
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"ddeLink")

View File

@ -297,28 +297,28 @@ namespace OOX
return rId;
}
void IFileContainer::Add (const OOX::RId& rId, smart_ptr<OOX::File>& pFile)
void IFileContainer::AssignOutputFilename(smart_ptr<OOX::File>& pFile)
{
bool bEnumerated = pFile->type().Enumerated();
bool bEnumeratedGlobal = pFile->type().EnumeratedGlobal();
if(true == bEnumeratedGlobal || true == bEnumerated)
if((true == bEnumeratedGlobal || true == bEnumerated) && pFile->m_sOutputFilename.empty())
{
int nIndex = 0;
if(true == bEnumeratedGlobal)
{
boost::unordered_map<std::wstring, size_t>::const_iterator pNamePair = m_mapEnumeratedGlobal.find (pFile->type().OverrideType());
boost::unordered_map<std::wstring, size_t>::const_iterator pNamePair = m_mapEnumeratedGlobal.find (pFile->type().OverrideType());
if (pNamePair != m_mapEnumeratedGlobal.end())
nIndex = pNamePair->second;
}
else
{
boost::unordered_map<std::wstring, size_t>::const_iterator pNamePair = m_mapAddNamePair.find (pFile->type().OverrideType());
boost::unordered_map<std::wstring, size_t>::const_iterator pNamePair = m_mapAddNamePair.find (pFile->type().OverrideType());
if (pNamePair != m_mapAddNamePair.end())
nIndex = pNamePair->second;
nIndex = pNamePair->second;
}
nIndex++;
if(true == bEnumeratedGlobal)
@ -330,12 +330,12 @@ namespace OOX
}
}
std::wstring sPath = pFile->DefaultFileName().GetPath();
int nDotIndex = sPath.rfind('.');
std::wstring sPath = pFile->DefaultFileName().GetPath();
int nDotIndex = sPath.rfind('.');
if(-1 != nDotIndex && nDotIndex > 0)
{
std::wstring sDigit = std::to_wstring( nIndex);
sPath.insert(sPath.begin() + nDotIndex, sDigit.begin(), sDigit.end());
std::wstring sDigit = std::to_wstring( nIndex);
sPath.insert(sPath.begin() + nDotIndex, sDigit.begin(), sDigit.end());
}
pFile->m_sOutputFilename = sPath;
if(true == bEnumeratedGlobal)
@ -343,6 +343,11 @@ namespace OOX
else
m_mapAddNamePair [pFile->type().OverrideType()] = nIndex;
}
}
void IFileContainer::Add (const OOX::RId& rId, smart_ptr<OOX::File>& pFile)
{
AssignOutputFilename(pFile);
m_lMaxRid = (std::max)( m_lMaxRid, rId.getNumber() );

View File

@ -116,6 +116,7 @@ namespace OOX
void SetGlobalNumberByType(const std::wstring& sOverrideType, int val);
int GetGlobalNumberByType(const std::wstring& sOverrideType);
void AssignOutputFilename(smart_ptr<OOX::File>& pFile);
private:
const RId GetMaxRId();

View File

@ -182,26 +182,30 @@ void OOX::Spreadsheet::CCell::PrepareForBinaryWriter()
}
else if(SimpleTypes::Spreadsheet::celltypeStr == m_oType->GetValue() || SimpleTypes::Spreadsheet::celltypeError == m_oType->GetValue())
{
if(!xlsx->m_pSharedStrings)
xlsx->CreateSharedStrings();
std::wstring sValue;
if(m_oValue.IsInit())
sValue = m_oValue->ToString();
//добавляем в SharedStrings
CSi* pSi = new CSi();
CText* pText = new CText();
pText->m_sText = sValue;
pSi->m_arrItems.push_back(pText);
int nIndex = xlsx->m_pSharedStrings->AddSi(pSi);
//меняем значение ячейки
m_oValue.Init();
m_oValue->m_sText = std::to_wstring(nIndex);
//меняем тип ячейки
if(SimpleTypes::Spreadsheet::celltypeStr == m_oType->GetValue())
if (m_oValue.IsInit())
{
m_oType.Init();
m_oType->SetValue(SimpleTypes::Spreadsheet::celltypeSharedString);
if(!xlsx->m_pSharedStrings)
xlsx->CreateSharedStrings();
//добавляем в SharedStrings
CSi* pSi = new CSi();
CText* pText = new CText();
pText->m_sText = m_oValue->ToString();
pSi->m_arrItems.push_back(pText);
int nIndex = xlsx->m_pSharedStrings->AddSi(pSi);
//меняем значение ячейки
m_oValue.Init();
m_oValue->m_sText = std::to_wstring(nIndex);
//меняем тип ячейки
if(SimpleTypes::Spreadsheet::celltypeStr == m_oType->GetValue())
{
m_oType.Init();
m_oType->SetValue(SimpleTypes::Spreadsheet::celltypeSharedString);
}
}
else
{
m_oValue.reset();
m_oType.reset();
}
}
else if(SimpleTypes::Spreadsheet::celltypeBool == m_oType->GetValue())
@ -220,4 +224,4 @@ void OOX::Spreadsheet::CCell::PrepareForBinaryWriter()
}
}
}
}
}

View File

@ -45,7 +45,7 @@ namespace OOX
CWorksheet::CWorksheet(OOX::Document* pMain) : OOX::File(pMain), OOX::IFileContainer(pMain)
{
m_bSpreadsheets = true;
m_bWriteDirectlyToFile = false;
m_pComments = NULL;
CXlsx* xlsx = dynamic_cast<CXlsx*>(pMain);
@ -62,7 +62,7 @@ namespace OOX
CWorksheet::CWorksheet(OOX::Document* pMain, const CPath& oRootPath, const CPath& oPath, const std::wstring & rId) : OOX::File(pMain), OOX::IFileContainer(pMain)
{
m_bSpreadsheets = true;
m_bWriteDirectlyToFile = false;
m_pComments = NULL;
CXlsx* xlsx = dynamic_cast<CXlsx*>(pMain);
@ -349,7 +349,7 @@ namespace OOX
}
void CWorksheet::write(const CPath& oPath, const CPath& oDirectory, CContentTypes& oContent) const
{
if (m_sOutputFilename.empty())
if (!m_bWriteDirectlyToFile)
{
NSStringUtils::CStringBuilder sXml;
toXMLStart(sXml);

View File

@ -114,6 +114,7 @@ namespace OOX
public:
bool m_bPrepareForBinaryWriter;
bool m_bWriteDirectlyToFile;
nullable<OOX::Spreadsheet::CCols> m_oCols;
nullable<OOX::Spreadsheet::CDimension> m_oDimension;

View File

@ -423,26 +423,31 @@ void OOX::Spreadsheet::CXlsx::PrepareWorksheet(CWorksheet* pWorksheet)
}
else if(SimpleTypes::Spreadsheet::celltypeStr == pCell->m_oType->GetValue() || SimpleTypes::Spreadsheet::celltypeError == pCell->m_oType->GetValue())
{
if(!m_pSharedStrings) CreateSharedStrings();
std::wstring sValue;
if(pCell->m_oValue.IsInit())
sValue = pCell->m_oValue->ToString();
//добавляем в SharedStrings
CSi* pSi = new CSi();
CText* pText = new CText();
pText->m_sText = sValue;
pSi->m_arrItems.push_back(pText);
int nIndex = m_pSharedStrings->AddSi(pSi);
//меняем значение ячейки
pCell->m_oValue.Init();
pCell->m_oValue->m_sText = std::to_wstring(nIndex);
//меняем тип ячейки
if(SimpleTypes::Spreadsheet::celltypeStr == pCell->m_oType->GetValue())
if (pCell->m_oValue.IsInit())
{
pCell->m_oType.Init();
pCell->m_oType->SetValue(SimpleTypes::Spreadsheet::celltypeSharedString);
if(!m_pSharedStrings) CreateSharedStrings();
//добавляем в SharedStrings
CSi* pSi = new CSi();
CText* pText = new CText();
pText->m_sText = pCell->m_oValue->ToString();
pSi->m_arrItems.push_back(pText);
int nIndex = m_pSharedStrings->AddSi(pSi);
//меняем значение ячейки
pCell->m_oValue.Init();
pCell->m_oValue->m_sText = std::to_wstring(nIndex);
//меняем тип ячейки
if(SimpleTypes::Spreadsheet::celltypeStr == pCell->m_oType->GetValue())
{
pCell->m_oType.Init();
pCell->m_oType->SetValue(SimpleTypes::Spreadsheet::celltypeSharedString);
}
}
else
{
pCell->m_oValue.reset();
pCell->m_oType.reset();
}
}
else if(SimpleTypes::Spreadsheet::celltypeBool == pCell->m_oType->GetValue())

View File

@ -1 +1 @@
2.4.539.0
2.4.541.0

View File

@ -2,9 +2,6 @@
* TIFF file IO, using CxFile.
*/
#if defined(_WIN32) || defined (_WIN64)
#include <windows.h>
#endif
#include <stdio.h>
#include "ximage.h"
@ -112,7 +109,7 @@ extern char* realloc();
#include <malloc.h>
#endif
#ifndef UNICODE
#ifdef UNICODE
#define DbgPrint wvsprintf
#define DbgPrint2 wsprintf
#define DbgMsgBox MessageBox

View File

@ -41,10 +41,6 @@
#if !defined(__xfile_h)
#define __xfile_h
#if defined (WIN32) || defined (_WIN32_WCE)
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>

View File

@ -75,6 +75,16 @@
#if defined(WIN32) || defined(_WIN32_WCE)
#ifdef CXIMAGE_ATTACK_NO_UNICODE
#ifdef _UNICODE
#undef _UNICODE
#endif
#ifdef UNICODE
#undef UNICODE
#endif
#endif
#include <windows.h>
#include <tchar.h>
#endif

View File

@ -17,6 +17,596 @@
#include <assert.h>
#endif
#define USE_RGB_PALETTE
#ifdef USE_RGB_PALETTE
#include <vector>
namespace NSGeneratePalette
{
class CImage32bit_BGRA
{
public:
unsigned char* m_pPixels;
int m_lWidth;
int m_lHeight;
};
class CImage8bit
{
public:
unsigned char* m_pPixels;
int m_lWidth;
int m_lHeight;
public:
CImage8bit()
{
m_pPixels = NULL;
m_lWidth = 0;
m_lHeight = 0;
}
~CImage8bit()
{
Destroy(TRUE);
}
void Destroy(BOOL bAttack = TRUE)
{
if (bAttack)
{
if (NULL != m_pPixels)
delete[] m_pPixels;
}
m_pPixels = NULL;
}
bool Create( int lWidth, int lHeight )
{
unsigned char* pPixels = new unsigned char[lWidth * lHeight];
if( !pPixels )
return false;
m_pPixels = pPixels;
m_lWidth = lWidth;
m_lHeight = lHeight;
return true;
}
static bool ImageCut ( CImage8bit* pSource, int X, int Y, int Width, int Height, CImage8bit** pImage )
{
if ( NULL != pSource )
{
int SrcWidth = pSource->m_lWidth;
int SrcHeigth = pSource->m_lHeight;
unsigned char* pSrc = pSource->m_pPixels;
if ( ( X + Width ) > SrcWidth || ( Y + Height ) > SrcHeigth || NULL == pSrc )
{
return NULL;
}
(*pImage) = new CImage8bit ();
if ( NULL != pImage )
{
(*pImage)->Create ( Width, Height );
unsigned char* pDst = (*pImage)->m_pPixels;
pSrc += X + Y * SrcWidth;
for ( int i = 0; i < Height; ++i )
{
::memcpy ( pDst, pSrc, Width );
pDst += Width;
pSrc += SrcWidth;
}
return true;
}
}
return false;
}
};
struct SColor
{
union
{
unsigned int Pixel;
unsigned char Color[4];
struct
{
unsigned char B;
unsigned char G;
unsigned char R;
unsigned char A;
};
};
unsigned char* RefByDstPixel;
SColor()
{
Pixel = 0;
RefByDstPixel = 0;
}
SColor( const SColor& other )
{
Pixel = other.Pixel;
RefByDstPixel = other.RefByDstPixel;
}
void SetBgraColor( unsigned char* pBgraColor, unsigned char* pDstPixel )
{
Pixel = *((unsigned int*)pBgraColor);
RefByDstPixel = pDstPixel;
A = (A & ~15) + 15; // квантуем альфу
}
};
struct SRect3D
{
unsigned char MaxWidth; // максимальная ширина
unsigned char MaxColor; // цвет максимальной ширины: 0 - blue, 1 - green, 2 - red, 3 - alpha
SRect3D()
{
Clear();
}
void Clear()
{
MaxWidth = 0;
MaxColor = 0;
}
};
class CPaletteCreator
{
public:
class CBounder
{
public:
SColor* m_arrPoints;
unsigned int m_nCountPoints;
SRect3D m_oRect;
public:
CBounder()
{
m_arrPoints = NULL;
m_nCountPoints = 0;
}
~CBounder()
{
// удалять ничего не нужно, так как нет динамических данных
}
void Init( SColor* points, unsigned int count )
{
m_arrPoints = points;
m_nCountPoints = count;
Normalize();
}
void Clear()
{
m_arrPoints = 0;
m_nCountPoints = 0;
m_oRect.Clear();
}
void Normalize()
{
if( 0 == m_nCountPoints )
{
m_oRect.Clear();
return;
}
if( 1 == m_nCountPoints )
{
m_oRect.MaxWidth = 0;
m_oRect.MaxColor = 0;
return;
}
// нормализуем по точкам, убивая лишние грани...
int nMinB, nMaxB;
int nMinG, nMaxG;
int nMinR, nMaxR;
int nMinA, nMaxA;
SColor* pPoint = m_arrPoints;
nMinB = nMaxB = pPoint->B;
nMinG = nMaxG = pPoint->G;
nMinR = nMaxR = pPoint->R;
nMinA = nMaxA = pPoint->A;
for( unsigned int i = 1; i < m_nCountPoints; ++i, ++pPoint )
{
int B = pPoint->B;
int G = pPoint->G;
int R = pPoint->R;
int A = pPoint->A;
if( B < nMinB ) nMinB = B;
if( B > nMaxB ) nMaxB = B;
if( G < nMinG ) nMinG = G;
if( G > nMaxG ) nMaxG = G;
if( R < nMinR ) nMinR = R;
if( R > nMaxR ) nMaxR = R;
if( A < nMinA ) nMinA = A;
if( A > nMaxA ) nMaxA = A;
}
nMaxB -= nMinB;
nMaxG -= nMinG;
nMaxR -= nMinR;
nMaxA -= nMinA;
int nMaxWidth = nMaxB;
int nMaxColor = 0;
if( nMaxWidth < nMaxG )
{
nMaxWidth = nMaxG;
nMaxColor = 1;
}
if( nMaxWidth < nMaxR )
{
nMaxWidth = nMaxR;
nMaxColor = 2;
}
if( nMaxWidth < nMaxA )
{
nMaxWidth = nMaxA;
nMaxColor = 3;
}
m_oRect.MaxWidth = nMaxWidth;
m_oRect.MaxColor = nMaxColor;
}
void GetHistogramm( unsigned int Table[256], int nColorType ) const
{
memset( Table, 0, 256 * sizeof(unsigned int) );
if( !m_nCountPoints )
return;
SColor* pPoint = m_arrPoints;
for( unsigned int i = 0; i < m_nCountPoints; ++i, ++pPoint )
{
Table[pPoint->Color[nColorType]] += 1;
}
}
bool CreateNew( CBounder& bound1, CBounder& bound2 ) const
{
// перераспределяем точки в массиве на две части.
if( 0 == m_oRect.MaxWidth )
{
return FALSE;
}
// сначала определяем самую длинную сторону...
int nColorType = m_oRect.MaxColor;
unsigned int hist[256];
GetHistogramm( hist, nColorType );
unsigned int nHalfCountPoints = m_nCountPoints / 2;
unsigned int nIndexH = 0;
unsigned int nCurCount = 0;
do
{
nCurCount += hist[nIndexH++];
} while( nCurCount < nHalfCountPoints );
--nIndexH;
if( nCurCount == m_nCountPoints )
nCurCount -= hist[nIndexH--];
SColor* pPoint1 = m_arrPoints;
SColor* pPoint2 = m_arrPoints + m_nCountPoints;
while( pPoint1 != pPoint2 )
{
if( pPoint1->Color[nColorType] <= nIndexH )
{
++pPoint1;
}
else
{
--pPoint2;
SColor tmp( *pPoint1 );
*pPoint1 = *pPoint2;
*pPoint2 = tmp;
}
}
bound1.m_arrPoints = m_arrPoints;
bound1.m_nCountPoints = (unsigned int)(((size_t)pPoint2 - (size_t)m_arrPoints) / sizeof(SColor));
bound2.m_arrPoints = m_arrPoints + bound1.m_nCountPoints;
bound2.m_nCountPoints = m_nCountPoints - bound1.m_nCountPoints;
bound1.Normalize();
bound2.Normalize();
return true;
}
unsigned int GetColor() const
{
union
{
unsigned int value;
struct
{
unsigned char B;
unsigned char G;
unsigned char R;
unsigned char A;
};
} color;
SColor* pPoint = m_arrPoints;
if( !pPoint )
return 0;
color.value = pPoint->Pixel;
if( 0 == m_oRect.MaxWidth )
{
return color.value;
}
double dB = pPoint->B;
double dG = pPoint->G;
double dR = pPoint->R;
double dA = pPoint->A;
for( unsigned int i = 1; i < m_nCountPoints; ++i, ++pPoint )
{
dB += pPoint->B;
dG += pPoint->G;
dR += pPoint->R;
dA += pPoint->A;
}
color.B = (unsigned char)(dB / m_nCountPoints + 0.5);
color.G = (unsigned char)(dG / m_nCountPoints + 0.5);
color.R = (unsigned char)(dR / m_nCountPoints + 0.5);
color.A = (unsigned char)(dA / m_nCountPoints + 0.5);
return color.value;
}
void ApplyPaletteColor( unsigned char color ) const
{
SColor* pPoint = m_arrPoints;
for( unsigned int i = 0; i < m_nCountPoints; ++i, ++pPoint )
{
pPoint->RefByDstPixel[0] = color;
}
}
};
public:
CPaletteCreator()
{
}
~CPaletteCreator()
{
}
void Destroy()
{
}
std::vector<CImage8bit*> Convert(std::vector<CImage32bit_BGRA>& arImages, unsigned int** pDstPalette)
{
std::vector<CImage8bit*> arDst;
int nCountImages = (int)arImages.size();
if( !nCountImages || pDstPalette == NULL )
return arDst;
// создаём палитру
unsigned int* pPalette = new unsigned int[256];
*pDstPalette = pPalette;
if( !pPalette )
return arDst;
memset( pPalette, 0, 256 * sizeof(unsigned int) );
unsigned int lCountPoints = 0;
for( int nImage = 0; nImage < nCountImages; ++nImage )
{
int lWidth = arImages[nImage].m_lWidth;
int lHeight = arImages[nImage].m_lHeight;
CImage8bit* pImage8 = new CImage8bit();
if( pImage8 )
{
if( pImage8->Create( lWidth, lHeight ) )
{
lCountPoints += lWidth * lHeight;
::memset( pImage8->m_pPixels, 0, lWidth * lHeight );
}
else
{
delete pImage8;
pImage8 = NULL;
}
}
arDst.push_back( pImage8 );
}
SColor* arrPoints = (SColor*)(new unsigned char[lCountPoints * sizeof(SColor)]);
if( !arrPoints )
return arDst;
SColor* pPoint = arrPoints;
for( int nImage = 0; nImage < nCountImages; ++nImage )
{
CImage8bit* pImage8 = arDst[nImage];
if( !pImage8 )
continue;
unsigned int lCountPixels = pImage8->m_lWidth * pImage8->m_lHeight;
unsigned char* pBgraPixel = arImages[nImage].m_pPixels;
for( unsigned int i = 0; i < lCountPixels; ++i, pBgraPixel += 4 )
{
if( pBgraPixel[3] > 4 )
{
pPoint->SetBgraColor( pBgraPixel, pImage8->m_pPixels + i );
++pPoint;
}
}
}
if( pPoint == arrPoints )
{
delete [] (unsigned char*)arrPoints;
return arDst;
}
size_t nActivePoints = (size_t(pPoint) - size_t(arrPoints)) / sizeof(SColor);
CBounder bounds[255];
CBounder oNew1;
CBounder oNew2;
bounds[0].Init( arrPoints, nActivePoints );
int nCountBounds = 1;
while( nCountBounds < 255 )
{
int nBoundIndex = FindBoundIndexWithMaxWidth( bounds, nCountBounds );
if( nBoundIndex < 0 )
break;
bounds[nBoundIndex].CreateNew( oNew1, oNew2 );
bounds[nBoundIndex] = oNew1;
bounds[nCountBounds] = oNew2;
++nCountBounds;
}
for( int i = 0; i < nCountBounds; i++ )
{
pPalette[i + 1] = bounds[i].GetColor();
bounds[i].ApplyPaletteColor( i + 1 );
}
delete [] (unsigned char*)arrPoints;
//for( int nImage = 0; nImage < nCountImages; ++nImage )
//{
// CImage8bit* pImage8 = arDst[nImage];
// if( !pImage8 )
// continue;
// if( !pImage8->m_pPixels )
// continue;
// unsigned int nSize = pImage8->m_lWidth * pImage8->m_lHeight;
// unsigned int* buffer = new unsigned int[nSize];
// if( !buffer )
// continue;
// for( unsigned int i = 0; i < nSize; i++ )
// {
// buffer[i] = pPalette[pImage8->m_pPixels[i]];
// }
// delete [] buffer;
//}
return arDst;
}
static int FindBoundIndexWithMaxWidth( const CBounder* pBounds, int nCountBounds )
{
int nMaxWidth = 0;
int nMaxIndex = -1;
for( int i = 0; i < nCountBounds; ++i, ++pBounds )
{
int width = pBounds->m_oRect.MaxWidth;
if( width > nMaxWidth )
{
nMaxWidth = width;
nMaxIndex = i;
}
}
return nMaxIndex;
}
unsigned char* CreateFrom8bit(CImage8bit* pImage, unsigned int* pPalette)
{
unsigned char* pData = new unsigned char[4 * pImage->m_lWidth * pImage->m_lHeight];
unsigned char* pDataMem = pData;
long lCount = pImage->m_lWidth * pImage->m_lHeight;
for (long nIndex = 0; nIndex < lCount; ++nIndex)
{
unsigned int color = pPalette[pImage->m_pPixels[nIndex]]; // ARGB
pDataMem[2] = (unsigned char)((color >> 16) & 0xFF);
pDataMem[1] = (unsigned char)((color >> 8) & 0xFF);
pDataMem[0] = (unsigned char)(color & 0xFF);
pDataMem[3] = (unsigned char)(color >> 24);
pDataMem += 4;
}
return pData;
}
};
}
#endif
////////////////////////////////////////////////////////////////////////////////
CxImageGIF::CxImageGIF(): CxImage(CXIMAGE_FORMAT_GIF)
{
@ -693,10 +1283,11 @@ bool CxImageGIF::EncodeRGB(CxFile *fp)
EncodeComment(fp);
#ifndef USE_RGB_PALETTE
uint32_t w,h;
w=h=0;
const int32_t cellw = 17;
const int32_t cellh = 15;
int32_t cellw = 17;
int32_t cellh = 15;
CxImageGIF tmp;
for (int32_t y=0;y<head.biHeight;y+=cellh){
for (int32_t x=0;x<head.biWidth;x+=cellw){
@ -724,6 +1315,71 @@ bool CxImageGIF::EncodeRGB(CxFile *fp)
tmp.EncodeBody(fp,true);
}
}
#else
CxImageGIF tmp;
tmp.Create(head.biWidth, head.biHeight, 8);
tmp.SetTransIndex(0);
NSGeneratePalette::CImage32bit_BGRA srcBgra;
srcBgra.m_lWidth = head.biWidth;
srcBgra.m_lHeight = head.biHeight;
srcBgra.m_pPixels = new unsigned char[4 * srcBgra.m_lWidth * srcBgra.m_lHeight];
unsigned char* pixelsTmp = srcBgra.m_pPixels;
for (uint32_t j=0;j<head.biHeight;j++)
{
for (uint32_t k=0;k<head.biWidth;k++)
{
RGBQUAD c = GetPixelColor(k,j);
*pixelsTmp++ = c.rgbBlue;
*pixelsTmp++ = c.rgbGreen;
*pixelsTmp++ = c.rgbRed;
*pixelsTmp++ = c.rgbReserved;
}
}
NSGeneratePalette::CPaletteCreator oCreator;
std::vector<NSGeneratePalette::CImage32bit_BGRA> imagesSrc;
imagesSrc.push_back(srcBgra);
unsigned int* pPalette = NULL;
std::vector<NSGeneratePalette::CImage8bit*> imagesDst = oCreator.Convert(imagesSrc, &pPalette);
NSGeneratePalette::CImage8bit* pImage8 = imagesDst[0];
for (int i = 0; i < 256; i++)
{
unsigned int c = pPalette[i];
RGBQUAD cRGB;
//cRGB.rgbRed = (c >> 8) & 0xFF;
//cRGB.rgbGreen = (c >> 16) & 0xFF;
//cRGB.rgbBlue = (c >> 24) & 0xFF;
//cRGB.rgbReserved = c & 0xFF;
cRGB.rgbRed = (c >> 16) & 0xFF;
cRGB.rgbGreen = (c >> 8) & 0xFF;
cRGB.rgbReserved = (c >> 24) & 0xFF;
cRGB.rgbBlue = c & 0xFF;
tmp.SetPaletteColor(i, cRGB);
}
unsigned char* pImage8Tmp = pImage8->m_pPixels;
for (uint32_t j=0;j<head.biHeight;j++)
{
for (uint32_t k=0;k<head.biWidth;k++)
{
tmp.SetPixelIndex(k, j, *pImage8Tmp++);
}
}
delete[] srcBgra.m_pPixels;
delete[] pPalette;
delete pImage8;
tmp.SetOffset(0,0);
tmp.EncodeExtension(fp);
tmp.EncodeBody(fp,true);
#endif
fp->PutC(';'); // Write the GIF file terminator

View File

@ -41,6 +41,32 @@
namespace NSFonts
{
void makeLower(std::wstring& name)
{
int nLen = (int)name.length();
wchar_t* pStr = (wchar_t*)name.c_str();
for (int i = 0; i < nLen; ++i)
{
if (pStr[i] >= 'A' && pStr[i] <= 'Z')
pStr[i] = pStr[i] + 'a' - 'A';
}
}
std::wstring prepareFont3000(std::wstring& name)
{
std::wstring sRet;
int nLen = (int)name.length();
wchar_t* pStr = (wchar_t*)name.c_str();
for (int i = 0; i < nLen; ++i)
{
if (pStr[i] == ' ' || pStr[i] == '-')
continue;
sRet.append(pStr + i, 1);
}
return sRet;
}
CFontInfo* FromBuffer(BYTE*& pBuffer, std::wstring strDir)
{
// name
@ -729,7 +755,7 @@ int CFontList::GetFaceNamePenalty(std::wstring sCandName, std::wstring sReqName,
else if ( std::wstring::npos != sReqName.find( sCandName ) || std::wstring::npos != sCandName.find( sReqName ) )
return 1000;
if (NULL != pArrayLikes)
if (NULL != pArrayLikes)
{
for (std::vector<std::wstring>::iterator iter = pArrayLikes->begin(); iter != pArrayLikes->end(); iter++)
{
@ -738,6 +764,19 @@ int CFontList::GetFaceNamePenalty(std::wstring sCandName, std::wstring sReqName,
}
}
/*
NSFonts::makeLower(sCandName);
NSFonts::makeLower(sReqName);
if ( sReqName == sCandName )
return 1500;
sCandName = NSFonts::prepareFont3000(sCandName);
sReqName = NSFonts::prepareFont3000(sReqName);
if ( sReqName == sCandName )
return 3000;
*/
return 10000;
}

View File

@ -0,0 +1,365 @@
LIB_GRAPHICS_PRI_PATH=$$PWD/../..
DEFINES += GRAPHICS_NO_USE_DYNAMIC_LIBRARY
DEFINES += \
_QT \
EXCLUDE_JPG_SUPPORT \
MNG_SUPPORT_DISPLAY \
MNG_SUPPORT_READ \
MNG_SUPPORT_WRITE \
MNG_ACCESS_CHUNKS \
MNG_STORE_CHUNKS\
MNG_ERROR_TELLTALE
core_linux {
DEFINES += \
HAVE_UNISTD_H
QMAKE_CXXFLAGS += -Wno-narrowing
}
core_mac {
DEFINES += \
HAVE_UNISTD_H
}
core_windows {
DEFINES += \
JAS_WIN_MSVC_BUILD \
NOMINMAX
#DEFINES -= UNICODE
#DEFINES -= _UNICODE
DEFINES += CXIMAGE_ATTACK_NO_UNICODE
LIBS += -lAdvapi32
LIBS += -lShell32
LIBS += -lUser32
}
INCLUDEPATH += \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/include \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/include \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg \
$$LIB_GRAPHICS_PRI_PATH/cximage/png \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib
HEADERS += \
$$PWD/../../raster/BgraFrame.h
SOURCES += \
$$PWD/../../raster/BgraFrame.cpp \
$$PWD/../../raster/ImageFileFormatChecker.cpp \
$$PWD/../../graphics/Image.cpp
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_arc.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_bezier_arc.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_arrowhead.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/ctrl/agg_cbox_ctrl.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_curves.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_gsv_text.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_image_filters.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_line_aa_basics.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_line_profile_aa.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_rounded_rect.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_sqrt_tables.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_trans_affine.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_bspline.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_bspline.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_contour.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_dash.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_markers_term.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_smooth_poly1.cpp \
$$LIB_GRAPHICS_PRI_PATH/agg-2.4/src/agg_vcgen_stroke.cpp
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_cm.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_debug.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_getopt.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_icc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_iccdata.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_image.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_init.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_malloc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_stream.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_seq.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_string.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_tvp.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/base/jas_version.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/bmp/bmp_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/bmp/bmp_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/bmp/bmp_enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jp2/jp2_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jp2/jp2_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jp2/jp2_enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_bs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_cs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_math.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_mct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_mqcod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_mqdec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_mqenc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_qmfb.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t1cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t1dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t1enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t2cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t2dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_t2enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_tagtree.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_tsfb.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpc/jpc_util.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpg/jpg_dummy.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/jpg/jpg_val.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/mif/mif_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pgx/pgx_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pgx/pgx_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pgx/pgx_enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pnm/pnm_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pnm/pnm_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/pnm/pnm_enc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/ras/ras_cod.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/ras/ras_dec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jasper/ras/ras_enc.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/jbig/jbig.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jbig/jbig_tab.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrtarga.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrrle.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrppm.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrjpgcom.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrgif.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/wrbmp.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/transupp.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdtarga.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdswitch.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdrle.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdppm.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdjpgcom.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdgif.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdcolmap.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/rdbmp.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jutils.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jpegtran.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jquant1.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jquant2.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdpostct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdsample.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdtrans.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jerror.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jfdctflt.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jfdctfst.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jfdctint.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jidctflt.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jidctfst.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jidctint.c \
#$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jmemansi.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jmemmgr.c \
#$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jmemname.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jmemnobs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jaricom.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcapimin.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcapistd.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcarith.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jccoefct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jccolor.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcdctmgr.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jchuff.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcinit.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcmainct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcmarker.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcmaster.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcomapi.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcparam.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcprepct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jcsample.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jctrans.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdapimin.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdapistd.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdarith.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdatadst.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdatasrc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdcoefct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdcolor.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jddctmgr.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdhuff.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdinput.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdmainct.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdmarker.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdmaster.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/jdmerge.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/cdjpeg.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/cjpeg.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/ckconfig.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/jpeg/djpeg.c
SOURCES += $$LIB_GRAPHICS_PRI_PATH/Qt_build/graphics/project/libpsd_pri.c
SOURCES += $$LIB_GRAPHICS_PRI_PATH/Qt_build/graphics/project/libpsd_pri2.c
SOURCES += $$LIB_GRAPHICS_PRI_PATH/Qt_build/graphics/project/libpsd_pri3.c
!build_cximage_zlib_disable {
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/crc32.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/adler32.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/deflate.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/inffast.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/inflate.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/inftrees.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/trees.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/zutil.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/uncompr.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/zlib/compress.c \
}
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_callback_xs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_chunk_descr.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_chunk_io.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_chunk_prc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_chunk_xs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_cms.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_display.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_dither.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_error.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_filter.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_hlapi.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_jpeg.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_object_prc.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_pixels.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_prop_xs.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_read.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_trace.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_write.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/mng/libmng_zlib.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/png/png.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngerror.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngget.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngmem.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngpread.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngread.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngrio.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngrtran.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngrutil.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngset.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngtrans.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngwio.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngwrite.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngwtran.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/png/pngwutil.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/raw/libdcr.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_stream.cxx \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_aux.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_close.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_codec.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_color.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_compress.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_dir.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_dirinfo.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_dirread.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_dirwrite.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_dumpmode.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_error.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_extension.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_fax3.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_fax3sm.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_flush.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_getimage.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_jbig.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_jpeg.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_luv.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_lzw.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_next.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_ojpeg.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_open.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_packbits.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_pixarlog.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_predict.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_print.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_read.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_strip.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_swab.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_thunder.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_tile.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_unix.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_version.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_warning.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_write.c \
$$LIB_GRAPHICS_PRI_PATH/cximage/tiff/tif_zip.c \
\
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/tif_xfile.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximabmp.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximadsp.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaenc.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaexif.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximage.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximagif.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximahist.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaico.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximainfo.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaint.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximajas.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximajbg.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximajpg.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximalpha.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximalyr.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximamng.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximapal.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximapcx.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximapng.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximapsd.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaraw.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximasel.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximaska.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximatga.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximath.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximatif.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximatran.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximawbmp.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximawmf.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/ximawnd.cpp \
$$LIB_GRAPHICS_PRI_PATH/cximage/CxImage/xmemfile.cpp
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/Encoder/jbig2arith.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/Encoder/jbig2enc.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/Encoder/jbig2sym.cpp
SOURCES += $$LIB_GRAPHICS_PRI_PATH/Qt_build/graphics/project/lepton_lib_all.cpp
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/boxbasic.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/ccbord.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/dwacomb.2.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/dwacomblow.2.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/fhmtgen.1.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/fliphmtgen.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/fmorphauto.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/fmorphgen.1.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/numabasic.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/pix5.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/pixabasic.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/pixafunc1.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/pixcomp.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/ptabasic.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/ptra.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/ropiplow.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/roplow.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/rotateam.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/rotateshear.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/sarray.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/sel1.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/sel2.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/LeptonLib/skew.cpp
SOURCES += \
$$LIB_GRAPHICS_PRI_PATH/raster/Jp2/J2kFile.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/Jp2/Reader.cpp \
$$LIB_GRAPHICS_PRI_PATH/raster/JBig2/source/JBig2File.cpp

View File

@ -15,22 +15,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPTFormatLib", "..\..\..\AS
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X2tTest", "X2tTest.vcproj", "{355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}"
ProjectSection(ProjectDependencies) = postProject
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
{CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}
{7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
{AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345}
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
{50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429}
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
{7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15}
{41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1}
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E}
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
{BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E}
{41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
{AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345}
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}
{CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\..\..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}"

View File

@ -686,14 +686,14 @@
</File>
</Filter>
<Filter
Name="_lib"
Name="111"
>
<File
RelativePath="..\..\..\build\lib\win_32\DjVuFile.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\DjVuFile.lib"
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\doctrenderer.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\doctrenderer.lib"
>
</File>
<File
@ -701,15 +701,11 @@
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\HtmlFile.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\HtmlFile.lib"
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\HtmlRenderer.lib"
>
</File>
<File
RelativePath="..\..\..\build\bin\icu\win_32\icuuc.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\HtmlRenderer.lib"
>
</File>
<File
@ -717,15 +713,19 @@
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\PdfReader.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\PdfReader.lib"
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\PdfWriter.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\PdfWriter.lib"
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\XpsFile.lib"
RelativePath="..\..\..\build\lib\win_32\DEBUG\UnicodeConverter.lib"
>
</File>
<File
RelativePath="..\..\..\build\lib\win_32\DEBUG\XpsFile.lib"
>
</File>
</Filter>
@ -753,10 +753,6 @@
RelativePath="..\..\..\Common\OfficeFileFormatChecker2.cpp"
>
</File>
<File
RelativePath="..\..\..\UnicodeConverter\UnicodeConverter.cpp"
>
</File>
</Files>
<Globals>
</Globals>

View File

@ -2565,6 +2565,7 @@ namespace BinXlsxRW
if(c_oSerWorksheetsTypes::Worksheet == type)
{
m_pCurWorksheet = new OOX::Spreadsheet::CWorksheet(NULL);
smart_ptr<OOX::File> oCurWorksheetFile(m_pCurWorksheet);
m_pCurSheet = new OOX::Spreadsheet::CSheet();
m_pCurVmlDrawing = new OOX::CVmlDrawing(NULL, false);
@ -2575,9 +2576,8 @@ namespace BinXlsxRW
memset(aSeekPositions, 0, (2 * 256) * sizeof(_UINT32));
READ1_DEF(length, res, this->ReadWorksheetSeekPositions, aSeekPositions);
m_pCurWorksheet->m_sOutputFilename = m_pCurWorksheet->DefaultFileName().GetBasename();
m_pCurWorksheet->m_sOutputFilename += std::to_wstring(m_arWorksheets.size() + 1);
m_pCurWorksheet->m_sOutputFilename += m_pCurWorksheet->DefaultFileName().GetExtention();
m_pCurWorksheet->m_bWriteDirectlyToFile = true;
m_oWorkbook.AssignOutputFilename(oCurWorksheetFile);
std::wstring sWsPath = m_sDestinationDir + FILE_SEPARATOR_STR + _T("xl") + FILE_SEPARATOR_STR + m_pCurWorksheet->DefaultDirectory().GetPath();
NSDirectory::CreateDirectories(sWsPath);
sWsPath += FILE_SEPARATOR_STR + m_pCurWorksheet->m_sOutputFilename;
@ -2589,8 +2589,7 @@ namespace BinXlsxRW
if(m_pCurSheet->m_oName.IsInit())
{
smart_ptr<OOX::File> oCurFile(m_pCurWorksheet);
const OOX::RId oRId = m_oWorkbook.Add(oCurFile);
const OOX::RId oRId = m_oWorkbook.Add(oCurWorksheetFile);
m_pCurSheet->m_oRid.Init();
m_pCurSheet->m_oRid->SetValue(oRId.get());