diff options
Diffstat (limited to 'sc/source/filter/qpro')
-rw-r--r-- | sc/source/filter/qpro/biff.cxx | 106 | ||||
-rw-r--r-- | sc/source/filter/qpro/qpro.cxx | 233 | ||||
-rw-r--r-- | sc/source/filter/qpro/qproform.cxx | 749 | ||||
-rw-r--r-- | sc/source/filter/qpro/qprostyle.cxx | 171 |
4 files changed, 0 insertions, 1259 deletions
diff --git a/sc/source/filter/qpro/biff.cxx b/sc/source/filter/qpro/biff.cxx deleted file mode 100644 index b2a232e1c..000000000 --- a/sc/source/filter/qpro/biff.cxx +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sc.hxx" - -#include <sal/config.h> -#include <stdio.h> -#include <sfx2/docfile.hxx> - -#include "global.hxx" -#include "scerrors.hxx" -#include "docpool.hxx" -#include "patattr.hxx" -#include "filter.hxx" -#include "document.hxx" -#include "cell.hxx" -#include "biff.hxx" - -ScBiffReader::ScBiffReader( SfxMedium & rMedium ) : - mnId(0), - mnLength(0), - mnOffset(0) -{ - mpStream = rMedium.GetInStream(); - if( mpStream ) - { - mpStream->SetBufferSize( 65535 ); - mpStream->SetStreamCharSet( RTL_TEXTENCODING_MS_1252 ); - } -} - -ScBiffReader::~ScBiffReader() -{ - if( mpStream ) - mpStream->SetBufferSize( 0 ); -} - -bool ScBiffReader::nextRecord() -{ - if( !recordsLeft() ) - return false; - - if( IsEndOfFile() ) - return false; - - sal_uInt32 nPos = mpStream->Tell(); - if( nPos != mnOffset + mnLength ) - mpStream->Seek( mnOffset + mnLength ); - - mnLength = mnId = 0; - *mpStream >> mnId >> mnLength; - - mnOffset = mpStream->Tell(); -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "Read record 0x%x length 0x%x at offset 0x%x\n", - (unsigned)mnId, (unsigned)mnLength, (unsigned)mnOffset ); - -#if 1 // rather verbose - int len = mnLength; - while (len > 0) { - int i, chunk = len < 16 ? len : 16; - unsigned char data[16]; - mpStream->Read( data, chunk ); - - for (i = 0; i < chunk; i++) - fprintf( stderr, "%.2x ", data[i] ); - fprintf( stderr, "| " ); - for (i = 0; i < chunk; i++) - fprintf( stderr, "%c", data[i] < 127 && data[i] > 30 ? data[i] : '.' ); - fprintf( stderr, "\n" ); - - len -= chunk; - } - mpStream->Seek( mnOffset ); -#endif -#endif - return true; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx deleted file mode 100644 index a6a501a17..000000000 --- a/sc/source/filter/qpro/qpro.cxx +++ /dev/null @@ -1,233 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sc.hxx" - -#include <sal/config.h> -#include <stdio.h> -#include <sfx2/docfile.hxx> - -#include "qproform.hxx" -#include "qpro.hxx" -#include "qprostyle.hxx" - -#include "global.hxx" -#include "scerrors.hxx" -#include "docpool.hxx" -#include "patattr.hxx" -#include "filter.hxx" -#include "document.hxx" -#include "cell.hxx" -#include "biff.hxx" -#include <tools/stream.hxx> - -FltError ScQProReader::readSheet( SCTAB nTab, ScDocument* pDoc, ScQProStyle *pStyle ) -{ - FltError eRet = eERR_OK; - sal_uInt8 nCol, nDummy; - sal_uInt16 nRow; - sal_uInt16 nStyle; - bool bEndOfSheet = false; - -#if OSL_DEBUG_LEVEL > 1 - fprintf( stderr, "Read sheet (%d)\n", nTab ); -#endif - - while( eERR_OK == eRet && !bEndOfSheet && nextRecord() ) - { - switch( getId() ) - { - case 0x000f:{ // Label cell - String aLabel; - *mpStream >> nCol >> nDummy >> nRow >> nStyle >> nDummy; - readString( aLabel, getLength() - 7 ); - nStyle = nStyle >> 3; - pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle ); - pDoc->PutCell( nCol, nRow, nTab, ScBaseCell::CreateTextCell( aLabel, pDoc ), (sal_Bool) sal_True ); - } - break; - - case 0x00cb: // End of sheet - bEndOfSheet = true; - break; - - case 0x000c: // Blank cell - *mpStream >> nCol >> nDummy >> nRow >> nStyle; - nStyle = nStyle >> 3; - pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle ); - break; - - case 0x000d:{ // Integer cell - sal_Int16 nValue; - *mpStream >> nCol >> nDummy >> nRow >> nStyle >> nValue; - ScValueCell* pInteger = new ScValueCell( ( double ) nValue ); - nStyle = nStyle >> 3; - pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle ); - pDoc->PutCell(nCol ,nRow, nTab ,pInteger,(sal_Bool) sal_True); - } - break; - - case 0x000e:{ // Floating point cell - double nValue; - *mpStream >> nCol >> nDummy >> nRow >> nStyle >> nValue; - ScValueCell* pFloat = new ScValueCell( nValue ); - nStyle = nStyle >> 3; - pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle ); - pDoc->PutCell( nCol, nRow, nTab, pFloat, (sal_Bool) sal_True ); - } - break; - - case 0x0010:{ // Formula cell - double nValue; - sal_uInt16 nState, nLen; - *mpStream >> nCol >> nDummy >> nRow >> nStyle >> nValue >> nState >> nLen; - ScAddress aAddr( nCol, nRow, nTab ); - const ScTokenArray *pArray; - QProToSc aConv( *mpStream, aAddr ); - if (ConvOK != aConv.Convert( pArray, nLen )) - eRet = eERR_FORMAT; - else - { - ScFormulaCell *pFormula = new ScFormulaCell( pDoc, aAddr, pArray ); - nStyle = nStyle >> 3; - pFormula->AddRecalcMode( RECALCMODE_ONLOAD_ONCE ); - pStyle->SetFormat( pDoc, nCol, nRow, nTab, nStyle ); - pDoc->PutCell( nCol, nRow, nTab, pFormula, ( sal_Bool ) sal_True ); - } - } - break; - } - } - return eRet; -} - -FltError ScFormatFilterPluginImpl::ScImportQuattroPro( SfxMedium &rMedium, ScDocument *pDoc ) -{ - FltError eRet = eERR_OK; - ScQProReader aReader( rMedium ); - eRet = aReader.import( pDoc ); - return eRet; -} - -ScQProReader::ScQProReader( SfxMedium &rMedium ): - ScBiffReader( rMedium ) -{ -} - -FltError ScQProReader::import( ScDocument *pDoc ) -{ - FltError eRet = eERR_OK; - sal_uInt16 nVersion; - sal_uInt16 i = 1, j = 1; - SCTAB nTab = 0; - SetEof( false ); - - if( !recordsLeft() ) - return eERR_OPEN; - - ScQProStyle *pStyleElement = new ScQProStyle; - - while( nextRecord() && eRet == eERR_OK) - { - switch( getId() ) - { - case 0x0000: // Begginning of file - *mpStream >> nVersion; - break; - - case 0x00ca: // Beginning of sheet - if( nTab <= MAXTAB ) - { - if( nTab < 26 ) - { - String aName; - aName.Append( sal_Unicode( 'A' + nTab ) ); - if (!nTab) - pDoc->RenameTab( nTab, aName, false, false); - else - pDoc->InsertTab( nTab, aName ); - } - eRet = readSheet( nTab, pDoc, pStyleElement ); - nTab++; - } - break; - - case 0x0001: // End of file - SetEof( sal_True ); - break; - - case 0x00ce:{ // Attribute cell - sal_uInt8 nFormat, nAlign, nFont; - sal_Int16 nColor; - *mpStream >> nFormat >> nAlign >> nColor >> nFont; - pStyleElement->setAlign( i, nAlign ); - pStyleElement->setFont( i, nFont ); - i++; - } - break; - - case 0x00cf:{ // Font description - sal_uInt16 nPtSize, nFontAttr; - String aLabel; - *mpStream >> nPtSize >> nFontAttr; - pStyleElement->setFontRecord( j, nFontAttr, nPtSize ); - readString( aLabel, getLength() - 4 ); - pStyleElement->setFontType( j, aLabel ); - j++; - } - break; - } - } - pDoc->CalcAfterLoad(); - delete pStyleElement; - return eRet; -} - -bool ScQProReader::recordsLeft() -{ - bool bValue = ScBiffReader::recordsLeft(); - return bValue; -} - -bool ScQProReader::nextRecord() -{ - bool bValue = ScBiffReader::nextRecord(); - return bValue; -} - -void ScQProReader::readString( String &rString, sal_uInt16 nLength ) -{ - sal_Char* pText = new sal_Char[ nLength + 1 ]; - mpStream->Read( pText, nLength ); - pText[ nLength ] = 0; - rString = String( pText, mpStream->GetStreamCharSet() ); - delete [] pText; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/qpro/qproform.cxx b/sc/source/filter/qpro/qproform.cxx deleted file mode 100644 index 2f83b5aa5..000000000 --- a/sc/source/filter/qpro/qproform.cxx +++ /dev/null @@ -1,749 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sc.hxx" - -#include <sal/config.h> -#include <sal/macros.h> -#include "qpro.hxx" - -#include "qproform.hxx" -#include "formel.hxx" -#include "compiler.hxx" -#include <tokstack.hxx> -#include "ftools.hxx" - -void QProToSc::ReadSRD( ScSingleRefData& rSRD, sal_Int8 nPage, sal_Int8 nCol, sal_uInt16 nRelBit ) -{ - sal_uInt16 nTmp = nRelBit & 0x1fff; - rSRD.InitAddress( ScAddress( nCol, (~nTmp + 1), 0 ) ); - if( nRelBit & 0x4000 ) - { - rSRD.nRelCol = nCol; - rSRD.SetColRel( sal_True ); - } - else - { - rSRD.nCol = nCol; - rSRD.SetColRel( false ); - } - if( nRelBit & 0x2000 ) - { - rSRD.nRelRow = (~nTmp + 1); - rSRD.nRelRow = (sal_Int16)(nTmp << 3); - rSRD.nRelRow /= 8; - rSRD.SetRowRel( sal_True ); - } - else - { - rSRD.nRow = nTmp; - rSRD.SetRowRel( false ); - } - if( nRelBit & 0x8000 ) - { - rSRD.nRelTab = nPage; - rSRD.SetTabRel( sal_True ); - // absolute tab needed in caller for comparison in case of DoubleRef - rSRD.nTab = aEingPos.Tab() + nPage; - } - else - { - rSRD.nTab = nPage; - rSRD.SetTabRel( false ); - } - if (rSRD.nTab != aEingPos.Tab()) - rSRD.SetFlag3D( sal_True); -} - -QProToSc::QProToSc( SvStream& rStream, const ScAddress& rRefPos ) : - ConverterBase( 128 ), - maIn( rStream ) -{ - aEingPos = rRefPos; -} - -void QProToSc::DoFunc( DefTokenId eOc, sal_uInt16 nArgs, const sal_Char* pExtString ) -{ - TokenId eParam[ nBufSize ]; - sal_Int32 nCount; - TokenId nPush, nPush1; - - sal_Bool bAddIn = false; - sal_Bool bNeg = false; - - if( eOc == ocNoName ) - { - bAddIn = sal_True; - if( pExtString ) - { - ByteString s; - s = pExtString; - s.Insert( "QPRO_", 0 ); - nPush = aPool.Store( eOc, String( s, maIn.GetStreamCharSet() ) ); - aPool << nPush; - } - else - aPool << ocNoName; - } - - if( nArgs < nBufSize ) - { - for( nCount = 0; nCount < nArgs ; nCount++ ) - aStack >> eParam[ nCount ]; - } - else - return; - - switch( eOc ) - { - case ocIndex: - nPush = eParam[ 0 ]; - eParam[ 0 ] = eParam[ 1 ]; - eParam[ 1 ] = nPush; - IncToken( eParam[ 0 ] ); - IncToken( eParam[ 1 ] ); - break; - - case ocIRR: - nPush = eParam[ 0 ]; - eParam[ 0 ] = eParam[ 1 ]; - eParam[ 1 ] = nPush; - break; - - case ocGetYear: - nPush = aPool.Store( 1900.0 ); - aPool << ocOpen; - break; - - default: - break; - } - - if( !bAddIn ) - aPool << eOc; - - aPool << ocOpen; - - if( nArgs> 0 ) - { - sal_Int16 nLast = nArgs- 1; - - if( eOc == ocZGZ ) - aPool << eParam[ 2 ] << ocSep << eParam[ 1 ] << ocSep << eParam[ 0 ]; - if( eOc == ocZinsZ ) - aPool << eParam[ 3 ] << ocSep << eParam[ 2 ] << ocSep << eParam[ 1 ] << ocSep << eParam[ 0 ]; - else - { - sal_Int16 nNull = -1; - aPool << eParam[ nLast ]; - for( nCount = nLast - 1 ; nCount >= 0 ; nCount-- ) - { - if( nCount != nNull ) - aPool << ocSep << eParam[ nCount ]; - } - } - } - - if( eOc == ocGetYear ) - aPool << ocClose << ocSub << nPush; - else if( eOc == ocFixed ) - aPool << ocSep << ocTrue << ocOpen << ocClose; - - aPool << ocClose; - aPool >> aStack; - - if( bNeg ) - { - aPool << ocOpen << ocSub << aStack << ocClose; - aPool >> aStack; - } -} - -void QProToSc::IncToken( TokenId &rParam ) -{ - aPool << ocOpen << rParam << mnAddToken; - rParam = aPool.Store(); -} - -#define SAFEDEC_OR_RET(nRef, amt, ret) \ -do { \ - if (nRef < amt)\ - return ret; \ - nRef-=amt; \ -} while(0) - -ConvErr QProToSc::Convert( const ScTokenArray*& pArray, sal_uInt16 /*nLen*/, const FORMULA_TYPE /*eFT*/ ) -{ - sal_uInt8 nFmla[ nBufSize ], i, nArg, nArgArray[ nBufSize ]; - sal_Int8 nCol, nPage; - sal_uInt16 nInt, nIntCount = 0, nStringCount = 0, nFloatCount = 0, nDLLCount = 0, nIntArray[ nBufSize ], nArgCount = 0; - String sStringArray[ nBufSize ]; - sal_uInt16 nDummy, nDLLId, nDLLArray[ nBufSize ]; - sal_uInt16 nNote, nRef, nRelBits; - TokenId nPush; - ScComplexRefData aCRD; - ScSingleRefData aSRD; - FUNC_TYPE eType; - DefTokenId eOc; - double nFloatArray[ nBufSize ], nFloat; - const sal_Char* pExtString = 0; - - aCRD.InitFlags(); - aSRD.InitFlags(); - maIn >> nRef; - - if( nRef < nBufSize ) - { - for( i=0; i < nRef; i++) - { - maIn >> nFmla[i]; - - if( nFmla[ i ] == 0x05 ) - { - maIn >> nInt; - nIntArray[ nIntCount ] = nInt; - SAFEDEC_OR_RET(nRef, 2, ConvErrCount); - nIntCount++; - } - - if( nFmla[ i ] == 0x00 ) - { - maIn >> nFloat; - nFloatArray[ nFloatCount ] = nFloat; - SAFEDEC_OR_RET(nRef, 8, ConvErrCount); - nFloatCount++; - } - - if( nFmla[ i ] == 0x1a ) - { - maIn >> nArg >> nDummy >> nDLLId; - nArgArray[ nArgCount ] = nArg; - nDLLArray[ nDLLCount ] = nDLLId; - SAFEDEC_OR_RET(nRef, 5, ConvErrCount); - nDLLCount++; - nArgCount++; - } - if( nFmla[ i ] == 0x06 ) - { - String aTmp( ScfTools::ReadCString( maIn ), maIn.GetStreamCharSet() ); - sStringArray[ nStringCount ] = aTmp; - nStringCount++; - SAFEDEC_OR_RET(nRef, aTmp.Len() + 1, ConvErrCount); - } - } - } - else - return ConvErrCount; - - i = 0, nIntCount = 0, nFloatCount = 0, nDLLCount = 0, nArgCount = 0, nStringCount =0; - - while( i < nRef && ( nFmla[ i ] != 0x03 ) ) - { - eType = IndexToType( nFmla[ i ] ); - eOc = IndexToToken( nFmla[ i ] ); - if( eOc == ocNoName ) - pExtString = getString( nFmla[ i ] ); - - switch( eType ) - { - case FT_NotImpl: - DoFunc( ocNoName, 0, pExtString ); - break; - - case FT_FuncFix0: - DoFunc( eOc, 0, NULL ); - break; - - case FT_FuncFix1: - DoFunc( eOc, 1, NULL ); - break; - - case FT_FuncFix2: - DoFunc( eOc, 2, NULL ); - break; - - case FT_FuncFix3: - DoFunc( eOc, 3, NULL ); - break; - - case FT_FuncFix4: - DoFunc( eOc, 4, NULL ); - break; - - case FT_FuncFix5: - DoFunc( eOc, 5, NULL ); - break; - - case FT_FuncFix6: - DoFunc( eOc, 6, NULL ); - break; - - case FT_DLL:{ - eOc = IndexToDLLId( nDLLArray[ nDLLCount ] ); - sal_uInt8 nPar = nArgArray[ nArgCount ]; - DoFunc( eOc, nPar, NULL ); - nDLLCount++; - nArgCount++; - } - break; - - case FT_Cref : // Single cell reference - maIn >> nNote >> nCol >> nPage >> nRelBits; - ReadSRD( aSRD, nPage, nCol, nRelBits ); - aStack << aPool.Store( aSRD ); - break; - - case FT_Range: // Block reference - maIn >> nNote >> nCol >> nPage >> nRelBits; - ReadSRD( aCRD.Ref1, nPage, nCol, nRelBits ); - maIn >> nCol >> nPage >> nRelBits; - ReadSRD( aCRD.Ref2, nPage, nCol, nRelBits ); - // Sheet name of second corner is not displayed if identical - if (aCRD.Ref1.IsFlag3D() && aCRD.Ref1.nTab == aCRD.Ref2.nTab && - aCRD.Ref1.IsTabRel() == aCRD.Ref2.IsTabRel()) - aCRD.Ref2.SetFlag3D( false); - aStack << aPool.Store( aCRD ); - break; - - case FT_FuncVar:{ // Sum of a sequence of numbers - sal_uInt8 nArgs; - i++; - nArgs = nFmla[ i ]; - DoFunc( eOc, nArgs, NULL ); - } - break; - - case FT_Op: // operators - aStack >> nPush; - aPool << aStack << eOc << nPush; - aPool >> aStack; - break; - - case FT_Braces: - aPool << ocOpen << aStack << ocClose; - aPool >> aStack; - break; - - case FT_ConstInt:{ - sal_uInt16 nVal; - nVal = nIntArray[ nIntCount ]; - aStack << aPool.Store( ( double ) nVal ); - nIntCount++; - } - break; - - case FT_ConstFloat:{ - double nVal; - nVal = nFloatArray[ nFloatCount ]; - aStack << aPool.Store( nVal ); - nFloatCount++; - } - break; - - case FT_ConstString:{ - String aLabel; - aLabel = sStringArray[ nStringCount ]; - aStack << aPool.Store( aLabel ); - nStringCount++; - } - break; - - case FT_Neg: - aPool << ocNegSub << aStack; - aPool >> aStack; - break; - - case FT_NOP: // indicates invalid opcode. - case FT_Return: // indicates end of formula - break; - } - i++; - } - pArray = aPool[ aStack.Get() ]; - return ConvOK; -} - -static const struct -{ - DefTokenId nToken; - FUNC_TYPE nType; -} aFuncMap[] = { - { ocPush, FT_ConstFloat }, - { ocPush, FT_Cref }, - { ocPush, FT_Range }, - { ocPush, FT_Return }, - { ocPush, FT_Braces }, - { ocPush, FT_ConstInt }, - { ocPush, FT_ConstString }, - { ocPush, FT_NOP }, - { ocNegSub, FT_Neg }, // 0x08 - { ocAdd, FT_Op }, - { ocSub, FT_Op }, - { ocMul, FT_Op }, - { ocDiv, FT_Op }, - { ocPow, FT_Op }, - { ocEqual, FT_Op }, - { ocNotEqual, FT_Op }, - { ocLessEqual, FT_Op }, // 0x10 - { ocGreaterEqual, FT_Op }, - { ocLess, FT_Op }, - { ocGreater, FT_Op }, - { ocAnd, FT_Op }, - { ocOr, FT_Op }, - { ocNot, FT_FuncFix1 }, - { ocPush, FT_NOP }, // Unary plus - { ocAddress, FT_FuncFix4 }, // Address of - { ocNoName, FT_NotImpl }, // Halt function - { ocNoName, FT_DLL }, // DLL function - { ocNoName, FT_NOP }, // Extended operands - { ocNoName, FT_NOP }, // Extended operands - { ocNoName, FT_NOP }, // Reserved - { ocNoName, FT_NOP }, // Reserved - { ocNotAvail, FT_FuncFix0 }, // NA - { ocNoName, FT_FuncFix0 }, // Error // 0x20 - { ocAbs, FT_FuncFix1 }, - { ocInt, FT_FuncFix1 }, - { ocSqrt, FT_FuncFix1 }, - { ocLog10, FT_FuncFix1 }, - { ocLn, FT_FuncFix1 }, - { ocPi, FT_FuncFix0 }, - { ocSin, FT_FuncFix1 }, - { ocCos, FT_FuncFix1 }, - { ocTan, FT_FuncFix1 }, - { ocArcTan2, FT_FuncFix2 }, - { ocArcTan, FT_FuncFix1 }, - { ocArcSin, FT_FuncFix1 }, - { ocArcCos, FT_FuncFix1 }, - { ocExp, FT_FuncFix1 }, - { ocMod, FT_FuncFix2 }, - { ocChose, FT_FuncVar }, // 0x30 - { ocIsNA, FT_FuncFix1 }, - { ocIsError, FT_FuncFix1 }, - { ocFalse, FT_FuncFix0 }, - { ocTrue, FT_FuncFix0 }, - { ocRandom, FT_FuncFix0 }, - { ocGetDate, FT_FuncFix3 }, - { ocGetActTime, FT_FuncFix0 }, - { ocNoName, FT_NotImpl }, // QPro Pmt - { ocNoName, FT_NotImpl }, // QPro Pv - { ocNoName, FT_NotImpl }, // QPro Fv - { ocIf, FT_FuncFix3 }, - { ocGetDay, FT_FuncFix1 }, - { ocGetMonth, FT_FuncFix1 }, - { ocGetYear, FT_FuncFix1 }, - { ocRound, FT_FuncFix2 }, - { ocGetTime, FT_FuncFix3 }, // 0x40 - { ocGetHour, FT_FuncFix1 }, - { ocGetMin, FT_FuncFix1 }, - { ocGetSec, FT_FuncFix1 }, - { ocIsValue, FT_FuncFix1 }, - { ocIsString, FT_FuncFix1 }, - { ocLen, FT_FuncFix1 }, - { ocValue, FT_FuncFix1 }, - { ocFixed, FT_FuncFix2 }, - { ocMid, FT_FuncFix3 }, - { ocChar, FT_FuncFix1 }, - { ocCode, FT_FuncFix1 }, - { ocFind, FT_FuncFix3 }, - { ocGetDateValue, FT_FuncFix1 }, - { ocGetTimeValue, FT_FuncFix1 }, - { ocNoName, FT_NotImpl }, - { ocSum, FT_FuncVar }, // 0x50 - { ocAverage, FT_FuncVar }, - { ocCount, FT_FuncVar }, - { ocMin, FT_FuncVar }, - { ocMax, FT_FuncVar }, - { ocVLookup, FT_FuncFix3 }, - { ocNPV, FT_FuncFix2 }, - { ocVar, FT_FuncVar }, - { ocNormDist, FT_FuncVar }, - { ocIRR, FT_FuncFix2 }, - { ocHLookup, FT_FuncFix3 }, - { ocDBSum, FT_FuncFix3 }, - { ocDBAverage, FT_FuncFix3 }, - { ocDBCount, FT_FuncFix3 }, - { ocDBMin, FT_FuncFix3 }, - { ocDBMax, FT_FuncFix3 }, - { ocDBVar, FT_FuncFix3 }, // 0x60 - { ocDBStdDev, FT_FuncFix3 }, - { ocNoName, FT_NotImpl }, - { ocColumns, FT_FuncFix1 }, - { ocRows, FT_FuncFix1 }, - { ocRept, FT_FuncFix2 }, - { ocUpper, FT_FuncFix1 }, - { ocLower, FT_FuncFix1 }, - { ocLeft, FT_FuncFix2 }, - { ocRight, FT_FuncFix2 }, - { ocReplace, FT_FuncFix4 }, - { ocPropper, FT_FuncFix1 }, - { ocCell, FT_FuncFix2 }, - { ocTrim, FT_FuncFix1 }, - { ocClean, FT_FuncFix1 }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, // 0x70 - { ocExact, FT_FuncFix2 }, - { ocNoName, FT_NotImpl }, // Call() - { ocIndirect, FT_FuncFix1 }, - { ocZGZ, FT_FuncFix3 }, // Interest - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, - { ocLIA, FT_FuncFix3 }, - { ocDIA, FT_FuncFix4 }, - { ocGDA, FT_FuncFix4 }, - { ocStDevP, FT_FuncVar }, - { ocVarP, FT_FuncVar }, - { ocDBStdDevP, FT_FuncVar }, - { ocDBVarP, FT_FuncVar }, - { ocBW, FT_FuncFix3 }, // QPro Pval - { ocRMZ, FT_FuncFix5 }, // QPro Paymt - { ocZW, FT_FuncFix3 }, // QPro Fval // 0x80 - { ocZZR, FT_FuncFix5 }, - { ocZins, FT_FuncFix5 }, - { ocZinsZ, FT_FuncFix4 }, - { ocKapz, FT_FuncFix6 }, - { ocSumProduct, FT_FuncFix2 }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, - { ocDeg, FT_FuncFix1 }, - { ocRad, FT_FuncFix1 }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, - { ocGetActDate, FT_FuncFix0 }, - { ocNPV, FT_FuncFix2 }, - { ocNoName, FT_NotImpl }, // 0x90 - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NOP }, - { ocNoName, FT_NOP }, // 147 - { ocNoName, FT_NOP }, // 148 - { ocNoName, FT_NOP }, // 149 - { ocNoName, FT_NOP }, // 150 - { ocNoName, FT_NOP }, // 151 - { ocNoName, FT_NOP }, // 152 - { ocNoName, FT_NOP }, // 153 - { ocTable, FT_FuncFix1 }, - { ocNoName, FT_NOP }, // 155 - opcodes do not represent any function. - { ocNoName, FT_NOP }, // 156 - { ocIndex, FT_FuncFix4 }, - { ocNoName, FT_NotImpl }, - { ocNoName, FT_NotImpl }, // Gives the property of the particular object - { ocNoName, FT_NotImpl }, // Dynamic Data Exchange Link // 0x100 - { ocNoName, FT_NotImpl } // gives properties of DOS menus -}; - -const int nIndexCount = SAL_N_ELEMENTS(aFuncMap); - -DefTokenId QProToSc::IndexToToken( sal_uInt16 nIndex ) -{ - if( nIndex < nIndexCount ) - return aFuncMap[ nIndex ].nToken; - return ocNoName; -} - -FUNC_TYPE QProToSc::IndexToType( sal_uInt8 nIndex ) -{ - if( nIndex < nIndexCount ) - return aFuncMap[ nIndex ].nType; - return FT_NotImpl; -} - -DefTokenId QProToSc::IndexToDLLId( sal_uInt16 nIndex ) -{ - DefTokenId eId; - switch( nIndex ) - { - case 0x0001: - eId = ocAveDev; - break; - - case 0x0024: - eId = ocGCD; - break; - - case 0x0025: - eId = ocLCM; - break; - - case 0x0027: - eId = ocCeil; - break; - - case 0x0028: - eId = ocEven; - break; - - case 0x0022: - eId = ocFact; - break; - - case 0x002a: - eId = ocFloor; - break; - - case 0x002d: - eId = ocOdd; - break; - - case 0x0006: - eId = ocBetaDist; - break; - - case 0x0008: - eId = ocBetaInv; - break; - - case 0x0010: - eId = ocCovar; - break; - - case 0x000b: - eId = ocChiInv; - break; - - case 0x003d: - eId = ocLaufz; - break; - - case 0x0019: - eId = ocFInv; - break; - - case 0x001a: - eId = ocFisher; - break; - - case 0x001b: - eId = ocFisherInv; - break; - - case 0x0030: - eId = ocMedian; - break; - - default: - eId = ocNoName; - break; - } - return eId; -} - -const sal_Char* QProToSc::getString( sal_uInt8 nIndex ) -{ - const sal_Char* pExtString = 0; - switch( nIndex ) - { - case 57: - pExtString = "Pv"; - break; - - case 58: - pExtString = "Fv"; - break; - - case 98: - pExtString = "Index2D"; - break; - - case 111: - pExtString = "S"; - break; - - case 112: - pExtString = "N"; - break; - - case 114: - pExtString = "CALL"; - break; - - case 117: - pExtString = "TERM"; - break; - - case 118: - pExtString = "CTERM"; - break; - - case 134: - pExtString = "MEMAVAIL"; - break; - - case 135: - pExtString = "MEMEMSAVAIL"; - break; - - case 136: - pExtString = "FILEEXISTS"; - break; - - case 137: - pExtString = "CURVALUE"; - break; - - case 140: - pExtString = "HEX"; - break; - - case 141: - pExtString = "NUM"; - break; - - case 145: - pExtString = "VERSION"; - break; - - case 157: - pExtString = "INDEX3D"; - break; - - case 158: - pExtString = "CELLINDEX3D"; - break; - - case 159: - pExtString = "PROPERTY"; - break; - - case 160: - pExtString = "DDE"; - break; - - case 161: - pExtString = "COMMAND"; - break; - - default: - pExtString = NULL; - break; - } - return pExtString; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/qpro/qprostyle.cxx b/sc/source/filter/qpro/qprostyle.cxx deleted file mode 100644 index 472efd644..000000000 --- a/sc/source/filter/qpro/qprostyle.cxx +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sc.hxx" - - -#include <sal/config.h> -#include <stdio.h> -#include <sfx2/docfile.hxx> - -#include "qproform.hxx" -#include "qpro.hxx" -#include "qprostyle.hxx" - -#include <tools/color.hxx> -#include <scitems.hxx> -#include <svx/algitem.hxx> -#include <editeng/udlnitem.hxx> -#include <editeng/wghtitem.hxx> -#include <editeng/postitem.hxx> -#include <editeng/crsditem.hxx> -#include <editeng/fhgtitem.hxx> -#include <editeng/fontitem.hxx> -#include <editeng/justifyitem.hxx> -#include <map> - -#include "global.hxx" -#include "scerrors.hxx" -#include "docpool.hxx" -#include "patattr.hxx" -#include "filter.hxx" -#include "document.hxx" -#include "cell.hxx" - -ScQProStyle::ScQProStyle() -{ - rtl_fillMemory (maAlign, sizeof (maAlign), 0); - rtl_fillMemory (maFont, sizeof (maFont), 0); - rtl_fillMemory (maFontRecord, sizeof (maFontRecord), 0); - rtl_fillMemory (maFontHeight, sizeof (maFontHeight), 0); -} - -void ScQProStyle::SetFormat( ScDocument *pDoc, sal_uInt8 nCol, sal_uInt16 nRow, SCTAB nTab, sal_uInt16 nStyle ) -{ - if (nStyle >= maxsize) - return; - - ScPatternAttr aPattern(pDoc->GetPool()); - SfxItemSet& rItemSet = aPattern.GetItemSet(); - - sal_uInt8 nTmp = maAlign[ nStyle ]; - sal_uInt8 nHor = ( nTmp & 0x07 ); - sal_uInt8 nVer = ( nTmp & 0x18 ); - sal_uInt8 nOrient = ( nTmp & 0x60 ); - - // Horizontal Alignment - SvxCellHorJustify eJustify = SVX_HOR_JUSTIFY_STANDARD; - switch( nHor ) - { - case 0x00: - eJustify = SVX_HOR_JUSTIFY_STANDARD; - break; - - case 0x01: - eJustify = SVX_HOR_JUSTIFY_LEFT; - break; - - case 0x02: - eJustify = SVX_HOR_JUSTIFY_CENTER; - break; - - case 0x03: - eJustify = SVX_HOR_JUSTIFY_RIGHT; - break; - - case 0x04: - eJustify = SVX_HOR_JUSTIFY_BLOCK; - break; - } - rItemSet.Put( SvxHorJustifyItem( eJustify, ATTR_HOR_JUSTIFY ) ); - - // Vertical Alignment - SvxCellVerJustify eVerJustify = SVX_VER_JUSTIFY_STANDARD; - switch( nVer ) - { - case 0x00: - eVerJustify = SVX_VER_JUSTIFY_BOTTOM; - break; - - case 0x08: - eVerJustify = SVX_VER_JUSTIFY_CENTER; - break; - - case 0x10: - eVerJustify = SVX_VER_JUSTIFY_TOP; - break; - } - - rItemSet.Put(SvxVerJustifyItem( eVerJustify, ATTR_VER_JUSTIFY ) ); - - // Orientation - SvxCellOrientation eOrient = SVX_ORIENTATION_STANDARD; - switch( nOrient ) - { - case 0x20: - eOrient = SVX_ORIENTATION_TOPBOTTOM; - break; - - } - rItemSet.Put( SvxOrientationItem( eOrient, 0) ); - - // Wrap cell contents - if( nTmp & 0x80 ) - { - SfxBoolItem aWrapItem( ATTR_LINEBREAK ); - aWrapItem.SetValue( sal_True ); - rItemSet.Put( aWrapItem ); - } - - // Font Attributes - sal_uInt16 nTmpFnt = maFontRecord[ maFont[ nStyle ] ]; - sal_Bool bIsBold, bIsItalic, bIsUnderLine; - - bIsBold = ( nTmpFnt & 0x0001 ) != 0; - bIsItalic = ( nTmpFnt & 0x0002 ) != 0; - bIsUnderLine = ( nTmpFnt & 0x0004 ) != 0; - //(nTmpFnt & 0x0020 ) for StrikeThrough - - if( bIsBold ) - rItemSet.Put( SvxWeightItem( WEIGHT_BOLD,ATTR_FONT_WEIGHT) ); - if( bIsItalic ) - rItemSet.Put( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); - if( bIsUnderLine ) - rItemSet.Put( SvxUnderlineItem( UNDERLINE_SINGLE, ATTR_FONT_UNDERLINE ) ); - - if (maFontHeight[ maFont [ nStyle ] ]) - rItemSet.Put( SvxFontHeightItem( (sal_uLong) (20 * maFontHeight[ maFont[ nStyle ] ] ), 100, ATTR_FONT_HEIGHT ) ); - - String fntName = maFontType[ maFont[ nStyle ] ]; - rItemSet.Put( SvxFontItem( FAMILY_SYSTEM, fntName, EMPTY_STRING, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ) ); - - pDoc->ApplyPattern( nCol, nRow, nTab, aPattern ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |