diff options
Diffstat (limited to 'sc/source/filter/excel/biffdump.cxx')
-rw-r--r-- | sc/source/filter/excel/biffdump.cxx | 1763 |
1 files changed, 1082 insertions, 681 deletions
diff --git a/sc/source/filter/excel/biffdump.cxx b/sc/source/filter/excel/biffdump.cxx index 9b28ff605d7b..e348e4006eeb 100644 --- a/sc/source/filter/excel/biffdump.cxx +++ b/sc/source/filter/excel/biffdump.cxx @@ -2,9 +2,9 @@ * * $RCSfile: biffdump.cxx,v $ * - * $Revision: 1.53 $ + * $Revision: 1.54 $ * - * last change: $Author: dr $ $Date: 2002-12-09 13:43:55 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:28 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -85,7 +85,7 @@ #include <stdlib.h> #include <stdio.h> -#include <tools/solmath.hxx> +#include <rtl/math.hxx> #ifndef SC_DOCUMENT_HXX #include "document.hxx" @@ -93,15 +93,17 @@ #ifndef SC_SCGLOB_HXX #include "global.hxx" #endif + +#ifndef SC_FPROGRESSBAR_HXX +#include "fprogressbar.hxx" +#endif #ifndef SC_XLTOOLS_HXX #include "xltools.hxx" #endif + #ifndef _FLTTOOLS_HXX #include "flttools.hxx" #endif -#ifndef _FLTPRGRS_HXX -#include "fltprgrs.hxx" -#endif #ifndef _IMP_OP_HXX #include "imp_op.hxx" #endif @@ -258,8 +260,7 @@ static void __AddPureBin( ByteString& r, UINT32 nVal ) inline static void __AddDec( ByteString& r, UINT32 n ) { sal_Char p[ 32 ]; - sprintf( p, "%u", n ); - + sprintf( p, "%u", n ); // #100211# - checked r += p; } @@ -279,8 +280,7 @@ inline static void __AddDec( ByteString& r, UINT8 n ) inline static void __AddDec( ByteString& r, INT32 n ) { sal_Char p[ 32 ]; - sprintf( p, "%d", n ); - + sprintf( p, "%d", n ); // #100211# - checked r += p; } @@ -290,6 +290,11 @@ inline static void __AddDec( ByteString& r, INT16 n ) __AddDec( r, ( INT32 ) n ); } +inline static void __AddDec( ByteString& r, INT8 n ) +{ + __AddDec( r, ( INT32 ) n ); +} + static void __AddDec( ByteString& r, UINT32 nVal, UINT16 nNumOfDig, sal_Char c = ' ' ) { @@ -313,9 +318,7 @@ inline static void __AddDec1616( ByteString& r, UINT32 n ) static void __AddDouble( ByteString& r, const double f ) { - String aStr; - SolarMath::DoubleToString( aStr, f, 'G', 15, '.', TRUE ); - r += ByteString( aStr, RTL_TEXTENCODING_ASCII_US ); + r += ByteString( ::rtl::math::doubleToString( f, rtl_math_StringFormat_G, 15, '.', TRUE ) ); } @@ -642,8 +645,8 @@ DUMP_ERR::~DUMP_ERR() #define PreDump(LEN) {rIn.PushPosition();ContDump(LEN);rIn.PopPosition();} #define ADDCELLHEAD() {UINT16 nR,nC,nX;rIn>>nR>>nC>>nX;__AddCellHead(t,nC,nR,nX);} #define STARTFLAG() {ADDTEXT( "flags (" ); __AddHex( t, __nFlags ); ADDTEXT( "):" );} -#define ADDFLAG(mask,text) {if( __nFlags & mask ) t += text;} -#define ADDRESERVED(mask) ADDFLAG(mask," !RESERVED!") +#define ADDFLAG(mask,text) {if( __nFlags & mask ) t.Append( ' ' ).Append( text );} +#define ADDRESERVED(mask) ADDFLAG(mask,"!RESERVED!") UINT16 Biff8RecDumper::DumpXF( XclImpStream& rIn, const sal_Char* pPre ) @@ -910,7 +913,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) case 0x005D: // OBJ case 0x00EC: // MSODRAWING case 0x01B6: // TXO - pIn->InitializeRecord( FALSE ); + pIn->InitializeRecord( false ); break; default: pIn->InitializeRecord( bReadContRecs ); @@ -1027,9 +1030,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x01, " fAlwaysCalc" ); - ADDFLAG( 0x02, " fCalcOnLoad" ); - ADDFLAG( 0x08, " fShrFmla" ); + ADDFLAG( 0x01, "fAlwaysCalc" ); + ADDFLAG( 0x02, "fCalcOnLoad" ); + ADDFLAG( 0x08, "fShrFmla" ); } PRINT(); LINESTART(); @@ -1085,13 +1088,13 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags >> n8 >> nNameText >> nNameDef >> n16 >> n16 >> n8 >> n8 >> n8 >> n8; LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fHidden" ); - ADDFLAG( 0x0002, " fFunc" ); - ADDFLAG( 0x0004, " fVBProc" ); - ADDFLAG( 0x0008, " fProc" ); - ADDFLAG( 0x0010, " fCalcExp" ); - ADDFLAG( 0x0020, " fBuiltIn" ); - ADDFLAG( 0x1000, " fBig" ); + ADDFLAG( 0x0001, "fHidden" ); + ADDFLAG( 0x0002, "fFunc" ); + ADDFLAG( 0x0004, "fVBProc" ); + ADDFLAG( 0x0008, "fProc" ); + ADDFLAG( 0x0010, "fCalcExp" ); + ADDFLAG( 0x0020, "fBuiltIn" ); + ADDFLAG( 0x1000, "fBig" ); ADDRESERVED( 0xE000 ); ADDTEXT( " Fn grp index: " ); __AddDec( t, (UINT16)((__nFlags & 0x0FC0) >> 6) ); @@ -1192,10 +1195,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "/20pt " ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0002, " fItalic" ); - ADDFLAG( 0x0008, " fStrikeout" ); - ADDFLAG( 0x0010, " fOutline" ); - ADDFLAG( 0x0020, " fShadow" ); + ADDFLAG( 0x0002, "fItalic" ); + ADDFLAG( 0x0008, "fStrikeout" ); + ADDFLAG( 0x0010, "fOutline" ); + ADDFLAG( 0x0020, "fShadow" ); ADDRESERVED( 0xFFC5 ); PRINT(); LINESTART(); @@ -1236,7 +1239,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fReadOnlyRec" ); + ADDFLAG( 0x0001, "fReadOnlyRec" ); PRINT(); } DumpValidPassword( rIn, pPre ); @@ -1260,10 +1263,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags; LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fHidden" ); + ADDFLAG( 0x0001, "fHidden" ); ADDTEXT( " outlnlev=" ); __AddDec( t, (UINT16)((__nFlags & 0x0700) >> 8) ); - ADDFLAG( 0x1000, " fCollapsed" ); + ADDFLAG( 0x1000, "fCollapsed" ); ADDRESERVED( 0xE8FE ); PRINT(); LINESTART(); @@ -1304,22 +1307,22 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x00F1 ) { - ADDFLAG( 0x0001, " fShowAutoBreaks" ); - ADDFLAG( 0x0010, " fDialog" ); - ADDFLAG( 0x0020, " fApplyStyles" ); - ADDFLAG( 0x0040, " fRowSumsBelow" ); - ADDFLAG( 0x0080, " fColSumsBelow" ); + ADDFLAG( 0x0001, "fShowAutoBreaks" ); + ADDFLAG( 0x0010, "fDialog" ); + ADDFLAG( 0x0020, "fApplyStyles" ); + ADDFLAG( 0x0040, "fRowSumsBelow" ); + ADDFLAG( 0x0080, "fColSumsBelow" ); PRINT(); LINESTART(); } if( __nFlags & (0xCD00 | 0x320E) ) { ADDTEXT( " " ); - ADDFLAG( 0x0100, " fFitToPage" ); - ADDFLAG( 0x0400, " fDispRowGuts" ); - ADDFLAG( 0x0800, " fDispColGuts" ); - ADDFLAG( 0x4000, " fAee" ); - ADDFLAG( 0x8000, " fAfe" ); + ADDFLAG( 0x0100, "fFitToPage" ); + ADDFLAG( 0x0400, "fDispRowGuts" ); + ADDFLAG( 0x0800, "fDispColGuts" ); + ADDFLAG( 0x4000, "fAee" ); + ADDFLAG( 0x8000, "fAfe" ); ADDRESERVED( 0x320E ); PRINT(); } @@ -1370,12 +1373,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDDEC( 2 ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0003, " fJoin" ); - ADDFLAG( 0x0004, " fSimpleEq1" ); - ADDFLAG( 0x0008, " fSimpleEq2" ); - ADDFLAG( 0x0010, " fTop10" ); - ADDFLAG( 0x0020, " fTop" ); - ADDFLAG( 0x0040, " fPercent" ); + ADDFLAG( 0x0003, "fJoin" ); + ADDFLAG( 0x0004, "fSimpleEq1" ); + ADDFLAG( 0x0008, "fSimpleEq2" ); + ADDFLAG( 0x0010, "fTop10" ); + ADDFLAG( 0x0020, "fTop" ); + ADDFLAG( 0x0040, "fPercent" ); PRINT(); LINESTART(); if( __nFlags & 0x0003 ) @@ -1487,14 +1490,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fLeftRight" ); - ADDFLAG( 0x0002, " fPortrait" ); - ADDFLAG( 0x0004, " fNoPrintSettings" ); - ADDFLAG( 0x0008, " fMonochrom" ); - ADDFLAG( 0x0010, " fDraft" ); - ADDFLAG( 0x0020, " fNotes" ); - ADDFLAG( 0x0040, " fNoOrientation" ); - ADDFLAG( 0x0080, " fCustomNumber" ); + ADDFLAG( 0x0001, "fLeftRight" ); + ADDFLAG( 0x0002, "fPortrait" ); + ADDFLAG( 0x0004, "fNoPrintSettings" ); + ADDFLAG( 0x0008, "fMonochrom" ); + ADDFLAG( 0x0010, "fDraft" ); + ADDFLAG( 0x0020, "fNotes" ); + ADDFLAG( 0x0040, "fNoOrientation" ); + ADDFLAG( 0x0080, "fCustomNumber" ); PRINT(); LINESTART(); ADDTEXT( "Print res: " ); ADDDEC( 2 ); @@ -1575,15 +1578,15 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fRowGrand" ); - ADDFLAG( 0x0002, " fColGrand" ); - ADDFLAG( 0x0008, " fAutoFormat" ); - ADDFLAG( 0x0010, " fWidthHeightAuto" ); - ADDFLAG( 0x0020, " fFontAuto" ); - ADDFLAG( 0x0040, " fAlignAuto" ); - ADDFLAG( 0x0080, " fBorderAuto" ); - ADDFLAG( 0x0100, " fPatternAuto" ); - ADDFLAG( 0x0200, " fNumberAuto" ); + ADDFLAG( 0x0001, "fRowGrand" ); + ADDFLAG( 0x0002, "fColGrand" ); + ADDFLAG( 0x0008, "fAutoFormat" ); + ADDFLAG( 0x0010, "fWidthHeightAuto" ); + ADDFLAG( 0x0020, "fFontAuto" ); + ADDFLAG( 0x0040, "fAlignAuto" ); + ADDFLAG( 0x0080, "fBorderAuto" ); + ADDFLAG( 0x0100, "fPatternAuto" ); + ADDFLAG( 0x0200, "fNumberAuto" ); PRINT(); } LINESTART(); @@ -1617,10 +1620,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "):" ); if( __nFlags ) { - ADDFLAG( 0x0001, " row" ); - ADDFLAG( 0x0002, " col" ); - ADDFLAG( 0x0004, " page" ); - ADDFLAG( 0x0008, " data" ); + ADDFLAG( 0x0001, "row" ); + ADDFLAG( 0x0002, "col" ); + ADDFLAG( 0x0004, "page" ); + ADDFLAG( 0x0008, "data" ); } else ADDTEXT( " no axis" ); @@ -1634,18 +1637,18 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "):" ); if( __nFlags ) { - ADDFLAG( 0x0001, " Default" ); - ADDFLAG( 0x0002, " Sum" ); - ADDFLAG( 0x0004, " Counta" ); - ADDFLAG( 0x0008, " Average" ); - ADDFLAG( 0x0010, " Max" ); - ADDFLAG( 0x0020, " Min" ); - ADDFLAG( 0x0040, " Product" ); - ADDFLAG( 0x0080, " Count" ); - ADDFLAG( 0x0100, " Stdev" ); - ADDFLAG( 0x0200, " Stddevp" ); - ADDFLAG( 0x0400, " Var" ); - ADDFLAG( 0x0800, " Varp" ); + ADDFLAG( 0x0001, "Default" ); + ADDFLAG( 0x0002, "Sum" ); + ADDFLAG( 0x0004, "Counta" ); + ADDFLAG( 0x0008, "Average" ); + ADDFLAG( 0x0010, "Max" ); + ADDFLAG( 0x0020, "Min" ); + ADDFLAG( 0x0040, "Product" ); + ADDFLAG( 0x0080, "Count" ); + ADDFLAG( 0x0100, "Stdev" ); + ADDFLAG( 0x0200, "Stddevp" ); + ADDFLAG( 0x0400, "Var" ); + ADDFLAG( 0x0800, "Varp" ); } else ADDTEXT( " none" ); @@ -1700,10 +1703,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fHidden" ); - ADDFLAG( 0x02, " fHideDetail" ); - ADDFLAG( 0x04, " fFormula" ); - ADDFLAG( 0x08, " fMissing" ); + ADDFLAG( 0x01, "fHidden" ); + ADDFLAG( 0x02, "fHideDetail" ); + ADDFLAG( 0x04, "fFormula" ); + ADDFLAG( 0x08, "fMissing" ); PRINT(); } LINESTART(); @@ -1771,13 +1774,13 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); ADDTEXT( pInd ); STARTFLAG(); - ADDFLAG( 0x0001, " fMultiDataName" ); - ADDFLAG( 0x0200, " fSub" ); - ADDFLAG( 0x0400, " fBlock" ); - ADDFLAG( 0x0800, " fGrand" ); - ADDFLAG( 0x1000, " fMultiDataOnAxis" ); - ADDFLAG( 0x2000, " fBlankLine" ); // undocumented - ADDFLAG( 0x4000, " fHideDetail" ); // undocumented + ADDFLAG( 0x0001, "fMultiDataName" ); + ADDFLAG( 0x0200, "fSub" ); + ADDFLAG( 0x0400, "fBlock" ); + ADDFLAG( 0x0800, "fGrand" ); + ADDFLAG( 0x1000, "fMultiDataOnAxis" ); + ADDFLAG( 0x2000, "fBlankLine" ); // undocumented + ADDFLAG( 0x4000, "fHideDetail" ); // undocumented ADDRESERVED( 0x8000 ); PRINT(); LINESTART(); @@ -1966,9 +1969,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( pPre ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fInIndexList" ); - ADDFLAG( 0x0002, " fNotInList" ); - ADDFLAG( 0x0200, " fLongIndex" ); + ADDFLAG( 0x0001, "fInIndexList" ); + ADDFLAG( 0x0002, "fNotInList" ); + ADDFLAG( 0x0200, "fLongIndex" ); ADDTEXT( " data type: " ); __nFlags &= 0x0DFC; switch( __nFlags ) @@ -2189,33 +2192,33 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x009F ) { - ADDFLAG( 0x0001, " fShowAllItems" ); - ADDFLAG( 0x0002, " fDragToRow" ); - ADDFLAG( 0x0004, " fDragToColumn" ); - ADDFLAG( 0x0008, " fDragToPage" ); - ADDFLAG( 0x0010, " fDragToHide" ); - ADDFLAG( 0x0080, " fServerBased" ); + ADDFLAG( 0x0001, "fShowAllItems" ); + ADDFLAG( 0x0002, "fDragToRow" ); + ADDFLAG( 0x0004, "fDragToColumn" ); + ADDFLAG( 0x0008, "fDragToPage" ); + ADDFLAG( 0x0010, "fDragToHide" ); + ADDFLAG( 0x0080, "fServerBased" ); PRINT(); LINESTART(); } if( __nFlags & 0xBF00 ) { ADDTEXT( " " ); - ADDFLAG( 0x0200, " fAutoSort" ); - ADDFLAG( 0x0400, " fAscendSort" ); - ADDFLAG( 0x0800, " fAutoShow" ); - ADDFLAG( 0x1000, " fAscendShow" ); - ADDFLAG( 0x2000, " fCalculatedField" ); + ADDFLAG( 0x0200, "fAutoSort" ); + ADDFLAG( 0x0400, "fAscendSort" ); + ADDFLAG( 0x0800, "fAutoShow" ); + ADDFLAG( 0x1000, "fAscendShow" ); + ADDFLAG( 0x2000, "fCalculatedField" ); PRINT(); LINESTART(); } if( __nFlags & 0x00FF4000 ) { ADDTEXT( " " ); // Layout flags: - ADDFLAG( 0x00004000, " fLONewPage" ); // undocumented - ADDFLAG( 0x00200000, " fLOReport" ); // undocumented - ADDFLAG( 0x00400000, " fLOBlankLine" ); // undocumented - ADDFLAG( 0x00800000, " fLOSubTotalTop" ); // undocumented + ADDFLAG( 0x00004000, "fLONewPage" ); // undocumented + ADDFLAG( 0x00200000, "fLOReport" ); // undocumented + ADDFLAG( 0x00400000, "fLOBlankLine" ); // undocumented + ADDFLAG( 0x00800000, "fLOSubTotalTop" ); // undocumented PRINT(); LINESTART(); } @@ -2308,7 +2311,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); UINT16 __nFlags = Read2( rIn ); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); + ADDFLAG( 0x0001, "fAuto" ); ADDRESERVED( 0xFFFE ); UINT16 nCol1, nRow1, nCol2, nRow2; rIn >> nRow1 >> nRow2 >> nCol1 >> nCol2; @@ -2634,15 +2637,15 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); UINT16 __nFlags = Read2( rIn ); STARTFLAG(); - ADDFLAG( 0x0001, " fDsplFormulaBar" ); - ADDFLAG( 0x0002, " fDsplStatus" ); - ADDFLAG( 0x0004, " fNoteOff" ); - ADDFLAG( 0x0008, " fDsplHScroll" ); - ADDFLAG( 0x0010, " fDsplVScroll" ); - ADDFLAG( 0x0020, " fBotAdornment" ); - ADDFLAG( 0x0040, " fZoom" ); - ADDFLAG( 0x0080, " fShowPlaceHld" ); - ADDFLAG( 0x0100, " fHideAll" ); + ADDFLAG( 0x0001, "fDsplFormulaBar" ); + ADDFLAG( 0x0002, "fDsplStatus" ); + ADDFLAG( 0x0004, "fNoteOff" ); + ADDFLAG( 0x0008, "fDsplHScroll" ); + ADDFLAG( 0x0010, "fDsplVScroll" ); + ADDFLAG( 0x0020, "fBotAdornment" ); + ADDFLAG( 0x0040, "fZoom" ); + ADDFLAG( 0x0080, "fShowPlaceHld" ); + ADDFLAG( 0x0100, "fHideAll" ); if( !(__nFlags && 0x0180) ) ADDTEXT( " fShowAll" ); PRINT(); @@ -2676,40 +2679,40 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x000000FF ) { - ADDFLAG( 0x00000001, " fShowPgBrk" ); - ADDFLAG( 0x00000002, " fDsplForml" ); - ADDFLAG( 0x00000004, " fDsplGrid" ); - ADDFLAG( 0x00000008, " fDsplRCHead" ); - ADDFLAG( 0x00000010, " fDsplGuts" ); - ADDFLAG( 0x00000020, " fDsplZeros" ); - ADDFLAG( 0x00000040, " fPrintHorC" ); - ADDFLAG( 0x00000080, " fPrintVerC" ); + ADDFLAG( 0x00000001, "fShowPgBrk" ); + ADDFLAG( 0x00000002, "fDsplForml" ); + ADDFLAG( 0x00000004, "fDsplGrid" ); + ADDFLAG( 0x00000008, "fDsplRCHead" ); + ADDFLAG( 0x00000010, "fDsplGuts" ); + ADDFLAG( 0x00000020, "fDsplZeros" ); + ADDFLAG( 0x00000040, "fPrintHorC" ); + ADDFLAG( 0x00000080, "fPrintVerC" ); PRINT(); LINESTART(); } if( __nFlags & 0x00007F00 ) { ADDTEXT( " " ); - ADDFLAG( 0x00000100, " fPrintRCHead" ); - ADDFLAG( 0x00000200, " fPrintGrid" ); - ADDFLAG( 0x00000400, " fFitToPage" ); - ADDFLAG( 0x00000800, " fPrintArea" ); - ADDFLAG( 0x00001000, " fOnePrintArea" ); - ADDFLAG( 0x00002000, " fFilter" ); - ADDFLAG( 0x00004000, " fAutoFilter" ); + ADDFLAG( 0x00000100, "fPrintRCHead" ); + ADDFLAG( 0x00000200, "fPrintGrid" ); + ADDFLAG( 0x00000400, "fFitToPage" ); + ADDFLAG( 0x00000800, "fPrintArea" ); + ADDFLAG( 0x00001000, "fOnePrintArea" ); + ADDFLAG( 0x00002000, "fFilter" ); + ADDFLAG( 0x00004000, "fAutoFilter" ); PRINT(); LINESTART(); } if( __nFlags & 0xFFF80000 ) { ADDTEXT( " " ); - ADDFLAG( 0x00020000, " fSplitV" ); - ADDFLAG( 0x00040000, " fSplitH" ); - ADDFLAG( 0x00180000, " fHiddenRow" ); - ADDFLAG( 0x00200000, " fHiddenCol" ); - ADDFLAG( 0x01000000, " fChartSize" ); - ADDFLAG( 0x02000000, " fFilterUnique" ); - ADDFLAG( 0x04000000, " fLayoutView" ); + ADDFLAG( 0x00020000, "fSplitV" ); + ADDFLAG( 0x00040000, "fSplitH" ); + ADDFLAG( 0x00180000, "fHiddenRow" ); + ADDFLAG( 0x00200000, "fHiddenCol" ); + ADDFLAG( 0x01000000, "fChartSize" ); + ADDFLAG( 0x02000000, "fFilterUnique" ); + ADDFLAG( 0x04000000, "fLayoutView" ); ADDRESERVED( 0xF8C18000 ); PRINT(); LINESTART(); @@ -2741,12 +2744,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fTitles" ); - ADDFLAG( 0x0002, " fRowNums" ); - ADDFLAG( 0x0004, " fDisRefr" ); - ADDFLAG( 0x0080, " fFill" ); - ADDFLAG( 0x0100, " fAutoFmt" ); - ADDFLAG( 0x0400, " fDisEdit" ); + ADDFLAG( 0x0001, "fTitles" ); + ADDFLAG( 0x0002, "fRowNums" ); + ADDFLAG( 0x0004, "fDisRefr" ); + ADDFLAG( 0x0080, "fFill" ); + ADDFLAG( 0x0100, "fAutoFmt" ); + ADDFLAG( 0x0400, "fDisEdit" ); ADDRESERVED( 0xFA78 ); PRINT(); LINESTART(); @@ -2809,7 +2812,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags; ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x0001, " fToughRecalc" ); + ADDFLAG( 0x0001, "fToughRecalc" ); ADDRESERVED( 0xFFFE ); PRINT(); LINESTART(); @@ -3017,9 +3020,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) __AddPureBin( t, __nFlags ); ADDTEXT( ")" ); ADDTEXT( "):" ); - ADDFLAG( 0x0001, " fWnClosed" ); - ADDFLAG( 0x0002, " fWnPinned" ); - ADDFLAG( 0x0004, " fCached" ); + ADDFLAG( 0x0001, "fWnClosed" ); + ADDFLAG( 0x0002, "fWnPinned" ); + ADDFLAG( 0x0004, "fCached" ); PRINT(); LINESTART(); ADDTEXT( "input window: " ); @@ -3051,11 +3054,11 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) if( __nFlags ) { ADDTEXT( " " ); - ADDFLAG( 0x00000080, " fStrLookup" ); - ADDFLAG( 0x00000100, " fAllowBlank" ); - ADDFLAG( 0x00000200, " fSuppressCombo" ); - ADDFLAG( 0x00040000, " fShowInputMsg" ); - ADDFLAG( 0x00080000, " fShowErrorMsg" ); + ADDFLAG( 0x00000080, "fStrLookup" ); + ADDFLAG( 0x00000100, "fAllowBlank" ); + ADDFLAG( 0x00000200, "fSuppressCombo" ); + ADDFLAG( 0x00040000, "fShowInputMsg" ); + ADDFLAG( 0x00080000, "fShowErrorMsg" ); } PRINT(); LINESTART(); @@ -3170,12 +3173,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) UINT32 __nFlags = Read4( rIn ); LINESTART(); STARTFLAG(); - ADDFLAG( 0x00000001, " fBody" ); - ADDFLAG( 0x00000002, " fAbs" ); - ADDFLAG( 0x00000014, " fDescr" ); - ADDFLAG( 0x00000008, " fMark" ); - ADDFLAG( 0x00000080, " fFrame" ); - ADDFLAG( 0x00000100, " fUNC" ); + ADDFLAG( 0x00000001, "fBody" ); + ADDFLAG( 0x00000002, "fAbs" ); + ADDFLAG( 0x00000014, "fDescr" ); + ADDFLAG( 0x00000008, "fMark" ); + ADDFLAG( 0x00000080, "fFrame" ); + ADDFLAG( 0x00000100, "fUNC" ); ADDRESERVED( 0xFFFFFE60 ); PRINT(); @@ -3347,10 +3350,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); ADDTEXT( " outlnlev=" ); __AddDec( t, (UINT16)(__nFlags & 0x0007) ); - ADDFLAG( 0x0010, " fCollapsed" ); - ADDFLAG( 0x0020, " fRowHeightZero" ); - ADDFLAG( 0x0040, " fUnsynced" ); - ADDFLAG( 0x0080, " fGhostDirty" ); + ADDFLAG( 0x0010, "fCollapsed" ); + ADDFLAG( 0x0020, "fRowHeightZero" ); + ADDFLAG( 0x0040, "fUnsynced" ); + ADDFLAG( 0x0080, "fGhostDirty" ); ADDRESERVED( 0xFF08 ); PRINT(); UINT16 nXF; @@ -3359,8 +3362,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "ix to XF: " ); __AddDec( t, (UINT16)(nXF & 0x0FFF) ); ADDTEXT( " add. flags(" ); __AddHex( t, nXF ); ADDTEXT( "):" ); - ADDFLAG( 0x1000, " fExAsc" ); - ADDFLAG( 0x2000, " fExDsc" ); + ADDFLAG( 0x1000, "fExAsc" ); + ADDFLAG( 0x2000, "fExDsc" ); ADDRESERVED( 0xC000 ); PRINT(); } @@ -3378,8 +3381,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) PRINT(); LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAlwaysCalc" ); - ADDFLAG( 0x0002, " fCalcOnLoad" ); + ADDFLAG( 0x0001, "fAlwaysCalc" ); + ADDFLAG( 0x0002, "fCalcOnLoad" ); ADDRESERVED( 0xFFFC ); PRINT(); LINESTART(); @@ -3399,10 +3402,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); ADDTEXT( "default row " ); STARTFLAG(); - ADDFLAG( 0x0001, " fUnsynced" ); - ADDFLAG( 0x0002, " fRowHtZero" ); - ADDFLAG( 0x0004, " fExAsc" ); - ADDFLAG( 0x0008, " fExDsc" ); + ADDFLAG( 0x0001, "fUnsynced" ); + ADDFLAG( 0x0002, "fRowHtZero" ); + ADDFLAG( 0x0004, "fExAsc" ); + ADDFLAG( 0x0008, "fExDsc" ); ADDRESERVED( 0xFFF0 ); PRINT(); LINESTART(); @@ -3466,17 +3469,17 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fImportPRE" ); - ADDFLAG( 0x0002, " fIgnoreSep" ); - ADDFLAG( 0x0004, " fUseSetting" ); - ADDFLAG( 0x0010, " fIgnoreDate" ); - ADDFLAG( 0x0020, " fWhatIsIt?" ); + ADDFLAG( 0x0001, "fImportPRE" ); + ADDFLAG( 0x0002, "fIgnoreSep" ); + ADDFLAG( 0x0004, "fUseSetting" ); + ADDFLAG( 0x0010, "fIgnoreDate" ); + ADDFLAG( 0x0020, "fWhatIsIt?" ); ADDRESERVED( 0xFFC8 ); PRINT(); LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0002, " fTables" ); + ADDFLAG( 0x0002, "fTables" ); ADDRESERVED( 0xFFFD ); PRINT(); LINESTART(); @@ -3558,14 +3561,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags ) { - ADDFLAG( 0x00000001, " fWin" ); - ADDFLAG( 0x00000002, " fRisc" ); - ADDFLAG( 0x00000004, " fBeta" ); - ADDFLAG( 0x00000008, " fWinAny" ); - ADDFLAG( 0x00000010, " fMacAny" ); - ADDFLAG( 0x00000020, " fBetaAny" ); - ADDFLAG( 0x00000100, " fRiscAny" ); - ADDFLAG( 0xFFFFE0C0, " fXxxxxxx" ); + ADDFLAG( 0x00000001, "fWin" ); + ADDFLAG( 0x00000002, "fRisc" ); + ADDFLAG( 0x00000004, "fBeta" ); + ADDFLAG( 0x00000008, "fWinAny" ); + ADDFLAG( 0x00000010, "fMacAny" ); + ADDFLAG( 0x00000020, "fBetaAny" ); + ADDFLAG( 0x00000100, "fRiscAny" ); + ADDRESERVED( 0xFFFFE0C0 ); } PRINT(); @@ -3659,8 +3662,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); - ADDFLAG( 0x0004, " fDrawTick" ); + ADDFLAG( 0x0001, "fAuto" ); + ADDFLAG( 0x0004, "fDrawTick" ); PRINT(); } LINESTART(); @@ -3700,9 +3703,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); - ADDFLAG( 0x0010, " fNoBackg" ); - ADDFLAG( 0x0020, " fNoFore" ); + ADDFLAG( 0x0001, "fAuto" ); + ADDFLAG( 0x0010, "fNoBackg" ); + ADDFLAG( 0x0020, "fNoFore" ); ADDRESERVED( 0xFFCE ); PRINT(); } @@ -3735,8 +3738,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAuto" ); - ADDFLAG( 0x02, " fInvertNeg" ); + ADDFLAG( 0x01, "fAuto" ); + ADDFLAG( 0x02, "fInvertNeg" ); PRINT(); } } @@ -3768,7 +3771,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fVaried" ); + ADDFLAG( 0x0001, "fVaried" ); PRINT(); } LINESTART(); @@ -3819,12 +3822,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAutoPosition" ); - ADDFLAG( 0x02, " fAutoSeries" ); - ADDFLAG( 0x04, " fAutoPosX" ); - ADDFLAG( 0x08, " fAutoPosY" ); - ADDFLAG( 0x10, " fVert" ); - ADDFLAG( 0x20, " fWasDataTable" ); + ADDFLAG( 0x01, "fAutoPosition" ); + ADDFLAG( 0x02, "fAutoSeries" ); + ADDFLAG( 0x04, "fAutoPosX" ); + ADDFLAG( 0x08, "fAutoPosY" ); + ADDFLAG( 0x10, "fVert" ); + ADDFLAG( 0x20, "fWasDataTable" ); PRINT(); } } @@ -3845,10 +3848,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fTranspose" ); - ADDFLAG( 0x0002, " fStacked" ); - ADDFLAG( 0x0004, " f100" ); - ADDFLAG( 0x0008, " fHasShadow" ); + ADDFLAG( 0x0001, "fTranspose" ); + ADDFLAG( 0x0002, "fStacked" ); + ADDFLAG( 0x0004, "f100" ); + ADDFLAG( 0x0008, "fHasShadow" ); PRINT(); } } @@ -3938,9 +3941,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoCol" ); - ADDFLAG( 0x0002, " fAutoBack" ); - ADDFLAG( 0x0020, " fAutoRot" ); + ADDFLAG( 0x0001, "fAutoCol" ); + ADDFLAG( 0x0002, "fAutoBack" ); + ADDFLAG( 0x0020, "fAutoRot" ); PRINT(); } LINESTART(); @@ -3969,14 +3972,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoMin" ); - ADDFLAG( 0x0002, " fAutoMax" ); - ADDFLAG( 0x0004, " fAutoMajor" ); - ADDFLAG( 0x0008, " fAutoMinor" ); - ADDFLAG( 0x0010, " fAutoCross" ); - ADDFLAG( 0x0020, " fLogScale" ); - ADDFLAG( 0x0040, " fReverse" ); - ADDFLAG( 0x0080, " fMaxCross" ); + ADDFLAG( 0x0001, "fAutoMin" ); + ADDFLAG( 0x0002, "fAutoMax" ); + ADDFLAG( 0x0004, "fAutoMajor" ); + ADDFLAG( 0x0008, "fAutoMinor" ); + ADDFLAG( 0x0010, "fAutoCross" ); + ADDFLAG( 0x0020, "fLogScale" ); + ADDFLAG( 0x0040, "fReverse" ); + ADDFLAG( 0x0080, "fMaxCross" ); PRINT(); } } @@ -3998,9 +4001,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fBetween" ); - ADDFLAG( 0x0002, " fMaxCross" ); - ADDFLAG( 0x0004, " fReverse" ); + ADDFLAG( 0x0001, "fBetween" ); + ADDFLAG( 0x0002, "fMaxCross" ); + ADDFLAG( 0x0004, "fReverse" ); PRINT(); } } @@ -4092,18 +4095,18 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoColor" ); - ADDFLAG( 0x0002, " fShowKey" ); - ADDFLAG( 0x0004, " fShowValue" ); - ADDFLAG( 0x0008, " fVert" ); - ADDFLAG( 0x0010, " fAutoText" ); - ADDFLAG( 0x0020, " fGenerated" ); - ADDFLAG( 0x0040, " fDeleted" ); - ADDFLAG( 0x0080, " fAutoMode" ); - ADDFLAG( 0x0800, " fShLabPct" ); - ADDFLAG( 0x1000, " fShowPct" ); - ADDFLAG( 0x2000, " fShowBubbleSizes" ); - ADDFLAG( 0x4000, " fShowLabel" ); + ADDFLAG( 0x0001, "fAutoColor" ); + ADDFLAG( 0x0002, "fShowKey" ); + ADDFLAG( 0x0004, "fShowValue" ); + ADDFLAG( 0x0008, "fVert" ); + ADDFLAG( 0x0010, "fAutoText" ); + ADDFLAG( 0x0020, "fGenerated" ); + ADDFLAG( 0x0040, "fDeleted" ); + ADDFLAG( 0x0080, "fAutoMode" ); + ADDFLAG( 0x0800, "fShLabPct" ); + ADDFLAG( 0x1000, "fShowPct" ); + ADDFLAG( 0x2000, "fShowBubbleSizes" ); + ADDFLAG( 0x4000, "fShowLabel" ); PRINT(); } LINESTART(); @@ -4171,8 +4174,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAutoSize" ); - ADDFLAG( 0x02, " fAutoPosition" ); + ADDFLAG( 0x01, "fAutoSize" ); + ADDFLAG( 0x02, "fAutoPosition" ); PRINT(); } } @@ -4310,7 +4313,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fCustomIfmt" ); + ADDFLAG( 0x01, "fCustomIfmt" ); PRINT(); } LINESTART(); @@ -4410,14 +4413,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutiMin" ); - ADDFLAG( 0x0002, " fAutoMax" ); - ADDFLAG( 0x0004, " fAutoMajor" ); - ADDFLAG( 0x0008, " fAutoMinor" ); - ADDFLAG( 0x0010, " fDateAxis" ); - ADDFLAG( 0x0020, " fAutoBase" ); - ADDFLAG( 0x0040, " fAutoCross" ); - ADDFLAG( 0x0080, " fAutoDate" ); + ADDFLAG( 0x0001, "fAutoMin" ); + ADDFLAG( 0x0002, "fAutoMax" ); + ADDFLAG( 0x0004, "fAutoMajor" ); + ADDFLAG( 0x0008, "fAutoMinor" ); + ADDFLAG( 0x0010, "fDateAxis" ); + ADDFLAG( 0x0020, "fAutoBase" ); + ADDFLAG( 0x0040, "fAutoCross" ); + ADDFLAG( 0x0080, "fAutoDate" ); PRINT(); } } @@ -4911,9 +4914,9 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) { ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x0008, " fAsSymbol" ); - ADDFLAG( 0x0002, " fLinked" ); - ADDFLAG( 0x0001, " f1???" ); + ADDFLAG( 0x0008, "fAsSymbol" ); + ADDFLAG( 0x0002, "fLinked" ); + ADDFLAG( 0x0001, "f1???" ); } } break; @@ -4924,12 +4927,12 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) rIn >> nFmlaLen; if ( sizeof(nFmlaLen) + nFmlaLen == nL ) { - ADDTEXT( "linked\n OLE stream: LNK........ (ID in EXTERNNAME of SUPBOOK)\n XTI: " ); - IGNORE(7); - ADDHEX(2); - ADDTEXT( " Externname: " ); - ADDHEX(2); - IGNORE(3); // MAY be right + ADDTEXT( "linked\n OLE stream: LNK??? (from EXTERNNAME) " ); + rIn >> nFmlaLen; + ADDTEXT( " unknown=" ); ADDHEX( 4 ); + PRINT(); + t.Erase(); + FormulaDump( nFmlaLen, FT_CellFormula ); } else { @@ -4945,22 +4948,20 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) ADDTEXT( '\n' ); if ( nBytesLeft < 4 ) ADDTEXT( " >> ByteString OVERRUN <<\n" ); - else if ( nBytesLeft == 5 ) + + rIn.Seek( nPos1 + sizeof(nFmlaLen) + nFmlaLen ); + if( rIn.GetRecLeft() == 4 ) { - ADDTEXT( " pad byte " ); - ADDHEX(1); - ADDTEXT( '\n' ); + ADDTEXT( " OLE storage name: MBD" ); + __AddPureHex( t, rIn.ReaduInt32() ); } - else if ( nBytesLeft == 4 ) - ADDTEXT( " no pad byte\n" ); else - ADDTEXT( " oops.. bytes left?!?\n" ); - - ADDTEXT( " OLE stream: MBD" ); - rIn.Seek( nPos1 + sizeof(nFmlaLen) + nFmlaLen ); - UINT32 nOleId; - rIn >> nOleId; - __AddPureHex( t, nOleId ); + { + ADDTEXT( " Ctls stream data: start=" ); + ADDHEX( 4 ); + ADDTEXT( " size=" ); + ADDHEX( 4 ); + } } } break; @@ -5027,12 +5028,10 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) } -#undef ADDFLAG #undef LINESTART #undef IGNORE #undef ADDHEX #undef ADDDEC -#undef ADDTEXT #undef ADDCOLROW #undef PRINT #undef PreDump @@ -5206,409 +5205,396 @@ void Biff8RecDumper::ContDumpStream( SvStream& rStrm, const ULONG nL ) struct XclDumpFunc { const sal_Char* pName; /// Name of the function. - sal_uInt16 nIndex; /// Excel built-in function index. sal_uInt16 nParam; /// Parameter count for fixed functions. }; const XclDumpFunc pFuncData[] = { - { "COUNT", 0, 0 }, - { "IF", 1, 0 }, - { "ISNA", 2, 1 }, - { "ISERROR", 3, 1 }, - { "SUM", 4, 0 }, - { "AVERAGE", 5, 0 }, - { "MIN", 6, 0 }, - { "MAX", 7, 0 }, - { "ROW", 8, 0 }, - { "COLUMN", 9, 0 }, - { "NA", 10, 0 }, - { "NPV", 11, 0 }, - { "STDEV", 12, 0 }, - { "DOLLAR", 13, 0 }, - { "FIXED", 14, 0 }, - { "SIN", 15, 1 }, - { "COS", 16, 1 }, - { "TAN", 17, 1 }, - { "ATAN", 18, 1 }, - { "PI", 19, 0 }, - { "SQRT", 20, 1 }, - { "EXP", 21, 1 }, - { "LN", 22, 1 }, - { "LOG10", 23, 1 }, - { "ABS", 24, 1 }, - { "INT", 25, 1 }, - { "SIGN", 26, 1 }, - { "ROUND", 27, 2 }, - { "LOOKUP", 28, 0 }, - { "INDEX", 29, 0 }, - { "REPT", 30, 2 }, - { "MID", 31, 3 }, - { "LEN", 32, 1 }, - { "VALUE", 33, 1 }, - { "TRUE", 34, 0 }, - { "FALSE", 35, 0 }, - { "AND", 36, 0 }, - { "OR", 37, 0 }, - { "NOT", 38, 1 }, - { "MOD", 39, 2 }, - { "DCOUNT", 40, 3 }, - { "DSUM", 41, 3 }, - { "DAVERAGE", 42, 3 }, - { "DMIN", 43, 3 }, - { "DMAX", 44, 3 }, - { "DSTDEV", 45, 3 }, - { "VAR", 46, 0 }, - { "DVAR", 47, 3 }, - { "TEXT", 48, 2 }, - { "LINEST", 49, 0 }, - { "TREND", 50, 0 }, - { "LOGEST", 51, 0 }, - { "GROWTH", 52, 0 }, - { "GOTO", 53 }, // macro/internal - { "HALT", 54 }, // macro/internal - { "RETURN", 55 }, // macro/internal - { "PV", 56, 0 }, - { "FV", 57, 0 }, - { "NPER", 58, 0 }, - { "PMT", 59, 0 }, - { "RATE", 60, 0 }, - { "MIRR", 61, 3 }, - { "IRR", 62, 0 }, - { "RAND", 63, 0 }, - { "MATCH", 64, 0 }, - { "DATE", 65, 3 }, - { "TIME", 66, 3 }, - { "DAY", 67, 1 }, - { "MONTH", 68, 1 }, - { "YEAR", 69, 1 }, - { "WEEKDAY", 70, 0 }, - { "HOUR", 71, 1 }, - { "MINUTE", 72, 1 }, - { "SECOND", 73, 1 }, - { "NOW", 74, 0 }, - { "AREAS", 75, 1 }, - { "ROWS", 76, 1 }, - { "COLUMNS", 77, 1 }, - { "OFFSET", 78, 0 }, - { "ABSREF", 79 }, // macro/internal - { "RELREF", 80 }, // macro/internal - { "ARGUMENT", 81 }, // macro/internal - { "SEARCH", 82, 0 }, - { "TRANSPOSE", 83, 1 }, - { "ERROR", 84 }, // macro/internal - { "STEP", 85 }, // macro/internal - { "TYPE", 86, 1 }, - { "ECHO", 87 }, // macro/internal - { "SET.NAME", 88 }, // macro/internal - { "CALLER", 89 }, // macro/internal - { "DEREF", 90 }, // macro/internal - { "WINDOWS", 91 }, // macro/internal - { "SERIES", 92 }, // macro/internal - { "DOCUMENTS", 93 }, // macro/internal - { "ACTIVE.CELL", 94 }, // macro/internal - { "SELECTION", 95 }, // macro/internal - { "RESULT", 96 }, // macro/internal - { "ATAN2", 97, 2 }, - { "ASIN", 98, 1 }, - { "ACOS", 99, 1 }, - { "CHOSE", 100, 0 }, - { "HLOOKUP", 101, 0 }, - { "VLOOKUP", 102, 0 }, - { "LINKS", 103 }, // macro/internal - { "INPUT", 104 }, // macro/internal - { "ISREF", 105, 1 }, - { "GET.FORMULA", 106 }, // macro/internal - { "GET.NAME", 107 }, // macro/internal - { "SET.VALUE", 108, 2 }, // macro/internal - { "LOG", 109, 0 }, - { "EXEC", 110 }, // macro/internal - { "CHAR", 111, 1 }, - { "LOWER", 112, 1 }, - { "UPPER", 113, 1 }, - { "PROPER", 114, 1 }, - { "LEFT", 115, 0 }, - { "RIGHT", 116, 0 }, - { "EXACT", 117, 2 }, - { "TRIM", 118, 1 }, - { "REPLACE", 119, 4 }, - { "SUBSTITUTE", 120, 0 }, - { "CODE", 121, 1 }, - { "NAMES", 122 }, // macro/internal - { "DIRECTORY", 123 }, // macro/internal - { "FIND", 124, 0 }, - { "CELL", 125, 0 }, - { "ISERR", 126, 1 }, - { "ISTEXT", 127, 1 }, - { "ISNUMBER", 128, 1 }, - { "ISBLANK", 129, 1 }, - { "T", 130, 1 }, - { "N", 131, 1 }, - { "FOPEN", 132 }, // macro/internal - { "FCLOSE", 133 }, // macro/internal - { "FSIZE", 134 }, // macro/internal - { "FREADLN", 135 }, // macro/internal - { "FREAD", 136 }, // macro/internal - { "FWRITELN", 137 }, // macro/internal - { "FWRITE", 138 }, // macro/internal - { "FPOS", 139 }, // macro/internal - { "DATEVALUE", 140, 1 }, - { "TIMEVALUE", 141, 1 }, - { "SLN", 142, 3 }, - { "SYD", 143, 4 }, - { "DDB", 144, 0 }, - { "GET.DEF", 145 }, // macro/internal - { "REFTEXT", 146 }, // macro/internal - { "TEXTREF", 147 }, // macro/internal - { "INDIRECT", 148, 0 }, - { "REGISTER", 149 }, // macro/internal - { "CALL", 150 }, // macro/internal - { "ADD.BAR", 151 }, // macro/internal - { "ADD.MENU", 152 }, // macro/internal - { "ADD.COMMAND", 153 }, // macro/internal - { "ENABLE.COMMAND", 154 }, // macro/internal - { "CHECK.COMMAND", 155 }, // macro/internal - { "RENAME.COMMAND", 156 }, // macro/internal - { "SHOW.BAR", 157 }, // macro/internal - { "DELETE.MENU", 158 }, // macro/internal - { "DELETE.COMMAND", 159 }, // macro/internal - { "GET.CHART.ITEM", 160 }, // macro/internal - { "DIALOG.BOX", 161 }, // macro/internal - { "CLEAN", 162, 1 }, - { "MDETERM", 163, 1 }, - { "MINVERSE", 164, 1 }, - { "MMULT", 165, 2 }, - { "FILES", 166 }, // macro/internal - { "IPMT", 167, 0 }, - { "PPMT", 168, 0 }, - { "COUNTA", 169, 0 }, - { "CANCEL.KEY", 170 }, // macro/internal - { "FOR", 171 }, // macro/internal - { "WHILE", 172 }, // macro/internal - { "BREAK", 173 }, // macro/internal - { "NEXT", 174 }, // macro/internal - { "INITIATE", 175 }, // macro/internal - { "REQUEST", 176 }, // macro/internal - { "POKE", 177 }, // macro/internal - { "EXECUTE", 178 }, // macro/internal - { "TERMINATE", 179 }, // macro/internal - { "RESTART", 180 }, // macro/internal - { "HELP", 181 }, // macro/internal - { "GET.BAR", 182 }, // macro/internal - { "PRODUCT", 183, 0 }, - { "FACT", 184, 1 }, - { "GET.CELL", 185 }, // macro/internal - { "GET.WORKSPACE", 186 }, // macro/internal - { "GET.WINDOW", 187 }, // macro/internal - { "GET.DOCUMENT", 188 }, // macro/internal - { "DPRODUCT", 189, 3 }, - { "ISNONTEXT", 190, 1 }, - { "GET.NOTE", 191 }, // macro/internal - { "NOTE", 192 }, // macro/internal - { "STDEVP", 193, 0 }, - { "VARP", 194, 0 }, - { "DSTDDEVP", 195, 3 }, - { "DVARP", 196, 3 }, - { "TRUNC", 197, 0 }, - { "ISLOGICAL", 198, 1 }, - { "DBCOUNTA", 199, 3 }, - { "DELETE.BAR", 200 }, // macro/internal - { "UNREGISTER", 201 }, // macro/internal - { "202", 202 }, // not used - { "203", 203 }, // not used - { "USDOLLAR", 204 }, // macro/internal - { "FINDB", 205 }, // macro/internal - { "SEARCHB", 206 }, // macro/internal - { "REPLACEB", 207 }, // macro/internal - { "LEFTB", 208 }, // macro/internal - { "RIGHTB", 209 }, // macro/internal - { "MIDB", 210 }, // macro/internal - { "LENB", 211 }, // macro/internal - { "ROUNDUP", 212, 2 }, - { "ROUNDDOWN", 213, 2 }, - { "ASC", 214 }, // macro/internal - { "DBSC", 215 }, // macro/internal - { "RANK", 216, 0 }, - { "217", 217 }, // not used - { "218", 218 }, // not used - { "ADDRESS", 219, 0 }, - { "DAYS360", 220, 0 }, - { "TODAY", 221, 0 }, - { "VDB", 222, 0 }, - { "ELSE", 223 }, // macro/internal - { "ELSE.IF", 224 }, // macro/internal - { "END.IF", 225 }, // macro/internal - { "FOR.CELL", 226 }, // macro/internal - { "MEDIAN", 227, 0 }, - { "SUMPRODUCT", 228, 0 }, - { "SINH", 229, 1 }, - { "COSH", 230, 1 }, - { "TANH", 231, 1 }, - { "ASINH", 232, 1 }, - { "ACOSH", 233, 1 }, - { "ATANH", 234, 1 }, - { "DGET", 235, 3 }, - { "CREATE.OBJECT", 236 }, // macro/internal - { "VOLATILE", 237 }, // macro/internal - { "LAST.ERROR", 238 }, // macro/internal - { "CUSTOM.UNDO", 239 }, // macro/internal - { "CUSTOM.REPEAT", 240 }, // macro/internal - { "FORMULA.CONVERT", 241 }, // macro/internal - { "GET.LINK.INFO", 242 }, // macro/internal - { "TEXT.BOX", 243 }, // macro/internal - { "INFO", 244 }, // macro/internal - { "GROUP", 245 }, // macro/internal - { "GET.OBJECT", 246 }, // macro/internal - { "DB", 247, 0 }, - { "PAUSE", 248 }, // macro/internal - { "249", 249 }, // not used - { "250", 250 }, // not used - { "RESUME", 251 }, // macro/internal - { "FREQUENCY", 252, 2 }, - { "ADD.TOOLBAR", 253 }, // macro/internal - { "DELETE.TOOLBAR", 254 }, // macro/internal - { "EXTERNCALL", 255 }, // macro/internal - { "RESET.TOOLBAR", 256 }, // macro/internal - { "EVALUATE", 257 }, // macro/internal - { "GET.TOOLBAR", 258 }, // macro/internal - { "GET.TOOL", 259 }, // macro/internal - { "SPELLING.CHECK", 260 }, // macro/internal - { "ERROR.TYPE", 261, 1 }, - { "APP.TITLE", 262 }, // macro/internal - { "WINDOW.TITLE", 263 }, // macro/internal - { "SAVE.TOOLBAR", 264 }, // macro/internal - { "ENABLE.TOOL", 265 }, // macro/internal - { "PRESS.TOOL", 266 }, // macro/internal - { "REGISTER.ID", 267 }, // macro/internal - { "GET.WORKBOOK", 268 }, // macro/internal - { "AVEDEV", 269, 0 }, - { "BETADIST", 270, 0 }, - { "GAMMALN", 271, 1 }, - { "BETAINV", 272, 0 }, - { "BINOMDIST", 273, 4 }, - { "CHIDIST", 274, 2 }, - { "CHIINV", 275, 2 }, - { "COMBIN", 276, 2 }, - { "CONFIDENCE", 277, 3 }, - { "CRITBINOM", 278, 3 }, - { "EVEN", 279, 1 }, - { "EXPONDIST", 280, 3 }, - { "FDIST", 281, 3 }, - { "FINV", 282, 3 }, - { "FISHER", 283, 1 }, - { "FISHERINV", 284, 1 }, - { "FLOOR", 285, 2 }, - { "GAMMADIST", 286, 4 }, - { "GAMMAINV", 287, 3 }, - { "CEILING", 288, 2 }, - { "HYPGEOMDIST", 289, 4 }, - { "LOGNORMDIST", 290, 3 }, - { "LOGINV", 291, 3 }, - { "NEGBINOMDIST", 292, 3 }, - { "NORMDIST", 293, 4 }, - { "NORMSDIST", 294, 1 }, - { "NORMINV", 295, 3 }, - { "NORMSINV", 296, 1 }, - { "STANDARDIZE", 297, 3 }, - { "ODD", 298, 1 }, - { "PERMUT", 299, 2 }, - { "POISSON", 300, 3 }, - { "TDIST", 301, 3 }, - { "WEIBULL", 302, 4 }, - { "SUMXMY2", 303, 2 }, - { "SUMX2MY2", 304, 2 }, - { "SUMX2PY2", 305, 2 }, - { "CHITEST", 306, 2 }, - { "CORREL", 307, 2 }, - { "COVAR", 308, 2 }, - { "FORECAST", 309, 3 }, - { "FTEST", 310, 2 }, - { "INTERCEPT", 311, 2 }, - { "PEARSON", 312, 2 }, - { "RSQ", 313, 2 }, - { "STEYX", 314, 2 }, - { "SLOPE", 315, 2 }, - { "TTEST", 316, 4 }, - { "PROB", 317, 0 }, - { "DEVSQ", 318, 0 }, - { "GEOMEAN", 319, 0 }, - { "HARMEAN", 320, 0 }, - { "SUMSQ", 321, 0 }, - { "KURT", 322, 0 }, - { "SKEW", 323, 0 }, - { "ZTEST", 324, 0 }, - { "LARGE", 325, 2 }, - { "SMALL", 326, 2 }, - { "QUARTILE", 327, 2 }, - { "PERCENTILE", 328, 2 }, - { "PERCENTRANK", 329, 0 }, - { "MODE", 330, 0 }, - { "TRIMMEAN", 331, 2 }, - { "TINV", 332, 2 }, - { "333", 333 }, // not used - { "MOVIE.COMMAND", 334 }, // macro/internal - { "GET.MOVIE", 335 }, // macro/internal - { "CONCATENATE", 336, 0 }, - { "POWER", 337, 2 }, - { "PIVOT.ADD.DATA", 338 }, // macro/internal - { "GET.PIVOT.TABLE", 339 }, // macro/internal - { "GET.PIVOT.FIELD", 340 }, // macro/internal - { "GET.PIVOT.ITEM", 341 }, // macro/internal - { "RADIANS", 342, 1 }, - { "DEGREES", 343, 1 }, - { "SUBTOTAL", 344, 0 }, - { "SUMIF", 345, 0 }, - { "COUNTIF", 346, 2 }, - { "COUNTBLANK", 347, 1 }, - { "SCENARIO.GET", 348 }, // macro/internal - { "OPTIONS.LISTS.GET",349 }, // macro/internal - { "ISPMT", 350, 4 }, - { "DATEDIF", 351 }, // macro/internal - { "DATESTRING", 352 }, // macro/internal - { "NUMBERSTRING", 353 }, // macro/internal - { "ROMAN", 354, 0 }, - { "OPEN.DIALOG", 355 }, // macro/internal - { "SAVE.DIALOG", 356 }, // macro/internal - { "VIEW.GET", 357 }, // macro/internal - { "GETPIVOTDATA", 358, 0 }, - { "HYPERLINK", 359, 2 }, - { "PHONETIC", 360 }, // macro/internal - { "AVERAGEA", 361, 0 }, - { "MAXA", 362, 0 }, - { "MINA", 363, 0 }, - { "STDEVPA", 364, 0 }, - { "VARPA", 365, 0 }, - { "STDEVA", 366, 0 }, - { "VARA", 367, 0 }, - { "BAHTTEXT", 368, 1 }, - { "THAIDAYOFWEEK", 369 }, // macro/internal - { "THAIDIGIT", 370 }, // macro/internal - { "THAIMONTHOFYEAR", 371 }, // macro/internal - { "THAINUMSOUND", 372 }, // macro/internal - { "THAINUMSTRING", 373 }, // macro/internal - { "THAISTRINGLENGTH", 374 }, // macro/internal - { "ISTHAIDIGIT", 375 }, // macro/internal - { "ROUNDBAHTDOWN", 376 }, // macro/internal - { "ROUNDBAHTUP", 377 }, // macro/internal - { "THAIYEAR", 378 }, // macro/internal - { "RTD", 379 } // macro/internal +/* 0*/ { "COUNT", 0 }, + { "IF", 0 }, + { "ISNA", 1 }, + { "ISERROR", 1 }, + { "SUM", 0 }, +/* 5*/ { "AVERAGE", 0 }, + { "MIN", 0 }, + { "MAX", 0 }, + { "ROW", 0 }, + { "COLUMN", 0 }, +/* 10*/ { "NA", 0 }, + { "NPV", 0 }, + { "STDEV", 0 }, + { "DOLLAR", 0 }, + { "FIXED", 0 }, +/* 15*/ { "SIN", 1 }, + { "COS", 1 }, + { "TAN", 1 }, + { "ATAN", 1 }, + { "PI", 0 }, +/* 20*/ { "SQRT", 1 }, + { "EXP", 1 }, + { "LN", 1 }, + { "LOG10", 1 }, + { "ABS", 1 }, +/* 25*/ { "INT", 1 }, + { "SIGN", 1 }, + { "ROUND", 2 }, + { "LOOKUP", 0 }, + { "INDEX", 0 }, +/* 30*/ { "REPT", 2 }, + { "MID", 3 }, + { "LEN", 1 }, + { "VALUE", 1 }, + { "TRUE", 0 }, +/* 35*/ { "FALSE", 0 }, + { "AND", 0 }, + { "OR", 0 }, + { "NOT", 1 }, + { "MOD", 2 }, +/* 40*/ { "DCOUNT", 3 }, + { "DSUM", 3 }, + { "DAVERAGE", 3 }, + { "DMIN", 3 }, + { "DMAX", 3 }, +/* 45*/ { "DSTDEV", 3 }, + { "VAR", 0 }, + { "DVAR", 3 }, + { "TEXT", 2 }, + { "LINEST", 0 }, +/* 50*/ { "TREND", 0 }, + { "LOGEST", 0 }, + { "GROWTH", 0 }, + { "GOTO" }, // macro/internal + { "HALT" }, // macro/internal +/* 55*/ { "RETURN" }, // macro/internal + { "PV", 0 }, + { "FV", 0 }, + { "NPER", 0 }, + { "PMT", 0 }, +/* 60*/ { "RATE", 0 }, + { "MIRR", 3 }, + { "IRR", 0 }, + { "RAND", 0 }, + { "MATCH", 0 }, +/* 65*/ { "DATE", 3 }, + { "TIME", 3 }, + { "DAY", 1 }, + { "MONTH", 1 }, + { "YEAR", 1 }, +/* 70*/ { "WEEKDAY", 0 }, + { "HOUR", 1 }, + { "MINUTE", 1 }, + { "SECOND", 1 }, + { "NOW", 0 }, +/* 75*/ { "AREAS", 1 }, + { "ROWS", 1 }, + { "COLUMNS", 1 }, + { "OFFSET", 0 }, + { "ABSREF" }, // macro/internal +/* 80*/ { "RELREF" }, // macro/internal + { "ARGUMENT" }, // macro/internal + { "SEARCH", 0 }, + { "TRANSPOSE", 1 }, + { "ERROR" }, // macro/internal +/* 85*/ { "STEP" }, // macro/internal + { "TYPE", 1 }, + { "ECHO" }, // macro/internal + { "SET.NAME" }, // macro/internal + { "CALLER" }, // macro/internal +/* 90*/ { "DEREF" }, // macro/internal + { "WINDOWS" }, // macro/internal + { "SERIES" }, // macro/internal + { "DOCUMENTS" }, // macro/internal + { "ACTIVE.CELL" }, // macro/internal +/* 95*/ { "SELECTION" }, // macro/internal + { "RESULT" }, // macro/internal + { "ATAN2", 2 }, + { "ASIN", 1 }, + { "ACOS", 1 }, +/*100*/ { "CHOSE", 0 }, + { "HLOOKUP", 0 }, + { "VLOOKUP", 0 }, + { "LINKS" }, // macro/internal + { "INPUT" }, // macro/internal +/*105*/ { "ISREF", 1 }, + { "GET.FORMULA" }, // macro/internal + { "GET.NAME" }, // macro/internal + { "SET.VALUE", 2 }, // macro/internal + { "LOG", 0 }, +/*110*/ { "EXEC" }, // macro/internal + { "CHAR", 1 }, + { "LOWER", 1 }, + { "UPPER", 1 }, + { "PROPER", 1 }, +/*115*/ { "LEFT", 0 }, + { "RIGHT", 0 }, + { "EXACT", 2 }, + { "TRIM", 1 }, + { "REPLACE", 4 }, +/*120*/ { "SUBSTITUTE", 0 }, + { "CODE", 1 }, + { "NAMES" }, // macro/internal + { "DIRECTORY" }, // macro/internal + { "FIND", 0 }, +/*125*/ { "CELL", 0 }, + { "ISERR", 1 }, + { "ISTEXT", 1 }, + { "ISNUMBER", 1 }, + { "ISBLANK", 1 }, +/*130*/ { "T", 1 }, + { "N", 1 }, + { "FOPEN" }, // macro/internal + { "FCLOSE" }, // macro/internal + { "FSIZE" }, // macro/internal +/*135*/ { "FREADLN" }, // macro/internal + { "FREAD" }, // macro/internal + { "FWRITELN" }, // macro/internal + { "FWRITE" }, // macro/internal + { "FPOS" }, // macro/internal +/*140*/ { "DATEVALUE", 1 }, + { "TIMEVALUE", 1 }, + { "SLN", 3 }, + { "SYD", 4 }, + { "DDB", 0 }, +/*145*/ { "GET.DEF" }, // macro/internal + { "REFTEXT" }, // macro/internal + { "TEXTREF" }, // macro/internal + { "INDIRECT", 0 }, + { "REGISTER" }, // macro/internal +/*150*/ { "CALL" }, // macro/internal + { "ADD.BAR" }, // macro/internal + { "ADD.MENU" }, // macro/internal + { "ADD.COMMAND" }, // macro/internal + { "ENABLE.COMMAND" }, // macro/internal +/*155*/ { "CHECK.COMMAND" }, // macro/internal + { "RENAME.COMMAND" }, // macro/internal + { "SHOW.BAR" }, // macro/internal + { "DELETE.MENU" }, // macro/internal + { "DELETE.COMMAND" }, // macro/internal +/*160*/ { "GET.CHART.ITEM" }, // macro/internal + { "DIALOG.BOX" }, // macro/internal + { "CLEAN", 1 }, + { "MDETERM", 1 }, + { "MINVERSE", 1 }, +/*165*/ { "MMULT", 2 }, + { "FILES" }, // macro/internal + { "IPMT", 0 }, + { "PPMT", 0 }, + { "COUNTA", 0 }, +/*170*/ { "CANCEL.KEY" }, // macro/internal + { "FOR" }, // macro/internal + { "WHILE" }, // macro/internal + { "BREAK" }, // macro/internal + { "NEXT" }, // macro/internal +/*175*/ { "INITIATE" }, // macro/internal + { "REQUEST" }, // macro/internal + { "POKE" }, // macro/internal + { "EXECUTE" }, // macro/internal + { "TERMINATE" }, // macro/internal +/*180*/ { "RESTART" }, // macro/internal + { "HELP" }, // macro/internal + { "GET.BAR" }, // macro/internal + { "PRODUCT", 0 }, + { "FACT", 1 }, +/*185*/ { "GET.CELL" }, // macro/internal + { "GET.WORKSPACE" }, // macro/internal + { "GET.WINDOW" }, // macro/internal + { "GET.DOCUMENT" }, // macro/internal + { "DPRODUCT", 3 }, +/*190*/ { "ISNONTEXT", 1 }, + { "GET.NOTE" }, // macro/internal + { "NOTE" }, // macro/internal + { "STDEVP", 0 }, + { "VARP", 0 }, +/*195*/ { "DSTDDEVP", 3 }, + { "DVARP", 3 }, + { "TRUNC", 0 }, + { "ISLOGICAL", 1 }, + { "DBCOUNTA", 3 }, +/*200*/ { "DELETE.BAR" }, // macro/internal + { "UNREGISTER" }, // macro/internal + { "202" }, // not used + { "203" }, // not used + { "USDOLLAR" }, // macro/internal +/*205*/ { "FINDB" }, // macro/internal + { "SEARCHB" }, // macro/internal + { "REPLACEB" }, // macro/internal + { "LEFTB" }, // macro/internal + { "RIGHTB" }, // macro/internal +/*210*/ { "MIDB" }, // macro/internal + { "LENB" }, // macro/internal + { "ROUNDUP", 2 }, + { "ROUNDDOWN", 2 }, + { "ASC" }, // macro/internal +/*215*/ { "DBSC" }, // macro/internal + { "RANK", 0 }, + { "217" }, // not used + { "218" }, // not used + { "ADDRESS", 0 }, +/*220*/ { "DAYS360", 0 }, + { "TODAY", 0 }, + { "VDB", 0 }, + { "ELSE" }, // macro/internal + { "ELSE.IF" }, // macro/internal +/*225*/ { "END.IF" }, // macro/internal + { "FOR.CELL" }, // macro/internal + { "MEDIAN", 0 }, + { "SUMPRODUCT", 0 }, + { "SINH", 1 }, +/*230*/ { "COSH", 1 }, + { "TANH", 1 }, + { "ASINH", 1 }, + { "ACOSH", 1 }, + { "ATANH", 1 }, +/*235*/ { "DGET", 3 }, + { "CREATE.OBJECT" }, // macro/internal + { "VOLATILE" }, // macro/internal + { "LAST.ERROR" }, // macro/internal + { "CUSTOM.UNDO" }, // macro/internal +/*240*/ { "CUSTOM.REPEAT" }, // macro/internal + { "FORMULA.CONVERT" }, // macro/internal + { "GET.LINK.INFO" }, // macro/internal + { "TEXT.BOX" }, // macro/internal + { "INFO" }, // macro/internal +/*245*/ { "GROUP" }, // macro/internal + { "GET.OBJECT" }, // macro/internal + { "DB", 0 }, + { "PAUSE" }, // macro/internal + { "249" }, // not used +/*250*/ { "250" }, // not used + { "RESUME" }, // macro/internal + { "FREQUENCY", 2 }, + { "ADD.TOOLBAR" }, // macro/internal + { "DELETE.TOOLBAR" }, // macro/internal +/*255*/ { "EXTERN.CALL" }, // macro/internal + { "RESET.TOOLBAR" }, // macro/internal + { "EVALUATE" }, // macro/internal + { "GET.TOOLBAR" }, // macro/internal + { "GET.TOOL" }, // macro/internal +/*260*/ { "SPELLING.CHECK" }, // macro/internal + { "ERROR.TYPE", 1 }, + { "APP.TITLE" }, // macro/internal + { "WINDOW.TITLE" }, // macro/internal + { "SAVE.TOOLBAR" }, // macro/internal +/*265*/ { "ENABLE.TOOL" }, // macro/internal + { "PRESS.TOOL" }, // macro/internal + { "REGISTER.ID" }, // macro/internal + { "GET.WORKBOOK" }, // macro/internal + { "AVEDEV", 0 }, +/*270*/ { "BETADIST", 0 }, + { "GAMMALN", 1 }, + { "BETAINV", 0 }, + { "BINOMDIST", 4 }, + { "CHIDIST", 2 }, +/*275*/ { "CHIINV", 2 }, + { "COMBIN", 2 }, + { "CONFIDENCE", 3 }, + { "CRITBINOM", 3 }, + { "EVEN", 1 }, +/*280*/ { "EXPONDIST", 3 }, + { "FDIST", 3 }, + { "FINV", 3 }, + { "FISHER", 1 }, + { "FISHERINV", 1 }, +/*285*/ { "FLOOR", 2 }, + { "GAMMADIST", 4 }, + { "GAMMAINV", 3 }, + { "CEILING", 2 }, + { "HYPGEOMDIST", 4 }, +/*290*/ { "LOGNORMDIST", 3 }, + { "LOGINV", 3 }, + { "NEGBINOMDIST", 3 }, + { "NORMDIST", 4 }, + { "NORMSDIST", 1 }, +/*295*/ { "NORMINV", 3 }, + { "NORMSINV", 1 }, + { "STANDARDIZE", 3 }, + { "ODD", 1 }, + { "PERMUT", 2 }, +/*300*/ { "POISSON", 3 }, + { "TDIST", 3 }, + { "WEIBULL", 4 }, + { "SUMXMY2", 2 }, + { "SUMX2MY2", 2 }, +/*305*/ { "SUMX2PY2", 2 }, + { "CHITEST", 2 }, + { "CORREL", 2 }, + { "COVAR", 2 }, + { "FORECAST", 3 }, +/*310*/ { "FTEST", 2 }, + { "INTERCEPT", 2 }, + { "PEARSON", 2 }, + { "RSQ", 2 }, + { "STEYX", 2 }, +/*315*/ { "SLOPE", 2 }, + { "TTEST", 4 }, + { "PROB", 0 }, + { "DEVSQ", 0 }, + { "GEOMEAN", 0 }, +/*320*/ { "HARMEAN", 0 }, + { "SUMSQ", 0 }, + { "KURT", 0 }, + { "SKEW", 0 }, + { "ZTEST", 0 }, +/*325*/ { "LARGE", 2 }, + { "SMALL", 2 }, + { "QUARTILE", 2 }, + { "PERCENTILE", 2 }, + { "PERCENTRANK", 0 }, +/*330*/ { "MODE", 0 }, + { "TRIMMEAN", 2 }, + { "TINV", 2 }, + { "333" }, // not used + { "MOVIE.COMMAND" }, // macro/internal +/*335*/ { "GET.MOVIE" }, // macro/internal + { "CONCATENATE", 0 }, + { "POWER", 2 }, + { "PIVOT.ADD.DATA" }, // macro/internal + { "GET.PIVOT.TABLE" }, // macro/internal +/*340*/ { "GET.PIVOT.FIELD" }, // macro/internal + { "GET.PIVOT.ITEM" }, // macro/internal + { "RADIANS", 1 }, + { "DEGREES", 1 }, + { "SUBTOTAL", 0 }, +/*345*/ { "SUMIF", 0 }, + { "COUNTIF", 2 }, + { "COUNTBLANK", 1 }, + { "SCENARIO.GET" }, // macro/internal + { "OPTIONS.LISTS.GET" }, // macro/internal +/*350*/ { "ISPMT", 4 }, + { "DATEDIF" }, // macro/internal + { "DATESTRING" }, // macro/internal + { "NUMBERSTRING" }, // macro/internal + { "ROMAN", 0 }, +/*355*/ { "OPEN.DIALOG" }, // macro/internal + { "SAVE.DIALOG" }, // macro/internal + { "VIEW.GET" }, // macro/internal + { "GETPIVOTDATA", 0 }, + { "HYPERLINK", 2 }, +/*360*/ { "PHONETIC" }, // macro/internal + { "AVERAGEA", 0 }, + { "MAXA", 0 }, + { "MINA", 0 }, + { "STDEVPA", 0 }, +/*365*/ { "VARPA", 0 }, + { "STDEVA", 0 }, + { "VARA", 0 }, + { "BAHTTEXT", 1 }, + { "THAIDAYOFWEEK" }, // macro/internal +/*370*/ { "THAIDIGIT" }, // macro/internal + { "THAIMONTHOFYEAR" }, // macro/internal + { "THAINUMSOUND" }, // macro/internal + { "THAINUMSTRING" }, // macro/internal + { "THAISTRINGLENGTH" }, // macro/internal +/*375*/ { "ISTHAIDIGIT" }, // macro/internal + { "ROUNDBAHTDOWN" }, // macro/internal + { "ROUNDBAHTUP" }, // macro/internal + { "THAIYEAR" }, // macro/internal + { "RTD" } // macro/internal }; const XclDumpFunc* lcl_GetFuncData( sal_uInt16 nIndex ) { - const XclDumpFunc* pFirst = pFuncData; - const XclDumpFunc* pLast = pFuncData + sizeof( pFuncData ) / sizeof( XclDumpFunc ) - 1; - while( pFirst <= pLast ) - { - const XclDumpFunc* pCurr = pFirst + (pLast - pFirst) / 2; - if( pCurr->nIndex > nIndex ) - pLast = pCurr - 1; - else if( pCurr->nIndex < nIndex ) - pFirst = pCurr + 1; - else - return pCurr; - } - return NULL; + return (nIndex < STATIC_TABLE_SIZE( pFuncData )) ? (pFuncData + nIndex) : NULL; } @@ -5985,7 +5971,7 @@ void Biff8RecDumper::FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT ) break; case 0x1D: // Boolean [315 266] STARTTOKEN( "Bool" ); - aOperand += pIn->ReaduInt8() ? "FALSE" : "TRUE"; + aOperand += pIn->ReaduInt8() ? "TRUE" : "FALSE"; t += aOperand; aStack.PushOperand( aOperand ); break; @@ -6246,26 +6232,438 @@ void Biff8RecDumper::FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT ) } -void Biff8RecDumper::ControlsDump( SvStream& rIn ) + + +/** Import from bytestream. */ +SvStream& operator>>( SvStream& rStrm, XclGuid& rGuid ) { - if( !pDumpStream ) - return; + rStrm.Read( rGuid.mpData, 16 ); + return rStrm; +} - rIn.Seek( STREAM_SEEK_TO_END ); - ULONG nLen = rIn.Tell(); - rIn.Seek( STREAM_SEEK_TO_BEGIN ); +/** Output as text. */ +SvStream& operator<<( SvStream& rStrm, const XclGuid& rGuid ) +{ + ByteString aOut; + __AddPureHex( aOut, SVBT32ToLong( rGuid.mpData ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, SVBT16ToShort( rGuid.mpData + 4 ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, SVBT16ToShort( rGuid.mpData + 6 ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, rGuid.mpData[ 8 ] ); + __AddPureHex( aOut, rGuid.mpData[ 9 ] ); + aOut.Append( '-' ); + __AddPureHex( aOut, rGuid.mpData[ 10 ] ); + __AddPureHex( aOut, rGuid.mpData[ 11 ] ); + __AddPureHex( aOut, rGuid.mpData[ 12 ] ); + __AddPureHex( aOut, rGuid.mpData[ 13 ] ); + __AddPureHex( aOut, rGuid.mpData[ 14 ] ); + __AddPureHex( aOut, rGuid.mpData[ 15 ] ); + return rStrm << aOut.GetBuffer(); +} - if( nLen == ~0UL ) - return; +// *** yet some other ugly macros for the specials of form control dumping *** + +// align the instream +#define EXC_CTRLDUMP_ALIGN_INSTRM( val ) rInStrm.Seek( (rInStrm.Tell()+(val)-1) & ~((val)-1) ) +// push the string to outstream +#define EXC_CTRLDUMP_PRINT() { if( t.Len() ) { rOutStrm << t.GetBuffer() << '\n'; t.Erase(); } } +#define EXC_CTRLDUMP_PRINTC() { if( t.Len() > 60 ) EXC_CTRLDUMP_PRINT(); } + +// implementation, don't use +#define IMPL_EXC_CTRLDUMP_VALUE( type, func, text ) { EXC_CTRLDUMP_ALIGN_INSTRM( sizeof( type ) ); type n; rInStrm >> n; t += " " text "="; func( t, n ); EXC_CTRLDUMP_PRINTC(); } +#define IMPL_EXC_CTRLDUMP_VAR( var, mask, func, text ) { EXC_CTRLDUMP_ALIGN_INSTRM( sizeof( var ) ); rInStrm >> var; var &= (mask); t += " " text "="; func( t, var ); EXC_CTRLDUMP_PRINTC(); } + +// read a value from stream +#define EXC_CTRLDUMP_HEX4( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt32, __AddHex, text ) +#define EXC_CTRLDUMP_DEC4( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int32, __AddDec, text ) +#define EXC_CTRLDUMP_HEX2( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt16, __AddHex, text ) +#define EXC_CTRLDUMP_DEC2( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int16, __AddDec, text ) +#define EXC_CTRLDUMP_HEX1( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt8, __AddHex, text ) +#define EXC_CTRLDUMP_DEC1( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int8, __AddDec, text ) +// read a value from stream into existing variable +#define EXC_CTRLDUMP_HEXVAR( var, text ) IMPL_EXC_CTRLDUMP_VAR( var, ~0, __AddHex, text ) +#define EXC_CTRLDUMP_DECVAR( var, text ) IMPL_EXC_CTRLDUMP_VAR( var, ~0, __AddDec, text ) +#define EXC_CTRLDUMP_HEXVARMASK( var, mask, text ) IMPL_EXC_CTRLDUMP_VAR( var, mask, __AddHex, text ) +#define EXC_CTRLDUMP_DECVARMASK( var, mask, text ) IMPL_EXC_CTRLDUMP_VAR( var, mask, __AddDec, text ) +// read a string +#define EXC_CTRLDUMP_STRING( var, text ) \ +if( var ) \ +{ \ + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); \ + if( var > 128 ) var = 128; \ + sal_Char* p = new sal_Char[ var + 1 ]; \ + rInStrm.Read( p, var ); p[ var ] = '\0'; \ + t.Append( " " text "='" ).Append( p ).Append( '\'' ); \ + delete [] p; \ + EXC_CTRLDUMP_PRINTC(); \ +} +// read flag fields +#define EXC_CTRLDUMP_STARTFLAG( text ) { EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); rInStrm >> __nFlags; t += " " text "="; __AddHex( t, __nFlags ); } +#define EXC_CTRLDUMP_ADDFLAG( flag, text ) { if( __nFlags & (flag) ) t += " -" text; EXC_CTRLDUMP_PRINTC(); } +#define EXC_CTRLDUMP_ENDFLAG( reserved ) EXC_CTRLDUMP_ADDFLAG( reserved, "!unknown!" ) +// read coordinates +#define EXC_CTRLDUMP_COORD( text ) { EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); EXC_CTRLDUMP_DEC2( text "-x" ); EXC_CTRLDUMP_DEC2( "y" ); } +#define EXC_CTRLDUMP_SIZE() { EXC_CTRLDUMP_DEC4( "width" ); EXC_CTRLDUMP_DEC4( "height" ); } + +// *** macros end *** - *pDumpStream << "### start Ctls stream ###\n"; - while( nLen ) +void Biff8RecDumper::ControlsDump( SvStream& rInStrm ) +{ + static const XclGuid aPushButtonGuid( 0xD7053240, 0xCE69, 0x11CD, 0xA7, 0x77, 0x00, 0xDD, 0x01, 0x14, 0x3C, 0x57 ); + static const XclGuid aToggleButtonGuid( 0x8BD21D60, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aCheckBoxGuid( 0x8BD21D40, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aRadioButtonGuid( 0x8BD21D50, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aLabelGuid( 0x978C9E23, 0xD4B0, 0x11CE, 0xBF, 0x2D, 0x00, 0xAA, 0x00, 0x3F, 0x40, 0xD0 ); + static const XclGuid aEditGuid( 0x8BD21D10, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aListBoxGuid( 0x8BD21D20, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aComboBoxGuid( 0x8BD21D30, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aSpinGuid( 0x79176FB0, 0xB7F2, 0x11CE, 0x97, 0xEF, 0x00, 0xAA, 0x00, 0x6D, 0x27, 0x76 ); + static const XclGuid aScrollBarGuid( 0xDFD181E0, 0x5E2F, 0x11CE, 0xA4, 0x49, 0x00, 0xAA, 0x00, 0x4A, 0x80, 0x3D ); + + if( !pDumpStream ) return; + rInStrm.Seek( STREAM_SEEK_TO_END ); + sal_uInt32 nInSize = rInStrm.Tell(); + rInStrm.Seek( STREAM_SEEK_TO_BEGIN ); + if( nInSize == ~0UL ) return; + + SvStream& rOutStrm = *pDumpStream; + rOutStrm << "\n\n\n-- Ctls stream dump --\n"; + + enum { + xlCtrlPushButton, + xlCtrlToggleButton, + xlCtrlCheckBox, + xlCtrlRadioButton, + xlCtrlLabel, + xlCtrlEdit, + xlCtrlListBox, + xlCtrlComboBox, + xlCtrlSpin, + xlCtrlScrollBar, + xlCtrlUnknown + } eCtrlType = xlCtrlUnknown; + + while( rInStrm.Tell() < nInSize ) { - UINT16 nPart = ( nLen >= 1024 )? 1024 : ( UINT16 ) nLen; - ContDumpStream( rIn, nPart ); - nLen -= nPart; + ByteString t; // "t" needed for macros + sal_uInt32 __nFlags; // "__nFlags" needed for macros + sal_uInt16 nId, nSize; + sal_uInt32 nNextPos; + + // stream position + __AddHex( t, rInStrm.Tell() ); + rOutStrm << '\n' << t.GetBuffer() << ": "; + + // control type + XclGuid aGuid; + rInStrm >> aGuid >> nId >> nSize; + nNextPos = rInStrm.Tell() + nSize; + + if( aGuid == aPushButtonGuid ) eCtrlType = xlCtrlPushButton; + else if( aGuid == aToggleButtonGuid ) eCtrlType = xlCtrlToggleButton; + else if( aGuid == aCheckBoxGuid ) eCtrlType = xlCtrlCheckBox; + else if( aGuid == aRadioButtonGuid ) eCtrlType = xlCtrlRadioButton; + else if( aGuid == aLabelGuid ) eCtrlType = xlCtrlLabel; + else if( aGuid == aEditGuid ) eCtrlType = xlCtrlEdit; + else if( aGuid == aListBoxGuid ) eCtrlType = xlCtrlListBox; + else if( aGuid == aComboBoxGuid ) eCtrlType = xlCtrlComboBox; + else if( aGuid == aSpinGuid ) eCtrlType = xlCtrlSpin; + else if( aGuid == aScrollBarGuid ) eCtrlType = xlCtrlScrollBar; + else eCtrlType = xlCtrlUnknown; + + // write control type + rOutStrm << aGuid << " ("; + switch( eCtrlType ) + { + case xlCtrlPushButton: rOutStrm << "PushButton"; break; + case xlCtrlToggleButton: rOutStrm << "ToggleButton"; break; + case xlCtrlCheckBox: rOutStrm << "CheckBox"; break; + case xlCtrlRadioButton: rOutStrm << "RadioButton"; break; + case xlCtrlLabel: rOutStrm << "Label"; break; + case xlCtrlEdit: rOutStrm << "Edit"; break; + case xlCtrlListBox: rOutStrm << "ListBox"; break; + case xlCtrlComboBox: rOutStrm << "ComboBox"; break; + case xlCtrlSpin: rOutStrm << "Spin"; break; + case xlCtrlScrollBar: rOutStrm << "ScrollBar"; break; + default: rOutStrm << "*UNKNOWN*"; + } + rOutStrm << ")\n"; + + // control data + t = "id="; __AddHex( t, nId ); t += " size="; __AddHex( t, nSize ); + rOutStrm << t.GetBuffer() << " (control data)\n"; + t.Erase(); + + switch( eCtrlType ) + { + case xlCtrlPushButton: + { + sal_uInt32 nCaptionLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x0001, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0004, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x0008, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x0010, "picpos" ); + EXC_CTRLDUMP_ADDFLAG( 0x0040, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x0080, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x0100, "accel" ); + EXC_CTRLDUMP_ADDFLAG( 0x0400, "icon" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFA00 ); // 0x20 always(?) + sal_uInt32 nCtrlFlags = __nFlags; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x0002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x0004 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ENDFLAG( 0xEF7FFFF1 ); + } + if( nCtrlFlags & 0x0008 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_COORD( "picpos" ); + if( nCtrlFlags & 0x0040 ) EXC_CTRLDUMP_HEX2( "mouseptr" ); + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_HEX2( "pic-len" ); + if( nCtrlFlags & 0x0100 ) EXC_CTRLDUMP_HEX2( "accel" ); + if( nCtrlFlags & 0x0400 ) EXC_CTRLDUMP_HEX2( "icon-len" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_SIZE(); + } + break; + case xlCtrlToggleButton: + case xlCtrlCheckBox: + case xlCtrlRadioButton: + case xlCtrlEdit: + case xlCtrlListBox: + case xlCtrlComboBox: + { + sal_uInt32 nCaptionLen = 0; + sal_uInt32 nValueLen = 0; + sal_uInt32 nGroupNameLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000001, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "maxlen" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000010, "borderstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000020, "scrollbars" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000040, "style" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000080, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000200, "password" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000400, "listwidth" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000800, "boundcol" ); + EXC_CTRLDUMP_ADDFLAG( 0x00001000, "textcol" ); + EXC_CTRLDUMP_ADDFLAG( 0x00002000, "colcount" ); + EXC_CTRLDUMP_ADDFLAG( 0x00004000, "listrows" ); + EXC_CTRLDUMP_ADDFLAG( 0x00008000, "colwidth?" ); + EXC_CTRLDUMP_ADDFLAG( 0x00010000, "matchentry" ); + EXC_CTRLDUMP_ADDFLAG( 0x00020000, "liststyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00040000, "showdropbtn" ); + EXC_CTRLDUMP_ADDFLAG( 0x00100000, "dropbtnstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00200000, "multistate" ); + EXC_CTRLDUMP_ADDFLAG( 0x00400000, "value" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x01000000, "pos" ); + EXC_CTRLDUMP_ADDFLAG( 0x02000000, "bordercolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x04000000, "specialeff" ); + EXC_CTRLDUMP_ADDFLAG( 0x08000000, "icon" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x20000000, "accel" ); + EXC_CTRLDUMP_ENDFLAG( 0x40080000 ); // 0x80000100 always set? + sal_uInt32 nCtrlFlags = __nFlags; + + EXC_CTRLDUMP_STARTFLAG( "2nd-content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000001, "groupname" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFFFE ); + sal_uInt32 nCtrlFlags2 = __nFlags; + + if( nCtrlFlags & 0x00000001 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000400, "colheads" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000800, "intheight" ); + EXC_CTRLDUMP_ADDFLAG( 0x00001000, "matchreq" ); + EXC_CTRLDUMP_ADDFLAG( 0x00002000, "align" ); + EXC_CTRLDUMP_ADDFLAG( 0x00080000, "dragbehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00100000, "enterkeybehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00200000, "enterfieldbehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00400000, "tabkeybehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x04000000, "selmargin" ); + EXC_CTRLDUMP_ADDFLAG( 0x08000000, "autowordsel" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ADDFLAG( 0x20000000, "hidesel" ); + EXC_CTRLDUMP_ADDFLAG( 0x40000000, "autotab" ); + EXC_CTRLDUMP_ADDFLAG( 0x80000000, "multiline" ); + EXC_CTRLDUMP_ENDFLAG( 0x0307C3F1 ); + } + if( nCtrlFlags & 0x00000002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x00000004 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x00000008 ) EXC_CTRLDUMP_DEC4( "maxlen" ); + if( nCtrlFlags & 0x00000010 ) EXC_CTRLDUMP_DEC1( "borderstyle" ); + if( nCtrlFlags & 0x00000020 ) EXC_CTRLDUMP_DEC1( "scrollbars" ); + if( nCtrlFlags & 0x00000040 ) EXC_CTRLDUMP_DEC1( "style" ); + if( nCtrlFlags & 0x00000080 ) EXC_CTRLDUMP_DEC1( "mouseptr" ); + if( nCtrlFlags & 0x00000200 ) EXC_CTRLDUMP_HEX1( "password" ); + if( nCtrlFlags & 0x00000400 ) EXC_CTRLDUMP_DEC4( "listwidth" ); + if( nCtrlFlags & 0x00000800 ) EXC_CTRLDUMP_DEC2( "boundcol" ); + if( nCtrlFlags & 0x00001000 ) EXC_CTRLDUMP_DEC2( "textcol" ); + if( nCtrlFlags & 0x00002000 ) EXC_CTRLDUMP_DEC2( "colcount" ); + if( nCtrlFlags & 0x00004000 ) EXC_CTRLDUMP_DEC2( "listrows" ); + if( nCtrlFlags & 0x00008000 ) EXC_CTRLDUMP_DEC2( "colwidth?" ); + if( nCtrlFlags & 0x00010000 ) EXC_CTRLDUMP_DEC1( "matchentry" ); + if( nCtrlFlags & 0x00020000 ) EXC_CTRLDUMP_DEC1( "liststyle" ); + if( nCtrlFlags & 0x00040000 ) EXC_CTRLDUMP_DEC1( "showdropbtn" ); + if( nCtrlFlags & 0x00100000 ) EXC_CTRLDUMP_DEC1( "dropbtnstyle" ); + if( nCtrlFlags & 0x00200000 ) EXC_CTRLDUMP_DEC1( "multistate" ); + if( nCtrlFlags & 0x00400000 ) EXC_CTRLDUMP_DECVARMASK( nValueLen, 0x7FFFFFFF, "value-len" ); + if( nCtrlFlags & 0x00800000 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x01000000 ) EXC_CTRLDUMP_COORD( "pos" ); + if( nCtrlFlags & 0x02000000 ) EXC_CTRLDUMP_HEX4( "bordercolor" ); + if( nCtrlFlags & 0x04000000 ) EXC_CTRLDUMP_DEC1( "specialeff" ); + if( nCtrlFlags & 0x08000000 ) EXC_CTRLDUMP_DEC2( "icon-len" ); + if( nCtrlFlags & 0x10000000 ) EXC_CTRLDUMP_DEC2( "pic-len" ); + if( nCtrlFlags & 0x20000000 ) EXC_CTRLDUMP_HEX1( "accel" ); + if( nCtrlFlags2 & 0x00000001 ) EXC_CTRLDUMP_DECVARMASK( nGroupNameLen, 0x7FFFFFFF, "groupname-len" ); + EXC_CTRLDUMP_SIZE(); + EXC_CTRLDUMP_STRING( nValueLen, "value" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_STRING( nGroupNameLen, "groupname" ); + } + break; + case xlCtrlLabel: + { + sal_uInt32 nCaptionLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x0001, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0004, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x0008, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x0010, "pos" ); + EXC_CTRLDUMP_ADDFLAG( 0x0040, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x0080, "bordercolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0100, "borderstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x0200, "specialeff" ); + EXC_CTRLDUMP_ADDFLAG( 0x0400, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x0800, "accel" ); + EXC_CTRLDUMP_ADDFLAG( 0x1000, "icon" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFE020 ); + sal_uInt32 nCtrlFlags = __nFlags; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x0002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x0004 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ENDFLAG( 0xEF7FFFF1 ); + } + if( nCtrlFlags & 0x0008 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_COORD( "pos" ); + if( nCtrlFlags & 0x0040 ) EXC_CTRLDUMP_HEX2( "mouseptr" ); + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_HEX4( "bordercolor" ); + if( nCtrlFlags & 0x0100 ) EXC_CTRLDUMP_HEX2( "borderstyle" ); + if( nCtrlFlags & 0x0200 ) EXC_CTRLDUMP_HEX2( "specialleff" ); + if( nCtrlFlags & 0x0400 ) EXC_CTRLDUMP_HEX2( "pic-len" ); + if( nCtrlFlags & 0x0800 ) EXC_CTRLDUMP_HEX2( "accel" ); + if( nCtrlFlags & 0x1000 ) EXC_CTRLDUMP_HEX2( "icon-len" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_SIZE(); + } + break; + } + EXC_CTRLDUMP_PRINT(); + + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); + if( rInStrm.Tell() < nNextPos ) + { + rOutStrm << " unknown data:"; + ContDumpStream( rInStrm, nNextPos - rInStrm.Tell() ); + rOutStrm << '\n'; + } + rInStrm.Seek( nNextPos ); + + // font data + rInStrm >> nId >> nSize; + if( nId == 0x0200 ) + { + nNextPos = rInStrm.Tell() + nSize; + + t = "id="; __AddHex( t, nId ); t += " size="; __AddHex( t, nSize ); + rOutStrm << t.GetBuffer() << " (font data)\n"; + t.Erase(); + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x01, "fontname" ); + EXC_CTRLDUMP_ADDFLAG( 0x02, "fontstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x04, "fontsize" ); + EXC_CTRLDUMP_ADDFLAG( 0x10, "language-id" ); + EXC_CTRLDUMP_ADDFLAG( 0x40, "align" ); + EXC_CTRLDUMP_ADDFLAG( 0x80, "fontweight" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFF08 ); // 0x20 always set? + sal_uInt32 nCtrlFlags = __nFlags; + sal_uInt32 nFontLen = 0; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_DECVARMASK( nFontLen, 0x7FFFFFFF, "fontname-len" ); + if( nCtrlFlags & 0x0002 ) + { + EXC_CTRLDUMP_STARTFLAG( "fontstyle-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x01, "bold" ); + EXC_CTRLDUMP_ADDFLAG( 0x02, "italic" ); + EXC_CTRLDUMP_ADDFLAG( 0x04, "underline" ); + EXC_CTRLDUMP_ADDFLAG( 0x08, "strikeout" ); + EXC_CTRLDUMP_ENDFLAG( 0xBFFFFFF0 ); // 0x40000000 always set? + } + if( nCtrlFlags & 0x0004 ) EXC_CTRLDUMP_DEC4( "fontsize" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_HEX2( "language-id" ); + if( nCtrlFlags & 0x0040 ) + { + EXC_CTRLDUMP_ALIGN_INSTRM( 2 ); + sal_uInt16 nAlign; rInStrm >> nAlign; + t += " align="; __AddDec( t, nAlign ); + switch( nAlign ) + { + case 1: t += "=left"; break; + case 2: t += "=right"; break; + case 3: t += "=center"; break; + default: t += "=!unknown!"; + } + EXC_CTRLDUMP_PRINTC(); + } + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_DEC2( "fontweight" ); + EXC_CTRLDUMP_STRING( nFontLen, "font" ); + EXC_CTRLDUMP_PRINT(); + + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); + if( rInStrm.Tell() < nNextPos ) + { + rOutStrm << " unknown data:"; + ContDumpStream( rInStrm, nNextPos - rInStrm.Tell() ); + rOutStrm << '\n'; + } + rInStrm.Seek( nNextPos ); + } + else + rInStrm.SeekRel( -4 ); } - *pDumpStream << "\n### end Ctls stream ###\n"; + + rOutStrm << "\n-- end of stream --\n"; } @@ -7582,11 +7980,14 @@ BOOL Biff8RecDumper::Dump( XclImpStream& r ) r.StoreGlobalPosition(); r.SetWarningMode( bWarnings ); - FilterProgressBar* pPrgrsBar = new FilterProgressBar( r ); + ::std::auto_ptr< ScfProgressBar > pProgress( new ScfProgressBar( + pExcRoot->pIR->GetDocShell(), String( RTL_CONSTASCII_USTRINGPARAM( "Dumper" ) ) ) ); + sal_Int32 nStreamSeg = pProgress->AddSegment( r.GetStreamSize() ); + pProgress->ActivateSegment( nStreamSeg ); while( r.StartNextRecord() ) { - pPrgrsBar->Progress(); + pProgress->Progress( r.Tell() ); if( HasModeDump( r.GetRecId() ) ) RecDump(); @@ -7595,7 +7996,7 @@ BOOL Biff8RecDumper::Dump( XclImpStream& r ) *pDumpStream << '\n'; pIn = NULL; - delete pPrgrsBar; + pProgress.reset(); r.SeekGlobalPosition(); r.SetWarningMode( TRUE ); |