mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
x2t - ...
This commit is contained in:
@ -774,7 +774,10 @@ namespace DocFileFormat
|
||||
{
|
||||
return (std::to_wstring(value));
|
||||
}
|
||||
|
||||
static inline std::wstring IntToWideString(size_t value)
|
||||
{
|
||||
return (std::to_wstring((unsigned int)value));
|
||||
}
|
||||
static inline std::wstring DoubleToWideString(double value)
|
||||
{
|
||||
std::wstringstream src;
|
||||
|
||||
@ -87,15 +87,14 @@ namespace DocFileFormat
|
||||
}
|
||||
else
|
||||
{
|
||||
m_nDTTM = reader->ReadUInt32();
|
||||
m_nDTTM = DateAndTime(reader->ReadUInt32());
|
||||
reader->ReadUInt16(); //padding1
|
||||
m_nDepth = reader->ReadUInt32();
|
||||
m_nDiatrdParent = reader->ReadUInt32();
|
||||
unsigned int flag = reader->ReadUInt32();
|
||||
|
||||
m_fInkAtn = GETBIT(flag, 1);
|
||||
}
|
||||
|
||||
|
||||
return static_cast<ByteStructure*>(newObject);
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "ByteStructure.h"
|
||||
#include "DateAndTime.h"
|
||||
|
||||
namespace DocFileFormat
|
||||
{
|
||||
@ -72,7 +73,7 @@ namespace DocFileFormat
|
||||
return (nWordVersion > 0) ? STRUCTURE_SIZE_OLD : STRUCTURE_SIZE;
|
||||
}
|
||||
|
||||
AnnotationReferenceExDescriptor() : m_nDTTM(0), m_nDepth(0), m_nDiatrdParent(0), m_fInkAtn(false)
|
||||
AnnotationReferenceExDescriptor() : m_nDepth(0), m_nDiatrdParent(0), m_fInkAtn(false)
|
||||
{
|
||||
}
|
||||
|
||||
@ -82,7 +83,7 @@ namespace DocFileFormat
|
||||
|
||||
virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length );
|
||||
|
||||
unsigned int m_nDTTM;
|
||||
DateAndTime m_nDTTM;
|
||||
unsigned int m_nDepth;
|
||||
unsigned int m_nDiatrdParent;
|
||||
bool m_fInkAtn;
|
||||
|
||||
@ -85,9 +85,11 @@ namespace DocFileFormat
|
||||
|
||||
if (author_str)
|
||||
{
|
||||
XMLTools::XMLAttribute author( L"w:author", FormatUtils::XmlEncode(*author_str));
|
||||
XMLTools::XMLAttribute author( L"w:author", FormatUtils::XmlEncode(*author_str));
|
||||
rPrChange.AppendAttribute( author );
|
||||
}
|
||||
XMLTools::XMLAttribute date( L"w:date", _revisionData->Dttm.getString());
|
||||
rPrChange.AppendAttribute( date );
|
||||
|
||||
//convert revision stack
|
||||
convertSprms( _revisionData->Changes, &rPrChange );
|
||||
|
||||
@ -92,7 +92,7 @@ namespace DocFileFormat
|
||||
}
|
||||
|
||||
m_pXmlWriter->WriteNodeBegin( L"w:comment", TRUE );
|
||||
if (atrdPre10->m_BookmarkId < 0)
|
||||
if (atrdPre10->m_BookmarkId < 0)//-1 - easy ref (not start/end comment ref)
|
||||
{
|
||||
m_pXmlWriter->WriteAttribute( L"w:id", FormatUtils::IntToWideString( index + 1 + count + 1024 ));
|
||||
}
|
||||
@ -100,10 +100,10 @@ namespace DocFileFormat
|
||||
{
|
||||
m_pXmlWriter->WriteAttribute( L"w:id", FormatUtils::IntToWideString( index + 1 ));
|
||||
}
|
||||
//if (atrdPost10)
|
||||
//{
|
||||
// atrdPost10->Date.Convert(new DateMapping(_writer));
|
||||
//}
|
||||
if (atrdPost10)
|
||||
{
|
||||
m_pXmlWriter->WriteAttribute( L"w:date", atrdPost10->m_nDTTM.getString());
|
||||
}
|
||||
if (atrdPre10->m_AuthorIndex < m_document->AnnotationOwners->size()) //conv_253l2H1CehgKwsxCtNk__docx.doc
|
||||
{
|
||||
m_pXmlWriter->WriteAttribute( L"w:author",
|
||||
|
||||
@ -83,6 +83,14 @@ namespace DocFileFormat
|
||||
//throw new ByteParseException("Cannot parse the struct DTTM, the length of the struct doesn't match");
|
||||
}
|
||||
}
|
||||
std::wstring getString()
|
||||
{
|
||||
return std::to_wstring(yr) + L"-" + (mon < 9 ? L"0" : L"" ) + std::to_wstring(mon) + L"-" +
|
||||
(dom < 9 ? L"0" : L"" ) + std::to_wstring(dom) + L"T" +
|
||||
(hr < 9 ? L"0" : L"" ) + std::to_wstring(hr) + L":" +
|
||||
(mint < 9 ? L"0" : L"" )+ std::to_wstring(mint) + L"Z";
|
||||
|
||||
}
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
SYSTEMTIME ToSYSTEMTIME()
|
||||
{
|
||||
|
||||
@ -406,8 +406,8 @@ namespace DocFileFormat
|
||||
//if it's a inserted run
|
||||
m_pXmlWriter->WriteNodeBegin(L"w:ins", true);
|
||||
m_pXmlWriter->WriteAttribute(L"w:author", FormatUtils::XmlEncode(*author));
|
||||
m_pXmlWriter->WriteAttribute(L"w:date", FormatUtils::XmlEncode(rev.Dttm.getString()));
|
||||
m_pXmlWriter->WriteNodeEnd(L"", true, false);
|
||||
//rev.Dttm.Convert(new DateMapping(m_pXmlWriter));
|
||||
}
|
||||
|
||||
//start run
|
||||
@ -1079,7 +1079,15 @@ namespace DocFileFormat
|
||||
else if ((m_document->AnnotationsReferencePlex) && (_commentNr <= m_document->AnnotationsReferencePlex->Elements.size()))
|
||||
{
|
||||
m_pXmlWriter->WriteNodeBegin( L"w:commentReference", true );
|
||||
m_pXmlWriter->WriteAttribute( L"w:id", FormatUtils::IntToWideString( _commentNr++ ));
|
||||
|
||||
int index = _commentNr++;
|
||||
|
||||
AnnotationReferenceDescriptor* atrdPre10 = static_cast<AnnotationReferenceDescriptor*>(m_document->AnnotationsReferencePlex->Elements[index - 1]);
|
||||
|
||||
if (atrdPre10->m_BookmarkId < 0)
|
||||
index += m_document->AnnotationsReferencePlex->Elements.size() + 1024;
|
||||
|
||||
m_pXmlWriter->WriteAttribute( L"w:id", FormatUtils::IntToWideString(index));
|
||||
m_pXmlWriter->WriteNodeEnd( L"", true );
|
||||
}
|
||||
}
|
||||
@ -1792,7 +1800,7 @@ namespace DocFileFormat
|
||||
if (m_document->AnnotStartEndCPs[i].second == cp)
|
||||
{
|
||||
result = writeAnnotationEnd(i + 1);
|
||||
_commentNr = i + 1;
|
||||
//_commentNr = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -89,7 +89,7 @@ namespace DocFileFormat
|
||||
GroupContainer* group = static_cast<GroupContainer*>(groupChild);
|
||||
if (group)
|
||||
{
|
||||
group->Index = i;
|
||||
group->Index = (int)i;
|
||||
}
|
||||
}
|
||||
else if (ShapeContainer::TYPE_CODE_0xF004 == groupChild->TypeCode)
|
||||
|
||||
@ -84,7 +84,7 @@ namespace DocFileFormat
|
||||
Text(NULL), RevisionAuthorTable(NULL), FontTable(NULL), BookmarkNames(NULL), AutoTextNames(NULL),
|
||||
IndividualFootnotesPlex(NULL), FootnoteReferenceCharactersPlex(NULL), IndividualEndnotesPlex(NULL),
|
||||
EndnoteReferenceCharactersPlex(NULL), FieldsPlex(NULL), FootnoteDocumentFieldsPlex(NULL),
|
||||
EndnoteDocumentFieldsPlex(NULL), HeadersAndFootersDocumentFieldsPlex(NULL), HeaderStoriesPlex(NULL),
|
||||
EndnoteDocumentFieldsPlex(NULL), HeadersAndFootersDocumentFieldsPlex(NULL), HeaderStoriesPlex(NULL), AnnotationsFieldsPlex(NULL),
|
||||
AnnotationsReferencePlex(NULL), AnnotationsReferenceExPlex(NULL), IndividualCommentsPlex(NULL), TextboxBreakPlex(NULL), TextboxBreakPlexHeader(NULL),
|
||||
TextboxIndividualPlex(NULL),AssocNames(NULL), BookmarkAnnotNames(NULL), Captions(NULL), AutoCaptions(NULL), ListPlex(NULL),
|
||||
OfficeDrawingPlex(NULL), OfficeDrawingPlexHeader(NULL), SectionPlex(NULL), BookmarkStartPlex(NULL), BookmarkEndPlex(NULL),
|
||||
@ -353,7 +353,7 @@ namespace DocFileFormat
|
||||
|
||||
TextboxIndividualPlex = new Plex<FTXBXS> (FTXBXS::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcftxbxTxt, FIB->m_FibWord97.lcbPlcftxbxTxt, nWordVersion);
|
||||
|
||||
SectionPlex = new Plex<SectionDescriptor> (SectionDescriptor::GetSize(nWordVersion), TableStream, FIB->m_FibWord97.fcPlcfSed, FIB->m_FibWord97.lcbPlcfSed, nWordVersion);
|
||||
SectionPlex = new Plex<SectionDescriptor> (SectionDescriptor::GetSize(nWordVersion), TableStream, FIB->m_FibWord97.fcPlcfSed,FIB->m_FibWord97.lcbPlcfSed, nWordVersion);
|
||||
|
||||
BookmarkStartPlex = new Plex<BookmarkFirst> (BookmarkFirst::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfBkf, FIB->m_FibWord97.lcbPlcfBkf, nWordVersion);
|
||||
BookmarkEndPlex = new Plex<EmptyStructure> (EmptyStructure::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfBkl, FIB->m_FibWord97.lcbPlcfBkl, nWordVersion);
|
||||
@ -387,10 +387,13 @@ namespace DocFileFormat
|
||||
}
|
||||
|
||||
AutoTextPlex = new Plex<EmptyStructure>(EmptyStructure::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfGlsy, FIB->m_FibWord97.lcbPlcfGlsy, nWordVersion);
|
||||
|
||||
FieldsPlex = new Plex<FieldCharacter>(FieldCharacter::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfFldMom, FIB->m_FibWord97.lcbPlcfFldMom, nWordVersion);
|
||||
FootnoteDocumentFieldsPlex = new Plex<FieldCharacter>(FieldCharacter::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfFldFtn, FIB->m_FibWord97.lcbPlcfFldFtn, nWordVersion);
|
||||
EndnoteDocumentFieldsPlex = new Plex<FieldCharacter>(FieldCharacter::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfFldEdn, FIB->m_FibWord97.lcbPlcfFldEdn, nWordVersion);
|
||||
HeadersAndFootersDocumentFieldsPlex = new Plex<FieldCharacter>(FieldCharacter::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfFldHdr, FIB->m_FibWord97.lcbPlcfFldHdr, nWordVersion);
|
||||
AnnotationsFieldsPlex = new Plex<FieldCharacter>(FieldCharacter::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfFldAtn, FIB->m_FibWord97.lcbPlcfFldAtn, nWordVersion);
|
||||
|
||||
ListPlex = new Plex<ListNumCache> (ListNumCache::STRUCTURE_SIZE, TableStream, FIB->m_FibWord97.fcPlcfBteLvc, FIB->m_FibWord97.lcbPlcfBteLvc, nWordVersion);
|
||||
|
||||
if (m_pCallFunc)
|
||||
@ -872,6 +875,7 @@ namespace DocFileFormat
|
||||
RELEASEOBJECT(FootnoteDocumentFieldsPlex);
|
||||
RELEASEOBJECT(EndnoteDocumentFieldsPlex);
|
||||
RELEASEOBJECT(HeadersAndFootersDocumentFieldsPlex);
|
||||
RELEASEOBJECT(AnnotationsFieldsPlex);
|
||||
RELEASEOBJECT(HeaderStoriesPlex);
|
||||
RELEASEOBJECT(IndividualCommentsPlex);
|
||||
RELEASEOBJECT(AnnotationsReferencePlex);
|
||||
|
||||
@ -224,6 +224,7 @@ namespace DocFileFormat
|
||||
Plex<FieldCharacter> *FootnoteDocumentFieldsPlex;
|
||||
Plex<FieldCharacter> *EndnoteDocumentFieldsPlex;
|
||||
Plex<FieldCharacter> *HeadersAndFootersDocumentFieldsPlex;
|
||||
Plex<FieldCharacter> *AnnotationsFieldsPlex;
|
||||
Plex<AnnotationReferenceDescriptor> *AnnotationsReferencePlex;
|
||||
Plex<AnnotationReferenceExDescriptor> *AnnotationsReferenceExPlex;
|
||||
Plex<EmptyStructure> *AutoTextPlex;
|
||||
|
||||
@ -2,20 +2,17 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatLib", "..\DocFormatLib\Win32\DocFormatLib.vcproj", "{C5371405-338F-4B70-83BD-2A5CDF64F383}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
|
||||
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatTest", "DocFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
|
||||
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
|
||||
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
|
||||
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
|
||||
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}"
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Dimensions record in BIFF8
|
||||
class Dimensions: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Dimensions)
|
||||
@ -47,11 +45,10 @@ public:
|
||||
~Dimensions();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeDimensions;
|
||||
static const ElementType type = typeDimensions;
|
||||
|
||||
int serialize(std::wostream & stream);
|
||||
|
||||
|
||||
@ -40,18 +40,15 @@ DropDownObjIds::DropDownObjIds()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
DropDownObjIds::~DropDownObjIds()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr DropDownObjIds::clone()
|
||||
{
|
||||
return BaseObjectPtr(new DropDownObjIds(*this));
|
||||
}
|
||||
|
||||
|
||||
void DropDownObjIds::readFields(CFRecord& record)
|
||||
{
|
||||
FrtHeader frtHeader(rt_DropDownObjIds);
|
||||
|
||||
@ -32,13 +32,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/DropDownObjId.h>
|
||||
#include "../Biff_structures/DropDownObjId.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of DropDownObjIds record in BIFF8
|
||||
class DropDownObjIds: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(DropDownObjIds)
|
||||
@ -48,7 +45,6 @@ public:
|
||||
~DropDownObjIds();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -179,10 +179,7 @@ void Obj::readFields(CFRecord& record)
|
||||
old_version.anchor->loadFields(record);
|
||||
|
||||
record >> nMacrosSize;
|
||||
record.skipNunBytes(2);
|
||||
record >> nNameLen;
|
||||
record.skipNunBytes(2);
|
||||
|
||||
record.skipNunBytes(6);
|
||||
|
||||
if(OBJ_Line == cmo.ot)
|
||||
{
|
||||
@ -190,6 +187,26 @@ void Obj::readFields(CFRecord& record)
|
||||
record >> old_version.flag;
|
||||
record >> old_version.flag2;
|
||||
}
|
||||
else if(OBJ_DropdownList == cmo.ot)
|
||||
{
|
||||
old_version.bFill = true;
|
||||
record >> old_version.fill;
|
||||
record >> old_version.line;
|
||||
record.skipNunBytes(6);
|
||||
|
||||
short iVal, iMin, iMax, dInc, dPage, fHoriz, dxScroll, grbit, ifnt;
|
||||
|
||||
record >> iVal >> iMin >> iMax >> dInc >> dPage >> fHoriz >> dxScroll >> grbit;
|
||||
record.skipNunBytes(18);
|
||||
|
||||
record >> ifnt;
|
||||
record.skipNunBytes(14);
|
||||
|
||||
short xLeft, yTop, xRight, yBot;
|
||||
record >> xLeft >> yTop >> xRight >> yBot;
|
||||
|
||||
record.skipNunBytes(4);
|
||||
}
|
||||
else
|
||||
{
|
||||
old_version.bFill = true;
|
||||
@ -261,9 +278,38 @@ void Obj::readFields(CFRecord& record)
|
||||
|
||||
old_version.name = txO->name;
|
||||
}
|
||||
else if(OBJ_DropdownList == cmo.ot)
|
||||
{
|
||||
record >> old_version.name;
|
||||
|
||||
short cbFmla1, cbFmla2, cbFmla3;
|
||||
ObjectParsedFormula fmla1, fmla2, fmla3;
|
||||
|
||||
record >> cbFmla1;
|
||||
if (cbFmla1 > 0)
|
||||
{
|
||||
fmla1.load(record);
|
||||
}
|
||||
record >> cbFmla2;
|
||||
if (cbFmla2 > 0)
|
||||
{
|
||||
fmla2.load(record);
|
||||
}
|
||||
record >> cbFmla3;
|
||||
if (cbFmla3 > 0)
|
||||
{
|
||||
fmla3.load(record);
|
||||
}
|
||||
short cLines, iSel, flag1, flag2, cLine, dxMin;
|
||||
record >> cLines >> iSel >> flag1;
|
||||
|
||||
record.skipNunBytes(2);
|
||||
record >> flag2 >> cLine >> dxMin;
|
||||
//record.skipNunBytes(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nNameLen > 0)
|
||||
//if (nNameLen > 0)
|
||||
{
|
||||
record >> old_version.name;
|
||||
}
|
||||
|
||||
@ -95,8 +95,8 @@ public:
|
||||
bool bFill = false;
|
||||
ShortXLAnsiString name;
|
||||
|
||||
_UINT32 fill = 0;
|
||||
_UINT32 line = 0;
|
||||
_UINT32 fill = 0;//(icvBack, icvFore, fls, fAuto)
|
||||
_UINT32 line = 0;//(icv, lns, lnw, fAuto)
|
||||
_UINT16 flag = 0;
|
||||
_UINT16 flag2 = 0;
|
||||
}old_version;
|
||||
|
||||
@ -50,7 +50,6 @@ BaseObjectPtr Sort::clone()
|
||||
return BaseObjectPtr(new Sort(*this));
|
||||
}
|
||||
|
||||
|
||||
void Sort::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
@ -68,20 +67,52 @@ void Sort::readFields(CFRecord& record)
|
||||
unsigned char cchKey2;
|
||||
unsigned char cchKey3;
|
||||
record >> cchKey1 >> cchKey2 >> cchKey3;
|
||||
if(cchKey1)
|
||||
|
||||
if (record.getGlobalWorkbookInfo()->Version >= 0x0600)
|
||||
{
|
||||
stKey1.setSize(cchKey1);
|
||||
record >> stKey1;
|
||||
XLUnicodeStringNoCch stKey1_, stKey2_, stKey3_;
|
||||
|
||||
if(cchKey1)
|
||||
{
|
||||
stKey1_.setSize(cchKey1);
|
||||
record >> stKey1_;
|
||||
stKey1 = stKey1_.value();
|
||||
}
|
||||
if(cchKey2)
|
||||
{
|
||||
stKey2_.setSize(cchKey2);
|
||||
record >> stKey2_;
|
||||
stKey2 = stKey2_.value();
|
||||
}
|
||||
if(cchKey3)
|
||||
{
|
||||
stKey3_.setSize(cchKey3);
|
||||
record >> stKey3_;
|
||||
stKey3 = stKey3_.value();
|
||||
}
|
||||
}
|
||||
if(cchKey2)
|
||||
else
|
||||
{
|
||||
stKey2.setSize(cchKey2);
|
||||
record >> stKey2;
|
||||
}
|
||||
if(cchKey3)
|
||||
{
|
||||
stKey3.setSize(cchKey3);
|
||||
record >> stKey3;
|
||||
LPAnsiStringNoCch stKey1_, stKey2_, stKey3_;
|
||||
|
||||
if(cchKey1)
|
||||
{
|
||||
stKey1_.setSize(cchKey1);
|
||||
record >> stKey1_;
|
||||
stKey1 = stKey1_.value();
|
||||
}
|
||||
if(cchKey2)
|
||||
{
|
||||
stKey2_.setSize(cchKey2);
|
||||
record >> stKey2_;
|
||||
stKey2 = stKey2_.value();
|
||||
}
|
||||
if(cchKey3)
|
||||
{
|
||||
stKey3_.setSize(cchKey3);
|
||||
record >> stKey3_;
|
||||
stKey3 = stKey3_.value();
|
||||
}
|
||||
}
|
||||
record.skipNunBytes(1); // reserved
|
||||
}
|
||||
|
||||
@ -63,9 +63,9 @@ public:
|
||||
_INT16 iOrder;
|
||||
bool fAltMethod;
|
||||
|
||||
XLUnicodeStringNoCch stKey1;
|
||||
XLUnicodeStringNoCch stKey2;
|
||||
XLUnicodeStringNoCch stKey3;
|
||||
std::wstring stKey1;
|
||||
std::wstring stKey2;
|
||||
std::wstring stKey3;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,13 +36,11 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
BiffStructurePtr DropDownObjId::clone()
|
||||
{
|
||||
return BiffStructurePtr(new DropDownObjId(*this));
|
||||
}
|
||||
|
||||
|
||||
void DropDownObjId::load(CFRecord& record)
|
||||
{
|
||||
record >> id;
|
||||
|
||||
@ -49,7 +49,6 @@ public:
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
ObjId id;
|
||||
};
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@ public:
|
||||
unsigned short nElems, nElemsAlloc;
|
||||
unsigned short cbElem;
|
||||
|
||||
int pos1 = record.getRdPtr();
|
||||
size_t pos1 = record.getRdPtr();
|
||||
|
||||
record >> nElems >> nElemsAlloc >> cbElem;
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ public:
|
||||
|
||||
XLS::BiffStructurePtr clone()
|
||||
{
|
||||
return XLS::BiffStructurePtr(new OfficeArtBlip(recType));
|
||||
return XLS::BiffStructurePtr(new OfficeArtBlip((unsigned short)recType));
|
||||
}
|
||||
|
||||
static const XLS::ElementType type = XLS::typeOfficeArtBlip;
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of AUTOFILTER union of records
|
||||
class AUTOFILTER: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(AUTOFILTER)
|
||||
@ -57,7 +55,7 @@ public:
|
||||
|
||||
std::vector<BaseObjectPtr> m_arSORTDATA12;
|
||||
|
||||
GlobalWorkbookInfoPtr pGlobalWorkbookInfoPtr;
|
||||
GlobalWorkbookInfoPtr global_info_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -42,7 +42,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
AUTOFILTER::AUTOFILTER()
|
||||
{
|
||||
}
|
||||
@ -87,11 +86,11 @@ const bool AUTOFILTER::loadContent(BinProcessor& proc)
|
||||
return false;
|
||||
}
|
||||
|
||||
pGlobalWorkbookInfoPtr = proc.getGlobalWorkbookInfo();
|
||||
global_info_ = proc.getGlobalWorkbookInfo();
|
||||
|
||||
m_AutoFilterInfo = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
|
||||
int count = proc.repeated<Parenthesis_AUTOFILTER_1>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
@ -139,13 +138,13 @@ int AUTOFILTER::serialize(std::wostream & stream)
|
||||
|
||||
AutoFilterInfo *info = dynamic_cast<AutoFilterInfo*>(m_AutoFilterInfo.get());
|
||||
|
||||
std::map<std::wstring, std::vector<std::wstring>>::iterator it = pGlobalWorkbookInfoPtr->mapDefineNames.find(L"_xlnm._FilterDatabase");
|
||||
std::map<std::wstring, std::vector<std::wstring>>::iterator it = global_info_->mapDefineNames.find(L"_xlnm._FilterDatabase");
|
||||
|
||||
if (it == pGlobalWorkbookInfoPtr->mapDefineNames.end()) return 0;
|
||||
if (it == global_info_->mapDefineNames.end()) return 0;
|
||||
|
||||
int count_columns = info->cEntries;
|
||||
|
||||
size_t ind = pGlobalWorkbookInfoPtr->current_sheet;
|
||||
size_t ind = global_info_->current_sheet;
|
||||
std::wstring ref;
|
||||
|
||||
if (ind < it->second.size() && ind >= 0)
|
||||
@ -159,7 +158,7 @@ int AUTOFILTER::serialize(std::wostream & stream)
|
||||
}
|
||||
if (ref.empty()) return 0;
|
||||
|
||||
std::wstring sheet_name = ind <= pGlobalWorkbookInfoPtr->sheets_info.size() ? pGlobalWorkbookInfoPtr->sheets_info[ind-1].name : L"";
|
||||
std::wstring sheet_name = ind <= global_info_->sheets_info.size() ? global_info_->sheets_info[ind-1].name : L"";
|
||||
if (!sheet_name.empty())
|
||||
{
|
||||
int pos = ref.find(sheet_name);
|
||||
|
||||
@ -54,6 +54,9 @@
|
||||
#include "Biff_records/List12.h"
|
||||
#include "Biff_records/PLV.h"
|
||||
#include "Biff_records/CFEx.h"
|
||||
#include "Biff_records/Country.h"
|
||||
#include "Biff_records/WsBool.h"
|
||||
#include "Biff_records/ExternSheet.h"
|
||||
|
||||
#include "Biff_unions/BACKGROUND.h"
|
||||
#include "Biff_unions/BIGNAME.h"
|
||||
@ -490,6 +493,51 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_Window1: //biff5
|
||||
{
|
||||
count = proc.repeated<Window1>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
//m_arWindow1.insert(m_arWindow1.begin(), elements_.back());
|
||||
elements_.pop_back();
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_Country: //biff5
|
||||
{
|
||||
if (proc.optional<Country>())
|
||||
{
|
||||
Country *Country_ = dynamic_cast<Country*>(elements_.back().get());
|
||||
if (Country_)
|
||||
{
|
||||
int countryDef = Country_->iCountryDef;
|
||||
int countryWinIni = Country_->iCountryWinIni;
|
||||
|
||||
global_info_->CodePage;
|
||||
}
|
||||
|
||||
//m_Country = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
}break;
|
||||
case rt_WsBool: //biff5
|
||||
{
|
||||
bool is_dialog;
|
||||
WsBool wsbool_template(is_dialog);
|
||||
if (proc.optional(wsbool_template)) // The most interesting
|
||||
{
|
||||
//m_WsBool = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
}break;
|
||||
case rt_ExternSheet: //biff5
|
||||
{
|
||||
if (proc.optional<ExternSheet>())
|
||||
{
|
||||
//m_ExternSheet = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
}break;
|
||||
default://unknown .... skip
|
||||
{
|
||||
proc.SkipRecord();
|
||||
|
||||
@ -300,8 +300,8 @@ private:
|
||||
{
|
||||
std::vector<std::wstring> oArrayParams;
|
||||
NSStringUtils::ParseString(_T(" "), strFormula, oArrayParams);
|
||||
int nCount = oArrayParams.size();
|
||||
if (0 >= nCount)
|
||||
size_t nCount = oArrayParams.size();
|
||||
if (nCount == 0)
|
||||
return;
|
||||
|
||||
bool bRes = true;
|
||||
@ -387,14 +387,14 @@ private:
|
||||
}
|
||||
void AddFormula(std::wstring strFormula)
|
||||
{
|
||||
CFormula oFormula(m_arFormulas.size());
|
||||
CFormula oFormula((int)m_arFormulas.size());
|
||||
oFormula.FromString(strFormula, m_lShapeWidth, m_lShapeHeight);
|
||||
m_arFormulas.push_back(oFormula);
|
||||
m_arResults.push_back(0xFFFFFFFF);
|
||||
}
|
||||
void AddFormula(CFormula oFormula)
|
||||
{
|
||||
oFormula.m_lIndex = m_arFormulas.size();
|
||||
oFormula.m_lIndex = (int)m_arFormulas.size();
|
||||
m_arFormulas.push_back(oFormula);
|
||||
m_arResults.push_back(0xFFFFFFFF);
|
||||
}
|
||||
|
||||
@ -526,7 +526,7 @@ namespace NSCustomShapesConvert
|
||||
if (NULL == ppArray)
|
||||
return;
|
||||
|
||||
int nCount = this->m_arPoints.size();
|
||||
size_t nCount = this->m_arPoints.size();
|
||||
|
||||
nCountOut = 2 * (nCount + 1);
|
||||
|
||||
@ -540,7 +540,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (bR)
|
||||
{
|
||||
for (int nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
{
|
||||
*pBuffer = (this->m_arPoints[nIndex].dX + pointCur.dX); ++pBuffer;
|
||||
*pBuffer = (this->m_arPoints[nIndex].dY + pointCur.dY); ++pBuffer;
|
||||
@ -554,7 +554,7 @@ namespace NSCustomShapesConvert
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
{
|
||||
*pBuffer = this->m_arPoints[nIndex].dX; ++pBuffer;
|
||||
*pBuffer = this->m_arPoints[nIndex].dY; ++pBuffer;
|
||||
@ -592,7 +592,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (NULL != pArray)
|
||||
{
|
||||
pRenderer->PathCommandLinesTo(pArray, nCount /*this->m_arPoints.size()*/);
|
||||
pRenderer->PathCommandLinesTo(pArray, (int)nCount /*this->m_arPoints.size()*/);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -605,7 +605,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (NULL != pArray)
|
||||
{
|
||||
pRenderer->PathCommandCurvesTo (pArray, nCount/*this->m_arPoints.size()*/);
|
||||
pRenderer->PathCommandCurvesTo (pArray, (int)nCount/*this->m_arPoints.size()*/);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -633,7 +633,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (NULL != pArray)
|
||||
{
|
||||
pRenderer->PathCommandLinesTo(pArray, nCount/*this->m_arPoints.size()*/);
|
||||
pRenderer->PathCommandLinesTo(pArray, (int)nCount/*this->m_arPoints.size()*/);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -646,7 +646,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (NULL != pArray)
|
||||
{
|
||||
pRenderer->PathCommandCurvesTo(pArray, nCount/*this->m_arPoints.size()*/);
|
||||
pRenderer->PathCommandCurvesTo(pArray, (int)nCount/*this->m_arPoints.size()*/);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -794,8 +794,8 @@ namespace NSCustomShapesConvert
|
||||
bool bIsX = true;
|
||||
CheckLastPoint(pRenderer, pointCur);
|
||||
|
||||
int nCount = this->m_arPoints.size();
|
||||
for (int nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
size_t nCount = this->m_arPoints.size();
|
||||
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
{
|
||||
double x1 = pointCur.dX;
|
||||
double y1 = pointCur.dY;
|
||||
@ -819,8 +819,8 @@ namespace NSCustomShapesConvert
|
||||
bool bIsX = false;
|
||||
CheckLastPoint(pRenderer, pointCur);
|
||||
|
||||
int nCount = this->m_arPoints.size();
|
||||
for (int nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
size_t nCount = this->m_arPoints.size();
|
||||
for (size_t nIndex = 0; nIndex < nCount; ++nIndex)
|
||||
{
|
||||
double x1 = pointCur.dX;
|
||||
double y1 = pointCur.dY;
|
||||
@ -847,7 +847,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
if (NULL != pArray)
|
||||
{
|
||||
pRenderer->PathCommandLinesTo(pArray, nCount/*this->m_arPoints.size()*/);
|
||||
pRenderer->PathCommandLinesTo(pArray, (int)nCount/*this->m_arPoints.size()*/);
|
||||
}
|
||||
|
||||
CheckLastPoint(pRenderer, pointCur);
|
||||
@ -887,7 +887,7 @@ namespace NSCustomShapesConvert
|
||||
|
||||
void AddRuler(const RulesType& eType)
|
||||
{
|
||||
int lCount = m_arParts.size();
|
||||
size_t lCount = m_arParts.size();
|
||||
|
||||
CPart oPart;
|
||||
oPart.m_eType = eType;
|
||||
@ -896,7 +896,7 @@ namespace NSCustomShapesConvert
|
||||
}
|
||||
void AddPoint(const double& x, const double& y)
|
||||
{
|
||||
int lCount = m_arParts.size();
|
||||
size_t lCount = m_arParts.size();
|
||||
if (0 != lCount)
|
||||
{
|
||||
CDoublePoint point;
|
||||
|
||||
@ -134,7 +134,7 @@ void ReadMapEntry(POLE::Stream *pStream, ECMACryptFile::_mapEntry & m)
|
||||
_UINT32 refCount = 0;
|
||||
pStream->read((unsigned char*)&refCount, 4);
|
||||
|
||||
for (int i = 0 ; i < refCount; i++)
|
||||
for (_UINT32 i = 0 ; i < refCount; i++)
|
||||
{
|
||||
ECMACryptFile::_refComponent r;
|
||||
pStream->read((unsigned char*)&r.type, 4);
|
||||
@ -151,7 +151,7 @@ std::string DecodeBase64(const std::string & value)
|
||||
unsigned char *pData = NULL;
|
||||
std::string result;
|
||||
|
||||
NSFile::CBase64Converter::Decode(value.c_str(), value.length(), pData, nLength);
|
||||
NSFile::CBase64Converter::Decode(value.c_str(), (int)value.length(), pData, nLength);
|
||||
if (pData)
|
||||
{
|
||||
result = std::string((char*)pData, nLength);
|
||||
@ -165,7 +165,7 @@ std::string EncodeBase64(const std::string & value)
|
||||
char *pData = NULL;
|
||||
std::string result;
|
||||
|
||||
NSFile::CBase64Converter::Encode((BYTE*)value.c_str(), value.length(), pData, nLength, NSBase64::B64_BASE64_FLAG_NOCRLF);
|
||||
NSFile::CBase64Converter::Encode((BYTE*)value.c_str(), (int)value.length(), pData, nLength, NSBase64::B64_BASE64_FLAG_NOCRLF);
|
||||
if (pData)
|
||||
{
|
||||
result = std::string(pData, nLength);
|
||||
@ -530,7 +530,7 @@ bool WriteStandartEncryptionInfo(unsigned char* data, int &size, _ecmaCryptData
|
||||
mem_stream.WriteUInt32((_UINT32)cryptData.hashSize);
|
||||
|
||||
//int szEncryptedVerifierHash = (ProviderType == 0x0001) ? 0x14 : 0x20; //RC4 | AES(DES) .. md5?
|
||||
mem_stream.WriteBytes((unsigned char*)cryptData.encryptedVerifierValue.c_str(), cryptData.encryptedVerifierValue.length()/*szEncryptedVerifierHash*/);
|
||||
mem_stream.WriteBytes((unsigned char*)cryptData.encryptedVerifierValue.c_str(), (int)cryptData.encryptedVerifierValue.length()/*szEncryptedVerifierHash*/);
|
||||
|
||||
size = mem_stream.GetPosition();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user