Compare commits

..

23 Commits

Author SHA1 Message Date
449bab1a70 . 2017-06-30 19:42:25 +03:00
c1e5e33691 min command length 2017-06-30 17:30:03 +03:00
8c7515443a Merge remote-tracking branch 'origin/release/v4.4.1' into develop 2017-06-30 16:56:51 +03:00
1d16f4ab8f XlsFormat - convert piot cache 2017-06-30 16:55:37 +03:00
122a5cd056 x2t - return error code by PptConvert 2017-06-30 16:21:07 +03:00
b0994759e7 memset before readlink. 2017-06-30 15:02:21 +03:00
118f1c5736 . 2017-06-30 12:51:08 +03:00
b65703ceb1 . 2017-06-30 12:22:45 +03:00
c08c960c96 . 2017-06-30 12:22:37 +03:00
02ece25af8 . 2017-06-30 10:15:08 +03:00
435a27f6d9 Merge remote-tracking branch 'origin/release/v4.4.1' into develop 2017-06-29 19:26:31 +03:00
85ea22048a fix bug #35120 2017-06-29 19:25:23 +03:00
87ae0b38fa XlsFormat - read pivot cache stream 2017-06-29 19:05:45 +03:00
b93d463469 OdfFormat - fix roundRect 2017-06-29 12:43:05 +03:00
0aa59b0d92 debug build 2017-06-28 19:05:05 +03:00
3dbcce8c36 . 2017-06-28 18:39:37 +03:00
cc9459359f Merge remote-tracking branch 'origin/release/v4.4.1' into develop 2017-06-28 18:38:01 +03:00
465e70759b fix connectors in spreadsheets 2017-06-28 18:36:04 +03:00
9f6c833af5 Update Readme.md
ru -> en
2017-06-28 17:18:38 +03:00
f4d16b0d61 Merge remote-tracking branch 'origin/release/v4.4.1' into develop 2017-06-28 16:02:58 +03:00
398dc42bb2 . 2017-06-28 16:01:58 +03:00
69b4a09475 builder bugs 2017-06-28 14:23:32 +03:00
98285c225d Merge branch 'release/v4.4.1' of https://github.com/ONLYOFFICE/core into release/v4.4.1 2017-06-28 13:16:56 +03:00
112 changed files with 4511 additions and 335 deletions

View File

@ -107,6 +107,7 @@ static const std::wstring _ooxShapeType[]=
L"path",
L"custGeom",//uses sub-sub type,
L"polygon",
L"roundRect",
};
@ -355,7 +356,7 @@ void _oox_drawing::serialize_shape(std::wostream & strm)
shapeGeomPreset = L"rect";
}
}
else if (sub_type < 9 && sub_type >= 0)
else if (sub_type < 10 && sub_type >= 0)
{
shapeGeomPreset = _ooxShapeType[sub_type]; //odf -> oox
}

View File

@ -687,6 +687,7 @@ void common_shape_draw_attlist::add_attributes( const xml::attributes_wc_ptr & A
CP_APPLY_ATTR(L"draw:transform", draw_transform_);
CP_APPLY_ATTR(L"draw:name", draw_name_);
CP_APPLY_ATTR(L"draw:text-style-name", draw_text_style_name_);
CP_APPLY_ATTR(L"drawooo:display", drawooo_display_);
}
void common_shape_draw_attlist::apply_from(const common_shape_draw_attlist & Other)
{
@ -698,6 +699,7 @@ void common_shape_draw_attlist::apply_from(const common_shape_draw_attlist & Oth
_CP_APPLY_PROP2(draw_transform_);
_CP_APPLY_PROP2(draw_name_);
_CP_APPLY_PROP2(draw_text_style_name_);
_CP_APPLY_PROP2(drawooo_display_);
}
void common_shape_draw_attlist::serialize(CP_ATTR_NODE)
@ -710,6 +712,7 @@ void common_shape_draw_attlist::serialize(CP_ATTR_NODE)
CP_XML_ATTR_OPT(L"draw:transform", draw_transform_);
CP_XML_ATTR_OPT(L"draw:name", draw_name_);
CP_XML_ATTR_OPT(L"draw:text-style-name", draw_text_style_name_);
CP_XML_ATTR_OPT(L"drawooo:display", drawooo_display_);
}
void common_draw_shape_with_text_and_styles_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{

View File

@ -501,6 +501,7 @@ public:
_CP_OPT(std::wstring) draw_layer_;
_CP_OPT(std::wstring) draw_transform_;
_CP_OPT(int) draw_z_index_;
_CP_OPT(std::wstring) drawooo_display_;
};
class common_draw_position_attlist

View File

@ -235,7 +235,7 @@ void Compute_HatchFill(draw_hatch * image_style,oox::oox_hatch_fill_ptr fill)
int style =0;
if (image_style->draw_style_)style = image_style->draw_style_->get_type();
int angle = (int)(0.5 + *image_style->draw_rotation_/10.);
int angle = image_style->draw_rotation_ ? (int)(0.5 + *image_style->draw_rotation_/10.) : 0;
if (image_style->draw_color_)fill->color_ref = image_style->draw_color_->get_hex_value();

View File

@ -74,7 +74,7 @@ void draw_shape::add_child_element( xml::sax * Reader, const std::wstring & Ns,
}
void draw_shape::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:id", draw_id_);//или сюда draw_shape_attlist_???
CP_APPLY_ATTR(L"draw:id", draw_id_);//или сюда draw_shape_attlist_???
common_draw_attlists_.shape_with_text_and_styles_.add_attributes(Attributes);
common_draw_attlists_.position_.add_attributes(Attributes);
@ -87,6 +87,7 @@ void draw_shape::add_attributes( const xml::attributes_wc_ptr & Attributes )
void draw_rect_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:filter-name", draw_filter_name_);
CP_APPLY_ATTR(L"draw:corner-radius",draw_corner_radius_);
}
const wchar_t * draw_rect::ns = L"draw";
@ -98,6 +99,9 @@ void draw_rect::add_attributes( const xml::attributes_wc_ptr & Attributes )
draw_shape::add_attributes(Attributes);
sub_type_ = 2;
if (draw_rect_attlist_.draw_corner_radius_)
sub_type_ = 9;
}

View File

@ -101,7 +101,8 @@ public:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
public:
_CP_OPT(std::wstring) draw_filter_name_;
_CP_OPT(std::wstring) draw_filter_name_;
_CP_OPT(odf_types::length) draw_corner_radius_;
};

View File

@ -95,13 +95,13 @@ void draw_shape::common_docx_convert(oox::docx_conversion_context & Context)
Context.set_paragraph_state (false);
Context.set_run_state (false);
BOOST_FOREACH(const office_element_ptr & elm, content_)
for (size_t i = 0; i < content_.size(); i++)
{
ElementType type = elm->get_type();
ElementType type = content_[i]->get_type();
if (type != typeDrawCustomShape)
{
elm->docx_convert(Context);
content_[i]->docx_convert(Context);
}
}
@ -120,9 +120,16 @@ void draw_rect::docx_convert(oox::docx_conversion_context & Context)
return;
}
common_docx_convert(Context);
//...
draw_shape::docx_convert(Context);
if (draw_rect_attlist_.draw_corner_radius_)
{
draw_shape * shape = Context.get_drawing_context().get_current_shape();//owner
double val = draw_rect_attlist_.draw_corner_radius_->get_value() * 6500;
shape->additional_.push_back(_property(L"oox-draw-modifiers", std::to_wstring((int)val)));
}
draw_shape::docx_convert(Context);
}
void draw_ellipse::docx_convert(oox::docx_conversion_context & Context)
{
@ -157,6 +164,7 @@ void draw_line::docx_convert(oox::docx_conversion_context & Context)
reset_svg_attributes();
common_docx_convert(Context);
//...
draw_shape::docx_convert(Context);
}

View File

@ -626,6 +626,7 @@ public:
// header_footer_content_impl content_;
};
CP_REGISTER_OFFICE_ELEMENT2(style_footer_first);
/// style:header-left
class style_header_left : public office_element_impl<style_header_left>, public header_footer_impl

View File

@ -384,9 +384,11 @@ void odf_drawing_context::start_group()
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = impl_->current_drawing_state_.name_;
if (impl_->current_drawing_state_.z_order_ >= 0)
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_z_index_ = impl_->current_drawing_state_.z_order_;
if (!impl_->current_drawing_state_.name_.empty())
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = impl_->current_drawing_state_.name_;
//if (!impl_->current_drawing_state_.description_.empty())
// group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = impl_->current_drawing_state_.description_;
if (impl_->current_drawing_state_.hidden_)
group->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.drawooo_display_ = L"printer";
impl_->current_drawing_state_.name_ = L"";
impl_->current_drawing_state_.z_order_ = -1;
@ -519,10 +521,12 @@ void odf_drawing_context::end_drawing()
draw->common_draw_attlists_.shape_with_text_and_styles_.common_presentation_attlist_.presentation_class_ = impl_->current_drawing_state_.presentation_class_;
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_layer_ = draw_layer;
}
if (impl_->current_drawing_state_.name_.length() > 0)
if (!impl_->current_drawing_state_.name_.empty())
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_name_ = impl_->current_drawing_state_.name_;
if (impl_->current_drawing_state_.z_order_ >= 0)
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.draw_z_index_ = impl_->current_drawing_state_.z_order_;
if (impl_->current_drawing_state_.hidden_)
draw->common_draw_attlists_.shape_with_text_and_styles_.common_shape_draw_attlist_.drawooo_display_ = L"printer";
std::wstring strTransform;
@ -2125,6 +2129,13 @@ void odf_drawing_context::set_textarea_wrap(bool Val)
impl_->current_graphic_properties->fo_wrap_option_ = wrap_option(wrap_option::NoWrap);
}
void odf_drawing_context::set_textarea_fit_to_size(bool val)
{
if (!impl_->current_graphic_properties)return;
impl_->current_graphic_properties->draw_fit_to_size_ = val;
}
void odf_drawing_context::set_textarea_font(std::wstring & latin, std::wstring & cs, std::wstring & ea)
{

View File

@ -228,6 +228,7 @@ public:
void set_textarea_wrap (bool val);
void set_textarea_fontcolor (std::wstring hexColor);
void set_textarea_font (std::wstring & latin, std::wstring & cs, std::wstring & ea);
void set_textarea_fit_to_size (bool val);
void set_placeholder_id (std::wstring val);
void set_placeholder_type (int val);

View File

@ -283,6 +283,8 @@ void odt_conversion_context::end_drawings()
}
void odt_conversion_context::start_paragraph(bool styled)
{
if (current_field_.enabled && !current_field_.result) return; //Стандартное_составное_письмо.docx
if (is_paragraph_in_current_section_ && !styled)
{
styles_context()->create_style(L"", odf_types::style_family::Paragraph, true, false, -1);
@ -374,8 +376,9 @@ void odt_conversion_context::set_field_instr(std::wstring instr)
{
if (current_field_.enabled == false) return;
current_field_.type = 0; //users field
int res1 = instr.find(L"HYPERLINK");
if (res1 >=0) //это не поле - это hyperlink
if (res1 >= 0) //это не поле - это hyperlink
{
current_field_.type = 1;
@ -390,24 +393,24 @@ void odt_conversion_context::set_field_instr(std::wstring instr)
}
}
res1 = instr.find(L"NUMPAGES");
if (res1 >=0 && current_field_.type == 0)
if (res1 >= 0 && current_field_.type == 0)
{
current_field_.type = 3;
}
res1 = instr.find(L"PAGEREF");
if (res1 >=0 && current_field_.type == 0 ) //это не поле - это bookmark
if (res1 >= 0 && current_field_.type == 0 ) //это не поле - это bookmark
{
current_field_.type = 5;
if (instr.length() > 9)
current_field_.value = instr.substr(9, instr.length()-5);
}
res1 = instr.find(L"PAGE");
if (res1 >=0 && current_field_.type == 0)
if (res1 >= 0 && current_field_.type == 0)
{
current_field_.type = 2;
}
res1 = instr.find(L"TIME");
if (res1 >=0 && current_field_.type == 0)
if (res1 >= 0 && current_field_.type == 0)
{
current_field_.type = 4;
}
@ -418,20 +421,34 @@ void odt_conversion_context::set_field_instr(std::wstring instr)
}
//////////////////////////////////////////
res1 = instr.find(L"@");
if (res1 >=0)
if (res1 >= 0)
{
current_field_.format = instr.substr(res1+1, instr.length());
current_field_.format = instr.substr(res1 + 1, instr.length());
}
if (current_field_.type == 0)
{
res1 = instr.find(L" ");
if (res1 >= 0)
{
current_field_.name = instr.substr(0, res1);
}
}
}
void odt_conversion_context::start_field(bool in_span)
{
current_field_.enabled = true;
current_field_.result = false;
current_field_.in_span = in_span;
current_field_.value = L"";
current_field_.type = 0;
current_field_.value.clear();
current_field_.name.clear();
current_field_.type = 0; // users field
}
void odt_conversion_context::separate_field()
{
current_field_.result = true;
}
void odt_conversion_context::set_master_page_name(std::wstring master_name)
{
if (current_root_elements_.size() < 1)// return; - эффект_штурмовика.docx - 1 страница !! (и ваще -
@ -566,13 +583,17 @@ void odt_conversion_context::end_field()
}
current_field_.value = L"";
current_field_.format = L"";
current_field_.name = L"";
current_field_.enabled = false;
current_field_.started = false;
current_field_.in_span = false;
current_field_.result = false;
current_field_.enabled = false;
current_field_.started = false;
current_field_.in_span = false;
}
void odt_conversion_context::end_paragraph()
{
if (current_field_.enabled && !current_field_.result) return; //Стандартное_составное_письмо.docx
text_context()->end_paragraph();
flush_section();

View File

@ -95,6 +95,7 @@ public:
void start_field (bool in_span);
void end_field ();
void separate_field ();
void set_field_instr (std::wstring instr);
void start_run (bool styled = false);
@ -182,12 +183,14 @@ private:
struct _field_state
{
std::wstring name;
bool enabled;
int type;
std::wstring value;
std::wstring format;
bool started;
bool in_span;
bool result;
}current_field_;
struct _text_changes_state

View File

@ -1137,12 +1137,24 @@ void OoxConverter::convert(PPTX::Logic::BodyPr *oox_bodyPr)
//+ style section
//+element text:section в котором параграфы
}
if (oox_bodyPr->Fit.type == PPTX::Logic::TextFit::FitSpAuto)
{
//изменяемы размеры
odf_context()->drawing_context()->set_text_box_min_size(true);//уже выставленые в min
switch(oox_bodyPr->Fit.type)
{
case PPTX::Logic::TextFit::FitSpAuto:
{//изменяемы размеры
odf_context()->drawing_context()->set_text_box_min_size(true);//уже выставленые в min
}break;
case PPTX::Logic::TextFit::FitNo:
{
}break;
case PPTX::Logic::TextFit::FitNormAuto:
{
}break;
default:
{
}
}
if (oox_bodyPr->fromWordArt.IsInit() && oox_bodyPr->prstTxWarp.IsInit())
{
for (size_t i = 0; i < oox_bodyPr->prstTxWarp->avLst.size(); i++)

View File

@ -593,6 +593,14 @@ void OoxConverter::convert(OOX::Vml::CRoundRect *vml_roundrect)
OOX::Vml::CVmlCommonElements *vml_common = dynamic_cast<OOX::Vml::CVmlCommonElements *>(vml_roundrect);
convert(vml_common);
double arc_size = vml_roundrect->m_oArcSize.GetValue();
if (arc_size > 0)
{
odf_types::length corner = odf_types::length(arc_size * 20, odf_types::length::cm);
odf_context()->drawing_context()->set_corner_radius(corner);
}
}
void OoxConverter::convert(OOX::Vml::CCurve *vml_curve)

View File

@ -751,7 +751,7 @@ void DocxConverter::convert(OOX::Logic::CSym *oox_sym)
odt_context->text_context()->set_symbol_text(oox_sym->m_oChar->GetValue());
//odt_context->text_context()->add_text_content(std::wstring(L"/") + oox_sym->m_oChar->ToString());
}
void DocxConverter::convert(OOX::Logic::CFldChar *oox_fld)
void DocxConverter::convert(OOX::Logic::CFldChar *oox_fld)
{
if (oox_fld == NULL) return;
@ -762,7 +762,7 @@ void DocxConverter::convert(OOX::Logic::CFldChar *oox_fld)
{
if (oox_fld->m_oFldCharType->GetValue() == SimpleTypes::fldchartypeBegin) odt_context->start_field(false);
if (oox_fld->m_oFldCharType->GetValue() == SimpleTypes::fldchartypeEnd) odt_context->end_field();
if (oox_fld->m_oFldCharType->GetValue() == SimpleTypes::fldchartypeSeparate){}
if (oox_fld->m_oFldCharType->GetValue() == SimpleTypes::fldchartypeSeparate)odt_context->separate_field();
}
}

View File

@ -1436,6 +1436,8 @@ void PptxConverter::convert_layout(PPTX::Logic::CSld *oox_slide)
if (pShape.IsInit() && pShape->nvSpPr.nvPr.ph.is_init())
{
pShape->FillLevelUp();
int type = 0;
if (pShape->nvSpPr.nvPr.ph->type.IsInit())
type = pShape->nvSpPr.nvPr.ph->type->GetBYTECode();

View File

@ -83,7 +83,7 @@ namespace PPTX
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
std::wstring strName = oReader.GetName();
if (strName == L"a:cxnSpLocks")
{
@ -155,7 +155,6 @@ namespace PPTX
}
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr1;

View File

@ -83,8 +83,6 @@ namespace PPTX
m_eType = OOX::et_a_latin;
else if ( _T("a:sym") == m_name )
m_eType = OOX::et_a_sym;
else
return;
ReadAttributes( oReader );

View File

@ -128,27 +128,32 @@ namespace PPTX
{
if (!pShape) return;
if(pShape->nvSpPr.nvPr.ph.is_init())
if (pShape->nvSpPr.nvPr.ph.is_init())
{
std::wstring idx = pShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
std::wstring type = pShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
std::wstring idx = pShape->nvSpPr.nvPr.ph->idx.get_value_or(L"");
std::wstring type = pShape->nvSpPr.nvPr.ph->type.get_value_or(L"body");
if(type == L"ctrTitle") type = L"title";
if (type == L"ctrTitle") type = L"title";
for(size_t i = 0; i < cSld.spTree.SpTreeElems.size(); ++i)
for (size_t i = 0; i < cSld.spTree.SpTreeElems.size(); ++i)
{
smart_ptr<Logic::Shape> pLayoutShape = cSld.spTree.SpTreeElems[i].GetElem().smart_dynamic_cast<Logic::Shape>();
if(pLayoutShape.IsInit())
if (pLayoutShape.IsInit())
{
if(pLayoutShape->nvSpPr.nvPr.ph.is_init())
if (pLayoutShape->nvSpPr.nvPr.ph.is_init())
{
std::wstring lIdx = pLayoutShape->nvSpPr.nvPr.ph->idx.get_value_or(_T("0"));
std::wstring lIdx = pLayoutShape->nvSpPr.nvPr.ph->idx.get_value_or(_T(""));
std::wstring lType = pLayoutShape->nvSpPr.nvPr.ph->type.get_value_or(_T("body"));
if(lType == _T("ctrTitle")) lType = _T("title");
if (lType == L"ctrTitle") lType = L"title";
if((type == lType) && (idx == lIdx))
if ((type == lType) && (idx == lIdx) && !idx.empty())
{
pShape->SetLevelUpElement(pLayoutShape.operator->());
return;
}
else if ((type == lType) && idx.empty() && lIdx.empty())
{
pShape->SetLevelUpElement(pLayoutShape.operator->());
return;

View File

@ -96,8 +96,6 @@ CompoundFile::CompoundFile(const std::wstring & file_path, const ReadWriteMode m
storage_ = NULL;
Open(file_path, mode);
}
// Opens "Workbook" stream and returns the only reference
CFStreamPtr CompoundFile::getWorkbookStream()
{
@ -114,61 +112,6 @@ CFStreamPtr CompoundFile::getWorkbookStream()
return stream;
}
// Creates "Workbook" stream and returns the only reference
CFStreamPtr CompoundFile::createWorkbookStream()
{
return createNamedStream("Workbook");
}
void CompoundFile::closeWorkbookStream()
{
return closeNamedStream("Workbook");
}
// Opens "SummaryInformation" stream and returns the only reference
CFStreamPtr CompoundFile::getSummaryInformationStream()
{
return getNamedStream("SummaryInformation");
}
// Creates "SummaryInformation" stream and returns the only reference
CFStreamPtr CompoundFile::createSummaryInformationStream()
{
return createNamedStream("SummaryInformation");
}
// Closes "SummaryInformation" stream
void CompoundFile::closeSummaryInformationStream()
{
return closeNamedStream("SummaryInformation");
}
// Opens "SummaryInformation" stream and returns the only reference
CFStreamPtr CompoundFile::getDocumentSummaryInformationStream()
{
return getNamedStream("DocumentSummaryInformation");
}
// Creates "SummaryInformation" stream and returns the only reference
CFStreamPtr CompoundFile::createDocumentSummaryInformationStream()
{
return createNamedStream("DocumentSummaryInformation");
}
// Closes "SummaryInformation" stream
void CompoundFile::closeDocumentSummaryInformationStream()
{
return closeNamedStream("DocumentSummaryInformation");
}
CFStreamPtr CompoundFile::getNamedStream(const std::string& name)
{
if(!streams[name])

View File

@ -58,29 +58,19 @@ public:
bool isError();
CFStreamPtr getWorkbookStream();
CFStreamPtr createWorkbookStream();
void closeWorkbookStream();
CFStreamPtr getSummaryInformationStream();
CFStreamPtr createSummaryInformationStream();
void closeSummaryInformationStream();
CFStreamPtr getDocumentSummaryInformationStream();
CFStreamPtr createDocumentSummaryInformationStream();
void closeDocumentSummaryInformationStream();
CFStreamPtr getWorkbookStream ();
CFStreamPtr getNamedStream (const std::string& name);
POLE::Storage *storage_;
private:
POLE::Stream* openStream (const std::string & stream_name); // Opens a stream in the storage (shall be called not more than once per stream)
POLE::Stream* createStream (const std::string & stream_name); // Creates a new stream in the storage
CFStreamPtr getNamedStream (const std::string& name);
CFStreamPtr createNamedStream (const std::string& name);
void closeNamedStream (const std::string& name);
private:
std::map<std::string, CFStreamPtr> streams;
POLE::Storage *storage_;
ReadWriteMode rwMode;
};

View File

@ -32,7 +32,7 @@
#pragma once
#include "BiffRecord.h"
#include <Logic/Biff_structures/LongRGB.h>
#include "../Biff_structures/LongRGB.h"
namespace XLS
{

View File

@ -59,12 +59,12 @@ public:
typedef enum
{
st_Workbook = 0x0005,
st_Globals = st_Workbook,
st_Dialog = 0x0010,
st_Worksheet = st_Dialog,
st_Chart = 0x0020,
st_Macro = 0x040
st_Workbook = 0x0005,
st_Globals = st_Workbook,
st_Dialog = 0x0010,
st_Worksheet = st_Dialog,
st_Chart = 0x0020,
st_Macro = 0x040
} SubstreamType;

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXDB.h"
namespace XLS
{
SXDB::SXDB()
{
}
SXDB::~SXDB()
{
}
BaseObjectPtr SXDB::clone()
{
return BaseObjectPtr(new SXDB(*this));
}
void SXDB::readFields(CFRecord& record)
{
unsigned short flags, unused2;
record >> crdbdb >> idstm >> flags >> unused2 >> cfdbdb >> cfdbTot >> crdbUsed >> vsType >> cchWho;
if (cchWho > 0 && cchWho < 0xffff)
{
rgb.setSize(cchWho);
record >> rgb;
}
fSaveData = GETBIT(flags, 0);
fInvalid = GETBIT(flags, 1);
fRefreshOnLoad = GETBIT(flags, 2);
fOptimizeCache = GETBIT(flags, 3);
fBackgroundQuery = GETBIT(flags, 4);
fEnableRefresh = GETBIT(flags, 5);
}
} // namespace XLS

View File

@ -0,0 +1,73 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
#include "../Biff_structures/BiffString.h"
namespace XLS
{
class SXDB: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXDB)
BASE_OBJECT_DEFINE_CLASS_NAME(SXDB)
public:
SXDB();
~SXDB();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXDB;
_INT32 crdbdb;
unsigned short idstm;
bool fSaveData;
bool fInvalid;
bool fRefreshOnLoad;
bool fOptimizeCache;
bool fBackgroundQuery;
bool fEnableRefresh;
short cfdbdb;
short cfdbTot;
unsigned short crdbUsed;
short vsType;
unsigned short cchWho;
XLUnicodeStringNoCch rgb;
};
} // namespace XLS

View File

@ -0,0 +1,60 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXDBB.h"
namespace XLS
{
SXDBB::SXDBB()
{
}
SXDBB::~SXDBB()
{
}
BaseObjectPtr SXDBB::clone()
{
return BaseObjectPtr(new SXDBB(*this));
}
void SXDBB::readFields(CFRecord& record)
{
int skip = record.getDataSize() - record.getRdPtr();
record.skipNunBytes(skip);
}
} // namespace XLS

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
namespace XLS
{
class SXDBB: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXDBB)
BASE_OBJECT_DEFINE_CLASS_NAME(SXDBB)
public:
SXDBB();
~SXDBB();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXDBB;
};
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXDBEx.h"
namespace XLS
{
SXDBEx::SXDBEx()
{
}
SXDBEx::~SXDBEx()
{
}
BaseObjectPtr SXDBEx::clone()
{
return BaseObjectPtr(new SXDBEx(*this));
}
void SXDBEx::readFields(CFRecord& record)
{
record >> numDate >> cSxFormula;
}
} // namespace XLS

View File

@ -0,0 +1,61 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
#include "../Biff_structures/Xnum.h"
namespace XLS
{
class SXDBEx: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXDBEx)
BASE_OBJECT_DEFINE_CLASS_NAME(SXDBEx)
public:
SXDBEx();
~SXDBEx();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXDBEx;
DateAsNum numDate;
_UINT32 cSxFormula; //count formulas
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXDtr.h"
namespace XLS
{
SXDtr::SXDtr()
{
}
SXDtr::~SXDtr()
{
}
BaseObjectPtr SXDtr::clone()
{
return BaseObjectPtr(new SXDtr(*this));
}
void SXDtr::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SXDtr: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXDtr)
BASE_OBJECT_DEFINE_CLASS_NAME(SXDtr)
public:
SXDtr();
~SXDtr();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXDtr;
};
} // namespace XLS

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXFDB.h"
namespace XLS
{
SXFDB::SXFDB()
{
}
SXFDB::~SXFDB()
{
}
BaseObjectPtr SXFDB::clone()
{
return BaseObjectPtr(new SXFDB(*this));
}
void SXFDB::readFields(CFRecord& record)
{
unsigned short flags;
record >> flags >> ifdbParent >> ifdbBase >> citmUnq >> csxoper >> cisxoper >> catm;
record >> stFieldName;
fAllAtoms = GETBIT(flags, 0);
fSomeUnhashed = GETBIT(flags, 1);
fUsed = GETBIT(flags, 2);
fHasParent = GETBIT(flags, 3);
fRangeGroup = GETBIT(flags, 4);
fNumField = GETBIT(flags, 5);
fTextEtcField = GETBIT(flags, 7);
fnumMinMaxValid = GETBIT(flags, 8);
fShortIitms = GETBIT(flags, 9);
fNonDates = GETBIT(flags, 10);
fDateInField = GETBIT(flags, 11);
fServerBased = GETBIT(flags, 13);
fCantGetUniqueItems = GETBIT(flags, 14);
fCalculatedField = GETBIT(flags, 15);
}
} // namespace XLS

View File

@ -0,0 +1,78 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
#include "../Biff_structures/BiffString.h"
namespace XLS
{
class SXFDB: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXFDB)
BASE_OBJECT_DEFINE_CLASS_NAME(SXFDB)
public:
SXFDB();
~SXFDB();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXFDB;
bool fAllAtoms;
bool fSomeUnhashed;
bool fUsed;
bool fHasParent;
bool fRangeGroup;
bool fNumField;
bool fTextEtcField;
bool fnumMinMaxValid;
bool fShortIitms;
bool fNonDates;
bool fDateInField;
bool fServerBased;
bool fCantGetUniqueItems;
bool fCalculatedField;
unsigned short ifdbParent;
unsigned short ifdbBase;
unsigned short citmUnq;
unsigned short csxoper;
unsigned short cisxoper;
unsigned short catm;
XLUnicodeString stFieldName;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXFDBType.h"
namespace XLS
{
SXFDBType::SXFDBType()
{
}
SXFDBType::~SXFDBType()
{
}
BaseObjectPtr SXFDBType::clone()
{
return BaseObjectPtr(new SXFDBType(*this));
}
void SXFDBType::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
namespace XLS
{
class SXFDBType: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXFDBType)
BASE_OBJECT_DEFINE_CLASS_NAME(SXFDBType)
public:
SXFDBType();
~SXFDBType();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXFDBType;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXFormula.h"
namespace XLS
{
SXFormula::SXFormula()
{
}
SXFormula::~SXFormula()
{
}
BaseObjectPtr SXFormula::clone()
{
return BaseObjectPtr(new SXFormula(*this));
}
void SXFormula::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
namespace XLS
{
class SXFormula: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXFormula)
BASE_OBJECT_DEFINE_CLASS_NAME(SXFormula)
public:
SXFormula();
~SXFormula();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXFormula;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXInt.h"
namespace XLS
{
SXInt::SXInt()
{
}
SXInt::~SXInt()
{
}
BaseObjectPtr SXInt::clone()
{
return BaseObjectPtr(new SXInt(*this));
}
void SXInt::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SXInt: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXInt)
BASE_OBJECT_DEFINE_CLASS_NAME(SXInt)
public:
SXInt();
~SXInt();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXInt;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXNum.h"
namespace XLS
{
SXNum::SXNum()
{
}
SXNum::~SXNum()
{
}
BaseObjectPtr SXNum::clone()
{
return BaseObjectPtr(new SXNum(*this));
}
void SXNum::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SXNum: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXNum)
BASE_OBJECT_DEFINE_CLASS_NAME(SXNum)
public:
SXNum();
~SXNum();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXNum;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXPair.h"
namespace XLS
{
SXPair::SXPair()
{
}
SXPair::~SXPair()
{
}
BaseObjectPtr SXPair::clone()
{
return BaseObjectPtr(new SXPair(*this));
}
void SXPair::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SXPair: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXPair)
BASE_OBJECT_DEFINE_CLASS_NAME(SXPair)
public:
SXPair();
~SXPair();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXPair;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXRng.h"
namespace XLS
{
SXRng::SXRng()
{
}
SXRng::~SXRng()
{
}
BaseObjectPtr SXRng::clone()
{
return BaseObjectPtr(new SXRng(*this));
}
void SXRng::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SXRng: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SXRng)
BASE_OBJECT_DEFINE_CLASS_NAME(SXRng)
public:
SXRng();
~SXRng();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSXRng;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxBool.h"
namespace XLS
{
SxBool::SxBool()
{
}
SxBool::~SxBool()
{
}
BaseObjectPtr SxBool::clone()
{
return BaseObjectPtr(new SxBool(*this));
}
void SxBool::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SxBool: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxBool)
BASE_OBJECT_DEFINE_CLASS_NAME(SxBool)
public:
SxBool();
~SxBool();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxBool;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxErr.h"
namespace XLS
{
SxErr::SxErr()
{
}
SxErr::~SxErr()
{
}
BaseObjectPtr SxErr::clone()
{
return BaseObjectPtr(new SxErr(*this));
}
void SxErr::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SxErr: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxErr)
BASE_OBJECT_DEFINE_CLASS_NAME(SxErr)
public:
SxErr();
~SxErr();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxErr;
};
} // namespace XLS

View File

@ -0,0 +1,109 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxFmla.h"
namespace XLS
{
SxFmla::SxFmla()
{
}
SxFmla::~SxFmla()
{
}
BaseObjectPtr SxFmla::clone()
{
return BaseObjectPtr(new SxFmla(*this));
}
void SxFmla::readFields(CFRecord& record)
{
//record >> csxformat >> cchErrorString >> cchNullString >> cchTag >> csxselect;
//_UINT32 flags;
//record >> crwPage >> ccolPage >> flags;
//fAcrossPageLay = GETBIT(flags, 0);
//cWrapPage = GETBITS(flags, 1, 9);
//fEnableWizard = GETBIT(flags, 16);
//fEnableDrilldown = GETBIT(flags, 17);
//fEnableFieldDialog = GETBIT(flags, 18);
//fPreserveFormatting = GETBIT(flags, 19);
//fMergeLabels = GETBIT(flags, 20);
//fDisplayErrorString = GETBIT(flags, 21);
//fDisplayNullString = GETBIT(flags, 22);
//fSubtotalHiddenPageItems = GETBIT(flags, 23);
//record >> cchPageFieldStyle >> cchTableStyle >> cchVacateStyle;
//if (cchErrorString > 0 && cchErrorString != 0xffff)
//{
// stError.setSize(cchErrorString);
// record >> stError;
//}
//if (cchNullString > 0 && cchNullString != 0xffff)
//{
// stDisplayNull.setSize(cchNullString);
// record >> stDisplayNull;
//}
//if (cchTag > 0 && cchTag != 0xffff)
//{
// stTag.setSize(cchTag);
// record >> stTag;
//}
//if (cchPageFieldStyle > 0 && cchPageFieldStyle != 0xffff)
//{
// stPageFieldStyle.setSize(cchPageFieldStyle);
// record >> stPageFieldStyle;
//}
//if (cchTableStyle > 0 && cchTableStyle != 0xffff)
//{
// stTableStyle.setSize(cchTableStyle);
// record >> cchTableStyle;
//}
//if (cchVacateStyle > 0 && cchVacateStyle != 0xffff)
//{
// stVacateStyle.setSize(cchVacateStyle);
// record >> cchVacateStyle;
//}
//int skip = record.getDataSize() - record.getRdPtr();
//record.skipNunBytes(skip);
}
} // namespace XLS

View File

@ -0,0 +1,88 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/BiffString.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SxFmla: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxFmla)
BASE_OBJECT_DEFINE_CLASS_NAME(SxFmla)
public:
SxFmla();
~SxFmla();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxFmla;
//unsigned short csxformat;
//unsigned short cchErrorString;
//unsigned short cchNullString;
//unsigned short cchTag;
//unsigned short csxselect;
//DRw crwPage;
//ColU ccolPage;
//bool fAcrossPageLay;
//unsigned char cWrapPage;
//bool fEnableWizard;
//bool fEnableDrilldown;
//bool fEnableFieldDialog;
//bool fPreserveFormatting;
//bool fMergeLabels;
//bool fDisplayErrorString;
//bool fDisplayNullString;
//bool fSubtotalHiddenPageItems;
//unsigned short cchPageFieldStyle;
//unsigned short cchTableStyle;
//unsigned short cchVacateStyle;
//XLUnicodeStringNoCch stError;
//XLUnicodeStringNoCch stDisplayNull;
//XLUnicodeStringNoCch stTag;
//XLUnicodeStringNoCch stPageFieldStyle;
//XLUnicodeStringNoCch stTableStyle;
//XLUnicodeStringNoCch stVacateStyle;
};
} // namespace XLS

View File

@ -0,0 +1,66 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxIsxoper.h"
namespace XLS
{
SxIsxoper::SxIsxoper()
{
}
SxIsxoper::~SxIsxoper()
{
}
BaseObjectPtr SxIsxoper::clone()
{
return BaseObjectPtr(new SxIsxoper(*this));
}
void SxIsxoper::readFields(CFRecord& record)
{
int size = (record.getDataSize() - record.getRdPtr()) / 2;
for (int i = 0; i < size; i++)
{
unsigned short val;
record >> val;
rgSxIsxoper.push_back(val);
}
}
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecordContinued.h"
namespace XLS
{
class SxIsxoper: public BiffRecordContinued
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxIsxoper)
BASE_OBJECT_DEFINE_CLASS_NAME(SxIsxoper)
public:
SxIsxoper();
~SxIsxoper();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxIsxoper;
std::vector<unsigned short> rgSxIsxoper;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxName.h"
namespace XLS
{
SxName::SxName()
{
}
SxName::~SxName()
{
}
BaseObjectPtr SxName::clone()
{
return BaseObjectPtr(new SxName(*this));
}
void SxName::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SxName: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxName)
BASE_OBJECT_DEFINE_CLASS_NAME(SxName)
public:
SxName();
~SxName();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxName;
};
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SxNil.h"
namespace XLS
{
SxNil::SxNil()
{
}
SxNil::~SxNil()
{
}
BaseObjectPtr SxNil::clone()
{
return BaseObjectPtr(new SxNil(*this));
}
void SxNil::readFields(CFRecord& record)
{
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "BiffRecord.h"
//#include "../Biff_structures/CellRangeRef.h"
namespace XLS
{
class SxNil: public BiffRecord
{
BIFF_RECORD_DEFINE_TYPE_INFO(SxNil)
BASE_OBJECT_DEFINE_CLASS_NAME(SxNil)
public:
SxNil();
~SxNil();
BaseObjectPtr clone();
void readFields(CFRecord& record);
static const ElementType type = typeSxNil;
};
} // namespace XLS

View File

@ -170,7 +170,7 @@ int TxO::serialize (std::wostream & _stream)
CP_XML_WRITER(_stream)
{
for (int i = 0 ; i < TxOruns.rgTxoRuns.size(); i++)
for (size_t i = 0 ; i < TxOruns.rgTxoRuns.size(); i++)
{
Run *run = dynamic_cast<Run*>(TxOruns.rgTxoRuns[i].get());
if (run == NULL) continue;

View File

@ -62,5 +62,7 @@ public:
} data;
};
typedef Xnum DateAsNum;
} // namespace XLS

View File

@ -0,0 +1,78 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "DBB.h"
#include "../Biff_records/SXDBB.h"
#include "SXOPER.h"
namespace XLS
{
DBB::DBB()
{
}
DBB::~DBB()
{
}
BaseObjectPtr DBB::clone()
{
return BaseObjectPtr(new DBB(*this));
}
// DBB = [SXDBB] *SXOPER
const bool DBB::loadContent(BinProcessor& proc)
{
if(proc.optional<SXDBB>())
{
m_SXDBB = elements_.back();
elements_.pop_back();
}
int count = proc.repeated<SXOPER>(0, 0);
while(count--)
{
m_arSXOPER.push_back(elements_.front()); elements_.pop_front();
}
if (!m_SXDBB && m_arSXOPER.empty())
return false;
return true;
}
} // namespace XLS

View File

@ -0,0 +1,57 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class DBB: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(DBB)
public:
DBB();
~DBB();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeDBB;
BaseObjectPtr m_SXDBB;
std::vector<BaseObjectPtr> m_arSXOPER;
};
} // namespace XLS

View File

@ -0,0 +1,144 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "FDB.h"
#include "SXFMLA_bu.h"
#include "SXOPER.h"
#include "SXRANGE.h"
#include "../Biff_records/SXFDB.h"
#include "../Biff_records/SXFDBType.h"
#include "../Biff_records/SxIsxoper.h"
namespace XLS
{
// (*GRPSXOPER [SXRANGE / *(SxIsxoper *Continue)])
class Parenthesis_FDB: public ABNFParenthesis
{
BASE_OBJECT_DEFINE_CLASS_NAME(Parenthesis_FDB)
public:
BaseObjectPtr clone()
{
return BaseObjectPtr(new Parenthesis_FDB(*this));
}
const bool loadContent(BinProcessor& proc)
{
int count = proc.repeated<SXOPER>(0, 0);
if (!proc.optional<SXRANGE>())
{
count = proc.repeated<SxIsxoper>(0, 0);
}
return true;
};
};
FDB::FDB()
{
}
FDB::~FDB()
{
}
BaseObjectPtr FDB::clone()
{
return BaseObjectPtr(new FDB(*this));
}
// FDB = SXFDB SXFDBType [SXFMLA / (*GRPSXOPER [SXRANGE / *(SxIsxoper *Continue)])] *SRCSXOPER
// SXRANGE = SXOPER
// SRCSXOPER = SXOPER
const bool FDB::loadContent(BinProcessor& proc)
{
if(!proc.mandatory<SXFDB>())
{
return false;
}
m_SXFDB = elements_.back();
elements_.pop_back();
if(proc.mandatory<SXFDBType>())
{
m_SXFDBType = elements_.back();
elements_.pop_back();
}
if(proc.optional<SXFMLA>())
{
m_SXFMLA = elements_.back();
elements_.pop_back();
}
else if(proc.optional<Parenthesis_FDB>())
{
int count = elements_.size();
while(count > 0)
{
SXOPER * oper = dynamic_cast<SXOPER*> (elements_.front().get());
if (oper)
{
m_arGRPSXOPER.push_back(elements_.front());
}
else
{
SXRANGE *range = dynamic_cast<SXRANGE*> (elements_.front().get());
if (range)
m_SXRANGE = elements_.front();
else
{
SxIsxoper * isOper = dynamic_cast<SxIsxoper*> (elements_.front().get());
if (isOper)
m_arSxIsxoper.push_back(elements_.front());
}
}
elements_.pop_front();
count--;
}
}
int count = proc.repeated<SXOPER>(0, 0);
while(count--)
{
m_arSRCSXOPER.push_back(elements_.front()); elements_.pop_front();
}
return true;
}
} // namespace XLS

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class FDB: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(FDB)
public:
FDB();
~FDB();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeFDB;
BaseObjectPtr m_SXFDB;
BaseObjectPtr m_SXFDBType;
BaseObjectPtr m_SXFMLA;
std::vector<BaseObjectPtr> m_arSRCSXOPER;
std::vector<BaseObjectPtr> m_arGRPSXOPER;
BaseObjectPtr m_SXRANGE;
std::vector<BaseObjectPtr> m_arSxIsxoper;
};
} // namespace XLS

View File

@ -0,0 +1,104 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "PIVOTCACHE.h"
#include "SXFORMULA_bu.h"
#include "FDB.h"
#include "DBB.h"
#include "../Biff_records/SXDB.h"
#include "../Biff_records/SXDBEx.h"
#include "../Biff_records/EOF.h"
namespace XLS
{
PIVOTCACHE::PIVOTCACHE()
{
}
PIVOTCACHE::~PIVOTCACHE()
{
}
BaseObjectPtr PIVOTCACHE::clone()
{
return BaseObjectPtr(new PIVOTCACHE(*this));
}
// PIVOTCACHE = SXDB SXDBEx *SXFORMULA *FDB *DBB EOF
const bool PIVOTCACHE::loadContent(BinProcessor& proc)
{
if(!proc.mandatory<SXDB>())
{
return false;
}
m_SXDB = elements_.back();
elements_.pop_back();
if(proc.mandatory<SXDBEx>())
{
m_SXDBEx = elements_.back();
elements_.pop_back();
}
int count = 0;
count = proc.repeated<SXFORMULA>(0, 0);
while(count--)
{
m_arSXFORMULA.push_back(elements_.front()); elements_.pop_front();
}
count = proc.repeated<FDB>(0, 0);
while(count--)
{
m_arFDB.push_back(elements_.front()); elements_.pop_front();
}
count = proc.repeated<DBB>(0, 0);
while(count--)
{
m_arDBB.push_back(elements_.front()); elements_.pop_front();
}
if (proc.optional<EOF_T>())
{
elements_.pop_back();
}
return true;
}
} // namespace XLS

View File

@ -0,0 +1,61 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class PIVOTCACHE: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTCACHE)
public:
PIVOTCACHE();
~PIVOTCACHE();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typePIVOTCACHE;
BaseObjectPtr m_SXDB;
BaseObjectPtr m_SXDBEx;
std::vector<BaseObjectPtr> m_arSXFORMULA;
std::vector<BaseObjectPtr> m_arFDB;
std::vector<BaseObjectPtr> m_arDBB;
};
} // namespace XLS

View File

@ -36,18 +36,14 @@
namespace XLS
{
PIVOTRULE::PIVOTRULE()
{
}
PIVOTRULE::~PIVOTRULE()
{
}
BaseObjectPtr PIVOTRULE::clone()
{
return BaseObjectPtr(new PIVOTRULE(*this));
@ -61,7 +57,14 @@ const bool PIVOTRULE::loadContent(BinProcessor& proc)
{
return false;
}
m_SxRule = elements_.back();
elements_.pop_back();
int count = proc.repeated<PRFILTER>(0, 0);
while(count--)
{
m_arPRFILTER.push_back(elements_.front()); elements_.pop_front();
}
return true;
}

View File

@ -36,8 +36,6 @@
namespace XLS
{
// Logical representation of PIVOTRULE union of records
class PIVOTRULE: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTRULE)
@ -49,7 +47,10 @@ public:
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typePIVOTRULE;
static const ElementType type = typePIVOTRULE;
BaseObjectPtr m_SxRule;
std::vector<BaseObjectPtr> m_arPRFILTER;
};
} // namespace XLS

View File

@ -36,8 +36,6 @@
namespace XLS
{
// Logical representation of PIVOTSELECT union of records
class PIVOTSELECT: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTSELECT)

View File

@ -0,0 +1,77 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXDB.h"
#include <Logic/Biff_unions/DREF.h>
#include <Logic/Biff_unions/SXTBL.h>
#include <Logic/Biff_unions/DBQUERY.h>
namespace XLS
{
SXDB::SXDB()
{
}
SXDB::~SXDB()
{
}
BaseObjectPtr SXDB::clone()
{
return BaseObjectPtr(new SXDB(*this));
}
// SXDB = DREF / SXTBL / DBQUERY
const bool SXDB::loadContent(BinProcessor& proc)
{
if(!proc.optional<DREF>())
{
if(!proc.optional<SXTBL>())
{
if(!proc.optional<DBQUERY>())
{
return false;
}
}
}
m_source = elements_.back();
elements_.pop_back();
return true;
}
} // namespace XLS

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class SXDB: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(SXDB)
public:
SXDB();
~SXDB();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeSXDB;
BaseObjectPtr m_source;
};
} // namespace XLS

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXFMLA_bu.h"
#include "../Biff_records/SxFmla.h"
#include "../Biff_records/SxName.h"
#include "../Biff_records/SXPair.h"
namespace XLS
{
SXFMLA::SXFMLA()
{
}
SXFMLA::~SXFMLA()
{
}
BaseObjectPtr SXFMLA::clone()
{
return BaseObjectPtr(new SXFMLA(*this));
}
// SXFMLA = SxFmla *(SxName *SXPair)
const bool SXFMLA::loadContent(BinProcessor& proc)
{
if(!proc.mandatory<SxFmla>())
{
return false;
}
m_SxFmla = elements_.back();
elements_.pop_back();
return true;
}
} // namespace XLS

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class SXFMLA: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(SXFMLA)
public:
SXFMLA();
~SXFMLA();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeSXFMLA;
BaseObjectPtr m_SxFmla;
};
} // namespace XLS

View File

@ -0,0 +1,79 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXFORMULA_bu.h"
#include "SXFMLA_bu.h"
#include "PIVOTRULE.h"
#include "../Biff_records/SXFormula.h"
namespace XLS
{
SXFORMULA::SXFORMULA()
{
}
SXFORMULA::~SXFORMULA()
{
}
BaseObjectPtr SXFORMULA::clone()
{
return BaseObjectPtr(new SXFORMULA(*this));
}
// SXFORMULA = SXFMLA PIVOTRULE SXFormula
const bool SXFORMULA::loadContent(BinProcessor& proc)
{
if(!proc.mandatory<SXFMLA>())
{
return false;
}
m_SXFMLA = elements_.back();
elements_.pop_back();
if(proc.mandatory<PIVOTRULE>())
{
m_PIVOTRULE = elements_.back();
elements_.pop_back();
}
if(proc.mandatory<SXFormula>())
{
m_SXFormula = elements_.back();
elements_.pop_back();
} return true;
}
} // namespace XLS

View File

@ -0,0 +1,58 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class SXFORMULA: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(SXFORMULA)
public:
SXFORMULA();
~SXFORMULA();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeSXFORMULA;
BaseObjectPtr m_SXFMLA;
BaseObjectPtr m_PIVOTRULE;
BaseObjectPtr m_SXFormula;
};
} // namespace XLS

View File

@ -0,0 +1,86 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXOPER.h"
#include "../Biff_records/SxNil.h"
#include "../Biff_records/SXNum.h"
#include "../Biff_records/SxBool.h"
#include "../Biff_records/SxErr.h"
#include "../Biff_records/SXString.h"
#include "../Biff_records/SXDtr.h"
namespace XLS
{
SXOPER::SXOPER()
{
}
SXOPER::~SXOPER()
{
}
BaseObjectPtr SXOPER::clone()
{
return BaseObjectPtr(new SXOPER(*this));
}
// SXOPER = SxNil / SXNum / SxBool / SxErr / SXString / SXDtr
const bool SXOPER::loadContent(BinProcessor& proc)
{
if(proc.optional<SxNil>())
{
}
else if(proc.optional<SXNum>())
{
}
else if(proc.optional<SxBool>())
{
}
else if(proc.optional<SxErr>())
{
}
else if(proc.optional<SXString>())
{
}
else if(proc.optional<SXDtr>())
{
}
else
return false;
return true;
}
} // namespace XLS

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class SXOPER: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(SXOPER)
public:
SXOPER();
~SXOPER();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeSXOPER;
BaseObjectPtr m_SXOPER;
};
} // namespace XLS

View File

@ -0,0 +1,101 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "SXRANGE.h"
#include "../Biff_records/SXRng.h"
#include "../Biff_records/SXNum.h"
#include "../Biff_records/SXDtr.h"
#include "../Biff_records/SXInt.h"
namespace XLS
{
// (3SXNum / (2SXDtr SXInt)
class Parenthesis_SXRANGE: public ABNFParenthesis
{
BASE_OBJECT_DEFINE_CLASS_NAME(Parenthesis_SXRANGE)
public:
BaseObjectPtr clone()
{
return BaseObjectPtr(new Parenthesis_SXRANGE(*this));
}
const bool loadContent(BinProcessor& proc)
{
int count = proc.repeated<SXNum>(0, 3);
if (count < 1)
{
count = proc.repeated<SXDtr>(0, 2);
if (count < 1)
return false;
if (proc.optional<SXInt>())
count++;
}
return (count == 3);
};
};
SXRANGE::SXRANGE()
{
}
SXRANGE::~SXRANGE()
{
}
BaseObjectPtr SXRANGE::clone()
{
return BaseObjectPtr(new SXRANGE(*this));
}
// SXRANGE = SXRng (3SXNum / (2SXDtr SXInt))
const bool SXRANGE::loadContent(BinProcessor& proc)
{
if(!proc.mandatory<SXRng>())
{
return false;
}
m_SXRng = elements_.back();
elements_.pop_back();
if(proc.optional<Parenthesis_SXRANGE>())
{
}
return true;
}
} // namespace XLS

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <Logic/CompositeObject.h>
namespace XLS
{
class SXRANGE: public CompositeObject
{
BASE_OBJECT_DEFINE_CLASS_NAME(SXRANGE)
public:
SXRANGE();
~SXRANGE();
BaseObjectPtr clone();
virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeSXRANGE;
BaseObjectPtr m_SXRng;
};
} // namespace XLS

View File

@ -294,7 +294,7 @@ void ChartSheetSubstream::recalc(CHARTFORMATS* charts)
int iCrt = -1;
for (int i = 0 ; i < charts->m_arSERIESFORMAT.size(); i++)
for (size_t i = 0 ; i < charts->m_arSERIESFORMAT.size(); i++)
{
SERIESFORMAT * series = dynamic_cast<SERIESFORMAT *>(charts->m_arSERIESFORMAT[i].get());
if (series == NULL) continue;
@ -641,8 +641,7 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
{
CP_XML_NODE(L"c:plotArea")
{
for (int i = 0; i < chart_formats->m_arAXISPARENT.size(); i++)
for (size_t i = 0; i < chart_formats->m_arAXISPARENT.size(); i++)
{
AXISPARENT* parent = dynamic_cast<AXISPARENT*> (chart_formats->m_arAXISPARENT[i].get());
ax_parent = dynamic_cast<AxisParent*> (parent->m_AxisParent.get());
@ -751,7 +750,7 @@ int ChartSheetSubstream::serialize_plot_area (std::wostream & _stream)
series->serialize_legend(stream_legend_entries, it->second[i]);
}
for (int i = 0 ; i < crt->m_arCrtLine.size(); i++)
for (size_t i = 0 ; i < crt->m_arCrtLine.size(); i++)
{
CrtLine* crtLine = dynamic_cast<CrtLine*>(crt->m_arCrtLine[i].get());
if (crtLine == NULL) continue;
@ -1068,7 +1067,7 @@ int ChartSheetSubstream::serialize_ser (std::wstring sNodeSer, std::wostream & _
SIIndex * series_cash = NULL;
int type_val = 0;
for (int i = 0; (series_data) && (i < series_data->m_arSIIndex.size()); i++)
for (size_t i = 0; (series_data) && (i < series_data->m_arSIIndex.size()); i++)
{
SIIndex * si_in = dynamic_cast<SIIndex *>(series_data->m_arSIIndex[i].get());

View File

@ -99,6 +99,7 @@ public:
unsigned int last_AXES_id;
const static unsigned int initial_AXES_id = 0x2000000;
std::map<int, BaseObjectPtr> mapPivotCache;
std::map<std::wstring, std::vector<std::wstring>> mapDefineNames;
std::vector<std::wstring> arDefineNames;
std::vector<std::wstring> arExternalNames;

View File

@ -325,7 +325,10 @@ const bool GlobalsSubstream::loadContent(BinProcessor& proc)
count--;
}
}break;
case rt_DocRoute: proc.repeated<DOCROUTE>(0, 0); break;
case rt_DocRoute:
{
count = proc.repeated<DOCROUTE>(0, 0);
}break;
case rt_UserBView:
{
count = proc.repeated<UserBView>(0, 0);

View File

@ -439,6 +439,7 @@ enum ElementType
typePHONETICINFO,
typePICF,
typePIVOTADDL,
typePIVOTCACHE,
typePIVOTCACHEDEFINITION,
typePIVOTCORE,
typePIVOTEX,
@ -498,6 +499,31 @@ enum ElementType
typeSXADDLSXMG,
typeSXADDLSXMGS,
typeSXADDLSXRULE,
typeSXDB,
typeSXDBEx,
typeSxBool,
typeSxErr,
typeSxNil,
typeSxIsxoper,
typeSXFDBType,
typeSXRng,
typeSxName,
typeSXDtr,
typeSXInt,
typeSXNum,
typeSXPair,
typeSXFormula,
typeSxFmla,
typeSXFDB,
typeSXFORMULA,
typeSXFMLA,
typeSXDBB,
typeSXOPER,
typeSXRANGE,
typeFDB,
typeDBB,
//typeGRPSXOPER,
//typeSRCSXOPER,
typeSXSRC,
typeSXTBL,
typeTABLESTYLES,

View File

@ -621,12 +621,12 @@ namespace NSCustomShapesConvert
ConvertSum(oHandle.PolarCentre.y, oHandle.PolarCentreType.y, m_lIndexDst-2, ptFormula, 0, ptValue, false, true, false, m_oGuidsRes);
m_arIndexDst.push_back(m_lIndexDst-1);
std::wstring strMem = boost::lexical_cast<std::wstring>(m_lIndexDst-2);
std::wstring strMem = std::to_wstring(m_lIndexDst - 2);
oHandle.Pos.x = GetHandlePos(strMem, _T("w"), m_lWidth);
oHandle.PosType.x = ptFormula;
strMem = boost::lexical_cast<std::wstring>(m_lIndexDst-2);
strMem = std::to_wstring(m_lIndexDst - 2);
oHandle.Pos.y = GetHandlePos(strMem, _T("h"), m_lHeight);
oHandle.PosType.y = ptFormula;
}
@ -800,20 +800,20 @@ namespace NSCustomShapesConvert
case ptFormula:
{
if (bExtShape)
strValue = boost::lexical_cast<std::wstring>(lParam);
strValue = std::to_wstring(lParam);
else
strValue = boost::lexical_cast<std::wstring>(m_arIndexDst[lParam]);
strValue = std::to_wstring(m_arIndexDst[lParam]);
strValue = _T("gd") + strValue;
break;
}
case ptAdjust:
{
strValue = _T("adj") + boost::lexical_cast<std::wstring>(lParam);
strValue = _T("adj") + std::to_wstring(lParam);
break;
}
case ptValue:
{
strValue = boost::lexical_cast<std::wstring>(lParam);
strValue = std::to_wstring(lParam);
break;
}
default:
@ -1080,7 +1080,7 @@ namespace NSCustomShapesConvert
std::wstring strSize;
std::wstring strIndex;
strSize = boost::lexical_cast<std::wstring>( lSize);
strSize = std::to_wstring( lSize);
if ('#' == strParam[0])
{
@ -1114,7 +1114,7 @@ namespace NSCustomShapesConvert
m_lIndexSrc++;
m_arIndexDst.push_back(m_lIndexDst);
strIndex = boost::lexical_cast<std::wstring>(m_lIndexDst);
strIndex = std::to_wstring(m_lIndexDst);
m_oGuidsRes.WriteString(_T("<a:gd name=\"gd"));
m_oGuidsRes.WriteString(strIndex);

View File

@ -58,6 +58,8 @@
#include "../XlsFormat/Logic/Biff_unions/CHART.h"
#include "../XlsFormat/Logic/Biff_unions/BACKGROUND.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTVIEW.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTCACHE.h"
#include "../XlsFormat/Logic/Biff_unions/PIVOTCACHEDEFINITION.h"
#include <Logic/Biff_records/BkHim.h>
#include <Logic/Biff_records/HLink.h>
@ -135,28 +137,7 @@ XlsConverter::XlsConverter(const std::wstring & xls_file, const std::wstring & _
if (cfile.isError())
{
//if (0 <= xls_file.rfind(L".xls"))//todooo lower
//{
// unsigned char* fileData = NULL;
// DWORD fileSize = 0;
// if (!NSFile::CFileBinary::ReadAllBytes(xls_file, &fileData, fileSize)) return;
// if (!fileData) return;
// //test/open as list
// std::wstring xls_file_new = _xlsx_path + FILE_SEPARATOR_STR + L"temp.xls";
// if (cfile.Open(xls_file_new, XLS::CompoundFile::cf_WriteMode))
// {
// XLS::CFStreamPtr stream = cfile.createWorkbookStream();
// if (stream)
// stream->write(fileData, fileSize);
// cfile.closeWorkbookStream();
// }
// delete []fileData;
// if (!cfile.Open(xls_file_new, XLS::CompoundFile::cf_ReadMode))
// return;
//}else
return;
return;
}
XLS::CFStreamPtr summary;
@ -164,7 +145,7 @@ XlsConverter::XlsConverter(const std::wstring & xls_file, const std::wstring & _
try
{
summary = cfile.getSummaryInformationStream();
summary = cfile.getNamedStream("SummaryInformation");
}
catch (...)
{
@ -172,7 +153,7 @@ XlsConverter::XlsConverter(const std::wstring & xls_file, const std::wstring & _
try
{
doc_summary = cfile.getDocumentSummaryInformationStream();
doc_summary = cfile.getNamedStream("DocumentSummaryInformation");
}
catch (...)
{
@ -211,7 +192,33 @@ XlsConverter::XlsConverter(const std::wstring & xls_file, const std::wstring & _
{
is_encrypted = true;
if (xls_global_info->decryptor->IsVerify() == false) return;
}
}
if (cfile.storage_->isDirectory("_SX_DB_CUR"))
{
std::list<std::string> listStream = cfile.storage_->entries("_SX_DB_CUR");
for (std::list<std::string>::iterator it = listStream.begin(); it != listStream.end(); it++)
{
XLS::CFStreamCacheReader pivot_cache_reader(cfile.getNamedStream("_SX_DB_CUR/" + *it), xls_global_info);
XLS::BaseObjectPtr pivot_cache = boost::shared_ptr<XLS::PIVOTCACHE>(new XLS::PIVOTCACHE());
XLS::BinReaderProcessor proc(pivot_cache_reader , pivot_cache.get() , true);
proc.mandatory(*pivot_cache.get());
int index = 0;
try
{
index = atoi(it->c_str());
}
catch(...)
{
}
xls_global_info->mapPivotCache.insert(std::make_pair(index, pivot_cache));
}
}
}
catch(...)
{
@ -340,7 +347,7 @@ void XlsConverter::convert(XLS::WorkbookStreamObject* woorkbook)
count_sheets++;
xls_global_info->current_sheet = count_sheets;
xlsx_context->start_table(xls_global_info->sheets_names.size() > i ? xls_global_info->sheets_names[i] : L"Sheet_" + boost::lexical_cast<std::wstring>(count_sheets));
xlsx_context->start_table(xls_global_info->sheets_names.size() > i ? xls_global_info->sheets_names[i] : L"Sheet_" + std::to_wstring(count_sheets));
xlsx_context->set_state(xls_global_info->sheets_state.size() > i ? xls_global_info->sheets_state[i] : L"visible");
convert(dynamic_cast<XLS::WorksheetSubstream*>(woorkbook->m_arWorksheetSubstream[i].get()));
@ -349,7 +356,7 @@ void XlsConverter::convert(XLS::WorkbookStreamObject* woorkbook)
{
count_chart_sheets++;
xls_global_info->current_sheet = -1;
xlsx_context->start_table(xls_global_info->sheets_names.size() > i ? xls_global_info->sheets_names[i] : L"ChartSheet_" + boost::lexical_cast<std::wstring>(count_chart_sheets));
xlsx_context->start_table(xls_global_info->sheets_names.size() > i ? xls_global_info->sheets_names[i] : L"ChartSheet_" + std::to_wstring(count_chart_sheets));
convert_chart_sheet(dynamic_cast<XLS::ChartSheetSubstream*>(woorkbook->m_arWorksheetSubstream[i].get()));
}
@ -632,7 +639,7 @@ std::wstring XlsConverter::WriteMediaFile(char *data, int size, std::wstring typ
xlsx_context->get_mediaitems().create_media_path(xlsx_path);
bool res = false;
std::wstring file_name = L"image" + boost::lexical_cast<std::wstring>(id);
std::wstring file_name = L"image" + std::to_wstring(id);
if (type_ext == L"dib_data")
@ -1915,4 +1922,16 @@ void XlsConverter::convert(XLS::PIVOTCACHEDEFINITION * pivot_cached)
{
if (pivot_cached == NULL) return;
xlsx_context->start_pivot_cache();
pivot_cached->serialize(xlsx_context->current_pivot_cache().definitions());
//if (pivot_cached->is_records())//??
{
xlsx_context->current_pivot_cache().isRecordsPresent = true;
//pivot_cached->serialize_records(xlsx_context->current_pivot_cache().records());
}
xlsx_context->end_pivot_cache();
}

View File

@ -86,7 +86,7 @@ std::wstring static get_default_file_name(external_items::Type type)
// }
// //todooo проверить
//
// return get_default_file_name(type) + boost::lexical_cast<std::wstring>(Num) + sExt;
// return get_default_file_name(type) + std::to_wstring(Num) + sExt;
//}
@ -95,7 +95,7 @@ std::wstring external_items::add_image(const std::wstring & image, int bin_id)
{
const bool isMediaInternal = true;
std::wstring rId = std::wstring(L"picId") + boost::lexical_cast<std::wstring>(count_image+1);
std::wstring rId = std::wstring(L"picId") + std::to_wstring(count_image+1);
count_image++;
items_.push_back( item(image, typeImage, isMediaInternal, bin_id, rId) );
@ -108,8 +108,8 @@ std::wstring external_items::add_chart(std::wstring & oox_target)
count_charts++;
std::wstring rId = std::wstring(L"chartId") + boost::lexical_cast<std::wstring>(count_charts);
oox_target = std::wstring(L"charts/chart") + boost::lexical_cast<std::wstring>(count_charts) + L".xml";
std::wstring rId = std::wstring(L"chartId") + std::to_wstring(count_charts);
oox_target = std::wstring(L"charts/chart") + std::to_wstring(count_charts) + L".xml";
items_.push_back( item(oox_target, typeChart, isMediaInternal, -1, rId) );

View File

@ -172,24 +172,16 @@ void rels_files::add(std::wstring const & Id,
{
return add(relationship(Id, Type, Target, TargetMode));
}
///////////////////////////////////////////
//----------------------------------------------------------------------------------------
chart_content::chart_content() : rels_file_(rels_file::create(L""))
{
{
}
_CP_PTR(chart_content) chart_content::create()
{
return boost::make_shared<chart_content>();
}
//void chart_content::add_rel(relationship const & r)
//{
// rels_->get_rels().add(r);
//}
///////////////////////////////////////////
//----------------------------------------------------------------------------------------
element_ptr simple_element::create(const std::wstring & FileName, const std::wstring & Content)
{
return boost::make_shared<simple_element>(FileName, Content);

View File

@ -111,7 +111,7 @@ private:
class rels_file;
typedef boost::shared_ptr<rels_file> rels_file_ptr;
/// \class rels_file
//------------------------------------------------------------------------
class rels_file : public element
{
public:
@ -132,7 +132,7 @@ private:
rels rels_;
};
/// \class rels_files
//------------------------------------------------------------------------
class rels_files : public element
{
public:
@ -150,9 +150,7 @@ private:
rels_file_ptr rels_file_;
};
////////////////////////////////////////
///\class chart_files
//------------------------------------------------------------------------
class chart_content;
typedef _CP_PTR(chart_content) chart_content_ptr;
@ -173,8 +171,7 @@ private:
rels_file_ptr rels_file_;
};
//---------------------------------------------------------------------------------------------
//------------------------------------------------------------------------
class document : public element
{
public:

View File

@ -33,8 +33,6 @@
#include "oox_rels.h"
#include "mediaitems_utils.h"
//#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
#include <boost/make_shared.hpp>
#include <simple_xml_writer.h>
@ -66,8 +64,9 @@ public:
void dump_rels(rels & Rels)
{
BOOST_FOREACH(rel_ const & r, chartRels_)
for (size_t i = 0; i < chartRels_.size(); i++)
{
rel_ & r = chartRels_[i];
if (r.type_ == external_items::typeImage)
{
Rels.add(relationship(
@ -99,8 +98,9 @@ public:
{
bool present = false;
BOOST_FOREACH(rel_ const & r, chartRels_)
{
for (size_t i = 0; i < chartRels_.size(); i++)
{
rel_ & r = chartRels_[i];
if (r.rid_ == rid && r.target_ == target)
present = true;
}

View File

@ -114,14 +114,14 @@ public:
if (c.author_ == author_list_[i])
{
find = true;
c.author_ = boost::lexical_cast<std::wstring>(i);
c.author_ = std::to_wstring(i);
break;
}
}
if (!find)
{
author_list_.push_back(c.author_);
c.author_ = boost::lexical_cast<std::wstring>(author_list_.size()-1);
c.author_ = std::to_wstring(author_list_.size()-1);
}
xlsx_comment_.push_back(c);
}

View File

@ -52,13 +52,13 @@ public:
std::pair<std::wstring, std::wstring> add_comments_xml(std::wstring const & content, xlsx_comments_ptr comments)
{
const std::wstring file_comments_id = boost::lexical_cast<std::wstring>(next_comments_file_id_++);
const std::wstring file_comments_id = std::to_wstring(next_comments_file_id_++);
const std::wstring fileName = std::wstring(L"comments") + file_comments_id + L".xml";
comments_.push_back(comment_elm(fileName, content, comments));
const std::wstring id = boost::lexical_cast<std::wstring>(next_comments_id_++);
const std::wstring id = std::to_wstring(next_comments_id_++);
const std::wstring rId = std::wstring(L"comId") + id;
return std::pair<std::wstring, std::wstring>(fileName, rId);
}

View File

@ -84,6 +84,17 @@ xlsx_xml_worksheet & xlsx_conversion_context::current_sheet()
throw std::runtime_error("internal error");
}
}
xlsx_pivot_cache_context & xlsx_conversion_context::current_pivot_cache()
{
if (!pivot_caches_.empty())
{
return *pivot_caches_.back().get();
}
else
{
throw std::runtime_error("internal error");
}
}
oox_chart_context & xlsx_conversion_context::current_chart()
{
if (!charts_.empty())
@ -118,11 +129,17 @@ void xlsx_conversion_context::start_chart()
//этот контекст нужно передавать в файл
}
void xlsx_conversion_context::end_chart()
{
//current_chart().set_drawing_link(current_sheet().get_drawing_link());
//излишняя инфа
}
void xlsx_conversion_context::start_pivot_cache()
{
pivot_caches_.push_back(xlsx_pivot_cache_context::create());
}
void xlsx_conversion_context::end_pivot_cache()
{
}
void xlsx_conversion_context::end_table()
@ -144,10 +161,11 @@ void xlsx_conversion_context::end_document()
unsigned int count = 0;
// добавляем таблицы
BOOST_FOREACH(const xlsx_xml_worksheet_ptr& sheet, sheets_)
{
for (size_t i = 0; i < sheets_.size(); i++)
{
xlsx_xml_worksheet_ptr & sheet = sheets_[i];
count++;
const std::wstring id = std::wstring(L"sId") + boost::lexical_cast<std::wstring>(count);
const std::wstring slideRId = std::wstring(L"sId") + std::to_wstring(count);
package::sheet_content_ptr content = package::sheet_content::create();
////////////////////////////////////////////////////////////////////////////////////////////
@ -201,68 +219,89 @@ void xlsx_conversion_context::end_document()
CP_XML_ATTR(L"name", sheet->name());
CP_XML_ATTR(L"sheetId", count);
CP_XML_ATTR(L"state", sheet->state() );
CP_XML_ATTR(L"r:id", id);
CP_XML_ATTR(L"r:id", slideRId);
}
}
}
//добавляем диаграммы
count = 0;
BOOST_FOREACH(const oox_chart_context_ptr& chart, charts_)
for (size_t i = 0; i < charts_.size(); i++)
{
count++;
package::chart_content_ptr content = package::chart_content::create();
chart->dump_rels(content->get_rels());
chart->write_to(content->content());
charts_[i]->dump_rels(content->get_rels());
charts_[i]->write_to(content->content());
output_document_->get_xl_files().add_charts(content);
}
//workbook_content << L"<calcPr iterateCount=\"100\" refMode=\"A1\" iterate=\"false\" iterateDelta=\"0.0001\" />";
{
output_document_->get_xl_files().set_sharedStrings( package::simple_element::create(L"sharedStrings.xml", xlsx_shared_strings_.str()) );
}
output_document_->get_xl_files().set_sharedStrings( package::simple_element::create(L"sharedStrings.xml", xlsx_shared_strings_.str()) );
std::wstringstream strm_workbook;
CP_XML_WRITER(strm_workbook)
{
std::wstringstream strm_workbook;
CP_XML_WRITER(strm_workbook)
CP_XML_NODE(L"workbook")
{
CP_XML_NODE(L"workbook")
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_NODE(L"bookViews")
{
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_STREAM() << xlsx_workbook_views_.str();
}
CP_XML_NODE(L"bookViews")
{
CP_XML_STREAM() << xlsx_workbook_views_.str();
}
CP_XML_NODE(L"sheets")
{
CP_XML_STREAM() << workbook_content.str();
}
CP_XML_NODE(L"sheets")
{
CP_XML_STREAM() << workbook_content.str();
}
CP_XML_NODE(L"definedNames")
{
CP_XML_STREAM() << xlsx_defined_names_.str();
}
std::wstring str_ = xlsx_custom_views_.str();
CP_XML_NODE(L"definedNames")
{
CP_XML_STREAM() << xlsx_defined_names_.str();
}
std::wstring str_ = xlsx_custom_views_.str();
if (!str_.empty())
if (!str_.empty())
{
CP_XML_NODE(L"customWorkbookViews")
{
CP_XML_NODE(L"customWorkbookViews")
CP_XML_STREAM() << str_;
}
}
if (!pivot_caches_.empty())
{
CP_XML_NODE(L"pivotCaches")
{
for (size_t i = 0; i < pivot_caches_.size(); i++)
{
CP_XML_STREAM() << str_;
std::wstring rId = L"pcId" + std::to_wstring(i+1);
static const std::wstring sType = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition";
const std::wstring sName = std::wstring(L"../pivotCache/pivotCacheDefinition" + std::to_wstring(i + 1) + L".xml");
package::pivot_cache_content_ptr content = package::pivot_cache_content::create();
CP_XML_NODE(L"pivotCache")
{
CP_XML_ATTR(L"cacheId", std::to_wstring(i));
CP_XML_ATTR(L"r:id", rId);
}
pivot_caches_[i]->dump_rels(content->get_rels());
pivot_caches_[i]->write_to(content->definitions());
if (pivot_caches_[i]->isRecordsPresent)
{
pivot_caches_[i]->write_records_to(content->records());
}
output_document_->get_xl_files().add_pivot_cache(content);
}
}
}
}
}
output_document_->get_xl_files().set_workbook( package::simple_element::create(L"workbook.xml", strm_workbook.str()) );

View File

@ -41,6 +41,7 @@
#include "xlsx_drawing_context.h"
#include "xlsx_chart_context.h"
#include "xlsx_comments_context.h"
#include "xlsx_pivot_cache_context.h"
#include "xlsx_output_xml.h"
@ -70,6 +71,9 @@ public:
void start_chart();
void end_chart();
void start_pivot_cache();
void end_pivot_cache();
std::wostream & shared_strings() { return xlsx_shared_strings_; }
std::wostream & defined_names() { return xlsx_defined_names_; }
std::wostream & workbook_views() { return xlsx_workbook_views_; }
@ -80,6 +84,7 @@ public:
xlsx_xml_worksheet & current_sheet();
oox_chart_context & current_chart();
xlsx_pivot_cache_context & current_pivot_cache();
xlsx_drawing_context & get_drawing_context();
xlsx_drawing_context_handle & get_drawing_context_handle();
@ -95,9 +100,10 @@ private:
external_items mediaitems_;
std::vector<xlsx_xml_worksheet_ptr> sheets_;
std::vector<oox_chart_context_ptr> charts_;
std::vector<xlsx_xml_worksheet_ptr> sheets_;
std::vector<oox_chart_context_ptr> charts_;
std::vector<xlsx_pivot_cache_context_ptr> pivot_caches_;
//std::wstringstream defaultOutput_;
//std::pair<float,float> maxDigitSize_;
//num_format_context num_format_context_;

View File

@ -86,7 +86,7 @@ public:
std::pair<std::wstring, std::wstring> add_drawing_xml(std::wstring const & content, xlsx_drawings_rels_ptr rels)
{//todooo отсчеты номеров файлов отдельно
const std::wstring id = boost::lexical_cast<std::wstring>(next_drawing_id_++);
const std::wstring id = std::to_wstring(next_drawing_id_++);
const std::wstring fileName = std::wstring(L"drawing") + id + L".xml";
drawings_.push_back(drawing_elm(fileName, content, rels));
@ -97,8 +97,8 @@ public:
std::pair<std::wstring, std::wstring> add_drawing_vml(std::wstring const & content, xlsx_drawings_rels_ptr rels)
{
const std::wstring drawing_id = boost::lexical_cast<std::wstring>(next_drawing_id_++);
const std::wstring file_vml_id = boost::lexical_cast<std::wstring>(next_vml_file_id_++);
const std::wstring drawing_id = std::to_wstring(next_drawing_id_++);
const std::wstring file_vml_id = std::to_wstring(next_vml_file_id_++);
const std::wstring fileName = std::wstring(L"vmlDrawing") + file_vml_id + L".vml";
drawings_vml_.push_back(drawing_elm(fileName, content, rels));
@ -587,7 +587,7 @@ void xlsx_drawing_context::serialize_group()
if (drawing_state->name.empty())
{
drawing_state->name = L"Group_" + boost::lexical_cast<std::wstring>(count_object);
drawing_state->name = L"Group_" + std::to_wstring(count_object);
}
CP_XML_ATTR(L"name", drawing_state->name);
@ -641,24 +641,24 @@ void xlsx_drawing_context::serialize_shape_comment(_drawing_state_ptr & drawing_
std::wstringstream strmStyle;
strmStyle << L"position:absolute;";
strmStyle << L"margin-left:" << boost::lexical_cast<std::wstring>(drawing_state->child_anchor.x / 12700.) << L"pt;"; //in pt (1 pt = 12700 emu)
strmStyle << L"margin-top:" << boost::lexical_cast<std::wstring>(drawing_state->child_anchor.y / 12700.) << L"pt;";
strmStyle << L"width:" << boost::lexical_cast<std::wstring>(drawing_state->child_anchor.cx / 12700.) << L"pt;";
strmStyle << L"height:" << boost::lexical_cast<std::wstring>(drawing_state->child_anchor.cy / 12700.) << L"pt;";
strmStyle << L"z-index:" << boost::lexical_cast<std::wstring>(drawing_state->id) << L";";
strmStyle << L"margin-left:" << std::to_wstring(drawing_state->child_anchor.x / 12700.) << L"pt;"; //in pt (1 pt = 12700 emu)
strmStyle << L"margin-top:" << std::to_wstring(drawing_state->child_anchor.y / 12700.) << L"pt;";
strmStyle << L"width:" << std::to_wstring(drawing_state->child_anchor.cx / 12700.) << L"pt;";
strmStyle << L"height:" << std::to_wstring(drawing_state->child_anchor.cy / 12700.) << L"pt;";
strmStyle << L"z-index:" << std::to_wstring(drawing_state->id) << L";";
if (drawing_state->object.visible == false)
strmStyle << L"visibility:hidden;";
CP_XML_NODE(L"v:shape")
{
//CP_XML_ATTR(L"id" , boost::lexical_cast<std::wstring>(drawing_state->object.id));
//CP_XML_ATTR(L"id" , std::to_wstring(drawing_state->object.id));
CP_XML_ATTR(L"type" , L"_x0000_t202");
CP_XML_ATTR(L"fillcolor" , L"#" + drawing_state->fill.color.sRGB);
if (drawing_state->line.width > 0)
{
CP_XML_ATTR(L"strokeweight", boost::lexical_cast<std::wstring>(drawing_state->line.width) +L"pt");
CP_XML_ATTR(L"strokeweight", std::to_wstring(drawing_state->line.width) +L"pt");
}
CP_XML_ATTR(L"style", strmStyle.str());
@ -770,9 +770,9 @@ void xlsx_drawing_context::serialize_vml_pic(_drawing_state_ptr & drawing_state,
std::wstring style = std::wstring(L"position:absolute;margin-left:0;margin-top:0;");
//todooo сделать "покороче" значения .. достаточно 2 знаков после запятой
style += std::wstring(L"width:") + boost::lexical_cast<std::wstring>(drawing_state->child_anchor.cx) + std::wstring(L"pt;");
style += std::wstring(L"height:") + boost::lexical_cast<std::wstring>(drawing_state->child_anchor.cy) + std::wstring(L"pt;");
style += std::wstring(L"z-index:") + boost::lexical_cast<std::wstring>(drawing_state->id) + std::wstring(L";");
style += std::wstring(L"width:") + std::to_wstring(drawing_state->child_anchor.cx) + std::wstring(L"pt;");
style += std::wstring(L"height:") + std::to_wstring(drawing_state->child_anchor.cy) + std::wstring(L"pt;");
style += std::wstring(L"z-index:") + std::to_wstring(drawing_state->id) + std::wstring(L";");
CP_XML_ATTR(L"style",style);
@ -865,7 +865,7 @@ void xlsx_drawing_context::serialize_chart(_drawing_state_ptr & drawing_state, s
CP_XML_ATTR(L"id", drawing_state->id);
if (drawing_state->name.empty())
drawing_state->name = L"Chart_" + boost::lexical_cast<std::wstring>(count_object);
drawing_state->name = L"Chart_" + std::to_wstring(count_object);
CP_XML_ATTR(L"name", drawing_state->name);
if (!drawing_state->description.empty())
@ -941,9 +941,9 @@ void xlsx_drawing_context::serialize_shape(_drawing_state_ptr & drawing_state)
if (drawing_state->name.empty())
{
if (drawing_state->wordart.is)
drawing_state->name = L"WordArt_" + boost::lexical_cast<std::wstring>(count_object);
drawing_state->name = L"WordArt_" + std::to_wstring(count_object);
else
drawing_state->name = L"Shape_" + boost::lexical_cast<std::wstring>(count_object);
drawing_state->name = L"Shape_" + std::to_wstring(count_object);
}
CP_XML_ATTR(L"name", drawing_state->name);
@ -2232,7 +2232,7 @@ void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::w
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
std::wstring sId = std::wstring(L"hId") + boost::lexical_cast<std::wstring>(hlinks_.size()+1);
std::wstring sId = std::wstring(L"hId") + std::to_wstring(hlinks_.size()+1);
std::wstring link_correct = link;
if (!is_external) link_correct = std::wstring(L"#") + link_correct;

View File

@ -80,7 +80,7 @@ public:
record r;
r.ref = ref;
r.display = display;
r.id = std::wstring(L"hId") + boost::lexical_cast<std::wstring>(records_.size()+1);
r.id = std::wstring(L"hId") + std::to_wstring(records_.size()+1);
r.location = target;
if (bExternal) r.type = L"External" ;

View File

@ -32,8 +32,6 @@
#pragma once
#include <iosfwd>
#include "common.h"
#include <boost/scoped_ptr.hpp>
#include <boost/noncopyable.hpp>
@ -44,7 +42,6 @@ namespace oox {
class xlsx_xml_worksheet;
typedef boost::shared_ptr<xlsx_xml_worksheet> xlsx_xml_worksheet_ptr;
/// \class xlsx_xml_worksheet
class xlsx_xml_worksheet: boost::noncopyable
{
public:

View File

@ -80,12 +80,21 @@ void xlsx_document::write(const std::wstring & RootPath)
rels_files_.write(RootPath);
}
////////////////////////////////////////////
//--------------------------------------------------------------------------------------------
pivot_cache_content::pivot_cache_content() : definitions_rels_file_(rels_file::create(L""))
{
}
_CP_PTR(pivot_cache_content) pivot_cache_content::create()
{
return boost::make_shared<pivot_cache_content>();
}
sheet_content::sheet_content() : rels_(rels_file::create(L""))
{
}
//--------------------------------------------------------------------------------------------
_CP_PTR(sheet_content) sheet_content::create()
{
@ -119,33 +128,32 @@ void sheets_files::write(const std::wstring & RootPath)
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"worksheets";
NSDirectory::CreateDirectory(path.c_str());
for (int i = 0; i < sheets_.size(); i++)
for (size_t i = 0; i < sheets_.size(); i++)
{
if (sheets_[i])
if (!sheets_[i]) continue;
const std::wstring fileName = std::wstring(L"sheet") + std::to_wstring(i + 1) + L".xml";
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml";
contentTypes.add_override(std::wstring(L"/xl/worksheets/") + fileName, kWSConType);
if (rels_)
{
const std::wstring fileName = std::wstring(L"sheet") + std::to_wstring(i + 1) + L".xml";
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml";
contentTypes.add_override(std::wstring(L"/xl/worksheets/") + fileName, kWSConType);
if (rels_)
{
const std::wstring id = std::wstring(L"sId") + std::to_wstring(i + 1);
static const std::wstring kWSRel = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";
const std::wstring fileRef = std::wstring(L"worksheets/") + fileName;
rels_->add(id, kWSRel, fileRef);
}
sheets_[i]->get_rel_file()->set_file_name(fileName + L".rels");
rels_files relFiles;
relFiles.add_rel_file(sheets_[i]->get_rel_file());
relFiles.write(path);
//item->get_rel_file()->write(path.string<std::wstring>());
package::simple_element(fileName, sheets_[i]->str()).write(path);
const std::wstring id = std::wstring(L"sId") + std::to_wstring(i + 1);
static const std::wstring kWSRel = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";
const std::wstring fileRef = std::wstring(L"worksheets/") + fileName;
rels_->add(id, kWSRel, fileRef);
}
sheets_[i]->get_rel_file()->set_file_name(fileName + L".rels");
rels_files relFiles;
relFiles.add_rel_file(sheets_[i]->get_rel_file());
relFiles.write(path);
//item->get_rel_file()->write(path.string<std::wstring>());
package::simple_element(fileName, sheets_[i]->str()).write(path);
}
}
@ -202,6 +210,11 @@ void xl_files::write(const std::wstring & RootPath)
{
charts_files_.set_main_document(get_main_document());
charts_files_.write(path);
}
{
pivot_cache_files_.set_rels(&rels_files_);
pivot_cache_files_.set_main_document(get_main_document());
pivot_cache_files_.write(path);
}
if (drawings_)
{
@ -264,7 +277,63 @@ void xl_files::add_charts(chart_content_ptr chart)
{
charts_files_.add_chart(chart);
}
////////////////////////////
void xl_files::add_pivot_cache(pivot_cache_content_ptr pivot_cache)
{
pivot_cache_files_.add_pivot_cache(pivot_cache);
}
//----------------------------------------------------------------------------------------
void xl_pivot_cache_files::add_pivot_cache(pivot_cache_content_ptr pivot_cache)
{
pivot_caches_.push_back(pivot_cache);
}
void xl_pivot_cache_files::write(const std::wstring & RootPath)
{
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"pivotCache";
NSDirectory::CreateDirectory(path.c_str());
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConTypeD = L"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml";
static const std::wstring kWSConTypeR = L"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml";
for (size_t i = 0; i < pivot_caches_.size(); i++)
{
if (pivot_caches_[i])
{
const std::wstring fileNameD = std::wstring(L"pivotCacheDefinition") + std::to_wstring(i + 1) + L".xml";
contentTypes.add_override(std::wstring(L"/xl/pivotCache/") + fileNameD, kWSConTypeD);
package::simple_element(fileNameD, pivot_caches_[i]->str_d()).write(path);
if (pivot_caches_[i]->get_rels().empty() == false)
{
rels_files relFiles;
pivot_caches_[i]->definitions_rels_file_->set_file_name(fileNameD + L".rels");
relFiles.add_rel_file(pivot_caches_[i]->definitions_rels_file_);
relFiles.write(path);
}
if (rels_) //for workbook
{
const std::wstring id = std::wstring(L"pcId") + std::to_wstring(i + 1);
static const std::wstring kWSRel = L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition";
const std::wstring fileRef = std::wstring(L"pivotCache/") + fileNameD;
rels_->add(id, kWSRel, fileRef);
}
std::wstring content_records = pivot_caches_[i]->str_r();
if (!content_records.empty())
{
const std::wstring fileNameR = std::wstring(L"pivotCacheRecords") + std::to_wstring(i + 1) + L".xml";
contentTypes.add_override(std::wstring(L"/xl/pivotCache/") + fileNameR, kWSConTypeD);
package::simple_element(fileNameR, content_records).write(path);
}
}
}
}
//----------------------------------------------------------------------------------------
void xl_charts_files::add_chart(chart_content_ptr chart)
{
charts_.push_back(chart);
@ -274,14 +343,15 @@ void xl_charts_files::write(const std::wstring & RootPath)
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"charts";
NSDirectory::CreateDirectory(path.c_str());
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.drawingml.chart+xml";
for (size_t i = 0; i < charts_.size(); i++)
{
if (charts_[i])
{
const std::wstring fileName = std::wstring(L"chart") + std::to_wstring(i + 1) + L".xml";
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();
static const std::wstring kWSConType = L"application/vnd.openxmlformats-officedocument.drawingml.chart+xml";
contentTypes.add_override(std::wstring(L"/xl/charts/") + fileName, kWSConType);
package::simple_element(fileName, charts_[i]->str()).write(path);
@ -297,7 +367,7 @@ void xl_charts_files::write(const std::wstring & RootPath)
}
}
}
//////////////////////////
//----------------------------------------------------------------------------------------
xl_drawings_ptr xl_drawings::create(const std::vector<drawing_elm> & elms)
{
return boost::make_shared<xl_drawings>(boost::ref(elms));
@ -308,7 +378,7 @@ void xl_drawings::write(const std::wstring & RootPath)
std::wstring path = RootPath + FILE_SEPARATOR_STR + L"drawings";
NSDirectory::CreateDirectory(path.c_str());
for (int i = 0; i < drawings_.size(); i++)
for (size_t i = 0; i < drawings_.size(); i++)
{
package::simple_element(drawings_[i].filename, drawings_[i].content).write(path);
@ -343,7 +413,7 @@ void xl_comments::write(const std::wstring & RootPath)
std::wstring vml_path = RootPath + FILE_SEPARATOR_STR + L"drawings";
NSDirectory::CreateDirectory(vml_path.c_str());
for (int i = 0; i < comments_.size(); i++)
for (size_t i = 0; i < comments_.size(); i++)
{
content_type & contentTypes = this->get_main_document()->content_type().get_content_type();

View File

@ -38,7 +38,6 @@
#include "xlsx_drawings.h"
#include "xlsx_comments.h"
namespace oox {
namespace package {
@ -47,7 +46,7 @@ class xlsx_content_types_file : public content_types_file
public:
xlsx_content_types_file();
};
//------------------------------------------------------------------------
class sheet_content;
typedef _CP_PTR(sheet_content) sheet_content_ptr;
@ -66,7 +65,30 @@ private:
std::wstringstream content_;
rels_file_ptr rels_;
};
//------------------------------------------------------------------------
class pivot_cache_content;
typedef _CP_PTR(pivot_cache_content) pivot_cache_content_ptr;
class pivot_cache_content : boost::noncopyable
{
public:
pivot_cache_content();
static _CP_PTR(pivot_cache_content) create();
std::wostream & definitions() { return definitions_; }
std::wostream & records() { return records_; }
rels & get_rels() { return definitions_rels_file_->get_rels(); }
std::wstring str_d() { return definitions_.str(); }
std::wstring str_r() { return records_.str(); }
friend class xl_pivot_cache_files;
private:
std::wstringstream records_;
std::wstringstream definitions_;
rels_file_ptr definitions_rels_file_;
};
//------------------------------------------------------------------------
class sheets_files : public element
{
public:
@ -81,7 +103,6 @@ public:
virtual void write(const std::wstring & RootPath);
public:
std::vector<sheet_content_ptr> sheets_;
rels_files * rels_;
@ -98,6 +119,24 @@ public:
std::vector<chart_content_ptr> charts_;
};
class xl_pivot_cache_files : public element
{
public:
xl_pivot_cache_files(){}
void set_rels(rels_files * rels)
{
rels_ = rels;
}
void add_pivot_cache(pivot_cache_content_ptr pivot_cache);
virtual void write(const std::wstring & RootPath);
std::vector<pivot_cache_content_ptr> pivot_caches_;
rels_files * rels_;
};
///////////////////////////////////////////////////////////
class xl_comments;
@ -161,13 +200,16 @@ public:
void set_vml_drawings (element_ptr Element);
void set_comments (element_ptr Element);
void add_charts (chart_content_ptr chart);
void add_pivot_cache (pivot_cache_content_ptr pivot);
private:
rels_files rels_files_;
sheets_files sheets_files_;
xl_charts_files charts_files_;
element_ptr theme_;
element_ptr workbook_;
rels_files rels_files_;
sheets_files sheets_files_;
xl_charts_files charts_files_;
xl_pivot_cache_files pivot_cache_files_;
element_ptr theme_;
element_ptr workbook_;
element_ptr styles_;
element_ptr sharedStrings_;

View File

@ -0,0 +1,155 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "xlsx_pivot_cache_context.h"
#include "oox_rels.h"
#include "mediaitems_utils.h"
#include <boost/make_shared.hpp>
#include <simple_xml_writer.h>
namespace oox {
class xlsx_pivot_cache_context::Impl
{
// struct rel_
// {
// rel_(bool is_internal, std::wstring const & rid, std::wstring const & target, external_items::Type type) :
// is_internal_(is_internal),
// rid_(rid),
//target_(target),
// type_(type)
// {}
// bool is_internal_;
// std::wstring rid_;
// std::wstring target_;
// external_items::Type type_;
// };
public:
Impl() {}
std::wstringstream definitionsData_;
std::wstringstream recordsData_;
//rels rels_;
};
xlsx_pivot_cache_context_ptr xlsx_pivot_cache_context::create()
{
return boost::make_shared<xlsx_pivot_cache_context>();
}
int countPivotCaches = 0;
xlsx_pivot_cache_context::xlsx_pivot_cache_context() : impl_(new xlsx_pivot_cache_context::Impl()), isRecordsPresent(false)
{
index = ++countPivotCaches;
}
std::wostream & xlsx_pivot_cache_context::definitions()
{
return impl_->definitionsData_;
}
std::wostream & xlsx_pivot_cache_context::records()
{
return impl_->recordsData_;
}
//void xlsx_pivot_cache_context::add_rels(
// bool isInternal,
// std::wstring const & rid,
// std::wstring const & target,
// external_items::Type type)
//{
// impl_->add_rels(isInternal, rid, target, type);
//}
void xlsx_pivot_cache_context::dump_rels(rels & Rels)
{
if (isRecordsPresent)
{
Rels.add(relationship(L"rId1",
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords",
L"pivotCacheRecords" + std::to_wstring(index) + L".xml", L""));
}
}
void xlsx_pivot_cache_context::write_to(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"pivotCacheDefinition")
{
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
if (isRecordsPresent)
{
CP_XML_ATTR(L"r:id", L"rId1" );
}
CP_XML_ATTR(L"recordCount", 0);
//refreshedBy="Debra S Dalgleish"
//refreshedDate="39449.496381365738"
//createdVersion="1"
//refreshedVersion="2"
//recordCount="11"
//upgradeOnRefresh="1">
CP_XML_STREAM() << impl_->definitionsData_.str();
}
}
}
void xlsx_pivot_cache_context::write_records_to(std::wostream & strm)
{
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"pivotCacheRecords")
{
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
CP_XML_ATTR(L"xmlns:r", L"http://schemas.openxmlformats.org/officeDocument/2006/relationships");
CP_XML_ATTR(L"count", 0);
CP_XML_STREAM() << impl_->recordsData_.str();
}
}
}
xlsx_pivot_cache_context::~xlsx_pivot_cache_context()
{
}
}

View File

@ -0,0 +1,68 @@
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "oox_package.h"
namespace oox {
class xlsx_pivot_cache_context;
typedef _CP_PTR(xlsx_pivot_cache_context) xlsx_pivot_cache_context_ptr;
class xlsx_pivot_cache_context
{
public:
xlsx_pivot_cache_context();
~xlsx_pivot_cache_context();
std::wostream & definitions();
std::wostream & records();
void write_to(std::wostream & strm);
void write_records_to(std::wostream & strm);
void dump_rels(rels & Rels);
static xlsx_pivot_cache_context_ptr create();
//void add_rels( bool isInternal,
// std::wstring const & rid,
// std::wstring const & target,
// external_items::Type type);
bool isRecordsPresent;
int index;
private:
class Impl;
_CP_PTR(Impl) impl_;
};
}

View File

@ -353,6 +353,23 @@ SOURCES += \
../XlsFormat/Logic/Biff_records/XFCRC.cpp \
../XlsFormat/Logic/Biff_records/XFExt.cpp \
../XlsFormat/Logic/Biff_records/YMult.cpp \
../XlsFormat/Logic/Biff_records/SxBool.cpp\
../XlsFormat/Logic/Biff_records/SXDB.cpp\
../XlsFormat/Logic/Biff_records/SXDBB.cpp \
../XlsFormat/Logic/Biff_records/SXDBEx.cpp \
../XlsFormat/Logic/Biff_records/SXDtr.cpp \
../XlsFormat/Logic/Biff_records/SxErr.cpp \
../XlsFormat/Logic/Biff_records/SXFDB.cpp \
../XlsFormat/Logic/Biff_records/SXFDBType.cpp \
../XlsFormat/Logic/Biff_records/SxFmla.cpp \
../XlsFormat/Logic/Biff_records/SXFormula.cpp \
../XlsFormat/Logic/Biff_records/SXInt.cpp \
../XlsFormat/Logic/Biff_records/SxName.cpp \
../XlsFormat/Logic/Biff_records/SxNil.cpp \
../XlsFormat/Logic/Biff_records/SXNum.cpp \
../XlsFormat/Logic/Biff_records/SXPair.cpp \
../XlsFormat/Logic/Biff_records/SXRng.cpp \
../XlsFormat/Logic/Biff_records/SxIsxoper.cpp \
../XlsFormat/Logic/Biff_structures/AddinUdf.cpp \
../XlsFormat/Logic/Biff_structures/AF12Criteria.cpp \
../XlsFormat/Logic/Biff_structures/AFDOper.cpp \
@ -750,6 +767,13 @@ SOURCES += \
../XlsFormat/Logic/Biff_unions/UNKNOWNFRT.cpp \
../XlsFormat/Logic/Biff_unions/WINDOW.cpp \
../XlsFormat/Logic/Biff_unions/XFS.cpp \
../XlsFormat/Logic/Biff_unions/DBB.cpp \
../XlsFormat/Logic/Biff_unions/FDB.cpp \
../XlsFormat/Logic/Biff_unions/PIVOTCACHE.cpp \
../XlsFormat/Logic/Biff_unions/SXFMLA_bu.cpp \
../XlsFormat/Logic/Biff_unions/SXFORMULA_bu.cpp \
../XlsFormat/Logic/Biff_unions/SXOPER.cpp \
../XlsFormat/Logic/Biff_unions/SXRANGE.cpp \
../XlsFormat/Logic/SummaryInformationStream/Structures/Property_Structures.cpp \
../XlsFormat/Logic/SummaryInformationStream/Structures/PropertyFactory.cpp \
../XlsFormat/Logic/SummaryInformationStream/Structures/PropertySet.cpp \
@ -815,6 +839,7 @@ SOURCES += \
../XlsXlsxConverter/xlsx_tablecontext.cpp \
../XlsXlsxConverter/xlsx_textcontext.cpp \
../XlsXlsxConverter/xlsx_chart_context.cpp \
../XlsXlsxConverter/xlsx_pivot_cache_context.cpp \
../XlsXlsxConverter/xlsx_comments.cpp \
../XlsXlsxConverter/xlsx_comments_context.cpp \
@ -1572,6 +1597,7 @@ HEADERS += \
../XlsXlsxConverter/xlsx_conversion_context.h \
../XlsXlsxConverter/xlsx_drawing_context.h \
../XlsXlsxConverter/xlsx_drawings.h \
../XlsXlsxConverter/xlsx_pivot_cache_context.cpp \
../XlsXlsxConverter/xlsx_hyperlinks.h \
../XlsXlsxConverter/xlsx_output_xml.h \
../XlsXlsxConverter/xlsx_package.h \

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