include/vcl/toolbox.hxx | 1 sc/inc/document.hxx | 2 sc/inc/filter.hxx | 4 sc/qa/unit/data/wks/pass/gnome647171-1.wks |binary sc/qa/unit/data/wks/pass/sf_8de44549111f8ba3f67509354f677aab-2767-minimized.wks |binary sc/qa/unit/filters-test.cxx | 4 sc/source/core/data/documen5.cxx | 35 - sc/source/filter/inc/lotattr.hxx | 4 sc/source/filter/inc/lotform.hxx | 9 sc/source/filter/inc/lotimpop.hxx | 3 sc/source/filter/inc/lotrange.hxx | 7 sc/source/filter/inc/namebuff.hxx | 7 sc/source/filter/inc/op.h | 63 +- sc/source/filter/inc/optab.h | 4 sc/source/filter/inc/root.hxx | 2 sc/source/filter/inc/scmem.h | 7 sc/source/filter/inc/tool.h | 6 sc/source/filter/lotus/filter.cxx | 108 +--- sc/source/filter/lotus/lotattr.cxx | 10 sc/source/filter/lotus/lotfilter.hxx | 77 +++ sc/source/filter/lotus/lotform.cxx | 17 sc/source/filter/lotus/lotimpop.cxx | 42 - sc/source/filter/lotus/lotread.cxx | 15 sc/source/filter/lotus/lotus.cxx | 14 sc/source/filter/lotus/memory.cxx | 43 - sc/source/filter/lotus/op.cxx | 207 +++----- sc/source/filter/lotus/optab.cxx | 5 sc/source/filter/lotus/tool.cxx | 65 -- sc/source/ui/inc/gridwin.hxx | 7 sc/source/ui/view/gridwin.cxx | 30 - sc/source/ui/view/gridwin5.cxx | 18 sd/source/ui/dlg/LayerTabBar.cxx | 11 sd/source/ui/inc/LayerTabBar.hxx | 4 sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx | 1 sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx | 12 sfx2/source/dialog/templdlg.cxx | 18 sfx2/source/inc/templdgi.hxx | 2 svtools/source/table/tablecontrol_impl.cxx | 254 ---------- svtools/source/table/tablecontrol_impl.hxx | 13 svx/uiconfig/ui/docrecoverybrokendialog.ui | 1 unusedcode.easy | 3 vcl/source/window/toolbox2.cxx | 6 42 files changed, 385 insertions(+), 756 deletions(-)
New commits: commit 50df87ceddc5f4dbebe9552c07e6c899dc17717c Author: Caolán McNamara <[email protected]> Date: Wed Sep 10 11:59:36 2014 +0100 create a regression test for loading lotus wks documents Change-Id: I274236939c6de4db811f8932025c619479bebbee diff --git a/sc/qa/unit/data/wks/fail/.gitignore b/sc/qa/unit/data/wks/fail/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sc/qa/unit/data/wks/indeterminate/.gitignore b/sc/qa/unit/data/wks/indeterminate/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sc/qa/unit/data/wks/pass/.gitignore b/sc/qa/unit/data/wks/pass/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sc/qa/unit/data/wks/pass/gnome647171-1.wks b/sc/qa/unit/data/wks/pass/gnome647171-1.wks new file mode 100644 index 0000000..b2130f5 Binary files /dev/null and b/sc/qa/unit/data/wks/pass/gnome647171-1.wks differ diff --git a/sc/qa/unit/data/wks/pass/sf_8de44549111f8ba3f67509354f677aab-2767-minimized.wks b/sc/qa/unit/data/wks/pass/sf_8de44549111f8ba3f67509354f677aab-2767-minimized.wks new file mode 100644 index 0000000..92f36c7 Binary files /dev/null and b/sc/qa/unit/data/wks/pass/sf_8de44549111f8ba3f67509354f677aab-2767-minimized.wks differ diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx index 27db9c0..2080207 100644 --- a/sc/qa/unit/filters-test.cxx +++ b/sc/qa/unit/filters-test.cxx @@ -135,6 +135,10 @@ void ScFiltersTest::testCVEs() testDir(OUString("dBase"), getURLFromSrc("/sc/qa/unit/data/dbf/"), OUString()); + + testDir(OUString("Lotus"), + getURLFromSrc("/sc/qa/unit/data/wks/"), OUString()); + #endif } commit 206b32c231ea9f1fc7dbb60af307e30d03398095 Author: Caolán McNamara <[email protected]> Date: Wed Sep 10 11:09:30 2014 +0100 refactor lotus wks importer to remove globals so that the global aLotusPatternPool map gets destroyed at a sane point in time where calling delete on its patterns is a legal operation and not at some random location in the dtor chain Change-Id: I6f202c5345c6a227b5a680d70150bf32fb9450c7 diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx index 53062c3..6d3df3d 100644 --- a/sc/inc/filter.hxx +++ b/sc/inc/filter.hxx @@ -129,7 +129,9 @@ class ScFormatFilter { SC_DLLPUBLIC static ScFormatFilterPlugin &Get(); }; -FltError ScImportLotus123old( SvStream&, ScDocument*, rtl_TextEncoding eSrc ); +struct LotusContext; + +FltError ScImportLotus123old(LotusContext& rContext, SvStream&, ScDocument*, rtl_TextEncoding eSrc); #endif diff --git a/sc/source/filter/inc/lotattr.hxx b/sc/source/filter/inc/lotattr.hxx index 2e0829a..fe5df58 100644 --- a/sc/source/filter/inc/lotattr.hxx +++ b/sc/source/filter/inc/lotattr.hxx @@ -110,7 +110,7 @@ class LotAttrCol public: void SetAttr (const SCROW nRow, const ScPatternAttr&); - void Apply (const SCCOL nCol, const SCTAB nTab ); + void Apply(LOTUS_ROOT* pLotRoot, const SCCOL nCol, const SCTAB nTab); private: struct ENTRY @@ -130,7 +130,7 @@ public: void SetAttr( const SCCOL nColFirst, const SCCOL nColLast, const SCROW nRow, const LotAttrWK3& ); - void Apply( const SCTAB nTabNum ); + void Apply(LOTUS_ROOT* pLotRoot, const SCTAB nTabNum); private: diff --git a/sc/source/filter/inc/lotform.hxx b/sc/source/filter/inc/lotform.hxx index c356fcd..4c3165d 100644 --- a/sc/source/filter/inc/lotform.hxx +++ b/sc/source/filter/inc/lotform.hxx @@ -56,9 +56,12 @@ enum FUNC_TYPE // fuer 'Problemfaelle' beim Import }; +struct LotusContext; + class LotusToSc : public LotusConverterBase { private: + LotusContext& m_rContext; rtl_TextEncoding eSrcChar; TokenId nAddToken; // ')+1.0' TokenId nSubToken; // ~ @@ -69,8 +72,7 @@ private: static FUNC_TYPE IndexToTypeWK123( sal_uInt8 ); static DefTokenId IndexToTokenWK123( sal_uInt8 ); void DoFunc( DefTokenId eOc, sal_uInt8 nAnz, const sal_Char* pExtName ); - void LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, - ScSingleRefData& rSRD ); + void LotusRelToScRel(sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefData& rSRD); bool bWK3; // alternative Codeumsetzung statt fuer < WK1 bool bWK123; // alternative for 123 @@ -85,13 +87,14 @@ private: void NegToken( TokenId& rParam ); // ACHTUNG: wie ~, nur wird '-(<rParam>)' gebildet public: - LotusToSc( SvStream& aStr, svl::SharedStringPool& rSPool, rtl_TextEncoding eSrc, bool b ); + LotusToSc(LotusContext &rContext, SvStream& aStr, svl::SharedStringPool& rSPool, rtl_TextEncoding eSrc, bool b); virtual ConvErr Convert( const ScTokenArray*& rpErg, sal_Int32& nRest, const FORMULA_TYPE eFT = FT_CellFormula ) SAL_OVERRIDE; void Reset( const ScAddress& rEingPos ); inline void SetWK3( void ); + LotusContext& getContext() { return m_rContext; } private: using LotusConverterBase::Reset; diff --git a/sc/source/filter/inc/lotimpop.hxx b/sc/source/filter/inc/lotimpop.hxx index ab1aa6e..f177eeb 100644 --- a/sc/source/filter/inc/lotimpop.hxx +++ b/sc/source/filter/inc/lotimpop.hxx @@ -30,6 +30,7 @@ class ScFormulaCell; class LotusFontBuffer; +struct LotusContext; class ImportLotus : public ImportTyp { @@ -76,7 +77,7 @@ private: inline void Skip( const sal_uInt16 nNumBytes ); public: - ImportLotus( SvStream&, ScDocument*, rtl_TextEncoding eSrc ); + ImportLotus(LotusContext& rContext, SvStream&, ScDocument*, rtl_TextEncoding eSrc); virtual ~ImportLotus(); diff --git a/sc/source/filter/inc/lotrange.hxx b/sc/source/filter/inc/lotrange.hxx index 59d1012..2950e50 100644 --- a/sc/source/filter/inc/lotrange.hxx +++ b/sc/source/filter/inc/lotrange.hxx @@ -94,15 +94,16 @@ inline bool LotusRange::IsSingle( void ) const class LotusRangeList { private: + LOTUS_ROOT* m_pLotRoot; LR_ID nIdCnt; - ScComplexRefData aComplRef; + ScComplexRefData aComplRef; static SCCOL nEingCol; static SCROW nEingRow; std::vector<LotusRange*> maRanges; public: - LotusRangeList( void ); - ~LotusRangeList( void ); + LotusRangeList(LOTUS_ROOT* pLotRoot); + ~LotusRangeList( void ); inline sal_uInt16 GetIndex( SCCOL nCol, SCROW nRow ); inline sal_uInt16 GetIndex( SCCOL nColS, SCROW nRowS, SCCOL nColE, SCROW nRowE ); sal_uInt16 GetIndex( const LotusRange& ); diff --git a/sc/source/filter/inc/namebuff.hxx b/sc/source/filter/inc/namebuff.hxx index 908e270..cf3bc90 100644 --- a/sc/source/filter/inc/namebuff.hxx +++ b/sc/source/filter/inc/namebuff.hxx @@ -172,12 +172,13 @@ private: } }; - ScTokenArray* pScTokenArray; - sal_uInt16 nIntCount; + LOTUS_ROOT* m_pLotRoot; + ScTokenArray* pScTokenArray; + sal_uInt16 nIntCount; std::vector<Entry> maEntries; public: - RangeNameBufferWK3( void ); + RangeNameBufferWK3(LOTUS_ROOT* pLotRoot); virtual ~RangeNameBufferWK3(); void Add( const OUString& rName, const ScComplexRefData& rCRD ); inline void Add( const OUString& rName, const ScRange& aScRange ); diff --git a/sc/source/filter/inc/op.h b/sc/source/filter/inc/op.h index d6204ff..4e70bcb 100644 --- a/sc/source/filter/inc/op.h +++ b/sc/source/filter/inc/op.h @@ -24,38 +24,39 @@ // OP-Code-Funktionen class SvStream; -void NI( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_BOF( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_EOF( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Integer( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Number( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Label( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Integer3( SvStream &aStream, sal_uInt16 nLaenge ); // WK3 -void OP_Number3( SvStream &aStream, sal_uInt16 nLaenge ); // WK3 -void OP_Formula( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Formula3( SvStream &aStream, sal_uInt16 nLaenge ); // WK3 -void OP_ColumnWidth( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_NamedRange( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_SymphNamedRange( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Footer( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Header( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Margins( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_HiddenCols( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Window1( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Blank( SvStream &aStream, sal_uInt16 nLaenge ); +struct LotusContext; +void NI(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_BOF(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_EOF(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Integer(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Number(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Label(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Integer3(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); // WK3 +void OP_Number3(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); // WK3 +void OP_Formula(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Formula3(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); // WK3 +void OP_ColumnWidth(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_NamedRange(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_SymphNamedRange(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Footer(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Header(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Margins(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_HiddenCols(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Window1(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Blank(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); // Lotus 123 bits. -void OP_BOF123( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_EOF123( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Number123( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Label123( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_Formula123( SvStream &aStream, sal_uInt16 nLaenge ); -void OP_IEEENumber123(SvStream& r, sal_uInt16 n); -void OP_Note123(SvStream &aStream, sal_uInt16 nLaenge); -void OP_CreatePattern123(SvStream &aStream, sal_uInt16 nLaenge); -void OP_SheetName123( SvStream &rStream, sal_uInt16 nLength ); -void OP_HorAlign123(sal_uInt8 nAlignPattern, SfxItemSet& rPattern /* const ScPatternAttr& rPattern*/ ); -void OP_VerAlign123(sal_uInt8 nAlignPattern, SfxItemSet& rPattern /* const ScPatternAttr& rPattern*/ ); -void OP_ApplyPatternArea123(SvStream& r); +void OP_BOF123(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_EOF123(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Number123(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Label123(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_Formula123(LotusContext &rContext, SvStream &aStream, sal_uInt16 nLaenge ); +void OP_IEEENumber123(LotusContext &rContext,SvStream& r, sal_uInt16 n); +void OP_Note123(LotusContext &rContext,SvStream &aStream, sal_uInt16 nLaenge); +void OP_CreatePattern123(LotusContext &rContext,SvStream &aStream, sal_uInt16 nLaenge); +void OP_SheetName123(LotusContext &rContext, SvStream &rStream, sal_uInt16 nLength ); +void OP_HorAlign123(LotusContext &rContext,sal_uInt8 nAlignPattern, SfxItemSet& rPattern /* const ScPatternAttr& rPattern*/ ); +void OP_VerAlign123(LotusContext &rContext,sal_uInt8 nAlignPattern, SfxItemSet& rPattern /* const ScPatternAttr& rPattern*/ ); +void OP_ApplyPatternArea123(LotusContext &rContext,SvStream& r); #endif diff --git a/sc/source/filter/inc/optab.h b/sc/source/filter/inc/optab.h index 9fb0031..7d4ad1d 100644 --- a/sc/source/filter/inc/optab.h +++ b/sc/source/filter/inc/optab.h @@ -20,7 +20,9 @@ #ifndef INCLUDED_SC_SOURCE_FILTER_INC_OPTAB_H #define INCLUDED_SC_SOURCE_FILTER_INC_OPTAB_H -typedef void ( *OPCODE_FKT )( SvStream &aStream, sal_uInt16 nLaenge ); +struct LotusContext; + +typedef void ( *OPCODE_FKT )(LotusContext &rContext, SvStream &rStream, sal_uInt16 nLaenge); #define FKT_LIMIT 101 diff --git a/sc/source/filter/inc/root.hxx b/sc/source/filter/inc/root.hxx index e250b2c..0dd0e57 100644 --- a/sc/source/filter/inc/root.hxx +++ b/sc/source/filter/inc/root.hxx @@ -102,8 +102,6 @@ struct LOTUS_ROOT ~LOTUS_ROOT(); }; -extern LOTUS_ROOT* pLotusRoot; // -> Inkarn. in filter.cxx - #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/inc/scmem.h b/sc/source/filter/inc/scmem.h index c46645f..2c105ca 100644 --- a/sc/source/filter/inc/scmem.h +++ b/sc/source/filter/inc/scmem.h @@ -21,11 +21,12 @@ #define INCLUDED_SC_SOURCE_FILTER_INC_SCMEM_H #include <sal/config.h> - #include <sal/types.h> -bool MemNew( void ); -void MemDelete( void ); +struct LotusContext; + +bool MemNew(LotusContext& rContext); +void MemDelete(LotusContext& rContext); #endif diff --git a/sc/source/filter/inc/tool.h b/sc/source/filter/inc/tool.h index cadf3f5..5515834 100644 --- a/sc/source/filter/inc/tool.h +++ b/sc/source/filter/inc/tool.h @@ -27,9 +27,11 @@ const sal_uInt8 nDezStd = 0; // Dezimalstellen fuer Standard-Zellen const sal_uInt8 nDezFloat = 2; // " " Float-Zellen -void PutFormString( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Char *pString ); +struct LotusContext; -void SetFormat( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt8 nFormat, sal_uInt8 nSt ); +void PutFormString(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Char *pString); + +void SetFormat(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt8 nFormat, sal_uInt8 nSt); void InitPage( void ); diff --git a/sc/source/filter/lotus/filter.cxx b/sc/source/filter/lotus/filter.cxx index 2fdb9e1..b4e3cb9 100644 --- a/sc/source/filter/lotus/filter.cxx +++ b/sc/source/filter/lotus/filter.cxx @@ -34,52 +34,25 @@ #include "scmem.h" #include "decl.h" #include "tool.h" - #include "fprogressbar.hxx" - -#include "op.h" - -// Konstanten -const sal_uInt16 nBOF = 0x0000; - -// externe Variablen -extern WKTYP eTyp; // Typ der gerade in bearbeitung befindlichen Datei -WKTYP eTyp; - -extern bool bEOF; // zeigt Ende der Datei -bool bEOF; - -extern rtl_TextEncoding eCharVon; -rtl_TextEncoding eCharVon; - -extern ScDocument* pDoc; // Aufhaenger zum Dokumentzugriff -ScDocument* pDoc; - -extern OPCODE_FKT pOpFkt[ FKT_LIMIT ]; - // -> optab.cxx, Tabelle moeglicher Opcodes -extern OPCODE_FKT pOpFkt123[ FKT_LIMIT123 ]; - // -> optab.cxx, Table of possible Opcodes - -LOTUS_ROOT* pLotusRoot = NULL; - -std::map<sal_uInt16, ScPatternAttr> aLotusPatternPool; +#include "lotfilter.hxx" static FltError -generate_Opcodes( SvStream& aStream, ScDocument& rDoc, - ScfStreamProgressBar& aPrgrsBar, WKTYP eType ) +generate_Opcodes(LotusContext &rContext, SvStream& aStream, + ScfStreamProgressBar& aPrgrsBar) { OPCODE_FKT *pOps; int nOps; - switch(eType) + switch (rContext.eTyp) { case eWK_1: case eWK_2: - pOps = pOpFkt; + pOps = rContext.pOpFkt; nOps = FKT_LIMIT; break; case eWK123: - pOps = pOpFkt123; + pOps = rContext.pOpFkt123; nOps = FKT_LIMIT123; break; case eWK3: return eERR_NI; @@ -91,62 +64,58 @@ generate_Opcodes( SvStream& aStream, ScDocument& rDoc, aStream.Seek( STREAM_SEEK_TO_END ); sal_Size nStrmSize = aStream.Tell(); aStream.Seek( STREAM_SEEK_TO_BEGIN ); - while( !bEOF && !aStream.IsEof() && (aStream.Tell() < nStrmSize) ) + while( !rContext.bEOF && !aStream.IsEof() && (aStream.Tell() < nStrmSize) ) { sal_uInt16 nOpcode, nLength; aStream.ReadUInt16( nOpcode ).ReadUInt16( nLength ); aPrgrsBar.Progress(); if( nOpcode == LOTUS_EOF ) - bEOF = true; - + rContext.bEOF = true; else if( nOpcode == LOTUS_FILEPASSWD ) - return eERR_FILEPASSWD; - + return eERR_FILEPASSWD; else if( nOpcode < nOps ) - pOps[ nOpcode ] ( aStream, nLength ); - - else if( eType == eWK123 && - nOpcode == LOTUS_PATTERN ) - { - // This is really ugly - needs re-factoring ... - aStream.SeekRel(nLength); - aStream.ReadUInt16( nOpcode ).ReadUInt16( nLength ); - if ( nOpcode == 0x29a) + pOps[ nOpcode ] (rContext, aStream, nLength); + else if (rContext.eTyp == eWK123 && nOpcode == LOTUS_PATTERN) { + // This is really ugly - needs re-factoring ... aStream.SeekRel(nLength); aStream.ReadUInt16( nOpcode ).ReadUInt16( nLength ); - if ( nOpcode == 0x804 ) + if ( nOpcode == 0x29a) { - aStream.SeekRel(nLength); - OP_ApplyPatternArea123(aStream); + aStream.SeekRel(nLength); + aStream.ReadUInt16( nOpcode ).ReadUInt16( nLength ); + if ( nOpcode == 0x804 ) + { + aStream.SeekRel(nLength); + OP_ApplyPatternArea123(rContext, aStream); + } + else + aStream.SeekRel(nLength); } else - aStream.SeekRel(nLength); + aStream.SeekRel(nLength); } else - aStream.SeekRel(nLength); - } - else - aStream.SeekRel( nLength ); + aStream.SeekRel( nLength ); } - MemDelete(); + MemDelete(rContext); - rDoc.CalcAfterLoad(); + rContext.pDoc->CalcAfterLoad(); return eERR_OK; } -WKTYP ScanVersion( SvStream& aStream ) +WKTYP ScanVersion(LotusContext &rContext, SvStream& aStream) { // PREC: pWKDatei: Zeiger auf offene Datei // POST: return: Typ der Datei - sal_uInt16 nOpcode, nVersNr, nRecLen; + sal_uInt16 nOpcode(0), nVersNr(0), nRecLen(0); // erstes Byte muss wegen BOF zwingend 0 sein! aStream.ReadUInt16( nOpcode ); - if( nOpcode != nBOF ) + if (nOpcode != rContext.nBOF) return eWK_UNKNOWN; aStream.ReadUInt16( nRecLen ).ReadUInt16( nVersNr ); @@ -193,19 +162,17 @@ WKTYP ScanVersion( SvStream& aStream ) return eWK_UNKNOWN; } -FltError ScImportLotus123old( SvStream& aStream, ScDocument* pDocument, rtl_TextEncoding eSrc ) +FltError ScImportLotus123old(LotusContext& rContext, SvStream& aStream, ScDocument* pDocument, rtl_TextEncoding eSrc ) { aStream.Seek( 0UL ); // Zeiger auf Dokument global machen - pDoc = pDocument; - - bEOF = false; - - eCharVon = eSrc; + rContext.pDoc = pDocument; + rContext.bEOF = false; + rContext.eCharVon = eSrc; // Speicher besorgen - if( !MemNew() ) + if( !MemNew(rContext) ) return eERR_NOMEM; InitPage(); // Seitenformat initialisieren (nur Tab 0!) @@ -214,11 +181,10 @@ FltError ScImportLotus123old( SvStream& aStream, ScDocument* pDocument, rtl_Text ScfStreamProgressBar aPrgrsBar( aStream, pDocument->GetDocumentShell() ); // Datei-Typ ermitteln - eTyp = ScanVersion( aStream ); - - aLotusPatternPool.clear(); + rContext.eTyp = ScanVersion(rContext, aStream); + rContext.aLotusPatternPool.clear(); - return generate_Opcodes( aStream, *pDoc, aPrgrsBar, eTyp ); + return generate_Opcodes(rContext, aStream, aPrgrsBar); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/lotattr.cxx b/sc/source/filter/lotus/lotattr.cxx index b309f6a..7254144 100644 --- a/sc/source/filter/lotus/lotattr.cxx +++ b/sc/source/filter/lotus/lotattr.cxx @@ -47,8 +47,8 @@ LotAttrCache::ENTRY::~ENTRY () delete pPattAttr; } -LotAttrCache::LotAttrCache (LOTUS_ROOT* pLotRoot): - mpLotusRoot(pLotRoot) +LotAttrCache::LotAttrCache (LOTUS_ROOT* pLotRoot) + : mpLotusRoot(pLotRoot) { pDocPool = mpLotusRoot->pDoc->GetPool(); @@ -218,7 +218,7 @@ void LotAttrCol::SetAttr( const SCROW nRow, const ScPatternAttr& rAttr ) } } -void LotAttrCol::Apply( const SCCOL nColNum, const SCTAB nTabNum ) +void LotAttrCol::Apply(LOTUS_ROOT* pLotusRoot, const SCCOL nColNum, const SCTAB nTabNum) { ScDocument* pDoc = pLotusRoot->pDoc; @@ -248,11 +248,11 @@ void LotAttrTable::SetAttr( const SCCOL nColFirst, const SCCOL nColLast, const S pCols[ nColCnt ].SetAttr( nRow, rPattAttr ); } -void LotAttrTable::Apply( const SCTAB nTabNum ) +void LotAttrTable::Apply(LOTUS_ROOT* pLotusRoot, const SCTAB nTabNum) { SCCOL nColCnt; for( nColCnt = 0 ; nColCnt <= MAXCOL ; nColCnt++ ) - pCols[ nColCnt ].Apply( nColCnt, nTabNum ); // macht auch gleich ein Clear() am Ende + pCols[ nColCnt ].Apply(pLotusRoot, nColCnt, nTabNum); // macht auch gleich ein Clear() am Ende } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/lotfilter.hxx b/sc/source/filter/lotus/lotfilter.hxx new file mode 100644 index 0000000..047391a --- /dev/null +++ b/sc/source/filter/lotus/lotfilter.hxx @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_SC_SOURCE_FILTER_LOTUS_FILTER_HXX +#define INCLUDED_SC_SOURCE_FILTER_LOTUS_FILTER_HXX + +#include <map> +#include "decl.h" +#include "op.h" +#include "optab.h" +#include "root.hxx" + +class SvxHorJustifyItem; +class ScProtectionAttr; +class SfxUInt32Item; +class FormCache; + +struct LotusContext +{ + const sal_uInt16 nBOF; + WKTYP eTyp; // Typ der gerade in bearbeitung befindlichen Datei + bool bEOF; // zeigt Ende der Datei + rtl_TextEncoding eCharVon; + ScDocument* pDoc; // Aufhaenger zum Dokumentzugriff + static OPCODE_FKT pOpFkt[ FKT_LIMIT ]; + static OPCODE_FKT pOpFkt123[ FKT_LIMIT123 ]; // -> optab.cxx, Table of possible Opcodes + LOTUS_ROOT* pLotusRoot; + std::map<sal_uInt16, ScPatternAttr> aLotusPatternPool; + + sal_uInt8 nDefaultFormat; // -> op.cpp, Standard-Zellenformat + + SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard; + ScProtectionAttr* pAttrUnprot; + SfxUInt32Item** pAttrValForms; + + FormCache* pValueFormCache; // -> in memory.cxx initialisiert + + LotusContext() + : nBOF(0x0000) + , eTyp(eWK_UNKNOWN) + , bEOF(false) + , eCharVon(RTL_TEXTENCODING_DONTKNOW) + , pDoc(0) + , pLotusRoot(NULL) + + , nDefaultFormat(0) + , pAttrRight(NULL) + , pAttrLeft(NULL) + , pAttrCenter(NULL) + , pAttrRepeat(NULL) + , pAttrStandard(NULL) + , pAttrUnprot(NULL) + , pAttrValForms(NULL) + , pValueFormCache(NULL) + { + } +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx index 59d8750..31e844a 100644 --- a/sc/source/filter/lotus/lotform.cxx +++ b/sc/source/filter/lotus/lotform.cxx @@ -20,6 +20,7 @@ #include "decl.h" #include "lotform.hxx" #include "compiler.hxx" +#include "lotfilter.hxx" #include "lotrange.hxx" #include "namebuff.hxx" #include "root.hxx" @@ -30,8 +31,6 @@ #include <comphelper/string.hxx> #include <boost/scoped_array.hpp> -extern WKTYP eTyp; - static const sal_Char* GetAddInName( const sal_uInt8 nIndex ); static DefTokenId lcl_KnownAddIn(const OString& rTest); @@ -217,7 +216,7 @@ void LotusToSc::LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefDa { rSRD.SetRowRel(true); // vorzeichenrichtige Erweiterung - switch( eTyp ) + switch (m_rContext.eTyp) { // 5432 1098 7654 3210 // 8421 8421 8421 8421 @@ -243,7 +242,7 @@ void LotusToSc::LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefDa else { rSRD.SetRowRel(false); - switch( eTyp ) + switch (m_rContext.eTyp) { // 5432 1098 7654 3210 // 8421 8421 8421 8421 @@ -320,8 +319,10 @@ void LotusToSc::Reset( const ScAddress& rEingPos ) n0Token = aPool.Store( 0.0 ); } -LotusToSc::LotusToSc( SvStream &rStream, svl::SharedStringPool& rSPool, rtl_TextEncoding e, bool b ) : - LotusConverterBase(rStream, rSPool, 128) +LotusToSc::LotusToSc(LotusContext &rContext, SvStream &rStream, svl::SharedStringPool& rSPool, + rtl_TextEncoding e, bool b) + : LotusConverterBase(rStream, rSPool, 128) + , m_rContext(rContext) { eSrcChar = e; bWK3 = false; @@ -343,7 +344,7 @@ ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, sal_Int32& rRest, TokenId nMerk0; DefTokenId eOc; const sal_Char* pExtName = 0; - RangeNameBufferWK3& rRangeNameBufferWK3 = *pLotusRoot->pRngNmBffWK3; + RangeNameBufferWK3& rRangeNameBufferWK3 = *m_rContext.pLotusRoot->pRngNmBffWK3; ScComplexRefData aCRD; aCRD.InitFlags(); @@ -352,7 +353,7 @@ ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, sal_Int32& rRest, LR_ID nId; TokenId nNewId; - LotusRangeList& rRangeList = *pLotusRoot->pRangeNames; + LotusRangeList& rRangeList = *m_rContext.pLotusRoot->pRangeNames; FuncType1* pIndexToType; FuncType2* pIndexToToken; diff --git a/sc/source/filter/lotus/lotimpop.cxx b/sc/source/filter/lotus/lotimpop.cxx index 60fa5a4..b13ed65 100644 --- a/sc/source/filter/lotus/lotimpop.cxx +++ b/sc/source/filter/lotus/lotimpop.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include "lotfilter.hxx" #include "lotimpop.hxx" #include <osl/mutex.hxx> @@ -41,12 +42,12 @@ LOTUS_ROOT::LOTUS_ROOT( ScDocument* pDocP, rtl_TextEncoding eQ ) : pDoc( pDocP), - pRangeNames( new LotusRangeList), + pRangeNames( new LotusRangeList(this)), pScRangeName( pDocP->GetRangeName()), eCharsetQ( eQ), eFirstType( Lotus_X), eActType( Lotus_X), - pRngNmBffWK3( new RangeNameBufferWK3), + pRngNmBffWK3( new RangeNameBufferWK3(this)), pFontBuff( new LotusFontBuffer), pAttrTable( new LotAttrTable(this)) { @@ -62,23 +63,24 @@ LOTUS_ROOT::~LOTUS_ROOT() static osl::Mutex aLotImpSemaphore; -ImportLotus::ImportLotus( SvStream& aStream, ScDocument* pDoc, rtl_TextEncoding eQ ) +ImportLotus::ImportLotus(LotusContext &rContext, SvStream& aStream, ScDocument* pDoc, rtl_TextEncoding eQ) : ImportTyp(pDoc, eQ) , pIn(&aStream) - , aConv(*pIn, pDoc->GetSharedStringPool(), eQ, false) + , aConv(rContext, *pIn, pDoc->GetSharedStringPool(), eQ, false) , nTab(0) , nExtTab(0) { // good point to start locking of import lotus aLotImpSemaphore.acquire(); - pLotusRoot = new LOTUS_ROOT(pDoc, eQ); + rContext.pLotusRoot = new LOTUS_ROOT(pDoc, eQ); } ImportLotus::~ImportLotus() { - delete pLotusRoot; - pLotusRoot = NULL; + LotusContext &rContext = aConv.getContext(); + delete rContext.pLotusRoot; + rContext.pLotusRoot = NULL; // no need 4 pLotusRoot anymore aLotImpSemaphore.release(); @@ -91,7 +93,8 @@ void ImportLotus::Bof( void ) Read( nFileCode ); Read( nFileSub ); - Read( pLotusRoot->aActRange ); + LotusContext &rContext = aConv.getContext(); + Read( rContext.pLotusRoot->aActRange ); Read( nSaveCnt ); Read( nMajorId ); Read( nMinorId ); @@ -102,11 +105,11 @@ void ImportLotus::Bof( void ) { if( nFileCode == 0x1000 ) {// <= WK3 - pLotusRoot->eFirstType = pLotusRoot->eActType = Lotus_WK3; + rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus_WK3; } else if( nFileCode == 0x1002 ) {// WK4 - pLotusRoot->eFirstType = pLotusRoot->eActType = Lotus_WK4; + rContext.pLotusRoot->eFirstType = rContext.pLotusRoot->eActType = Lotus_WK4; } } } @@ -192,7 +195,8 @@ void ImportLotus::Userrange( void ) Read( aScRange ); - pLotusRoot->pRngNmBffWK3->Add( aName, aScRange ); + LotusContext &rContext = aConv.getContext(); + rContext.pLotusRoot->pRngNmBffWK3->Add( aName, aScRange ); } void ImportLotus::Errcell( void ) @@ -350,26 +354,29 @@ void ImportLotus::Font_Face( void ) Read( aName ); - pLotusRoot->pFontBuff->SetName( nNum, aName ); + LotusContext &rContext = aConv.getContext(); + rContext.pLotusRoot->pFontBuff->SetName( nNum, aName ); } void ImportLotus::Font_Type( void ) { + LotusContext &rContext = aConv.getContext(); for( sal_uInt16 nCnt = 0 ; nCnt < LotusFontBuffer::nSize ; nCnt++ ) { sal_uInt16 nType; Read( nType ); - pLotusRoot->pFontBuff->SetType( nCnt, nType ); + rContext.pLotusRoot->pFontBuff->SetType( nCnt, nType ); } } void ImportLotus::Font_Ysize( void ) { + LotusContext &rContext = aConv.getContext(); for( sal_uInt16 nCnt = 0 ; nCnt < LotusFontBuffer::nSize ; nCnt++ ) { sal_uInt16 nSize; Read( nSize ); - pLotusRoot->pFontBuff->SetHeight( nCnt, nSize ); + rContext.pLotusRoot->pFontBuff->SetHeight( nCnt, nSize ); } } @@ -396,13 +403,14 @@ void ImportLotus::_Row( const sal_uInt16 nRecLen ) if( nHeight ) pD->SetRowHeight( static_cast<SCROW> (nRow), static_cast<SCTAB> (nExtTab), nHeight ); + LotusContext &rContext = aConv.getContext(); while( nCntDwn ) - { + { Read( aAttr ); Read( nRepeats ); if( aAttr.HasStyles() ) - pLotusRoot->pAttrTable->SetAttr( + rContext.pLotusRoot->pAttrTable->SetAttr( nColCnt, static_cast<SCCOL> ( nColCnt + nRepeats ), static_cast<SCROW> (nRow), aAttr ); // hier und NICHT in class LotAttrTable, weil nur Attributiert wird, @@ -438,7 +446,7 @@ void ImportLotus::_Row( const sal_uInt16 nRecLen ) nColCnt++; nCntDwn--; - } + } if( bCenter ) // evtl. alte Center bemachen diff --git a/sc/source/filter/lotus/lotread.cxx b/sc/source/filter/lotus/lotread.cxx index c690eb5..c739ab2 100644 --- a/sc/source/filter/lotus/lotread.cxx +++ b/sc/source/filter/lotus/lotread.cxx @@ -21,6 +21,7 @@ #include "scerrors.hxx" #include "root.hxx" +#include "lotfilter.hxx" #include "lotimpop.hxx" #include "lotattr.hxx" #include "fprogressbar.hxx" @@ -55,12 +56,12 @@ FltError ImportLotus::Read() // Progressbar starten ScfStreamProgressBar aPrgrsBar( *pIn, pD->GetDocumentShell() ); - + LotusContext &rContext = aConv.getContext(); while( eAkt != S_END ) { pIn->ReadUInt16( nOp ).ReadUInt16( nRecLen ); - if( pIn->IsEof() || nNextRec > SAL_MAX_UINT32 - nRecLen - 4 ) + if( pIn->IsEof() || nNextRec > SAL_MAX_UINT32 - nRecLen - 4 ) eAkt = S_END; nNextRec += nRecLen + 4; @@ -79,7 +80,7 @@ FltError ImportLotus::Read() if( nRecLen > 2 ) { Bof(); - switch( pLotusRoot->eFirstType ) + switch (rContext.pLotusRoot->eFirstType) { case Lotus_WK1: eAkt = S_WK1; break; case Lotus_WK3: eAkt = S_WK3; break; @@ -225,7 +226,7 @@ FltError ImportLotus::Read() return eRet; } -FltError ImportLotus::Read( SvStream& rIn ) +FltError ImportLotus::Read(SvStream& rIn) { pIn = &rIn; @@ -242,7 +243,7 @@ FltError ImportLotus::Read( SvStream& rIn ) // Progressbar starten ScfStreamProgressBar aPrgrsBar( *pIn, pD->GetDocumentShell() ); - + LotusContext &rContext = aConv.getContext(); while( bRead ) { pIn->ReadUInt16( nOp ).ReadUInt16( nRecLen ); @@ -284,7 +285,7 @@ FltError ImportLotus::Read( SvStream& rIn ) case 195: if( nExtTab >= 0 ) - pLotusRoot->pAttrTable->Apply( ( SCTAB ) nExtTab ); + rContext.pLotusRoot->pAttrTable->Apply(rContext.pLotusRoot, (SCTAB)nExtTab); nExtTab++; break; case 197: @@ -299,7 +300,7 @@ FltError ImportLotus::Read( SvStream& rIn ) } } - pLotusRoot->pAttrTable->Apply( ( SCTAB ) nExtTab ); + rContext.pLotusRoot->pAttrTable->Apply(rContext.pLotusRoot, (SCTAB)nExtTab); return eRet; } diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx index cc0af09..321d4bd 100644 --- a/sc/source/filter/lotus/lotus.cxx +++ b/sc/source/filter/lotus/lotus.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include "lotfilter.hxx" #include "lotimpop.hxx" #include <sfx2/docfile.hxx> @@ -29,7 +30,7 @@ FltError ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocument* pDocument, rtl_TextEncoding eSrc ) { - ScFilterOptions aFilterOpt; + ScFilterOptions aFilterOpt; bool bWithWK3 = aFilterOpt.GetWK3Flag(); SvStream* pStream = rMedium.GetInStream(); @@ -43,7 +44,9 @@ FltError ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocum pStream->SetBufferSize( 32768 ); - ImportLotus aLotusImport( *pStream, pDocument, eSrc ); + LotusContext aContext; + + ImportLotus aLotusImport(aContext, *pStream, pDocument, eSrc); if( bWithWK3 ) eRet = aLotusImport.Read(); @@ -57,7 +60,7 @@ FltError ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocum pStream->SetBufferSize( 32768 ); - eRet = ScImportLotus123old( *pStream, pDocument, eSrc ); + eRet = ScImportLotus123old(aContext, *pStream, pDocument, eSrc); pStream->SetBufferSize( 0 ); @@ -67,8 +70,9 @@ FltError ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocum if( eRet != eERR_OK ) return eRet; - if( pLotusRoot->eFirstType == Lotus_WK3 ) - {// versuchen *.FM3-File zu laden + if (aContext.pLotusRoot->eFirstType == Lotus_WK3) + { + // versuchen *.FM3-File zu laden INetURLObject aURL( rMedium.GetURLObject() ); aURL.setExtension( "FM3" ); SfxMedium aMedium( aURL.GetMainURL(INetURLObject::NO_DECODE), STREAM_STD_READ ); diff --git a/sc/source/filter/lotus/memory.cxx b/sc/source/filter/lotus/memory.cxx index 28630b7..5e348ea 100644 --- a/sc/source/filter/lotus/memory.cxx +++ b/sc/source/filter/lotus/memory.cxx @@ -24,43 +24,34 @@ #include "scmem.h" #include <svx/algitem.hxx> #include <editeng/justifyitem.hxx> - #include "attrib.hxx" - +#include "lotfilter.hxx" #include "tool.h" -extern ScDocument* pDoc; - -extern FormCache* pValueFormCache; // -> tool.cxx - -extern SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, - *pAttrRepeat, *pAttrStandard; // -> tool.cxx, fuer GetFormAttr() -extern ScProtectionAttr* pAttrUnprot; // -> tool.cxx, fuer PutFormString() - -bool MemNew( void ) +bool MemNew(LotusContext &rContext) { - pValueFormCache = new FormCache( pDoc ); + rContext.pValueFormCache = new FormCache(rContext.pDoc); // fuer tool.cxx::PutFormString() - pAttrUnprot = new ScProtectionAttr( true ); - pAttrRight = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_RIGHT, ATTR_HOR_JUSTIFY ); - pAttrLeft = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_LEFT, ATTR_HOR_JUSTIFY ); - pAttrCenter = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER, ATTR_HOR_JUSTIFY ); - pAttrRepeat = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_REPEAT, ATTR_HOR_JUSTIFY ); - pAttrStandard = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD, ATTR_HOR_JUSTIFY ); + rContext.pAttrUnprot = new ScProtectionAttr( true ); + rContext.pAttrRight = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_RIGHT, ATTR_HOR_JUSTIFY ); + rContext.pAttrLeft = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_LEFT, ATTR_HOR_JUSTIFY ); + rContext.pAttrCenter = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER, ATTR_HOR_JUSTIFY ); + rContext.pAttrRepeat = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_REPEAT, ATTR_HOR_JUSTIFY ); + rContext.pAttrStandard = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD, ATTR_HOR_JUSTIFY ); return true; } -void MemDelete( void ) +void MemDelete(LotusContext &rContext) { - delete pValueFormCache; - delete pAttrRight; - delete pAttrLeft; - delete pAttrCenter; - delete pAttrRepeat; - delete pAttrStandard; - delete pAttrUnprot; + delete rContext.pValueFormCache; + delete rContext.pAttrRight; + delete rContext.pAttrLeft; + delete rContext.pAttrCenter; + delete rContext.pAttrRepeat; + delete rContext.pAttrStandard; + delete rContext.pAttrUnprot; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx index fbbda65..c1eb970 100644 --- a/sc/source/filter/lotus/op.cxx +++ b/sc/source/filter/lotus/op.cxx @@ -43,85 +43,76 @@ #include "optab.h" #include "tool.h" #include "decl.h" +#include "lotfilter.hxx" #include "lotform.hxx" #include "lotrange.hxx" - #include "root.hxx" - #include "ftools.hxx" #include <vector> #include <map> #include <boost/scoped_array.hpp> -extern WKTYP eTyp; // -> filter.cxx, aktueller Dateityp -extern bool bEOF; // -> filter.cxx, zeigt Dateiende an -extern sal_uInt8 nDefaultFormat; // -> tool.cxx, Default-Zellenformat -extern ScDocument* pDoc; // -> filter.cxx, Aufhaenger zum Dokumentzugriff -extern rtl_TextEncoding eCharVon; // -> filter.cxx, character set specified - static sal_uInt16 nDefWidth = ( sal_uInt16 ) ( TWIPS_PER_CHAR * 10 ); -extern std::map<sal_uInt16, ScPatternAttr> aLotusPatternPool; - -void NI( SvStream& r, sal_uInt16 n ) +void NI(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 n) { r.SeekRel( n ); } -void OP_BOF( SvStream& r, sal_uInt16 /*n*/ ) +void OP_BOF(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 /*n*/) { r.SeekRel( 2 ); // Versionsnummer ueberlesen } -void OP_EOF( SvStream& /*r*/, sal_uInt16 /*n*/ ) +void OP_EOF(LotusContext& rContext, SvStream& /*r*/, sal_uInt16 /*n*/) { - bEOF = true; + rContext.bEOF = true; } -void OP_Integer( SvStream& r, sal_uInt16 /*n*/ ) +void OP_Integer(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { - sal_uInt8 nFormat; - sal_uInt16 nCol, nRow; - SCTAB nTab = 0; - sal_Int16 nValue; + sal_uInt8 nFormat(0); + sal_uInt16 nCol(0), nRow(0); + SCTAB nTab(0); + sal_Int16 nValue(0); r.ReadUChar( nFormat ).ReadUInt16( nCol ).ReadUInt16( nRow ).ReadInt16( nValue ); if (ValidColRow( static_cast<SCCOL>(nCol), nRow)) { - pDoc->EnsureTable(nTab); - pDoc->SetValue(ScAddress(nCol,nRow,nTab), static_cast<double>(nValue)); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetValue(ScAddress(nCol,nRow,nTab), static_cast<double>(nValue)); // 0 Stellen nach'm Komma! - SetFormat( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, 0 ); + SetFormat(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, 0); } } -void OP_Number( SvStream& r, sal_uInt16 /*n*/ ) +void OP_Number(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { - sal_uInt8 nFormat; - sal_uInt16 nCol, nRow; - SCTAB nTab = 0; - double fValue; + sal_uInt8 nFormat(0); + sal_uInt16 nCol(0), nRow(0); + SCTAB nTab(0); + double fValue(0.0); r.ReadUChar( nFormat ).ReadUInt16( nCol ).ReadUInt16( nRow ).ReadDouble( fValue ); if (ValidColRow( static_cast<SCCOL>(nCol), nRow)) { fValue = ::rtl::math::round( fValue, 15 ); - pDoc->EnsureTable(nTab); - pDoc->SetValue(ScAddress(nCol,nRow,nTab), fValue); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetValue(ScAddress(nCol,nRow,nTab), fValue); - SetFormat( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezFloat ); + SetFormat(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezFloat); } } -void OP_Label( SvStream& r, sal_uInt16 n ) +void OP_Label(LotusContext& rContext, SvStream& r, sal_uInt16 n) { - sal_uInt8 nFormat; - sal_uInt16 nCol, nRow; - SCTAB nTab = 0; + sal_uInt8 nFormat(0); + sal_uInt16 nCol(0), nRow(0); + SCTAB nTab(0); r.ReadUChar( nFormat ).ReadUInt16( nCol ).ReadUInt16( nRow ); @@ -136,13 +127,13 @@ void OP_Label( SvStream& r, sal_uInt16 n ) nFormat &= 0x80; // Bit 7 belassen nFormat |= 0x75; // protected egal, special-text gesetzt - PutFormString( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, pText.get() ); + PutFormString(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, pText.get()); - SetFormat( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezStd ); + SetFormat(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezStd); } } -void OP_Formula( SvStream& r, sal_uInt16 /*n*/ ) +void OP_Formula(LotusContext &rContext, SvStream& r, sal_uInt16 /*n*/) { sal_uInt8 nFormat; sal_uInt16 nCol, nRow, nFormulaSize; @@ -156,24 +147,24 @@ void OP_Formula( SvStream& r, sal_uInt16 /*n*/ ) sal_Int32 nBytesLeft = nFormulaSize; ScAddress aAddress( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab ); - svl::SharedStringPool& rSPool = pLotusRoot->pDoc->GetSharedStringPool(); - LotusToSc aConv(r, rSPool, pLotusRoot->eCharsetQ, false); + svl::SharedStringPool& rSPool = rContext.pLotusRoot->pDoc->GetSharedStringPool(); + LotusToSc aConv(rContext, r, rSPool, rContext.pLotusRoot->eCharsetQ, false); aConv.Reset( aAddress ); aConv.Convert( pErg, nBytesLeft ); if (ValidColRow( static_cast<SCCOL>(nCol), nRow)) { - ScFormulaCell* pCell = new ScFormulaCell(pLotusRoot->pDoc, aAddress, *pErg); + ScFormulaCell* pCell = new ScFormulaCell(rContext.pLotusRoot->pDoc, aAddress, *pErg); pCell->AddRecalcMode( RECALCMODE_ONLOAD_ONCE ); - pDoc->EnsureTable(nTab); - pDoc->SetFormulaCell(ScAddress(nCol,nRow,nTab), pCell); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetFormulaCell(ScAddress(nCol,nRow,nTab), pCell); // nFormat = Standard -> Nachkommastellen wie Float - SetFormat( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezFloat ); + SetFormat(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), nTab, nFormat, nDezFloat); } } -void OP_ColumnWidth( SvStream& r, sal_uInt16 /*n*/ ) +void OP_ColumnWidth(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { sal_uInt16 nCol, nBreite; sal_uInt8 nWidthSpaces; @@ -188,16 +179,16 @@ void OP_ColumnWidth( SvStream& r, sal_uInt16 /*n*/ ) nBreite = ( sal_uInt16 ) ( TWIPS_PER_CHAR * nWidthSpaces ); else { - pDoc->SetColHidden(static_cast<SCCOL>(nCol), static_cast<SCCOL>(nCol), 0, true); + rContext.pDoc->SetColHidden(static_cast<SCCOL>(nCol), static_cast<SCCOL>(nCol), 0, true); nBreite = nDefWidth; } - pDoc->SetColWidth( static_cast<SCCOL> (nCol), nTab, nBreite ); + rContext.pDoc->SetColWidth( static_cast<SCCOL> (nCol), nTab, nBreite ); } } -void OP_NamedRange( SvStream& r, sal_uInt16 /*n*/ ) - { +void OP_NamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) +{ // POST: waren Koordinaten ungueltig, wird nicht gespeichert sal_uInt16 nColSt, nRowSt, nColEnd, nRowEnd; @@ -226,15 +217,15 @@ void OP_NamedRange( SvStream& r, sal_uInt16 /*n*/ ) else strcpy( cBuf, cPuffer ); // #100211# - checked - OUString aTmp( cBuf, strlen(cBuf), pLotusRoot->eCharsetQ ); + OUString aTmp( cBuf, strlen(cBuf), rContext.pLotusRoot->eCharsetQ ); aTmp = ScfTools::ConvertToScDefinedName( aTmp ); - pLotusRoot->pRangeNames->Append( pRange, aTmp ); + rContext.pLotusRoot->pRangeNames->Append( pRange, aTmp ); } } -void OP_SymphNamedRange( SvStream& r, sal_uInt16 /*n*/ ) +void OP_SymphNamedRange(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { // POST: waren Koordinaten ungueltig, wird nicht gespeichert sal_uInt16 nColSt, nRowSt, nColEnd, nRowEnd; @@ -265,29 +256,29 @@ void OP_SymphNamedRange( SvStream& r, sal_uInt16 /*n*/ ) else strcpy( cBuf, cPuffer ); // #100211# - checked - OUString aTmp( cBuf, strlen(cBuf), pLotusRoot->eCharsetQ ); + OUString aTmp( cBuf, strlen(cBuf), rContext.pLotusRoot->eCharsetQ ); aTmp = ScfTools::ConvertToScDefinedName( aTmp ); - pLotusRoot->pRangeNames->Append( pRange, aTmp ); + rContext.pLotusRoot->pRangeNames->Append( pRange, aTmp ); } } -void OP_Footer( SvStream& r, sal_uInt16 n ) +void OP_Footer(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 n) { r.SeekRel( n ); } -void OP_Header( SvStream& r, sal_uInt16 n ) +void OP_Header(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 n) { r.SeekRel( n ); } -void OP_Margins( SvStream& r, sal_uInt16 n ) +void OP_Margins(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 n) { r.SeekRel( n ); } -void OP_HiddenCols( SvStream& r, sal_uInt16 /*n*/ ) +void OP_HiddenCols(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { sal_uInt16 nByte, nBit; SCCOL nCount; @@ -300,8 +291,10 @@ void OP_HiddenCols( SvStream& r, sal_uInt16 /*n*/ ) for( nBit = 0 ; nBit < 8 ; nBit++ ) // ...jeweils 8 Bits = 256 Bits { if( nAkt & 0x01 ) // unterstes Bit gesetzt? + { // -> Hidden Col - pDoc->SetColHidden(nCount, nCount, 0, true); + rContext.pDoc->SetColHidden(nCount, nCount, 0, true); + } nCount++; nAkt = nAkt / 2; // der Naechste bitte... @@ -309,11 +302,11 @@ void OP_HiddenCols( SvStream& r, sal_uInt16 /*n*/ ) } } -void OP_Window1( SvStream& r, sal_uInt16 n ) +void OP_Window1(LotusContext& rContext, SvStream& r, sal_uInt16 n) { r.SeekRel( 4 ); // Cursor Pos ueberspringen - r.ReadUChar( nDefaultFormat ); + r.ReadUChar(rContext.nDefaultFormat); r.SeekRel( 1 ); // 'unused' ueberspringen @@ -325,29 +318,29 @@ void OP_Window1( SvStream& r, sal_uInt16 n ) // statt Defaulteinstellung in SC alle Cols zu Fuss setzen for( SCCOL nCol = 0 ; nCol <= MAXCOL ; nCol++ ) - pDoc->SetColWidth( nCol, 0, nDefWidth ); + rContext.pDoc->SetColWidth( nCol, 0, nDefWidth ); } -void OP_Blank( SvStream& r, sal_uInt16 /*n*/ ) +void OP_Blank(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { sal_uInt16 nCol, nRow; sal_uInt8 nFormat; r.ReadUChar( nFormat ).ReadUInt16( nCol ).ReadUInt16( nRow ); - SetFormat( static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), 0, nFormat, nDezFloat ); + SetFormat(rContext, static_cast<SCCOL> (nCol), static_cast<SCROW> (nRow), 0, nFormat, nDezFloat); } -void OP_BOF123( SvStream& r, sal_uInt16 /*n*/ ) +void OP_BOF123(LotusContext& /*rContext*/, SvStream& r, sal_uInt16 /*n*/) { r.SeekRel( 26 ); } -void OP_EOF123( SvStream& /*r*/, sal_uInt16 /*n*/ ) +void OP_EOF123(LotusContext& rContext, SvStream& /*r*/, sal_uInt16 /*n*/) { - bEOF = true; + rContext.bEOF = true; } -void OP_Label123( SvStream& r, sal_uInt16 n ) +void OP_Label123(LotusContext& rContext, SvStream& r, sal_uInt16 n) { sal_uInt8 nTab, nCol; sal_uInt16 nRow; @@ -358,29 +351,29 @@ void OP_Label123( SvStream& r, sal_uInt16 n ) r.Read( pText.get(), n ); pText[ n ] = 0; - PutFormString( static_cast<SCCOL>(nCol), static_cast<SCROW>(nRow), static_cast<SCTAB>(nTab), pText.get() ); + PutFormString(rContext, static_cast<SCCOL>(nCol), static_cast<SCROW>(nRow), static_cast<SCTAB>(nTab), pText.get()); } -void OP_Number123( SvStream& r, sal_uInt16 /*n*/ ) +void OP_Number123(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { - sal_uInt8 nCol,nTab; - sal_uInt16 nRow; - sal_uInt32 nValue; + sal_uInt8 nCol(0), nTab(0); + sal_uInt16 nRow(0); + sal_uInt32 nValue(0); r.ReadUInt16( nRow ).ReadUChar( nTab ).ReadUChar( nCol ).ReadUInt32( nValue ); - if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= pDoc->GetMaxTableNumber()) + if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= rContext.pDoc->GetMaxTableNumber()) { double fValue = Snum32ToDouble( nValue ); - pDoc->EnsureTable(nTab); - pDoc->SetValue(ScAddress(nCol,nRow,nTab), fValue); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetValue(ScAddress(nCol,nRow,nTab), fValue); } } -void OP_Formula123( SvStream& r, sal_uInt16 n ) +void OP_Formula123(LotusContext& rContext, SvStream& r, sal_uInt16 n) { - sal_uInt8 nCol,nTab; - sal_uInt16 nRow; + sal_uInt8 nCol(0), nTab(0); + sal_uInt16 nRow(0); r.ReadUInt16( nRow ).ReadUChar( nTab ).ReadUChar( nCol ); r.SeekRel( 8 ); // Result- jump over @@ -389,21 +382,21 @@ void OP_Formula123( SvStream& r, sal_uInt16 n ) sal_Int32 nBytesLeft = (n > 12) ? n - 12 : 0; ScAddress aAddress( nCol, nRow, nTab ); - svl::SharedStringPool& rSPool = pLotusRoot->pDoc->GetSharedStringPool(); - LotusToSc aConv(r, rSPool, pLotusRoot->eCharsetQ, true); + svl::SharedStringPool& rSPool = rContext.pLotusRoot->pDoc->GetSharedStringPool(); + LotusToSc aConv(rContext, r, rSPool, rContext.pLotusRoot->eCharsetQ, true); aConv.Reset( aAddress ); aConv.Convert( pErg, nBytesLeft ); - if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= pDoc->GetMaxTableNumber()) + if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= rContext.pDoc->GetMaxTableNumber()) { - ScFormulaCell* pCell = new ScFormulaCell(pLotusRoot->pDoc, aAddress, *pErg); + ScFormulaCell* pCell = new ScFormulaCell(rContext.pLotusRoot->pDoc, aAddress, *pErg); pCell->AddRecalcMode( RECALCMODE_ONLOAD_ONCE ); - pDoc->EnsureTable(nTab); - pDoc->SetFormulaCell(ScAddress(nCol,nRow,nTab), pCell); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetFormulaCell(ScAddress(nCol,nRow,nTab), pCell); } } -void OP_IEEENumber123( SvStream& r, sal_uInt16 /*n*/ ) +void OP_IEEENumber123(LotusContext& rContext, SvStream& r, sal_uInt16 /*n*/) { sal_uInt8 nCol,nTab; sal_uInt16 nRow; @@ -411,14 +404,14 @@ void OP_IEEENumber123( SvStream& r, sal_uInt16 /*n*/ ) r.ReadUInt16( nRow ).ReadUChar( nTab ).ReadUChar( nCol ).ReadDouble( dValue ); - if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= pDoc->GetMaxTableNumber()) + if (ValidColRow( static_cast<SCCOL>(nCol), nRow) && nTab <= rContext.pDoc->GetMaxTableNumber()) { - pDoc->EnsureTable(nTab); - pDoc->SetValue(ScAddress(nCol,nRow,nTab), dValue); + rContext.pDoc->EnsureTable(nTab); + rContext.pDoc->SetValue(ScAddress(nCol,nRow,nTab), dValue); } } -void OP_Note123( SvStream& r, sal_uInt16 n) +void OP_Note123(LotusContext& rContext, SvStream& r, sal_uInt16 n) { sal_uInt8 nTab, nCol; sal_uInt16 nRow; @@ -429,14 +422,14 @@ void OP_Note123( SvStream& r, sal_uInt16 n) r.Read( pText.get(), n ); pText[ n ] = 0; - OUString aNoteText(pText.get(), strlen(pText.get()), pLotusRoot->eCharsetQ); + OUString aNoteText(pText.get(), strlen(pText.get()), rContext.pLotusRoot->eCharsetQ); pText.reset(); ScAddress aPos( static_cast<SCCOL>(nCol), static_cast<SCROW>(nRow), static_cast<SCTAB>(nTab) ); - ScNoteUtil::CreateNoteFromString( *pDoc, aPos, aNoteText, false, false ); + ScNoteUtil::CreateNoteFromString( *rContext.pDoc, aPos, aNoteText, false, false ); } -void OP_HorAlign123( sal_uInt8 nAlignPattern, SfxItemSet& rPatternItemSet ) +void OP_HorAlign123(LotusContext& /*rContext*/, sal_uInt8 nAlignPattern, SfxItemSet& rPatternItemSet) { // pre: Pattern is stored in the last 3 bites of the 21st byte // post: Appropriate Horizontal Alignement is set in rPattern according to the bit pattern. @@ -469,7 +462,7 @@ void OP_HorAlign123( sal_uInt8 nAlignPattern, SfxItemSet& rPatternItemSet ) } } -void OP_VerAlign123( sal_uInt8 nAlignPattern,SfxItemSet& rPatternItemSet ) +void OP_VerAlign123(LotusContext& /*rContext*/, sal_uInt8 nAlignPattern, SfxItemSet& rPatternItemSet) { // pre: Pattern is stored in the last 3 bites of the 22nd byte // post: Appropriate Verticle Alignement is set in rPattern according to the bit pattern. @@ -498,11 +491,11 @@ void OP_VerAlign123( sal_uInt8 nAlignPattern,SfxItemSet& rPatternItemSet ) } } -void OP_CreatePattern123( SvStream& r, sal_uInt16 n) +void OP_CreatePattern123(LotusContext& rContext, SvStream& r, sal_uInt16 n) { sal_uInt16 nCode,nPatternId; - ScPatternAttr aPattern(pDoc->GetPool()); + ScPatternAttr aPattern(rContext.pDoc->GetPool()); SfxItemSet& rItemSet = aPattern.GetItemSet(); r.ReadUInt16( nCode ); @@ -535,18 +528,18 @@ void OP_CreatePattern123( SvStream& r, sal_uInt16 n) // Read 21st Byte r.ReadUChar( Hor_Align ); - OP_HorAlign123( Hor_Align, rItemSet ); + OP_HorAlign123(rContext, Hor_Align, rItemSet ); r.ReadUChar( Ver_Align ); - OP_VerAlign123( Ver_Align, rItemSet ); + OP_VerAlign123(rContext, Ver_Align, rItemSet ); - aLotusPatternPool.insert( std::map<sal_uInt16, ScPatternAttr>::value_type( nPatternId, aPattern ) ); + rContext.aLotusPatternPool.insert( std::map<sal_uInt16, ScPatternAttr>::value_type( nPatternId, aPattern ) ); n -= (n > 20) ? 20 : n; } r.SeekRel(n); } -void OP_SheetName123( SvStream& rStream, sal_uInt16 nLength ) +void OP_SheetName123(LotusContext& rContext, SvStream& rStream, sal_uInt16 nLength) { if (nLength <= 4) { @@ -560,7 +553,7 @@ void OP_SheetName123( SvStream& rStream, sal_uInt16 nLength ) rStream.ReadUInt16( nDummy ); // ignore the first 2 bytes (B0 36). rStream.ReadUInt16( nDummy ); SCTAB nSheetNum = static_cast<SCTAB>(nDummy); - pDoc->MakeTable(nSheetNum); + rContext.pDoc->MakeTable(nSheetNum); ::std::vector<sal_Char> sSheetName; sSheetName.reserve(nLength-4); @@ -573,12 +566,12 @@ void OP_SheetName123( SvStream& rStream, sal_uInt16 nLength ) if (!sSheetName.empty()) { - OUString aName(&sSheetName[0], strlen(&sSheetName[0]), eCharVon); - pDoc->RenameTab(nSheetNum, aName); + OUString aName(&sSheetName[0], strlen(&sSheetName[0]), rContext.eCharVon); + rContext.pDoc->RenameTab(nSheetNum, aName); } } -void OP_ApplyPatternArea123( SvStream& rStream ) +void OP_ApplyPatternArea123(LotusContext& rContext, SvStream& rStream) { sal_uInt16 nOpcode, nLength; sal_uInt16 nCol = 0, nColCount = 0, nRow = 0, nRowCount = 0, nTab = 0, nData, nTabCount = 0, nLevel = 0; @@ -630,12 +623,12 @@ void OP_ApplyPatternArea123( SvStream& rStream ) { rStream.ReadUInt16( nData ); rStream.SeekRel( nLength - 2 ); - std::map<sal_uInt16, ScPatternAttr>::iterator loc = aLotusPatternPool.find( nData ); + std::map<sal_uInt16, ScPatternAttr>::iterator loc = rContext.aLotusPatternPool.find( nData ); // #126338# apparently, files with invalid index occur in the wild -> don't crash then - if ( loc != aLotusPatternPool.end() ) + if ( loc != rContext.aLotusPatternPool.end() ) for( int i = 0; i < nTabCount; i++) { - pDoc->ApplyPatternAreaTab( nCol, nRow, nCol + nColCount - 1, nRow + nRowCount - 1, static_cast< SCTAB >( nTab + i ), loc->second ); + rContext.pDoc->ApplyPatternAreaTab( nCol, nRow, nCol + nColCount - 1, nRow + nRowCount - 1, static_cast< SCTAB >( nTab + i ), loc->second ); } } else @@ -648,7 +641,7 @@ void OP_ApplyPatternArea123( SvStream& rStream ) } while( nLevel && !rStream.IsEof() ); - aLotusPatternPool.clear(); + rContext.aLotusPatternPool.clear(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/optab.cxx b/sc/source/filter/lotus/optab.cxx index b5525d80..9c62307 100644 --- a/sc/source/filter/lotus/optab.cxx +++ b/sc/source/filter/lotus/optab.cxx @@ -19,9 +19,10 @@ #include "op.h" #include "optab.h" +#include "lotfilter.hxx" // Bearbeitungsfunktion sal_Char *X( sal_Char * ) -OPCODE_FKT pOpFkt[ FKT_LIMIT ] = +OPCODE_FKT LotusContext::pOpFkt[ FKT_LIMIT ] = { // Code OP_BOF, // 0 OP_EOF, // 1 @@ -126,7 +127,7 @@ OPCODE_FKT pOpFkt[ FKT_LIMIT ] = OP_HiddenCols, // 100 }; -OPCODE_FKT pOpFkt123[ FKT_LIMIT123 ] = +OPCODE_FKT LotusContext::pOpFkt123[ FKT_LIMIT123 ] = { // Code OP_BOF123, // 0 OP_EOF123, // 1 diff --git a/sc/source/filter/lotus/tool.cxx b/sc/source/filter/lotus/tool.cxx index 288522a..273ae78 100644 --- a/sc/source/filter/lotus/tool.cxx +++ b/sc/source/filter/lotus/tool.cxx @@ -33,31 +33,11 @@ #include "ftools.hxx" #include "stringutil.hxx" #include "tokenarray.hxx" +#include "lotfilter.hxx" #include <math.h> -// External variable -extern WKTYP eTyp; // -> filter.cxx, aktueller Dateityp -extern ScDocument* pDoc; // -> filter.cxx, Aufhaenger zum Dokumentzugriff - -// Global variable -sal_uInt8 nDefaultFormat; // -> op.cpp, Standard-Zellenformat - -extern SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard; -extern ScProtectionAttr* pAttrUnprot; -extern SfxUInt32Item** pAttrValForms; - -SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard; - // -> in memory.cxx initialisiert -ScProtectionAttr* pAttrUnprot; // -> " memory.cxx " - -extern FormCache* pValueFormCache; // -> in memory.cxx initialisiert -FormCache* pValueFormCache; - -SCCOL LotusRangeList::nEingCol; -SCROW LotusRangeList::nEingRow; - -void PutFormString( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Char* pString ) +void PutFormString(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Char* pString) { // Label-Format-Auswertung OSL_ENSURE( pString != NULL, "PutFormString(): pString == NULL" ); @@ -72,47 +52,47 @@ void PutFormString( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Char* pString ) switch( cForm ) { case '"': // rechtsbuendig - pJustify = pAttrRight; + pJustify = rContext.pAttrRight; pString++; break; case '\'': // linksbuendig - pJustify = pAttrLeft; + pJustify = rContext.pAttrLeft; pString++; break; case '^': // zentriert - pJustify = pAttrCenter; + pJustify = rContext.pAttrCenter; pString++; break; case '|': // printer command pString = NULL; break; case '\\': // Wiederholung - pJustify = pAttrRepeat; + pJustify = rContext.pAttrRepeat; pString++; break; default: // kenn' ich nicht! - pJustify = pAttrStandard; + pJustify = rContext.pAttrStandard; } if (!pString) return; - pDoc->ApplyAttr( nCol, nRow, nTab, *pJustify ); + rContext.pDoc->ApplyAttr( nCol, nRow, nTab, *pJustify ); ScSetStringParam aParam; aParam.setTextInput(); - pDoc->SetString(ScAddress(nCol,nRow,nTab), OUString(pString, strlen(pString), pLotusRoot->eCharsetQ), &aParam); + rContext.pDoc->SetString(ScAddress(nCol,nRow,nTab), OUString(pString, strlen(pString), rContext.pLotusRoot->eCharsetQ), &aParam); } -void SetFormat( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt8 nFormat, sal_uInt8 nSt ) +void SetFormat(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt8 nFormat, sal_uInt8 nSt) { // PREC: nSt = Standard-Dezimalstellenanzahl - pDoc->ApplyAttr( nCol, nRow, nTab, *( pValueFormCache->GetAttr( nFormat, nSt ) ) ); + rContext.pDoc->ApplyAttr(nCol, nRow, nTab, *(rContext.pValueFormCache->GetAttr(nFormat, nSt))); ScProtectionAttr aAttr; aAttr.SetProtection( nFormat & 0x80 ); - pDoc->ApplyAttr( nCol, nRow, nTab, aAttr ); + rContext.pDoc->ApplyAttr( nCol, nRow, nTab, aAttr ); } void InitPage( void ) @@ -391,7 +371,8 @@ LotusRange::LotusRange( const LotusRange& rCpy ) Copy( rCpy ); } -LotusRangeList::LotusRangeList( void ) +LotusRangeList::LotusRangeList(LOTUS_ROOT* pLotRoot) + : m_pLotRoot(pLotRoot) { aComplRef.InitFlags(); @@ -411,6 +392,9 @@ LotusRangeList::LotusRangeList( void ) pSingRef->SetFlag3D( false ); } +SCCOL LotusRangeList::nEingCol; +SCROW LotusRangeList::nEingRow; + LotusRangeList::~LotusRangeList () { std::vector<LotusRange*>::iterator pIter; @@ -453,16 +437,17 @@ void LotusRangeList::Append( LotusRange* pLR, const OUString& rName ) } ScRangeData* pData = new ScRangeData( - pLotusRoot->pDoc, rName, aTokArray ); + m_pLotRoot->pDoc, rName, aTokArray ); - pLotusRoot->pScRangeName->insert( pData ); + m_pLotRoot->pScRangeName->insert( pData ); pLR->SetId( nIdCnt ); nIdCnt++; } -RangeNameBufferWK3::RangeNameBufferWK3( void ) +RangeNameBufferWK3::RangeNameBufferWK3(LOTUS_ROOT* pLotRoot) + : m_pLotRoot(pLotRoot) { pScTokenArray = new ScTokenArray; nIntCount = 1; @@ -496,14 +481,14 @@ void RangeNameBufferWK3::Add( const OUString& rOrgName, const ScComplexRefData& aInsert.bSingleRef = false; } - ScRangeData* pData = new ScRangeData( pLotusRoot->pDoc, aScName, *pScTokenArray ); + ScRangeData* pData = new ScRangeData( m_pLotRoot->pDoc, aScName, *pScTokenArray ); aInsert.nRelInd = nIntCount; pData->SetIndex( nIntCount ); nIntCount++; maEntries.push_back( aInsert ); - pLotusRoot->pScRangeName->insert( pData ); + m_pLotRoot->pScRangeName->insert( pData ); } bool RangeNameBufferWK3::FindRel( const OUString& rRef, sal_uInt16& rIndex ) @@ -557,13 +542,13 @@ bool RangeNameBufferWK3::FindAbs( const OUString& rRef, sal_uInt16& rIndex ) pScTokenArray->AddDoubleReference( itr->aScComplexRefDataRel ); } - ScRangeData* pData = new ScRangeData( pLotusRoot->pDoc, itr->aScAbsName, *pScTokenArray ); + ScRangeData* pData = new ScRangeData( m_pLotRoot->pDoc, itr->aScAbsName, *pScTokenArray ); rIndex = itr->nAbsInd = nIntCount; pData->SetIndex( rIndex ); nIntCount++; - pLotusRoot->pScRangeName->insert( pData ); + m_pLotRoot->pScRangeName->insert( pData ); } return true; commit abbeed756019e099d16acb4155c7c459fef2d1b4 Author: Caolán McNamara <[email protected]> Date: Wed Sep 10 09:26:16 2014 +0100 callcatcher: update unused code Change-Id: Ie31c16318b09699e080484292d489a378e3a6dce diff --git a/include/vcl/toolbox.hxx b/include/vcl/toolbox.hxx index 6844893..c27c1b2 100644 --- a/include/vcl/toolbox.hxx +++ b/include/vcl/toolbox.hxx @@ -572,7 +572,6 @@ public: Size GetDefaultImageSize() const; void ChangeHighlight( sal_uInt16 nPos ); - void SetImageListProvider(vcl::IImageListProvider* _pProvider); void SetToolbarLayoutMode( ToolBoxLayoutMode eLayout ); }; diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 88e0623..e314145 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -567,8 +567,6 @@ public: bool HasChartAtPoint( SCTAB nTab, const Point& rPos, OUString& rName ); ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > GetChartByName( const OUString& rChartName ); - std::vector<std::pair<css::uno::Reference< - css::chart2::XChartDocument>, Rectangle> > GetAllCharts(); SC_DLLPUBLIC void GetChartRanges( const OUString& rChartName, ::std::vector< ScRangeList >& rRanges, ScDocument* pSheetNameDoc ); void SetChartRanges( const OUString& rChartName, const ::std::vector< ScRangeList >& rRanges ); diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx index b902979..b3a9813 100644 --- a/sc/source/core/data/documen5.cxx +++ b/sc/source/core/data/documen5.cxx @@ -661,41 +661,6 @@ uno::Reference< embed::XEmbeddedObject > return uno::Reference< embed::XEmbeddedObject >(); } -std::vector<std::pair<uno::Reference<chart2::XChartDocument>, Rectangle> > ScDocument::GetAllCharts() -{ - std::vector<std::pair<uno::Reference<chart2::XChartDocument>, Rectangle> > aRet; - if (!pDrawLayer) - return aRet; - - for (SCTAB nTab=0; nTab< static_cast<SCTAB>(maTabs.size()); nTab++) - { - if (!maTabs[nTab]) - continue; - - SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab)); - OSL_ENSURE(pPage,"Page ?"); - - if (!pPage) - continue; - - SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS ); - - for (SdrObject* pObject = aIter.Next(); pObject; pObject = aIter.Next()) - { - if ( pObject->GetObjIdentifier() != OBJ_OLE2 ) - continue; - - uno::Reference< chart2::XChartDocument > xChartDoc( ScChartHelper::GetChartFromSdrObject( pObject ) ); - if(!xChartDoc.is()) - continue; - - Rectangle aRect = pObject->GetLastBoundRect(); - aRet.push_back(std::pair<uno::Reference<chart2::XChartDocument>, Rectangle>(xChartDoc, aRect)); - } - } - return aRet; -} - void ScDocument::UpdateChartListenerCollection() { OSL_ASSERT(pChartListenerCollection); diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index ed066b2..8086335 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -130,7 +130,6 @@ class ScGridWindow : public Window, public DropTargetHelper, public DragSourceHe VisibleRange maVisibleRange; boost::scoped_ptr<sc::SpellCheckContext> mpSpellCheckCxt; - boost::ptr_vector<Window> maChildWindows; ScViewData* pViewData; ScSplitPos eWhich; @@ -416,12 +415,6 @@ public: void UpdateShrinkOverlay(); void UpdateAllOverlays(); - /** - * Takes ownership of the window - */ - void AddChildWindow(Window* pChildWindow); - void DeleteChildWindow(Window* pChildWindow); - protected: // #114409# void ImpCreateOverlayObjects(); diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 071558c..7421959 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -1634,36 +1634,6 @@ bool ScGridWindow::TestMouse( const MouseEvent& rMEvt, bool bAction ) void ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt ) { - if(!maChildWindows.empty()) - { - const Point& rPos = rMEvt.GetPosPixel(); - for(boost::ptr_vector<Window>::iterator itr = maChildWindows.begin(), - itrEnd = maChildWindows.end(); itr != itrEnd; ++itr) - { - if(!itr->IsVisible()) - continue; - - Point aPoint = itr->GetPosPixel(); - Size aSize = itr->GetSizePixel(); - - if(rPos.X() >= aPoint.X() && rPos.X() <= (aPoint.X() + aSize.Width()) - && rPos.Y() >= aPoint.Y() && rPos.Y() <= (aPoint.Y() + aSize.Height())) - { - // we found a mouse event for the child window - // we need to recalculate the position based on the child window - - Point aNewPos = rPos - aPoint; - sal_uInt16 nClicks = rMEvt.GetClicks(); - sal_uInt16 nMode = rMEvt.GetMode(); - sal_uInt16 nButtons = rMEvt.GetButtons(); - sal_uInt16 nModifier = rMEvt.GetModifier(); - - MouseEvent aEvent(aNewPos, nClicks, nMode, nButtons, nModifier); - itr->MouseButtonDown(aEvent); - return; - } - } - } nNestedButtonState = SC_NESTEDBUTTON_DOWN; MouseEventState aState; diff --git a/sc/source/ui/view/gridwin5.cxx b/sc/source/ui/view/gridwin5.cxx index bed697b..9adb789 100644 --- a/sc/source/ui/view/gridwin5.cxx +++ b/sc/source/ui/view/gridwin5.cxx @@ -472,22 +472,4 @@ void ScGridWindow::SwitchView() } } -void ScGridWindow::AddChildWindow(Window* pWindow) -{ - maChildWindows.push_back(pWindow); -} - -void ScGridWindow::DeleteChildWindow(Window* pWindow) -{ - for(boost::ptr_vector<Window>::iterator itr = maChildWindows.begin(), - itrEnd = maChildWindows.end(); itr != itrEnd; ++itr) - { - if(&(*itr) == pWindow) - { - maChildWindows.erase(itr); - return; - } - } -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/LayerTabBar.cxx b/sd/source/ui/dlg/LayerTabBar.cxx index 65ade494..82eaf93 100644 --- a/sd/source/ui/dlg/LayerTabBar.cxx +++ b/sd/source/ui/dlg/LayerTabBar.cxx @@ -55,17 +55,6 @@ LayerTabBar::LayerTabBar(DrawViewShell* pViewSh, Window* pParent) SetHelpId( HID_SD_TABBAR_LAYERS ); } -LayerTabBar::LayerTabBar ( - DrawViewShell* pViewSh, - Window* pParent, - const ResId& rResId) - : TabBar (pParent, rResId.GetWinBits()), - DropTargetHelper( this ), - pDrViewSh(pViewSh) -{ - EnableEditMode(); -} - LayerTabBar::~LayerTabBar() { } diff --git a/sd/source/ui/inc/LayerTabBar.hxx b/sd/source/ui/inc/LayerTabBar.hxx index 6f42de1..8c7f19e 100644 --- a/sd/source/ui/inc/LayerTabBar.hxx +++ b/sd/source/ui/inc/LayerTabBar.hxx @@ -38,10 +38,6 @@ public: LayerTabBar ( DrawViewShell* pDrViewSh, ::Window* pParent); - LayerTabBar ( - DrawViewShell* pDrViewSh, - ::Window* pParent, - const ResId& rResId); virtual ~LayerTabBar (void); /** Inform all listeners of this control that the current layer has been diff --git a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx index 367db27..dcc9065 100644 --- a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx +++ b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx @@ -120,7 +120,6 @@ private: const Bitmap& rPreview, const BitmapEx& rOverlay, const OutputDevice* pReferenceDevice) const; - void InvalidateBitmaps (void); /** Update the local pointer to the page object layouter to the one owned by the general layouter. diff --git a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx index 3e7fe0d..12814c4 100644 --- a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx +++ b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx @@ -101,18 +101,6 @@ bool PageObjectPainter::UpdatePageObjectLayouter (void) return true; } -void PageObjectPainter::InvalidateBitmaps (void) -{ - maNormalBackground.SetEmpty(); - maSelectionBackground.SetEmpty(); - maFocusedSelectionBackground.SetEmpty(); - maFocusedBackground.SetEmpty(); - maMouseOverBackground.SetEmpty(); - maMouseOverSelectedBackground.SetEmpty(); - maMouseOverFocusedBackground.SetEmpty(); - maMouseOverSelectedAndFocusedBackground.SetEmpty(); -} - void PageObjectPainter::SetTheme (const ::boost::shared_ptr<view::Theme>& rpTheme) { mpTheme = rpTheme; diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index 5cf9fa7..7c2706a 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -1014,24 +1014,6 @@ SfxStyleFamily SfxTemplateDialog::NIdToSfxFamilyId(sal_uInt16 nId) } } -void SfxCommonTemplateDialog_Impl::SetAutomaticFilter() -{ - sal_uInt16 nCount = aFilterLb.GetEntryCount(); - for ( sal_uInt16 i = 0; i < nCount; ++i ) - { - sal_uIntPtr nFlags = (sal_uIntPtr)aFilterLb.GetEntryData(i); - if ( SFXSTYLEBIT_AUTO == nFlags ) - { - // automatic entry found -> select it - aFilterLb.SelectEntryPos(i); - // then call the handler to filter the styles - FilterSelect( i - 1 ); - break; - } - } -} - - // Helper function: Access to the current family item const SfxStyleFamilyItem *SfxCommonTemplateDialog_Impl::GetFamilyItem_Impl() const { diff --git a/sfx2/source/inc/templdgi.hxx b/sfx2/source/inc/templdgi.hxx index 41328ec..2988d0a 100644 --- a/sfx2/source/inc/templdgi.hxx +++ b/sfx2/source/inc/templdgi.hxx @@ -293,8 +293,6 @@ public: // normaly for derivates from SvTreeListBoxes, but in this case the dialog handles context menus virtual PopupMenu* CreateContextMenu( void ); - - void SetAutomaticFilter(); }; class DropToolBox_Impl : public ToolBox, public DropTargetHelper diff --git a/svtools/source/table/tablecontrol_impl.cxx b/svtools/source/table/tablecontrol_impl.cxx index f2b1b15..8975e2f 100644 --- a/svtools/source/table/tablecontrol_impl.cxx +++ b/svtools/source/table/tablecontrol_impl.cxx @@ -232,195 +232,6 @@ namespace svt { namespace table } }; - - - //= TableControl_Impl - - -#ifdef DBG_UTIL - - //= SuspendInvariants - - class SuspendInvariants - { - private: - const TableControl_Impl& m_rTable; - sal_Int32 m_nSuspendFlags; - - public: - SuspendInvariants( const TableControl_Impl& _rTable, sal_Int32 _nSuspendFlags ) - :m_rTable( _rTable ) - ,m_nSuspendFlags( _nSuspendFlags ) - { - //DBG_ASSERT( ( m_rTable.m_nRequiredInvariants & m_nSuspendFlags ) == m_nSuspendFlags, - // "SuspendInvariants: cannot suspend what is already suspended!" ); - const_cast< TableControl_Impl& >( m_rTable ).m_nRequiredInvariants &= ~m_nSuspendFlags; - } - ~SuspendInvariants() - { - const_cast< TableControl_Impl& >( m_rTable ).m_nRequiredInvariants |= m_nSuspendFlags; - } - }; - #define DBG_SUSPEND_INV( flags ) \ - SuspendInvariants aSuspendInv( *this, flags ); -#else - #define DBG_SUSPEND_INV( flags ) -#endif - -#ifdef DBG_UTIL - - namespace - { - template< typename SCALAR_TYPE > - bool lcl_checkLimitsExclusive( SCALAR_TYPE _nValue, SCALAR_TYPE _nMin, SCALAR_TYPE _nMax ) - { - return ( _nValue > _nMin ) && ( _nValue < _nMax ); - } - - template< typename SCALAR_TYPE > - bool lcl_checkLimitsExclusive_OrDefault_OrFallback( SCALAR_TYPE _nValue, SCALAR_TYPE _nMin, SCALAR_TYPE _nMax, - PTableModel _pModel, SCALAR_TYPE _nDefaultOrFallback ) - { - if ( !_pModel ) - return _nValue == _nDefaultOrFallback; - if ( _nMax <= _nMin ) - return _nDefaultOrFallback == _nValue; - return lcl_checkLimitsExclusive( _nValue, _nMin, _nMax ); - } - } - - - const sal_Char* TableControl_Impl::impl_checkInvariants() const - { - if ( !m_pModel ) - return "no model, not even an EmptyTableModel"; - - if ( !m_pDataWindow ) - return "invalid data window!"; - - if ( m_pModel->getColumnCount() != m_nColumnCount ) - return "column counts are inconsistent!"; - - if ( m_pModel->getRowCount() != m_nRowCount ) - return "row counts are inconsistent!"; - - if ( ( ( m_nCurColumn != COL_INVALID ) && !m_aColumnWidths.empty() && ( m_nCurColumn < 0 ) ) || ( m_nCurColumn >= (ColPos)m_aColumnWidths.size() ) ) - return "current column is invalid!"; - - if ( !lcl_checkLimitsExclusive_OrDefault_OrFallback( m_nTopRow, (RowPos)-1, m_nRowCount, getModel(), (RowPos)0 ) ) - return "invalid top row value!"; - - if ( !lcl_checkLimitsExclusive_OrDefault_OrFallback( m_nCurRow, (RowPos)-1, m_nRowCount, getModel(), ROW_INVALID ) ) - return "invalid current row value!"; - - if ( !lcl_checkLimitsExclusive_OrDefault_OrFallback( m_nLeftColumn, (ColPos)-1, m_nColumnCount, getModel(), (ColPos)0 ) ) - return "invalid current column value!"; - - if ( !lcl_checkLimitsExclusive_OrDefault_OrFallback( m_nCurColumn, (ColPos)-1, m_nColumnCount, getModel(), COL_INVALID ) ) - return "invalid current column value!"; - - if ( m_pInputHandler != m_pModel->getInputHandler() ) - return "input handler is not the model-provided one!"; - - // m_aSelectedRows should have reasonable content - { - if ( m_aSelectedRows.size() > size_t( m_pModel->getRowCount() ) ) - return "there are more rows selected than actually exist"; - for ( ::std::vector< RowPos >::const_iterator selRow = m_aSelectedRows.begin(); - selRow != m_aSelectedRows.end(); - ++selRow - ) - { - if ( ( *selRow < 0 ) || ( *selRow >= m_pModel->getRowCount() ) ) - return "a non-existent row is selected"; - } - } - - // m_nColHeaderHeightPixel consistent with the model's value? - { - TableMetrics nHeaderHeight = m_pModel->hasColumnHeaders() ? m_pModel->getColumnHeaderHeight() : 0; - nHeaderHeight = m_rAntiImpl.LogicToPixel( Size( 0, nHeaderHeight ), MAP_APPFONT ).Height(); - if ( nHeaderHeight != m_nColHeaderHeightPixel ) - return "column header heights are inconsistent!"; - } - - bool isDummyModel = dynamic_cast< const EmptyTableModel* >( m_pModel.get() ) != NULL; - if ( !isDummyModel ) - { - TableMetrics nRowHeight = m_pModel->getRowHeight(); - nRowHeight = m_rAntiImpl.LogicToPixel( Size( 0, nRowHeight ), MAP_APPFONT).Height(); - if ( nRowHeight != m_nRowHeightPixel ) - return "row heights are inconsistent!"; - } - - // m_nRowHeaderWidthPixel consistent with the model's value? - { - TableMetrics nHeaderWidth = m_pModel->hasRowHeaders() ? m_pModel->getRowHeaderWidth() : 0; - nHeaderWidth = m_rAntiImpl.LogicToPixel( Size( nHeaderWidth, 0 ), MAP_APPFONT ).Width(); - if ( nHeaderWidth != m_nRowHeaderWidthPixel ) - return "row header widths are inconsistent!"; - } - - // m_aColumnWidths consistency - if ( size_t( m_nColumnCount ) != m_aColumnWidths.size() ) - return "wrong number of cached column widths"; - - for ( ColumnPositions::const_iterator col = m_aColumnWidths.begin(); - col != m_aColumnWidths.end(); - ) - { - if ( col->getEnd() < col->getStart() ) - return "column widths: 'end' is expected to not be smaller than start"; - - ColumnPositions::const_iterator nextCol = col + 1; - if ( nextCol != m_aColumnWidths.end() ) - if ( col->getEnd() != nextCol->getStart() ) - return "column widths: one column's end should be the next column's start"; - col = nextCol; - } - - if ( m_nLeftColumn < m_nColumnCount ) - if ( m_aColumnWidths[ m_nLeftColumn ].getStart() != m_nRowHeaderWidthPixel ) - return "the left-most column should start immediately after the row header"; - - if ( m_nCursorHidden < 0 ) - return "invalid hidden count for the cursor!"; - - if ( ( m_nRequiredInvariants & INV_SCROLL_POSITION ) && m_pVScroll ) - { - DBG_SUSPEND_INV( INV_SCROLL_POSITION ); - // prevent infinite recursion - - if ( m_nLeftColumn < 0 ) - return "invalid left-most column index"; - if ( m_pVScroll->GetThumbPos() != m_nTopRow ) - return "vertical scroll bar |position| is incorrect!"; - if ( m_pVScroll->GetRange().Max() != m_nRowCount ) - return "vertical scroll bar |range| is incorrect!"; - if ( m_pVScroll->GetVisibleSize() != impl_getVisibleRows( false ) ) - return "vertical scroll bar |visible size| is incorrect!"; - } - - if ( ( m_nRequiredInvariants & INV_SCROLL_POSITION ) && m_pHScroll ) - { - DBG_SUSPEND_INV( INV_SCROLL_POSITION ); - // prevent infinite recursion - - if ( m_pHScroll->GetThumbPos() != m_nLeftColumn ) - return "horizontal scroll bar |position| is incorrect!"; - if ( m_pHScroll->GetRange().Max() != m_nColumnCount ) - return "horizontal scroll bar |range| is incorrect!"; - if ( m_pHScroll->GetVisibleSize() != impl_getVisibleColumns( false ) ) - return "horizontal scroll bar |visible size| is incorrect!"; - } - - return NULL; - } -#endif - -#define DBG_CHECK_ME() \ - - TableControl_Impl::TableControl_Impl( TableControl& _rAntiImpl ) :m_rAntiImpl ( _rAntiImpl ) ,m_pModel ( new EmptyTableModel ) @@ -445,9 +256,6 @@ namespace svt { namespace table ,m_nAnchor ( -1 ) ,m_bUpdatingColWidths ( false ) ,m_pAccessibleTable ( NULL ) -#ifdef DBG_UTIL - ,m_nRequiredInvariants ( INV_SCROLL_POSITION ) -#endif { m_pSelEngine = new SelectionEngine( m_pDataWindow.get(), m_pTableFunctionSet ); m_pSelEngine->SetSelectionMode(SINGLE_SELECTION); @@ -455,7 +263,6 @@ namespace svt { namespace table m_pDataWindow->Show(); } - TableControl_Impl::~TableControl_Impl() { @@ -466,11 +273,8 @@ namespace svt { namespace table DELETEZ( m_pSelEngine ); } - void TableControl_Impl::setModel( PTableModel _pModel ) { - DBG_CHECK_ME(); - SuppressCursor aHideCursor( *this ); if ( !!m_pModel ) @@ -520,7 +324,6 @@ namespace svt { namespace table void TableControl_Impl::rowsInserted( RowPos i_first, RowPos i_last ) { - DBG_CHECK_ME(); OSL_PRECOND( i_last >= i_first, "TableControl_Impl::rowsInserted: invalid row indexes!" ); TableSize const insertedRows = i_last - i_first + 1; @@ -692,8 +495,6 @@ namespace svt { namespace table void TableControl_Impl::impl_invalidateColumn( ColPos const i_column ) { - DBG_CHECK_ME(); - Rectangle const aAllCellsArea( impl_getAllVisibleCellsArea() ); const TableColumnGeometry aColumn( *this, aAllCellsArea, i_column ); @@ -729,8 +530,6 @@ namespace svt { namespace table Rectangle TableControl_Impl::impl_getAllVisibleCellsArea() const { - DBG_CHECK_ME(); - Rectangle aArea( Point( 0, 0 ), Size( 0, 0 ) ); // determine the right-most border of the last column which is @@ -767,8 +566,6 @@ namespace svt { namespace table Rectangle TableControl_Impl::impl_getAllVisibleDataCellArea() const { - DBG_CHECK_ME(); - Rectangle aArea( impl_getAllVisibleCellsArea() ); aArea.Left() = m_nRowHeaderWidthPixel; aArea.Top() = m_nColHeaderHeightPixel; @@ -1398,8 +1195,6 @@ namespace svt { namespace table void TableControl_Impl::onResize() { - DBG_CHECK_ME(); - impl_ni_relayout(); checkCursorPosition(); } @@ -1407,8 +1202,6 @@ namespace svt { namespace table void TableControl_Impl::doPaintContent( const Rectangle& _rUpdateRect ) { - DBG_CHECK_ME(); - if ( !getModel() ) return; PTableRenderer pRenderer = getModel()->getRenderer(); @@ -1531,8 +1324,6 @@ namespace svt { namespace table void TableControl_Impl::hideCursor() { - DBG_CHECK_ME(); - if ( ++m_nCursorHidden == 1 ) impl_ni_doSwitchCursor( false ); } @@ -1540,8 +1331,6 @@ namespace svt { namespace table void TableControl_Impl::showCursor() { - DBG_CHECK_ME(); - DBG_ASSERT( m_nCursorHidden > 0, "TableControl_Impl::showCursor: cursor not hidden!" ); if ( --m_nCursorHidden == 0 ) impl_ni_doSwitchCursor( true ); @@ -1550,8 +1339,6 @@ namespace svt { namespace table bool TableControl_Impl::dispatchAction( TableControlAction _eAction ) { - DBG_CHECK_ME(); - bool bSuccess = false; bool selectionChanged = false; @@ -1939,8 +1726,6 @@ namespace svt { namespace table void TableControl_Impl::impl_getCellRect( ColPos _nColumn, RowPos _nRow, Rectangle& _rCellRect ) const { - DBG_CHECK_ME(); - if ( !m_pModel || ( COL_INVALID == _nColumn ) || ( ROW_INVALID == _nRow ) @@ -1957,14 +1742,12 @@ namespace svt { namespace table RowPos TableControl_Impl::getRowAtPoint( const Point& rPoint ) const { - DBG_CHECK_ME(); return impl_getRowForAbscissa( rPoint.Y() ); } ColPos TableControl_Impl::getColAtPoint( const Point& rPoint ) const { - DBG_CHECK_ME(); return impl_getColumnForOrdinate( rPoint.X() ); } @@ -1990,8 +1773,6 @@ namespace svt { namespace table ColumnMetrics TableControl_Impl::getColumnMetrics( ColPos const i_column ) const { - DBG_CHECK_ME(); - ENSURE_OR_RETURN( ( i_column >= 0 ) && ( i_column < m_pModel->getColumnCount() ), "TableControl_Impl::getColumnMetrics: illegal column index!", ColumnMetrics() ); return (ColumnMetrics const &)m_aColumnWidths[ i_column ]; @@ -2024,7 +1805,6 @@ namespace svt { namespace table void TableControl_Impl::setPointer( Pointer const & i_pointer ) { - DBG_CHECK_ME(); m_pDataWindow->SetPointer( i_pointer ); } @@ -2091,14 +1871,12 @@ namespace svt { namespace table bool TableControl_Impl::activateCell( ColPos const i_col, RowPos const i_row ) { - DBG_CHECK_ME(); return goTo( i_col, i_row ); } void TableControl_Impl::invalidateSelectedRegion( RowPos _nPrevRow, RowPos _nCurRow ) { - DBG_CHECK_ME(); // get the visible area of the table control and set the Left and right border of the region to be repainted Rectangle const aAllCells( impl_getAllVisibleCellsArea() ); @@ -2179,7 +1957,6 @@ namespace svt { namespace table void TableControl_Impl::checkCursorPosition() { - DBG_CHECK_ME(); TableSize nVisibleRows = impl_getVisibleRows(true); TableSize nVisibleCols = impl_getVisibleColumns(true); @@ -2211,8 +1988,6 @@ namespace svt { namespace table TableSize TableControl_Impl::impl_getVisibleRows( bool _bAcceptPartialRow ) const { - DBG_CHECK_ME(); - DBG_ASSERT( m_pDataWindow, "TableControl_Impl::impl_getVisibleRows: no data window!" ); return lcl_getRowsFittingInto( @@ -2225,8 +2000,6 @@ namespace svt { namespace table TableSize TableControl_Impl::impl_getVisibleColumns( bool _bAcceptPartialCol ) const { - DBG_CHECK_ME(); - DBG_ASSERT( m_pDataWindow, "TableControl_Impl::impl_getVisibleColumns: no data window!" ); return lcl_getColumnsVisibleWithin( @@ -2240,8 +2013,6 @@ namespace svt { namespace table bool TableControl_Impl::goTo( ColPos _nColumn, RowPos _nRow ) { - DBG_CHECK_ME(); - // TODO: give veto listeners a chance if ( ( _nColumn < 0 ) || ( _nColumn >= m_nColumnCount ) @@ -2264,7 +2035,6 @@ namespace svt { namespace table void TableControl_Impl::ensureVisible( ColPos _nColumn, RowPos _nRow, bool _bAcceptPartialVisibility ) { - DBG_CHECK_ME(); DBG_ASSERT( ( _nColumn >= 0 ) && ( _nColumn < m_nColumnCount ) && ( _nRow >= 0 ) && ( _nRow < m_nRowCount ), "TableControl_Impl::ensureVisible: invalid coordinates!" ); @@ -2322,7 +2092,6 @@ namespace svt { namespace table // if updates are enabled currently, scroll the viewport if ( m_nTopRow != nOldTopRow ) { - DBG_SUSPEND_INV( INV_SCROLL_POSITION ); SuppressCursor aHideCursor( *this ); // TODO: call a onStartScroll at our listener (or better an own onStartScroll, // which hides the cursor and then calls the listener) @@ -2368,7 +2137,6 @@ namespace svt { namespace table TableSize TableControl_Impl::impl_scrollRows( TableSize const i_rowDelta ) { - DBG_CHECK_ME(); return impl_ni_ScrollRows( i_rowDelta ); } @@ -2388,7 +2156,6 @@ namespace svt { namespace table // if updates are enabled currently, scroll the viewport if ( m_nLeftColumn != nOldLeftColumn ) { - DBG_SUSPEND_INV( INV_SCROLL_POSITION ); SuppressCursor aHideCursor( *this ); // TODO: call a onStartScroll at our listener (or better an own onStartScroll, // which hides the cursor and then calls the listener) @@ -2442,7 +2209,6 @@ namespace svt { namespace table TableSize TableControl_Impl::impl_scrollColumns( TableSize const i_columnDelta ) { - DBG_CHECK_ME(); return impl_ni_ScrollColumns( i_columnDelta ); } @@ -2452,11 +2218,6 @@ namespace svt { namespace table return m_pSelEngine; } - - - - - bool TableControl_Impl::isRowSelected( RowPos i_row ) const { return ::std::find( m_aSelectedRows.begin(), m_aSelectedRows.end(), i_row ) != m_aSelectedRows.end(); @@ -2484,8 +2245,6 @@ namespace svt { namespace table ColPos TableControl_Impl::impl_getColumnForOrdinate( long const i_ordinate ) const { - DBG_CHECK_ME(); - if ( ( m_aColumnWidths.empty() ) || ( i_ordinate < 0 ) ) return COL_INVALID; @@ -2512,8 +2271,6 @@ namespace svt { namespace table RowPos TableControl_Impl::impl_getRowForAbscissa( long const i_abscissa ) const { - DBG_CHECK_ME(); - if ( i_abscissa < 0 ) return ROW_INVALID; @@ -2528,8 +2285,6 @@ namespace svt { namespace table bool TableControl_Impl::markRowAsDeselected( RowPos const i_rowIndex ) { - DBG_CHECK_ME(); - ::std::vector< RowPos >::iterator selPos = ::std::find( m_aSelectedRows.begin(), m_aSelectedRows.end(), i_rowIndex ); if ( selPos == m_aSelectedRows.end() ) return false; @@ -2541,8 +2296,6 @@ namespace svt { namespace table bool TableControl_Impl::markRowAsSelected( RowPos const i_rowIndex ) { - DBG_CHECK_ME(); - if ( isRowSelected( i_rowIndex ) ) return false; @@ -2583,8 +2336,6 @@ namespace svt { namespace table bool TableControl_Impl::markAllRowsAsSelected() { - DBG_CHECK_ME(); - SelectionMode const eSelMode = getSelEngine()->GetSelectionMode(); ENSURE_OR_RETURN_FALSE( eSelMode == MULTIPLE_SELECTION, "TableControl_Impl::markAllRowsAsSelected: unsupported selection mode!" ); @@ -2616,7 +2367,6 @@ namespace svt { namespace table void TableControl_Impl::commitCellEvent( sal_Int16 const i_eventID, const Any& i_newValue, const Any& i_oldValue ) { - DBG_CHECK_ME(); if ( impl_isAccessibleAlive() ) m_pAccessibleTable->commitCellEvent( i_eventID, i_newValue, i_oldValue ); } @@ -2624,7 +2374,6 @@ namespace svt { namespace table void TableControl_Impl::commitTableEvent( sal_Int16 const i_eventID, const Any& i_newValue, const Any& i_oldValue ) { - DBG_CHECK_ME(); if ( impl_isAccessibleAlive() ) m_pAccessibleTable->commitTableEvent( i_eventID, i_newValue, i_oldValue ); } @@ -2669,7 +2418,6 @@ namespace svt { namespace table IMPL_LINK( TableControl_Impl, OnUpdateScrollbars, void*, /**/ ) { - DBG_CHECK_ME(); // TODO: can't we simply use lcl_updateScrollbar here, so the scrollbars ranges are updated, instead of // doing a complete re-layout? impl_ni_relayout(); @@ -2722,14 +2470,12 @@ namespace svt { namespace table bool TableControl_Impl::impl_isAccessibleAlive() const { - DBG_CHECK_ME(); return ( NULL != m_pAccessibleTable ) && m_pAccessibleTable->isAlive(); } void TableControl_Impl::impl_commitAccessibleEvent( sal_Int16 const i_eventID, Any const & i_newValue, Any const & i_oldValue ) { - DBG_CHECK_ME(); if ( impl_isAccessibleAlive() ) m_pAccessibleTable->commitEvent( i_eventID, i_newValue, i_oldValue ); } diff --git a/svtools/source/table/tablecontrol_impl.hxx b/svtools/source/table/tablecontrol_impl.hxx index 7a6191f..dc624c4 100644 --- a/svtools/source/table/tablecontrol_impl.hxx +++ b/svtools/source/table/tablecontrol_impl.hxx @@ -144,16 +144,6 @@ namespace svt { namespace table AccessibleFactoryAccess m_aFactoryAccess; IAccessibleTableControl* m_pAccessibleTable; -#ifdef DBG_UTIL - #define INV_SCROLL_POSITION 1 - /** represents a bitmask of invariants to check - - Actually, impl_checkInvariants checks more invariants than denoted in this - bit mask, but only those present here can be disabled temporarily. - */ - sal_Int32 m_nRequiredInvariants; -#endif - public: void setModel( PTableModel _pModel ); @@ -175,9 +165,6 @@ namespace svt { namespace table TableControl_Impl( TableControl& _rAntiImpl ); virtual ~TableControl_Impl(); -#ifdef DBG_UTIL - const sal_Char* impl_checkInvariants() const; -#endif /** to be called when the anti-impl instance has been resized */ void onResize(); diff --git a/unusedcode.easy b/unusedcode.easy index 4e5facb..b525d1f 100644 --- a/unusedcode.easy +++ b/unusedcode.easy @@ -64,6 +64,7 @@ VCLXGraphics::getLineColor() VCLXGraphics::getRasterOp() VCLXGraphics::getTextColor() VCLXGraphics::getTextFillColor() +XclXmlUtils::ToOString(XclRange const&) XmlTestTools::parseXml(utl::TempFile&) apitest::CellProperties::testRotateReference() apitest::CellProperties::testVertJustify() @@ -205,7 +206,6 @@ sc::CellValues::transferTo(ScColumn&, int) sd::LeftDrawPaneShell::RegisterInterface(SfxModule*) sd::LeftImpressPaneShell::RegisterInterface(SfxModule*) sd::framework::FrameworkHelper::Instance(com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) -sd::slidesorter::view::PageObjectPainter::InvalidateBitmaps() sfx2::SvBaseLink::SvBaseLink(rtl::OUString const&, unsigned short, sfx2::SvLinkSource*) std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, (anonymous namespace)::TemplateId>, std::_Select1st<std::pair<rtl::OUString const, (anonymous namespace)::TemplateId> >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, (anonymous namespace)::TemplateId> > >::_Rb_tree(std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, (anonymous namespace)::TemplateId>, std::_Select1st<std::pair<rtl::OUString const, (anonymous namespace)::TemplateId> >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, (anonymous namespace)::TemplateId> > >&&) std::__cxx1998::vector<rtl::Reference<oox::xls::(anonymous namespace)::WorkerThread>, std::allocator<rtl::Reference<oox::xls::(anonymous namespace)::WorkerThread> > >::reserve(unsigned long) @@ -215,7 +215,6 @@ svgio::svgreader::SvgDocument::removeSvgStyleAttributesFromMapper(rtl::OUString svl::GridPrinter::clear() svl::GridPrinter::resize(unsigned long, unsigned long) svt::CheckInvariants(void const*) -svt::table::TableControl_Impl::impl_checkInvariants() const svt::table::UnoControlTableModel::checkInvariants() const vcl::MapChar(vcl::_TrueTypeFont*, unsigned short, bool) writerfilter::dmapper::StyleSheetTable::GetStyleIdFromIndex(unsigned int) diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx index 0168219..864ec63 100644 --- a/vcl/source/window/toolbox2.cxx +++ b/vcl/source/window/toolbox2.cxx @@ -2171,10 +2171,4 @@ void ToolBox::ImplUpdateImageList() } } -void ToolBox::SetImageListProvider(vcl::IImageListProvider* _pProvider) -{ - mpData->mpImageListProvider = _pProvider; - ImplUpdateImageList(); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 3e0f9a148bf2c0a5916e850528a9b0472830bb9e ... etc. - the rest is truncated
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
