mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 02:44:13 +08:00
.....
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@67034 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
committed by
Alexander Trofimov
parent
6145bec1bd
commit
12dcf40ffe
@ -385,8 +385,10 @@ const std::wstring toARGB(const unsigned int rgba)
|
||||
|
||||
const std::wstring toRGB(const unsigned int rgba)
|
||||
{
|
||||
return toRGB(static_cast<unsigned char>(rgba & 0xff), static_cast<unsigned char>((rgba >> 8) & 0xff),
|
||||
static_cast<unsigned char>((rgba >> 16) & 0xff));
|
||||
unsigned char R = static_cast<unsigned char>((rgba >> 16) & 0xff);
|
||||
unsigned char G = static_cast<unsigned char>((rgba >> 8) & 0xff);
|
||||
unsigned char B = static_cast<unsigned char>(rgba & 0xff);
|
||||
return toRGB(R, G ,B);
|
||||
}
|
||||
|
||||
const std::wstring toARGB(const unsigned char red, const unsigned char green, const unsigned char blue, const unsigned char alpha)
|
||||
@ -407,21 +409,32 @@ const bool fromARGB(const std::wstring& argb, unsigned char& red, unsigned char&
|
||||
{
|
||||
return false;
|
||||
}
|
||||
alpha = static_cast<unsigned char>(hex_str2int(argb.substr(0, 2)));
|
||||
red = static_cast<unsigned char>(hex_str2int(argb.substr(2, 2)));
|
||||
green = static_cast<unsigned char>(hex_str2int(argb.substr(4, 2)));
|
||||
blue = static_cast<unsigned char>(hex_str2int(argb.substr(6, 2)));
|
||||
alpha = static_cast<unsigned char> (hex_str2int(argb.substr(0, 2)));
|
||||
red = static_cast<unsigned char> (hex_str2int(argb.substr(2, 2)));
|
||||
green = static_cast<unsigned char> (hex_str2int(argb.substr(4, 2)));
|
||||
blue = static_cast<unsigned char> (hex_str2int(argb.substr(6, 2)));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const int HexChar2Int(const char value)
|
||||
{
|
||||
if (value >= '0' && value <= '9')
|
||||
return value - '0';
|
||||
if (value >= 'a' && value <= 'f')
|
||||
return 10 + value - 'a';
|
||||
if (value >= 'A' && value <= 'F')
|
||||
return 10 + value - 'A';
|
||||
return 0;
|
||||
}
|
||||
const size_t hex_str2int(const std::wstring& hex)
|
||||
{
|
||||
return hex_str2int(hex.begin(), hex.end());
|
||||
size_t summa = 0;
|
||||
for (int i = 0; i != hex.length(); ++i)
|
||||
summa += HexChar2Int((char)hex[i]) << (4 * (hex.length() - i - 1));
|
||||
return summa;
|
||||
}
|
||||
|
||||
|
||||
const size_t hex_str2int(const std::wstring::const_iterator& it_begin, const std::wstring::const_iterator& it_end)
|
||||
{
|
||||
static const std::wstring hex_digits(L"0123456789ABCDEF");
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
|
||||
#include "Logging/Log.h"
|
||||
#include "XlsElementsType.h" //<2F><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -33,7 +35,7 @@ public:
|
||||
|
||||
//virtual void toFrom(BinProcessor& proc) = 0; // This function shall contain only mark functions and is the universal XML serialiser
|
||||
|
||||
virtual const std::string & getClassName() const = 0; // Must be overridden in every deriver. The return value must be a reference to a static variable inside the getter
|
||||
virtual const std::string & getClassName() const = 0; // Must be overridden in every deriver. The return value must be a reference to a static variable inside the getter
|
||||
|
||||
void add_child (BaseObjectPtr e) {elements_.push_back(e);}
|
||||
|
||||
@ -43,11 +45,13 @@ public:
|
||||
|
||||
virtual int serialize(std::wostream & _stream)
|
||||
{
|
||||
std::stringstream s;
|
||||
s << std::string("This element - ") << getClassName() << std::string("- not serialize");
|
||||
std::stringstream s;
|
||||
s << std::string("This element - ") << getClassName() << std::string("- not serialize");
|
||||
Log::warning(s.str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void serialize_attribute(CP_ATTR_NODE){}
|
||||
};
|
||||
|
||||
#define BASE_OBJECT_DEFINE_CLASS_NAME(class_name)\
|
||||
|
||||
@ -39,5 +39,19 @@ void Area::readFields(CFRecord& record)
|
||||
fHasShadow = GETBIT(flags, 2);
|
||||
}
|
||||
|
||||
int Area::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:grouping")
|
||||
{
|
||||
if (f100) CP_XML_ATTR (L"val" , L"percentStacked");
|
||||
else if (fStacked) CP_XML_ATTR (L"val" , L"stacked");
|
||||
else CP_XML_ATTR (L"val" , L"standard");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -20,13 +20,13 @@ public:
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
static const ElementType type = typeArea;
|
||||
|
||||
BIFF_BOOL fStacked;
|
||||
BIFF_BOOL f100;
|
||||
BIFF_BOOL fHasShadow;
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -37,5 +37,20 @@ void AreaFormat::readFields(CFRecord& record)
|
||||
fInvertNeg = GETBIT(flags, 1);
|
||||
}
|
||||
|
||||
int AreaFormat::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", rgbFore.strRGB);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -23,11 +23,15 @@ public:
|
||||
|
||||
static const ElementType type = typeAreaFormat;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
LongRGB rgbFore;
|
||||
LongRGB rgbBack;
|
||||
|
||||
BIFF_WORD fls;
|
||||
BIFF_BOOL fAuto;
|
||||
BIFF_BOOL fInvertNeg;
|
||||
|
||||
IcvChart icvFore;
|
||||
IcvChart icvBack;
|
||||
};
|
||||
|
||||
@ -6,6 +6,7 @@ namespace XLS
|
||||
|
||||
AttachedLabel::AttachedLabel()
|
||||
{
|
||||
is_area = false;
|
||||
}
|
||||
|
||||
|
||||
@ -37,12 +38,50 @@ void AttachedLabel::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fShowValue = GETBIT(flags, 0);
|
||||
fShowPercent = GETBIT(flags, 1);
|
||||
fShowLabelAndPerc = GETBIT(flags, 2);
|
||||
fShowLabel = GETBIT(flags, 4);
|
||||
fShowBubbleSizes = GETBIT(flags, 5);
|
||||
fShowSeriesName = GETBIT(flags, 6);
|
||||
|
||||
fShowValue = GETBIT(flags, 0);
|
||||
fShowPercent = GETBIT(flags, 1);
|
||||
fShowLabelAndPerc = GETBIT(flags, 2);
|
||||
fShowLabel = GETBIT(flags, 4);
|
||||
fShowBubbleSizes = GETBIT(flags, 5);
|
||||
fShowSeriesName = GETBIT(flags, 6);
|
||||
}
|
||||
|
||||
int AttachedLabel::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:showVal")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fShowValue);
|
||||
}
|
||||
CP_XML_NODE(L"c:showPercent")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fShowPercent);
|
||||
}
|
||||
CP_XML_NODE(L"c:showBubbleSize")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fShowBubbleSizes);
|
||||
}
|
||||
|
||||
if (is_area == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:showCatName")
|
||||
{
|
||||
CP_XML_ATTR (L"val" ,fShowLabel);
|
||||
}
|
||||
CP_XML_NODE(L"c:showSerName") { CP_XML_ATTR (L"val" , 0); }
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:showCatName") { CP_XML_ATTR (L"val" , 0); }
|
||||
CP_XML_NODE(L"c:showSerName")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fShowSeriesName || fShowLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,22 +22,19 @@ public:
|
||||
|
||||
static const ElementType type = typeAttachedLabel;
|
||||
|
||||
//-----------------------------
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_BOOL fShowValue;
|
||||
BIFF_BOOL fShowPercent;
|
||||
BIFF_BOOL fShowLabelAndPerc;
|
||||
BIFF_BOOL fShowLabel;
|
||||
BIFF_BOOL fShowBubbleSizes;
|
||||
BIFF_BOOL fShowSeriesName;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowValue)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowPercent)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowLabelAndPerc)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowLabel)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowBubbleSizes)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowSeriesName)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
//-----------------------------
|
||||
|
||||
bool is_area;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -38,17 +38,73 @@ void AxcExt::writeFields(CFRecord& record)
|
||||
|
||||
void AxcExt::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> catMin >> catMax >> catMajor >> duMajor >> catMinor >> duMinor >> duBase >> catCrossDate >> flags;
|
||||
unsigned char flags, reserved;
|
||||
record >> catMin >> catMax >> catMajor >> duMajor >> catMinor >> duMinor >> duBase >> catCrossDate >> flags >> reserved;
|
||||
|
||||
fAutoMin = GETBIT(flags, 0);
|
||||
fAutoMax = GETBIT(flags, 1);
|
||||
fAutoMajor = GETBIT(flags, 2);
|
||||
fAutoMinor = GETBIT(flags, 3);
|
||||
fDateAxis = GETBIT(flags, 4);
|
||||
fAutoBase = GETBIT(flags, 5);
|
||||
fAutoCross = GETBIT(flags, 6);
|
||||
fAutoDate = GETBIT(flags, 7);
|
||||
fAutoMin = GETBIT(flags, 0);
|
||||
fAutoMax = GETBIT(flags, 1);
|
||||
fAutoMajor = GETBIT(flags, 2);
|
||||
fAutoMinor = GETBIT(flags, 3);
|
||||
|
||||
fDateAxis = GETBIT(flags, 4);
|
||||
fAutoBase = GETBIT(flags, 5);
|
||||
fAutoCross = GETBIT(flags, 6);
|
||||
fAutoDate = GETBIT(flags, 7);
|
||||
}
|
||||
|
||||
int AxcExt::serialize(std::wostream & _stream)
|
||||
{
|
||||
if (fDateAxis == false) return 0;
|
||||
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
if (fAutoMax == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:max")
|
||||
{
|
||||
CP_XML_ATTR(L"val", catMax);
|
||||
}
|
||||
}
|
||||
if (fAutoMin == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:min")
|
||||
{
|
||||
CP_XML_ATTR(L"val", catMin);
|
||||
}
|
||||
}
|
||||
std::wstring DateUnit[] = {L"days", L"months", L"years"};
|
||||
|
||||
if ( fAutoMajor == false )
|
||||
{
|
||||
CP_XML_NODE(L"c:majorUnit")
|
||||
{
|
||||
CP_XML_ATTR(L"val", catMajor);
|
||||
}
|
||||
}
|
||||
if ( fAutoMinor == false )
|
||||
{
|
||||
CP_XML_NODE(L"c:minorUnit")
|
||||
{
|
||||
CP_XML_ATTR(L"val", catMinor);
|
||||
}
|
||||
}
|
||||
if ( fAutoBase == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:baseTimeUnit")
|
||||
{
|
||||
CP_XML_ATTR(L"val", DateUnit[duBase]);
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"c:majorTimeUnit")
|
||||
{
|
||||
CP_XML_ATTR(L"val", DateUnit[duMajor]);
|
||||
}
|
||||
CP_XML_NODE(L"c:minorTimeUnit")
|
||||
{
|
||||
CP_XML_ATTR(L"val", DateUnit[duMinor]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,6 +22,8 @@ public:
|
||||
|
||||
static const ElementType type = typeAxcExt;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD catMin;
|
||||
BIFF_WORD catMax;
|
||||
@ -32,14 +34,14 @@ public:
|
||||
BIFF_WORD duBase;
|
||||
BIFF_WORD catCrossDate;
|
||||
|
||||
BIFF_BOOL fAutoMin;
|
||||
BIFF_BOOL fAutoMax;
|
||||
BIFF_BOOL fAutoMajor;
|
||||
BIFF_BOOL fAutoMinor;
|
||||
BIFF_BOOL fDateAxis;
|
||||
BIFF_BOOL fAutoBase;
|
||||
BIFF_BOOL fAutoCross;
|
||||
BIFF_BOOL fAutoDate;
|
||||
bool fAutoMin;
|
||||
bool fAutoMax;
|
||||
bool fAutoMajor;
|
||||
bool fAutoMinor;
|
||||
bool fDateAxis;
|
||||
bool fAutoBase;
|
||||
bool fAutoCross;
|
||||
bool fAutoDate;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ void BRAI::readFields(CFRecord& record)
|
||||
fUnlinkedIfmt = static_cast<unsigned char>(GETBIT(flags, 0));
|
||||
record >> ifmt;
|
||||
formula.load(record);
|
||||
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
|
||||
#include <Logic/Biff_structures/ChartParsedFormula.h>
|
||||
#include <Logic/Biff_structures/CellRangeRef.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -24,12 +26,12 @@ public:
|
||||
static const ElementType type = typeBRAI;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BYTE id;
|
||||
BIFF_BYTE rt;
|
||||
BIFF_BOOL fUnlinkedIfmt;
|
||||
IFmt ifmt;
|
||||
BIFF_BYTE id;
|
||||
BIFF_BYTE rt;
|
||||
BIFF_BOOL fUnlinkedIfmt;
|
||||
IFmt ifmt;
|
||||
|
||||
ChartParsedFormula formula;
|
||||
ChartParsedFormula formula; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -24,11 +24,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
Boolean<unsigned short> fBackup;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fBackup)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
#include "Bar.h"
|
||||
#include "Chart3d.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -35,10 +36,63 @@ void Bar::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> pcOverlap >> pcGap >> flags;
|
||||
fTranspose = GETBIT(flags, 0);
|
||||
fStacked = GETBIT(flags, 1);
|
||||
f100 = GETBIT(flags, 2);
|
||||
fHasShadow = GETBIT(flags, 3);
|
||||
|
||||
fTranspose = GETBIT(flags, 0);
|
||||
fStacked = GETBIT(flags, 1);
|
||||
f100 = GETBIT(flags, 2);
|
||||
fHasShadow = GETBIT(flags, 3);
|
||||
}
|
||||
|
||||
int Bar::serialize(std::wostream & _stream)
|
||||
{
|
||||
Chart3d *chart3D = dynamic_cast<Chart3d *>(m_chart3D.get());
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:barDir")
|
||||
{
|
||||
if (fTranspose) CP_XML_ATTR (L"val" , L"bar");
|
||||
else CP_XML_ATTR (L"val" , L"col");
|
||||
}
|
||||
if (fStacked || f100)
|
||||
{
|
||||
CP_XML_NODE(L"c:grouping")
|
||||
{
|
||||
if (f100) CP_XML_ATTR (L"val" , L"percentStacked");
|
||||
else if (fStacked) CP_XML_ATTR (L"val" , L"stacked");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:grouping")
|
||||
{
|
||||
if ((chart3D) && (chart3D->fCluster))
|
||||
CP_XML_ATTR (L"val" , L"clustered");
|
||||
else
|
||||
CP_XML_ATTR (L"val" , L"standard");
|
||||
}
|
||||
}
|
||||
|
||||
CP_XML_NODE(L"c:gapWidth")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , pcGap);
|
||||
}
|
||||
if (!chart3D && pcOverlap != 0)
|
||||
{
|
||||
CP_XML_NODE(L"c:overlap")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , -pcOverlap);
|
||||
}
|
||||
}
|
||||
|
||||
if ((chart3D) && (chart3D->pcGap != 150))
|
||||
{
|
||||
CP_XML_NODE(L"c:gapDepth")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , chart3D->pcGap);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,25 +22,17 @@ public:
|
||||
|
||||
static const ElementType type = typeBar;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_SHORT pcOverlap;
|
||||
BIFF_WORD pcGap;
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_BOOL fTranspose;
|
||||
BIFF_BOOL fStacked;
|
||||
BIFF_BOOL f100;
|
||||
BIFF_BOOL fHasShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcOverlap)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcGap)
|
||||
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fTranspose)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fStacked)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(f100)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
BIFF_SHORT pcOverlap;
|
||||
BIFF_WORD pcGap;
|
||||
|
||||
BIFF_BOOL fTranspose;
|
||||
BIFF_BOOL fStacked;
|
||||
BIFF_BOOL f100;
|
||||
BIFF_BOOL fHasShadow;
|
||||
//------------------------------------
|
||||
BaseObjectPtr m_chart3D;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#include "Blank.h"
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#include "BoolErr.h"
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
#include "BopPop.h"
|
||||
#include "BopPopCustom.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -35,5 +36,64 @@ void BopPop::readFields(CFRecord& record)
|
||||
fHasShadow = GETBIT(flags, 0);
|
||||
}
|
||||
|
||||
int BopPop::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:ofPieType")
|
||||
{
|
||||
if (pst == (unsigned char)1) CP_XML_ATTR (L"val" , L"pie");
|
||||
else CP_XML_ATTR (L"val" , L"bar");
|
||||
}
|
||||
CP_XML_NODE(L"c:gapWidth")
|
||||
{
|
||||
CP_XML_ATTR (L"val", pcGap);
|
||||
}
|
||||
CP_XML_NODE(L"c:splitType")
|
||||
{
|
||||
switch(split)
|
||||
{
|
||||
case 0: CP_XML_ATTR (L"val" , L"pos"); break;
|
||||
case 1: CP_XML_ATTR (L"val" , L"val"); break;
|
||||
case 2: CP_XML_ATTR (L"val" , L"percent"); break;
|
||||
case 3: CP_XML_ATTR (L"val" , L"cust"); break;
|
||||
default:
|
||||
CP_XML_ATTR (L"val" , L"auto"); break;
|
||||
}
|
||||
}
|
||||
|
||||
if (fAutoSplit == (unsigned char)0)
|
||||
{
|
||||
CP_XML_NODE(L"c:splitPos")
|
||||
{
|
||||
CP_XML_ATTR (L"val", iSplitPos);
|
||||
}
|
||||
}
|
||||
//if (split == 2)
|
||||
// CP_XML_ATTR (L"val", pcSplitPercent);
|
||||
//else
|
||||
// CP_XML_ATTR (L"val", numSplitValue);
|
||||
|
||||
BopPopCustom * custom = dynamic_cast<BopPopCustom *>(m_Custom.get());
|
||||
if (split == (_UINT16)3 && custom)
|
||||
{
|
||||
CP_XML_NODE(L"c:custSplit")
|
||||
{
|
||||
for (int i = 0 ; i < custom->rggrbit.pie_indices.size(); i++)
|
||||
{
|
||||
CP_XML_NODE(L"c:secondPiePt")
|
||||
{
|
||||
CP_XML_ATTR (L"val", custom->rggrbit.pie_indices[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"c:secondPieSize")
|
||||
{
|
||||
CP_XML_ATTR (L"val", pcPie2Size);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,6 +22,8 @@ public:
|
||||
|
||||
static const ElementType type = typeBopPop;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BYTE pst;
|
||||
Boolean<unsigned char> fAutoSplit;
|
||||
|
||||
@ -24,11 +24,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
Boolean<unsigned short> fSaveRecalc;
|
||||
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fSaveRecalc)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -25,7 +25,7 @@ void CatSerRange::writeFields(CFRecord& record)
|
||||
unsigned short flags = 0;
|
||||
SETBIT(flags, 0, fBetween);
|
||||
SETBIT(flags, 1, fMaxCross);
|
||||
SETBIT(flags, 2, fReverse);
|
||||
SETBIT(flags, 2, fReversed);
|
||||
|
||||
record << catCross << catLabel << catMark << flags;
|
||||
}
|
||||
@ -38,7 +38,7 @@ void CatSerRange::readFields(CFRecord& record)
|
||||
|
||||
fBetween = GETBIT(flags, 0);
|
||||
fMaxCross = GETBIT(flags, 1);
|
||||
fReverse = GETBIT(flags, 2);
|
||||
fReversed = GETBIT(flags, 2);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -26,19 +26,10 @@ public:
|
||||
BIFF_SHORT catCross;
|
||||
BIFF_SHORT catLabel;
|
||||
BIFF_SHORT catMark;
|
||||
|
||||
BIFF_BOOL fBetween;
|
||||
BIFF_BOOL fMaxCross;
|
||||
BIFF_BOOL fReverse;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(catCross)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(catLabel)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(catMark)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fBetween)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fMaxCross)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fReverse)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
BIFF_BOOL fReversed;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -29,6 +29,12 @@ void Chart::writeFields(CFRecord& record)
|
||||
void Chart::readFields(CFRecord& record)
|
||||
{
|
||||
record >> x >> y >> dx >> dy;
|
||||
|
||||
GlobalWorkbookInfoPtr pGlobalWorkbookInfoPtr = record.getGlobalWorkbookInfo();
|
||||
|
||||
pGlobalWorkbookInfoPtr->currentChartWidth = dx.Integral + dx.Fractional / 65536.;
|
||||
pGlobalWorkbookInfoPtr->currentChartHeight = dy.Integral + dy.Fractional / 65536.;
|
||||
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -26,6 +26,7 @@ public:
|
||||
//-----------------------------
|
||||
OSHARED::FixedPoint x;
|
||||
OSHARED::FixedPoint y;
|
||||
|
||||
OSHARED::FixedPoint dx;
|
||||
OSHARED::FixedPoint dy;
|
||||
|
||||
|
||||
@ -31,5 +31,28 @@ void Chart3DBarShape::readFields(CFRecord& record)
|
||||
record >> riser >> taper;
|
||||
}
|
||||
|
||||
int Chart3DBarShape::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:shape")
|
||||
{
|
||||
if (taper >=0 && taper < 3 && riser == (unsigned char)0)
|
||||
{
|
||||
switch(taper)
|
||||
{
|
||||
case 0: CP_XML_ATTR(L"val", L"box"); break;
|
||||
case 1: CP_XML_ATTR(L"val", L"pyramid"); break;
|
||||
case 2: CP_XML_ATTR(L"val", L"pyramidToMax");break;
|
||||
}
|
||||
}
|
||||
else
|
||||
CP_XML_ATTR(L"val", L"cylinder");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -20,16 +20,13 @@ public:
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
static const ElementType type = typeChart3DBarShape;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BYTE riser;
|
||||
BIFF_BYTE taper;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(riser)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(taper)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -36,22 +36,6 @@ public:
|
||||
BIFF_BOOL fNotPieChart;
|
||||
BIFF_BOOL fWalls2D;
|
||||
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(anRot)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(anElev)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcDist)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcHeight)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcDepth)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcGap)
|
||||
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPerspective)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fCluster)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(f3DScaling)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fNotPieChart)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fWalls2D)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -34,8 +34,21 @@ void ChartFormat::readFields(CFRecord& record)
|
||||
record.skipNunBytes(16); // reserved
|
||||
unsigned short flags;
|
||||
record >> flags >> icrt;
|
||||
|
||||
fVaried = GETBIT(flags, 0);
|
||||
}
|
||||
|
||||
int ChartFormat::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:varyColors")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fVaried);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,15 +22,10 @@ public:
|
||||
|
||||
static const ElementType type = typeChartFormat;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
//-----------------------------
|
||||
BIFF_BOOL fVaried;
|
||||
BIFF_WORD icrt;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fVaried)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(icrt)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -24,11 +24,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
Boolean<unsigned int> fNoCompatChk;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fNoCompatChk)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -24,11 +24,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
Boolean<unsigned int> fAutoCompressPictures;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAutoCompressPictures)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -6,6 +6,7 @@ namespace XLS
|
||||
|
||||
CrtLine::CrtLine()
|
||||
{
|
||||
m_iChartType = -1;
|
||||
}
|
||||
|
||||
|
||||
@ -31,5 +32,56 @@ void CrtLine::readFields(CFRecord& record)
|
||||
record >> id;
|
||||
}
|
||||
|
||||
int CrtLine::serialize(std::wostream & _stream)
|
||||
{
|
||||
std::wstring sNode;
|
||||
switch (id)
|
||||
{
|
||||
case 0: sNode = L"c:dropLines"; break; //m_iChartType == 2 || m_iChartType == 3 (line & area & stock)
|
||||
case 1: sNode = L"c:hiLowLines"; break; // m_iChartType == 2, 11 (line & stock)
|
||||
case 2: sNode = L"c:serLines"; break; // m_iChartType == 1 || m_iChartType == 8 (bar & ofPie)
|
||||
case 3: sNode = L"c:leaderLines"; break; // m_iChartType == 3 (pie)
|
||||
}
|
||||
if (sNode.empty())
|
||||
return 0;
|
||||
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(sNode)
|
||||
{
|
||||
CP_XML_NODE(L"c:spPr")
|
||||
{
|
||||
if (m_LineFormat)
|
||||
m_LineFormat->serialize(CP_XML_STREAM());
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"a:ln")
|
||||
{
|
||||
CP_XML_ATTR(L"w", 3175);
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , L"000000");
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"a:prstDash")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , L"solid");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_iChartType == 2)
|
||||
{
|
||||
CP_XML_NODE(L"c:marker") { CP_XML_ATTR (L"val" , L"1"); }
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,9 +22,14 @@ public:
|
||||
|
||||
static const ElementType type = typeCrtLine;
|
||||
|
||||
//-----------------------------
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_WORD id;
|
||||
BaseObjectPtr m_LineFormat;
|
||||
|
||||
//-----------------------------
|
||||
|
||||
int m_iChartType;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,7 +32,13 @@ void CrtMlFrt::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### CrtMlFrt record is not implemented")
|
||||
Log::error("CrtMlFrt record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record >> cb;
|
||||
//
|
||||
// if (cb > 0)
|
||||
// {
|
||||
// //XmlTkChain
|
||||
// }
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -23,11 +23,8 @@ public:
|
||||
static const ElementType type = typeCrtMlFrt;
|
||||
|
||||
//-----------------------------
|
||||
// BIFF_WORD userName;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
// //BO_ATTRIB_MARKUP_ATTRIB(userName)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
BIFF_DWORD cb;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -22,19 +22,10 @@ public:
|
||||
|
||||
static const ElementType type = typeDataFormat;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD xi;
|
||||
BIFF_WORD yi;
|
||||
BIFF_WORD iss;
|
||||
BIFF_BOOL fUnknown;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(xi)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(yi)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(iss)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fUnknown)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -7,6 +7,7 @@ namespace XLS
|
||||
|
||||
DataLabExtContents::DataLabExtContents()
|
||||
{
|
||||
is_area = false;
|
||||
}
|
||||
|
||||
|
||||
@ -45,11 +46,57 @@ void DataLabExtContents::readFields(CFRecord& record)
|
||||
unsigned short flags;
|
||||
record >> flags >> rgchSep;
|
||||
|
||||
fSerName = GETBIT(flags, 0);
|
||||
fCatName = GETBIT(flags, 1);
|
||||
fValue = GETBIT(flags, 2);
|
||||
fPercent = GETBIT(flags, 3);
|
||||
fBubSizes = GETBIT(flags, 4);
|
||||
fSerName = GETBIT(flags, 0);
|
||||
fCatName = GETBIT(flags, 1);
|
||||
fValue = GETBIT(flags, 2);
|
||||
fPercent = GETBIT(flags, 3);
|
||||
fBubSizes = GETBIT(flags, 4);
|
||||
}
|
||||
|
||||
int DataLabExtContents::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:showVal")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fValue);
|
||||
}
|
||||
CP_XML_NODE(L"c:showPercent")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fPercent);
|
||||
}
|
||||
CP_XML_NODE(L"c:showBubbleSize")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fBubSizes);
|
||||
}
|
||||
|
||||
if (rgchSep.value().empty() == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:separator")
|
||||
{
|
||||
CP_XML_STREAM() << rgchSep.value();
|
||||
}
|
||||
}
|
||||
if (is_area == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:showCatName")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fCatName);
|
||||
}
|
||||
CP_XML_NODE(L"c:showSerName") { CP_XML_ATTR (L"val" , 0); }
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:showCatName") { CP_XML_ATTR (L"val" , 0); }
|
||||
CP_XML_NODE(L"c:showSerName")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , fSerName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -23,7 +23,7 @@ public:
|
||||
|
||||
static const ElementType type = typeDataLabExtContents;
|
||||
|
||||
//-----------------------------
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_BOOL fSerName;
|
||||
BIFF_BOOL fCatName;
|
||||
@ -33,17 +33,9 @@ public:
|
||||
|
||||
XLUnicodeStringMin2 rgchSep;
|
||||
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fSerName)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fCatName)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fValue)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPercent)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fBubSizes)
|
||||
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(rgchSep)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
//-----------------------------
|
||||
|
||||
bool is_area;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -2,8 +2,6 @@
|
||||
#include "Dimensions.h"
|
||||
#include <Logic/Biff_structures/CellRangeRef.h>
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -22,13 +22,7 @@ public:
|
||||
|
||||
static const ElementType type = typeDropBar;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_SHORT pcGap;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcGap)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "Font.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
const static std::wstring shemeColor[17] =
|
||||
@ -75,26 +73,33 @@ void Font::set_color_ext(FillInfoExt & color_ext_)
|
||||
{
|
||||
color_ext = color_ext_;
|
||||
}
|
||||
int Font::serialize_rPr(std::wostream & stream)
|
||||
int Font::serialize_rPr(std::wostream & stream, bool rtl, bool defRPr)
|
||||
{
|
||||
CP_XML_WRITER(stream)
|
||||
{
|
||||
CP_XML_NODE(L"a:rPr")
|
||||
std::wstring strRpr = L"a:rPr";
|
||||
if (defRPr)strRpr = L"a:defRPr";
|
||||
|
||||
CP_XML_NODE(strRpr)
|
||||
{
|
||||
if (dyHeight.value())
|
||||
{
|
||||
CP_XML_ATTR(L"sz", dyHeight/20 * 100);
|
||||
CP_XML_ATTR(L"sz", (int)(dyHeight/20. * 100));
|
||||
|
||||
}
|
||||
if ((bls.value()) && (*bls.value() == 700))
|
||||
{
|
||||
CP_XML_ATTR(L"b", true);
|
||||
}
|
||||
else
|
||||
CP_XML_ATTR(L"b", false);
|
||||
|
||||
if ((fItalic.value()) && (fItalic))
|
||||
{
|
||||
CP_XML_ATTR(L"i", fItalic);
|
||||
}
|
||||
else
|
||||
CP_XML_ATTR(L"i", false);
|
||||
//if (bCharSet.value())
|
||||
//{
|
||||
// CP_XML_NODE(L"charset")
|
||||
@ -119,58 +124,80 @@ int Font::serialize_rPr(std::wostream & stream)
|
||||
// CP_XML_ATTR(L"val", fExtend);
|
||||
// }
|
||||
// }
|
||||
//if (!fontName.value().empty())
|
||||
//{
|
||||
// CP_XML_ATTR(L"typeface", fontName.value());
|
||||
//}
|
||||
|
||||
if (((icv.value()) && (icv < 0x7fff)) || color_ext.enabled )
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
if (color_ext.enabled )
|
||||
{
|
||||
if (color_ext.enabled )
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
switch(color_ext.xclrType)
|
||||
{
|
||||
case 0://auto
|
||||
/*CP_XML_ATTR(L"auto");*/ break;
|
||||
case 1://indexed
|
||||
CP_XML_NODE(L"a:schemeClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", color_ext.icv); break;
|
||||
}
|
||||
case 2://rgb
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", STR::toRGB(color_ext.xclrValue));
|
||||
}break;
|
||||
case 3://theme color
|
||||
CP_XML_NODE(L"a:schemeClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", color_ext.xclrValue + 1);
|
||||
CP_XML_NODE(L"tint")
|
||||
case 0://auto
|
||||
/*CP_XML_ATTR(L"auto");*/ break;
|
||||
case 1://indexed
|
||||
CP_XML_NODE(L"a:schemeClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", color_ext.nTintShade / 32767.0);
|
||||
}
|
||||
}break;
|
||||
case 4://not set
|
||||
break;
|
||||
CP_XML_ATTR(L"val", color_ext.icv); break;
|
||||
}
|
||||
case 2://rgb
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", STR::toRGB(color_ext.xclrValue));
|
||||
}break;
|
||||
case 3://theme color
|
||||
CP_XML_NODE(L"a:schemeClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", color_ext.xclrValue + 1);
|
||||
CP_XML_NODE(L"tint")
|
||||
{
|
||||
CP_XML_ATTR(L"val", color_ext.nTintShade / 32767.0);
|
||||
}
|
||||
}break;
|
||||
case 4://not set
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstring strColor;
|
||||
|
||||
std::map<int, std::wstring>::iterator it = global_info->colors_palette.find(icv);
|
||||
|
||||
if (it != global_info->colors_palette.end()) strColor = it->second;
|
||||
else if ( icv < 64) strColor = DefaultPalette[icv].substr(2);
|
||||
|
||||
if (!strColor.empty())
|
||||
{
|
||||
std::map<int, std::wstring>::iterator it = global_info->colors_palette.find(icv);
|
||||
if (it != global_info->colors_palette.end())
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", it->second);
|
||||
}
|
||||
CP_XML_ATTR(L"val", strColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!fontName.value().empty())
|
||||
{
|
||||
CP_XML_NODE(L"a:latin")
|
||||
{
|
||||
CP_XML_ATTR(L"typeface", fontName.value());
|
||||
}
|
||||
CP_XML_NODE(L"a:ea")
|
||||
{
|
||||
CP_XML_ATTR(L"typeface", fontName.value());
|
||||
}
|
||||
CP_XML_NODE(L"a:cs")
|
||||
{
|
||||
CP_XML_ATTR(L"typeface", fontName.value());
|
||||
}
|
||||
}
|
||||
if (rtl)
|
||||
{
|
||||
CP_XML_NODE(L"a:rtl");
|
||||
}
|
||||
//if ((fOutline.value()) && (fOutline))
|
||||
// {
|
||||
// CP_XML_NODE(L"outline")
|
||||
|
||||
@ -26,7 +26,7 @@ public:
|
||||
|
||||
int serialize (std::wostream & stream);
|
||||
int serialize_properties (std::wostream & stream, bool rPr = false);
|
||||
int serialize_rPr (std::wostream & stream);
|
||||
int serialize_rPr (std::wostream & stream, bool rtl = false, bool defRPr = false);
|
||||
|
||||
void set_color_ext (FillInfoExt & color_ext);
|
||||
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "Format.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -24,11 +24,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD ifmt;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(ifmt)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -27,13 +27,6 @@ public:
|
||||
//-----------------------------
|
||||
Cell cell;
|
||||
XLUnicodeString st;
|
||||
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_COMPLEX(cell)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(st)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
#include "LabelSst.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
extern int cellStyleXfs_count;
|
||||
|
||||
@ -41,11 +41,80 @@ void Legend::readFields(CFRecord& record)
|
||||
record.skipNunBytes(1); // unused
|
||||
record >> wSpace >> flags;
|
||||
|
||||
fAutoPosition = GETBIT(flags, 0);
|
||||
fAutoPosX = GETBIT(flags, 2);
|
||||
fAutoPosY = GETBIT(flags, 3);
|
||||
fVert = GETBIT(flags, 4);
|
||||
fWasDataTable = GETBIT(flags, 5);
|
||||
fAutoPosition = GETBIT(flags, 0);
|
||||
fAutoPosX = GETBIT(flags, 2);
|
||||
fAutoPosY = GETBIT(flags, 3);
|
||||
fVert = GETBIT(flags, 4);
|
||||
|
||||
fWasDataTable = GETBIT(flags, 5);
|
||||
}
|
||||
|
||||
int Legend::serialize(std::wostream & _stream, int size)
|
||||
{
|
||||
double x1Kf = x / 4000.;
|
||||
double y1Kf = y / 4000.;
|
||||
|
||||
double x2Kf = (4000 - dx - x) / 4000.;
|
||||
double y2Kf = (4000 - dy - y) / 4000.;
|
||||
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
if (fAutoPosX && fAutoPosY)
|
||||
{
|
||||
CP_XML_NODE(L"c:legendPos")
|
||||
{
|
||||
if (y1Kf > 0.5)
|
||||
{
|
||||
CP_XML_ATTR(L"val", "b");
|
||||
x = x - (size - 1 ) * dx / 2;
|
||||
dx = dx * size;
|
||||
}
|
||||
else if (x1Kf > 0.5)
|
||||
{
|
||||
CP_XML_ATTR(L"val", "r");
|
||||
y = y - (size - 1 ) * dy / 2;
|
||||
dy = dy * size;
|
||||
}
|
||||
else if (x2Kf > 0.5)
|
||||
{
|
||||
CP_XML_ATTR(L"val", "l");
|
||||
y = y - (size - 1 ) * dy / 2;
|
||||
dy = dy * size;
|
||||
}
|
||||
else if (y2Kf > 0.5)
|
||||
{
|
||||
CP_XML_ATTR(L"val", "t");
|
||||
x = x - (size - 1 ) * dx / 2;
|
||||
dx = dx * size;
|
||||
}
|
||||
else
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CP_XML_ATTR(L"val", "l");
|
||||
dy = dy * size;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:layout")
|
||||
{
|
||||
CP_XML_NODE(L"c:manualLayout")
|
||||
{
|
||||
CP_XML_NODE(L"c:xMode") {CP_XML_ATTR(L"val", L"edge");}
|
||||
CP_XML_NODE(L"c:yMode") {CP_XML_ATTR(L"val", L"edge");}
|
||||
|
||||
if (fAutoPosX == false) CP_XML_NODE(L"c:x") {CP_XML_ATTR(L"val", x / 4000.);}
|
||||
if (fAutoPosY == false) CP_XML_NODE(L"c:y") {CP_XML_ATTR(L"val", y / 4000.);}
|
||||
|
||||
if (fAutoPosX == false) CP_XML_NODE(L"c:w") {CP_XML_ATTR(L"val", (dx )/ 4000.);}
|
||||
if (fAutoPosY == false) CP_XML_NODE(L"c:h") {CP_XML_ATTR(L"val", (dy )/ 4000.);}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -20,6 +20,8 @@ public:
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
int serialize(std::wostream & _stream, int sz);
|
||||
|
||||
static const ElementType type = typeLegend;
|
||||
|
||||
//-----------------------------
|
||||
@ -34,20 +36,6 @@ public:
|
||||
BIFF_BOOL fAutoPosY;
|
||||
BIFF_BOOL fVert;
|
||||
BIFF_BOOL fWasDataTable;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(x)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(y)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(dx)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(dy)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(wSpace)
|
||||
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAutoPosition)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAutoPosX)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAutoPosY)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fVert)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fWasDataTable)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -22,17 +22,32 @@ BaseObjectPtr LegendException::clone()
|
||||
|
||||
void LegendException::writeFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### LegendException record is not implemented")
|
||||
Log::error("LegendException record is not implemented.");
|
||||
//record << some_value;
|
||||
unsigned short flags = 0;
|
||||
SETBIT(flags, 0, fDelete);
|
||||
SETBIT(flags, 1, fLabel);
|
||||
record << iss << flags;
|
||||
}
|
||||
|
||||
|
||||
void LegendException::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### LegendException record is not implemented")
|
||||
Log::error("LegendException record is not implemented.");
|
||||
//record >> some_value;
|
||||
unsigned short flags;
|
||||
record >> iss >> flags;
|
||||
|
||||
fDelete = GETBIT(flags, 0);
|
||||
fLabel = GETBIT(flags, 1);
|
||||
}
|
||||
int LegendException::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:delete")
|
||||
{
|
||||
CP_XML_ATTR(L"val", fDelete);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -19,12 +19,13 @@ public:
|
||||
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
//-----------------------------
|
||||
// BIFF_WORD userName;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
// //BO_ATTRIB_MARKUP_ATTRIB(userName)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
BIFF_WORD iss;
|
||||
BIFF_BOOL fDelete;
|
||||
BIFF_BOOL fLabel;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -39,5 +39,18 @@ void Line::readFields(CFRecord& record)
|
||||
fHasShadow = GETBIT(flags, 2);
|
||||
}
|
||||
|
||||
int Line::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:grouping")
|
||||
{
|
||||
if (fStacked) CP_XML_ATTR (L"val" , L"stacked");
|
||||
else if (f100) CP_XML_ATTR (L"val" , L"percentStacked");
|
||||
else CP_XML_ATTR (L"val" , L"standard");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,16 +22,12 @@ public:
|
||||
|
||||
static const ElementType type = typeLine;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BOOL fStacked;
|
||||
BIFF_BOOL f100;
|
||||
BIFF_BOOL fHasShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fStacked)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(f100)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -34,10 +34,56 @@ void LineFormat::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> rgb >> lns >> we >> flags >> icv;
|
||||
|
||||
fAuto = GETBIT(flags, 0);
|
||||
fAxisOn = GETBIT(flags, 2);
|
||||
fAutoCo = GETBIT(flags, 3);
|
||||
}
|
||||
|
||||
int LineFormat::serialize(std::wostream & _stream)
|
||||
{
|
||||
if ( lns == (_UINT16) 5 ) return 0; //none
|
||||
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"a:ln")
|
||||
{
|
||||
switch(we)
|
||||
{
|
||||
case 0xFFFF: CP_XML_ATTR(L"w", 3175); break; //Hairline
|
||||
case 0: CP_XML_ATTR(L"w", 12700); break; //single
|
||||
case 1: CP_XML_ATTR(L"w", 25400); break; //double
|
||||
case 2: CP_XML_ATTR(L"w", 38100); break; //triple
|
||||
}
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", rgb.strRGB);
|
||||
}
|
||||
}
|
||||
|
||||
CP_XML_NODE(L"a:prstDash")
|
||||
{
|
||||
switch(lns)
|
||||
{
|
||||
case 1: CP_XML_ATTR(L"val", L"dash"); break; //Dash
|
||||
case 2: CP_XML_ATTR(L"val", L"dot"); break; //Dot
|
||||
case 3: CP_XML_ATTR(L"val", L"dashDot"); break; //Dash-dot
|
||||
case 4: CP_XML_ATTR(L"val", L"sysDashDotDot"); break; //Dash dot-dot
|
||||
case 0:
|
||||
default:CP_XML_ATTR(L"val", L"solid"); break; //Solid
|
||||
}
|
||||
}
|
||||
switch(lns)
|
||||
{
|
||||
case 6: break; //Dark gray pattern
|
||||
case 7: break; //Medium gray pattern
|
||||
case 8: break; //Light gray patternn
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -20,25 +20,16 @@ public:
|
||||
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
//-----------------------------
|
||||
LongRGB rgb;
|
||||
BIFF_WORD lns;
|
||||
BIFF_SHORT we;
|
||||
BIFF_WORD we;
|
||||
BIFF_BOOL fAuto;
|
||||
BIFF_BOOL fAxisOn;
|
||||
BIFF_BOOL fAutoCo;
|
||||
IcvChart icv;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_COMPLEX(rgb)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(lns)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(we)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAuto)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAxisOn)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAutoCo)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(icv)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
IcvChart icv;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -49,37 +49,6 @@ public:
|
||||
BIFF_BOOL fCellMeta;
|
||||
|
||||
LPWideString stName;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fGhostRow)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fGhostCol)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fEdit)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fDelete)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fCopy)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteAll)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteFormulas)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteValues)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteFormats)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteComments)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteDataValidation)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteBorders)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteColWidths)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPasteNumberFormats)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fMerge)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fSplitFirst)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fSplitAll)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fRowColShift)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fClearAll)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fClearFormats)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fClearContents)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fClearComments)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAssign)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fCoerce)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAdjust)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fCellMeta)
|
||||
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(stName)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -29,15 +29,70 @@ void MarkerFormat::writeFields(CFRecord& record)
|
||||
record << rgbFore << rgbBack << imk << flags << icvFore << icvBack << miSize;
|
||||
}
|
||||
|
||||
|
||||
void MarkerFormat::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> rgbFore >> rgbBack >> imk >> flags >> icvFore >> icvBack >> miSize;
|
||||
fAuto = GETBIT(flags, 0);
|
||||
|
||||
fAuto = GETBIT(flags, 0);
|
||||
fNotShowInt = GETBIT(flags, 4);
|
||||
fNotShowBrd = GETBIT(flags, 5);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
int MarkerFormat::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:marker")
|
||||
{
|
||||
CP_XML_NODE(L"c:symbol")
|
||||
{
|
||||
std::wstring strSymbol;
|
||||
switch (imk)
|
||||
{
|
||||
case 0x0000: strSymbol = L"none"; break;// No marker.
|
||||
case 0x0001: strSymbol = L"square"; break;// Square markers.
|
||||
case 0x0002: strSymbol = L"diamond"; break;// Diamond-shaped markers.
|
||||
case 0x0003: strSymbol = L"triangle";break;// Triangular markers.
|
||||
case 0x0004: strSymbol = L"x"; break;// Square markers with an X.
|
||||
case 0x0005: strSymbol = L"star"; break;// Square markers with an asterisk.
|
||||
case 0x0006: strSymbol = L"dot"; break;// Short bar markers.
|
||||
case 0x0007: strSymbol = L"dash"; break;// Long bar markers.
|
||||
case 0x0008: strSymbol = L"circle"; break;// Circular markers.
|
||||
case 0x0009: strSymbol = L"plus"; break;// Square markers with a plus sign.
|
||||
}
|
||||
CP_XML_ATTR(L"val", strSymbol);
|
||||
}
|
||||
if (imk > 0)
|
||||
{
|
||||
CP_XML_NODE(L"c:size") { CP_XML_ATTR(L"val", miSize / 20); }
|
||||
CP_XML_NODE(L"c:spPr")
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", rgbBack.strRGB);
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"a:ln")
|
||||
{
|
||||
CP_XML_NODE(L"a:solidFill")
|
||||
{
|
||||
CP_XML_NODE(L"a:srgbClr")
|
||||
{
|
||||
CP_XML_ATTR(L"val", rgbFore.strRGB);
|
||||
}
|
||||
}
|
||||
CP_XML_NODE(L"a:prstDash") { CP_XML_ATTR(L"val", L"solid"); }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -20,29 +20,20 @@ public:
|
||||
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
//-----------------------------
|
||||
LongRGB rgbFore;
|
||||
LongRGB rgbBack;
|
||||
|
||||
BIFF_WORD imk;
|
||||
BIFF_BOOL fAuto;
|
||||
BIFF_BOOL fNotShowInt;
|
||||
BIFF_BOOL fNotShowBrd;
|
||||
|
||||
IcvChart icvFore;
|
||||
IcvChart icvBack;
|
||||
BIFF_DWORD miSize;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_COMPLEX(rgbFore)
|
||||
//BO_ATTRIB_MARKUP_COMPLEX(rgbBack)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(imk)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAuto)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fNotShowInt)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fNotShowBrd)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(icvFore)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(icvBack)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(miSize)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "MergeCells.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
#include "MulBlank.h"
|
||||
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#include "MulRk.h"
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
#include "Number.h"
|
||||
#include <Auxiliary/HelpFunc.h>
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -29,9 +29,9 @@ public:
|
||||
const CellRef getLocation() const;
|
||||
|
||||
//-----------------------------
|
||||
CellOffsetResender resender;
|
||||
Cell cell;
|
||||
BIFF_DOUBLE num;
|
||||
CellOffsetResender resender;
|
||||
Cell cell;
|
||||
BIFF_DOUBLE num;
|
||||
|
||||
|
||||
};
|
||||
|
||||
@ -29,6 +29,11 @@ void ObjectLink::writeFields(CFRecord& record)
|
||||
void ObjectLink::readFields(CFRecord& record)
|
||||
{
|
||||
record >> wLinkObj >> wLinkVar1 >> wLinkVar2;
|
||||
|
||||
//--------------------------------------------------
|
||||
testLinkObj = wLinkObj;
|
||||
testLinkVar1= wLinkVar1;
|
||||
testLinkVar2= wLinkVar2;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -26,6 +26,12 @@ public:
|
||||
BIFF_WORD wLinkVar1;
|
||||
BIFF_WORD wLinkVar2;
|
||||
|
||||
//-------------------------------
|
||||
|
||||
int testLinkObj;
|
||||
int testLinkVar1;
|
||||
int testLinkVar2;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
|
||||
#include "Palette.h"
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -62,9 +61,7 @@ void Palette::readFields(CFRecord& record)
|
||||
record >> *rgb;
|
||||
rgColor.push_back(rgb);
|
||||
|
||||
std::wstring rgb_color = STR::toRGB(rgb->red, rgb->green, rgb->blue);
|
||||
|
||||
global_info->RegisterPaletteColor(i+8, rgb_color);
|
||||
global_info->RegisterPaletteColor(i+8, rgb->strRGB);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,7 +86,7 @@ int Palette::serialize(std::wostream & stream)
|
||||
LongRGB * rgb = dynamic_cast<LongRGB *>(rgColor[i].get());
|
||||
CP_XML_NODE(L"rgbColor")
|
||||
{
|
||||
CP_XML_ATTR(L"rgb", rgb->argb);
|
||||
CP_XML_ATTR(L"rgb", rgb->strARGB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ void Pie::writeFields(CFRecord& record)
|
||||
unsigned short flags = 0;
|
||||
SETBIT(flags, 0, fHasShadow);
|
||||
SETBIT(flags, 1, fShowLdrLines);
|
||||
|
||||
record >> anStart >> pcDonut >> flags;
|
||||
}
|
||||
|
||||
@ -33,9 +34,33 @@ void Pie::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> anStart >> pcDonut >> flags;
|
||||
|
||||
fHasShadow = GETBIT(flags, 0);
|
||||
fShowLdrLines = GETBIT(flags, 1);
|
||||
}
|
||||
|
||||
int Pie::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
if (anStart > 0)
|
||||
{
|
||||
CP_XML_NODE(L"c:firstSliceAng")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , anStart);
|
||||
}
|
||||
}
|
||||
if (pcDonut > 0 && pcDonut != 10)
|
||||
{
|
||||
CP_XML_NODE(L"c:holeSize")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , pcDonut);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,19 +22,13 @@ public:
|
||||
|
||||
static const ElementType type = typePie;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD anStart;
|
||||
BIFF_WORD pcDonut;
|
||||
BIFF_BOOL fHasShadow;
|
||||
BIFF_BOOL fShowLdrLines;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(anStart)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcDonut)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowLdrLines)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -31,5 +31,17 @@ void PieFormat::readFields(CFRecord& record)
|
||||
record >> pcExplode;
|
||||
}
|
||||
|
||||
int PieFormat::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:explosion")
|
||||
{
|
||||
CP_XML_ATTR(L"val", pcExplode);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,12 +22,9 @@ public:
|
||||
|
||||
static const ElementType type = typePieFormat;
|
||||
|
||||
//-----------------------------
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_SHORT pcExplode;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcExplode)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -22,10 +22,6 @@ public:
|
||||
|
||||
static const ElementType type = typePlotArea;
|
||||
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
|
||||
#include "Pos.h"
|
||||
#include <simple_xml_writer.h>
|
||||
#include <utils.h>
|
||||
|
||||
namespace XLS
|
||||
@ -8,6 +7,7 @@ namespace XLS
|
||||
|
||||
Pos::Pos()
|
||||
{
|
||||
m_iLinkObject = -1;
|
||||
}
|
||||
|
||||
|
||||
@ -38,6 +38,8 @@ void Pos::writeFields(CFRecord& record)
|
||||
|
||||
void Pos::readFields(CFRecord& record)
|
||||
{
|
||||
pGlobalWorkbookInfoPtr = record.getGlobalWorkbookInfo();
|
||||
|
||||
record >> mdTopLt >> mdBotRt;
|
||||
record >> x1;
|
||||
record.skipNunBytes(2); // unused1
|
||||
@ -51,18 +53,43 @@ void Pos::readFields(CFRecord& record)
|
||||
|
||||
int Pos::serialize(std::wostream & _stream)
|
||||
{
|
||||
double x = x1 / 4000.;
|
||||
double y = y1 / 4000.;
|
||||
|
||||
double w = x2 / 4000.;
|
||||
double h = y2 / 4000.;
|
||||
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:layout")
|
||||
{
|
||||
CP_XML_NODE(L"c:manualLayout")
|
||||
{
|
||||
if (m_iLinkObject == 1) x += 0.5 + (w > 0 ? w : 0);
|
||||
if (m_iLinkObject == 2) x += 0.5 + (w > 0 ? w : 0);
|
||||
if (m_iLinkObject == 3) y += 0 + (h > 0 ? h : 0);
|
||||
|
||||
CP_XML_NODE(L"c:xMode") {CP_XML_ATTR(L"val", L"edge");}
|
||||
CP_XML_NODE(L"c:yMode") {CP_XML_ATTR(L"val", L"edge");}
|
||||
CP_XML_NODE(L"c:x") {CP_XML_ATTR(L"val", (int)(x1 / 4000));}
|
||||
CP_XML_NODE(L"c:y") {CP_XML_ATTR(L"val", (int)(y1 / 4000));}
|
||||
CP_XML_NODE(L"c:w") {CP_XML_ATTR(L"val", (int)((x2 - x1)/ 4000));}
|
||||
CP_XML_NODE(L"c:h") {CP_XML_ATTR(L"val", (int)((y2 - y1)/ 4000));}
|
||||
|
||||
if (x < 0) x = 0;
|
||||
if (y < 0) y = 0;
|
||||
|
||||
CP_XML_NODE(L"c:x") {CP_XML_ATTR(L"val", x);}
|
||||
CP_XML_NODE(L"c:y") {CP_XML_ATTR(L"val", y);}
|
||||
|
||||
if (m_iLinkObject != 1 && m_iLinkObject != 2 && m_iLinkObject != 3) //title, axis title vert, axis title horiz
|
||||
{
|
||||
if (w > 0) CP_XML_NODE(L"c:w") {CP_XML_ATTR(L"val", w);}
|
||||
if (h > 0) CP_XML_NODE(L"c:h") {CP_XML_ATTR(L"val", h);}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_iLinkObject == 1 || m_iLinkObject == 2 || m_iLinkObject == 3)
|
||||
{
|
||||
CP_XML_NODE(L"c:overlay")
|
||||
{
|
||||
CP_XML_ATTR(L"val", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,18 +20,24 @@ public:
|
||||
void writeFields(CFRecord& record);
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
GlobalWorkbookInfoPtr pGlobalWorkbookInfoPtr;
|
||||
|
||||
int serialize(std::wostream & stream_);
|
||||
|
||||
static const ElementType type = typePos;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD mdTopLt;
|
||||
BIFF_WORD mdBotRt;
|
||||
_UINT16 mdTopLt;
|
||||
_UINT16 mdBotRt;
|
||||
|
||||
BIFF_SHORT x1;
|
||||
BIFF_SHORT y1;
|
||||
BIFF_SHORT x2;
|
||||
BIFF_SHORT y2;
|
||||
|
||||
//-----------------------------
|
||||
|
||||
short m_iLinkObject;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#include "RK.h"
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -34,10 +34,25 @@ void Radar::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fRdrAxLab = GETBIT(flags, 0);
|
||||
fHasShadow = GETBIT(flags, 1);
|
||||
|
||||
fRdrAxLab = GETBIT(flags, 0); //in tick
|
||||
fHasShadow = GETBIT(flags, 1);
|
||||
|
||||
record.skipNunBytes(2); // unused
|
||||
}
|
||||
|
||||
int Radar::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:radarStyle")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , L"standard");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,15 +22,11 @@ public:
|
||||
|
||||
static const ElementType type = typeRadar;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BOOL fRdrAxLab;
|
||||
BIFF_BOOL fHasShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fRdrAxLab)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -34,10 +34,25 @@ void RadarArea::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fRdrAxLab = GETBIT(flags, 0);
|
||||
fHasShadow = GETBIT(flags, 1);
|
||||
|
||||
fRdrAxLab = GETBIT(flags, 0); //in tick
|
||||
fHasShadow = GETBIT(flags, 1);
|
||||
|
||||
record.skipNunBytes(2); // unused
|
||||
}
|
||||
|
||||
int RadarArea::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:radarStyle")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , L"filled");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -22,15 +22,11 @@ public:
|
||||
|
||||
static const ElementType type = typeRadarArea;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BOOL fRdrAxLab;
|
||||
BIFF_BOOL fHasShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fRdrAxLab)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,13 +22,6 @@ public:
|
||||
|
||||
static const ElementType type = typeRichTextStream;
|
||||
|
||||
//-----------------------------
|
||||
// BIFF_WORD userName;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
// //BO_ATTRIB_MARKUP_ATTRIB(userName)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "Row.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
|
||||
#include "SIIndex.h"
|
||||
|
||||
#include <Logic/Biff_records/Number.h>
|
||||
#include <Logic/Biff_records/BoolErr.h>
|
||||
#include <Logic/Biff_records/Blank.h>
|
||||
#include <Logic/Biff_records/Label.h>
|
||||
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -31,5 +37,92 @@ void SIIndex::readFields(CFRecord& record)
|
||||
record >> numIndex;
|
||||
}
|
||||
|
||||
int SIIndex::serialize(std::wostream & _stream, int idx, const CellRef & in_ref)
|
||||
{
|
||||
int res = 0;
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
for (int i = 0 ; i < m_arData.size(); i++)
|
||||
{
|
||||
Number * number = dynamic_cast<Number*> (m_arData[i].get());
|
||||
BoolErr * boolErr = dynamic_cast<BoolErr*>(m_arData[i].get());
|
||||
Blank * blank = dynamic_cast<Blank *> (m_arData[i].get());
|
||||
Label * label = dynamic_cast<Label *> (m_arData[i].get());
|
||||
|
||||
if (number)
|
||||
{
|
||||
if (in_ref == number->cell.getLocation())
|
||||
{
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << number->num; }
|
||||
}
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
else if (label)
|
||||
{
|
||||
if (in_ref == label->cell.getLocation())
|
||||
{
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << label->st.value(); }
|
||||
}
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
int SIIndex::serialize(std::wostream & _stream, ChartParsedFormula & in_ref)
|
||||
{
|
||||
int idx = 0;
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
for (int i = 0 ; i < m_arData.size(); i++)
|
||||
{
|
||||
Number * number = dynamic_cast<Number*> (m_arData[i].get());
|
||||
BoolErr * boolErr = dynamic_cast<BoolErr*>(m_arData[i].get());
|
||||
Blank * blank = dynamic_cast<Blank *> (m_arData[i].get());
|
||||
Label * label = dynamic_cast<Label *> (m_arData[i].get());
|
||||
|
||||
if (number)
|
||||
{
|
||||
if (in_ref.inRange(number->cell.getLocation()))
|
||||
{
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << number->num; }
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (label)
|
||||
{
|
||||
if (in_ref.inRange(label->cell.getLocation()))
|
||||
{
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << label->st.value(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{//??
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
m_arData[i]->serialize( CP_XML_STREAM());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
|
||||
#include "BiffRecord.h"
|
||||
|
||||
#include <Logic/Biff_structures/ChartParsedFormula.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -22,6 +24,9 @@ public:
|
||||
|
||||
static const ElementType type = typeSIIndex;
|
||||
|
||||
int serialize(std::wostream & _stream, ChartParsedFormula & in_ref);
|
||||
int serialize(std::wostream & _stream, int idx, const CellRef & in_ref);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD numIndex;
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
#include "SST.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
#include <utils.h>
|
||||
|
||||
namespace XLS
|
||||
|
||||
@ -34,9 +34,42 @@ void Scatter::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> pcBubbleSizeRatio >> wBubbleSize >> flags;
|
||||
fBubbles = GETBIT(flags, 0);
|
||||
|
||||
fBubbles = GETBIT(flags, 0);
|
||||
fShowNegBubbles = GETBIT(flags, 1);
|
||||
fHasShadow = GETBIT(flags, 2);
|
||||
fHasShadow = GETBIT(flags, 2);
|
||||
}
|
||||
|
||||
int Scatter::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
if (fBubbles)
|
||||
{
|
||||
CP_XML_NODE(L"c:bubbleScale")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , pcBubbleSizeRatio);
|
||||
}
|
||||
if (fShowNegBubbles)
|
||||
{
|
||||
CP_XML_NODE(L"c:showNegBubbles") { CP_XML_ATTR (L"val" , L"1"); }
|
||||
}
|
||||
if (wBubbleSize == (_UINT16)2)
|
||||
{
|
||||
CP_XML_NODE(L"c:sizeRepresents") { CP_XML_ATTR (L"val" , L"2"); }
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:scatterStyle")
|
||||
{
|
||||
//CP_XML_ATTR (L"val" , L"smoothMarker");
|
||||
CP_XML_ATTR (L"val" , L"lineMarker");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,20 +22,14 @@ public:
|
||||
|
||||
static const ElementType type = typeScatter;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD pcBubbleSizeRatio;
|
||||
BIFF_WORD wBubbleSize;
|
||||
BIFF_BOOL fBubbles;
|
||||
BIFF_BOOL fShowNegBubbles;
|
||||
BIFF_BOOL fHasShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(pcBubbleSizeRatio)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(wBubbleSize)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fBubbles)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fShowNegBubbles)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fHasShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -25,12 +25,6 @@ public:
|
||||
//-----------------------------
|
||||
BIFF_SHORT nscl;
|
||||
BIFF_SHORT dscl;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(nscl)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(dscl)
|
||||
////BO_ATTRIB_MARKUP_ATTRIB(Fraction)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -34,9 +34,10 @@ void SerFmt::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fSmoothedLine = GETBIT(flags, 0);
|
||||
f3DBubbles = GETBIT(flags, 1);
|
||||
fArShadow = GETBIT(flags, 2);
|
||||
|
||||
fSmoothedLine = GETBIT(flags, 0);
|
||||
f3DBubbles = GETBIT(flags, 1);
|
||||
fArShadow = GETBIT(flags, 2);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -26,13 +26,6 @@ public:
|
||||
BIFF_BOOL fSmoothedLine;
|
||||
BIFF_BOOL f3DBubbles;
|
||||
BIFF_BOOL fArShadow;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fSmoothedLine)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(f3DBubbles)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fArShadow)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -24,11 +24,9 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD series;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(series)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
BaseObjectPtr m_SerAuxTrend;
|
||||
BaseObjectPtr m_SerAuxErrBar;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,16 +22,12 @@ BaseObjectPtr Series::clone()
|
||||
|
||||
void Series::writeFields(CFRecord& record)
|
||||
{
|
||||
unsigned short sdtY = 0x0001;
|
||||
unsigned short sdtBSize = 0x0001;
|
||||
record << sdtX << sdtY << cValx << cValy << sdtBSize << cValBSize;
|
||||
}
|
||||
|
||||
|
||||
void Series::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short sdtY;
|
||||
unsigned short sdtBSize;
|
||||
record >> sdtX >> sdtY >> cValx >> cValy >> sdtBSize >> cValBSize;
|
||||
}
|
||||
|
||||
|
||||
@ -24,6 +24,9 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
BIFF_WORD sdtX;
|
||||
BIFF_WORD sdtY;
|
||||
BIFF_WORD sdtBSize;
|
||||
|
||||
BIFF_WORD cValx;
|
||||
BIFF_WORD cValy;
|
||||
BIFF_WORD cValBSize;
|
||||
|
||||
@ -41,10 +41,6 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
RGISeriesListSpecial rgiser;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_COMPLEX(rgiser)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -38,10 +38,12 @@ void ShtProps::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags >> mdBlank;
|
||||
fManSerAlloc = GETBIT(flags, 0);
|
||||
fPlotVisOnly = GETBIT(flags, 1);
|
||||
fNotSizeWith = GETBIT(flags, 2);
|
||||
|
||||
fManSerAlloc = GETBIT(flags, 0);
|
||||
fPlotVisOnly = GETBIT(flags, 1);
|
||||
fNotSizeWith = GETBIT(flags, 2);
|
||||
fAlwaysAutoPlotArea = GETBIT(flags, 4);
|
||||
|
||||
record.skipNunBytes(1); // reserved2
|
||||
}
|
||||
|
||||
|
||||
@ -28,15 +28,6 @@ public:
|
||||
BIFF_BOOL fNotSizeWith;
|
||||
BIFF_BOOL fAlwaysAutoPlotArea;
|
||||
BIFF_BYTE mdBlank;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fManSerAlloc)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fPlotVisOnly)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fNotSizeWith)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fAlwaysAutoPlotArea)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(mdBlank)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "Style.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
|
||||
#include "StyleExt.h"
|
||||
|
||||
#include <simple_xml_writer.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
@ -33,8 +33,22 @@ void Surf::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fFillSurface = GETBIT(flags, 0);
|
||||
f3DPhongShade = GETBIT(flags, 1);
|
||||
|
||||
fFillSurface = GETBIT(flags, 0);
|
||||
f3DPhongShade = GETBIT(flags, 1);
|
||||
}
|
||||
|
||||
int Surf::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:wireframe")
|
||||
{
|
||||
CP_XML_ATTR (L"val" , !fFillSurface);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -22,15 +22,11 @@ public:
|
||||
|
||||
static const ElementType type = typeSurf;
|
||||
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BOOL fFillSurface;
|
||||
BIFF_BOOL f3DPhongShade;
|
||||
public:
|
||||
//BO_ATTRIB_MARKUP_BEGIN
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(fFillSurface)
|
||||
//BO_ATTRIB_MARKUP_ATTRIB(f3DPhongShade)
|
||||
//BO_ATTRIB_MARKUP_END
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -6,6 +6,7 @@ namespace XLS
|
||||
|
||||
Text::Text()
|
||||
{
|
||||
is_area = false;
|
||||
}
|
||||
|
||||
|
||||
@ -62,8 +63,31 @@ void Text::readFields(CFRecord& record)
|
||||
fShowBubbleSizes = GETBIT(flags1, 13);
|
||||
fShowLabel = GETBIT(flags1, 14);
|
||||
|
||||
dlp = static_cast<unsigned char>(GETBITS(flags2, 0, 3));
|
||||
iReadingOrder = static_cast<unsigned char>(GETBITS(flags2, 14, 15));
|
||||
dlp = static_cast<unsigned char>(GETBITS(flags2, 0, 3));
|
||||
iReadingOrder = static_cast<unsigned char>(GETBITS(flags2, 14, 15));
|
||||
|
||||
rot = trot;
|
||||
}
|
||||
|
||||
int Text::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:showVal") { CP_XML_ATTR (L"val" , fShowValue); }
|
||||
if ( is_area )
|
||||
{
|
||||
CP_XML_NODE(L"c:showSerName") { CP_XML_ATTR (L"val" , fShowLabel); }
|
||||
CP_XML_NODE(L"c:showCatName") { CP_XML_ATTR (L"val" , 0); }
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"c:showSerName") { CP_XML_ATTR (L"val" , 0); }
|
||||
CP_XML_NODE(L"c:showCatName") { CP_XML_ATTR (L"val" , fShowLabel); }
|
||||
}
|
||||
CP_XML_NODE(L"c:showPercent") { CP_XML_ATTR (L"val" , fShowPercent); }
|
||||
CP_XML_NODE(L"c:showBubbleSize") { CP_XML_ATTR (L"val" , fShowBubbleSizes); }
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -23,15 +23,16 @@ public:
|
||||
|
||||
static const ElementType type = typeText;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_BYTE at;
|
||||
BIFF_BYTE vat;
|
||||
BIFF_WORD wBkgMode;
|
||||
LongRGB rgbText;
|
||||
BIFF_LONG x;
|
||||
BIFF_LONG y;
|
||||
BIFF_LONG dx;
|
||||
BIFF_LONG dy;
|
||||
int serialize(std::wostream & _stream);
|
||||
|
||||
BIFF_BYTE at;
|
||||
BIFF_BYTE vat;
|
||||
BIFF_WORD wBkgMode;
|
||||
LongRGB rgbText;
|
||||
BIFF_LONG x;
|
||||
BIFF_LONG y;
|
||||
BIFF_LONG dx;
|
||||
BIFF_LONG dy;
|
||||
|
||||
BIFF_BOOL fAutoColor;
|
||||
BIFF_BOOL fShowKey;
|
||||
@ -45,10 +46,15 @@ public:
|
||||
BIFF_BOOL fShowBubbleSizes;
|
||||
BIFF_BOOL fShowLabel;
|
||||
|
||||
Icv icvText;
|
||||
BIFF_BYTE dlp;
|
||||
BIFF_BYTE iReadingOrder;
|
||||
BIFF_WORD trot;
|
||||
Icv icvText;
|
||||
BIFF_BYTE dlp;
|
||||
BIFF_BYTE iReadingOrder;
|
||||
BIFF_WORD trot;
|
||||
|
||||
//-----------------------------
|
||||
bool is_area;
|
||||
|
||||
int rot;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -47,6 +47,48 @@ void Tick::readFields(CFRecord& record)
|
||||
rot = GETBITS(flags, 2, 4);
|
||||
fAutoRot = GETBIT(flags, 5);
|
||||
iReadingOrder = GETBITS(flags, 14, 15);
|
||||
|
||||
rott = rot;
|
||||
}
|
||||
|
||||
int Tick::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_WRITER(_stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:majorTickMark")
|
||||
{
|
||||
switch(tktMajor)
|
||||
{
|
||||
case 0: CP_XML_ATTR(L"val", L"none"); break;
|
||||
case 1: CP_XML_ATTR(L"val", L"in"); break;
|
||||
case 2: CP_XML_ATTR(L"val", L"out"); break;
|
||||
case 3: CP_XML_ATTR(L"val", L"cross"); break;
|
||||
}
|
||||
|
||||
}
|
||||
CP_XML_NODE(L"c:minorTickMark")
|
||||
{
|
||||
switch(tktMinor)
|
||||
{
|
||||
case 0: CP_XML_ATTR(L"val", L"none"); break;
|
||||
case 1: CP_XML_ATTR(L"val", L"in"); break;
|
||||
case 2: CP_XML_ATTR(L"val", L"out"); break;
|
||||
case 3: CP_XML_ATTR(L"val", L"cross"); break;
|
||||
}
|
||||
|
||||
}
|
||||
CP_XML_NODE(L"c:tickLblPos")
|
||||
{
|
||||
switch(tlt)
|
||||
{
|
||||
case 0: CP_XML_ATTR(L"val", L"none"); break;
|
||||
case 1: CP_XML_ATTR(L"val", L"low"); break;
|
||||
case 2: CP_XML_ATTR(L"val", L"high"); break;
|
||||
case 3: CP_XML_ATTR(L"val", L"nextTo"); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user