diff options
Diffstat (limited to 'binfilter/bf_sc/source/core/tool/sc_rangeutl.cxx')
-rw-r--r-- | binfilter/bf_sc/source/core/tool/sc_rangeutl.cxx | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/binfilter/bf_sc/source/core/tool/sc_rangeutl.cxx b/binfilter/bf_sc/source/core/tool/sc_rangeutl.cxx new file mode 100644 index 000000000000..cdd96ca1dd25 --- /dev/null +++ b/binfilter/bf_sc/source/core/tool/sc_rangeutl.cxx @@ -0,0 +1,243 @@ +/* -*- 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. + * + ************************************************************************/ + +#ifdef _MSC_VER +#pragma hdrstop +#endif + +// INCLUDE --------------------------------------------------------------- + +#include <tools/debug.hxx> + +#include "rangeutl.hxx" +#include "document.hxx" +#include "dbcolect.hxx" +#include "rangenam.hxx" +#include "globstr.hrc" +namespace binfilter { + + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + +/*N*/ BOOL ScRangeUtil::IsAbsArea( const String& rAreaStr, +/*N*/ ScDocument* pDoc, +/*N*/ USHORT nTab, +/*N*/ String* pCompleteStr, +/*N*/ ScRefTripel* pStartPos, +/*N*/ ScRefTripel* pEndPos ) const +/*N*/ { +/*N*/ BOOL bIsAbsArea = FALSE; +/*N*/ ScRefTripel startPos; +/*N*/ ScRefTripel endPos; +/*N*/ +/*N*/ bIsAbsArea = ConvertDoubleRef( pDoc, rAreaStr, nTab, startPos, endPos ); +/*N*/ +/*N*/ if ( bIsAbsArea ) +/*N*/ { +/*N*/ startPos.SetRelCol( FALSE ); +/*N*/ startPos.SetRelRow( FALSE ); +/*N*/ startPos.SetRelTab( FALSE ); +/*N*/ endPos .SetRelCol( FALSE ); +/*N*/ endPos .SetRelRow( FALSE ); +/*N*/ endPos .SetRelTab( FALSE ); +/*N*/ +/*N*/ if ( pCompleteStr ) +/*N*/ { +/*N*/ *pCompleteStr = startPos.GetRefString( pDoc, MAXTAB+1 ); +/*N*/ *pCompleteStr += ':'; +/*N*/ *pCompleteStr += endPos .GetRefString( pDoc, nTab ); +/*N*/ } +/*N*/ +/*N*/ if ( pStartPos && pEndPos ) +/*N*/ { +/*N*/ *pStartPos = startPos; +/*N*/ *pEndPos = endPos; +/*N*/ } +/*N*/ } +/*N*/ +/*N*/ return bIsAbsArea; +/*N*/ } + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + +/*N*/ BOOL ScRangeUtil::MakeRangeFromName ( +/*N*/ const String& rName, +/*N*/ ScDocument* pDoc, +/*N*/ USHORT nCurTab, +/*N*/ ScRange& rRange, +/*N*/ RutlNameScope eScope +/*N*/ ) const +/*N*/ { +/*N*/ BOOL bResult=FALSE; +/*N*/ ScRangeUtil aRangeUtil; +/*N*/ USHORT nTab, nColStart, nColEnd, nRowStart, nRowEnd; +/*N*/ +/*N*/ if( eScope==RUTL_NAMES ) +/*N*/ { +/*N*/ ScRangeName& rRangeNames = *(pDoc->GetRangeName()); +/*N*/ USHORT nAt = 0; +/*N*/ +/*N*/ if ( rRangeNames.SearchName( rName, nAt ) ) +/*N*/ { +/*N*/ ScRangeData* pData = rRangeNames[nAt]; +/*N*/ String aStrArea; +/*N*/ ScRefTripel aStartPos; +/*N*/ ScRefTripel aEndPos; +/*N*/ +/*N*/ pData->GetSymbol( aStrArea ); +/*N*/ +/*N*/ if ( IsAbsArea( aStrArea, pDoc, nCurTab, +/*N*/ NULL, &aStartPos, &aEndPos ) ) +/*N*/ { +/*N*/ nTab = aStartPos.GetTab(); +/*N*/ nColStart = aStartPos.GetCol(); +/*N*/ nRowStart = aStartPos.GetRow(); +/*N*/ nColEnd = aEndPos.GetCol(); +/*N*/ nRowEnd = aEndPos.GetRow(); +/*N*/ bResult = TRUE; +/*N*/ } +/*N*/ else +/*N*/ { +/*?*/ DBG_BF_ASSERT(0, "STRIP"); //STRIP001 CutPosString( aStrArea, aStrArea ); +/*N*/ } +/*N*/ } +/*N*/ } +/*N*/ else if( eScope==RUTL_DBASE ) +/*N*/ { +/*N*/ ScDBCollection& rDbNames = *(pDoc->GetDBCollection()); +/*N*/ USHORT nAt = 0; +/*N*/ +/*N*/ if ( rDbNames.SearchName( rName, nAt ) ) +/*N*/ { +/*N*/ ScDBData* pData = rDbNames[nAt]; +/*N*/ +/*N*/ pData->GetArea( nTab, nColStart, nRowStart, +/*N*/ nColEnd, nRowEnd ); +/*N*/ bResult = TRUE; +/*N*/ } +/*N*/ } +/*N*/ else +/*N*/ { +/*N*/ DBG_ERROR( "ScRangeUtil::MakeRangeFromName" ); +/*N*/ } +/*N*/ +/*N*/ if( bResult ) +/*N*/ { +/*N*/ rRange = ScRange( nColStart, nRowStart, nTab, nColEnd, nRowEnd, nTab ); +/*N*/ } +/*N*/ +/*N*/ return bResult; +/*N*/ } + +//======================================================================== + +/*N*/ ScArea::ScArea( USHORT tab, +/*N*/ USHORT colStart, USHORT rowStart, +/*N*/ USHORT colEnd, USHORT rowEnd ) : +/*N*/ nTab ( tab ), +/*N*/ nColStart( colStart ), nRowStart( rowStart ), +/*N*/ nColEnd ( colEnd ), nRowEnd ( rowEnd ) +/*N*/ { +/*N*/ } + +//------------------------------------------------------------------------ + +/*N*/ ScArea::ScArea( const ScArea& r ) : +/*N*/ nTab ( r.nTab ), +/*N*/ nColStart( r.nColStart ), nRowStart( r.nRowStart ), +/*N*/ nColEnd ( r.nColEnd ), nRowEnd ( r.nRowEnd ) +/*N*/ { +/*N*/ } + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + +/*N*/ ScArea& ScArea::operator=( const ScArea& r ) +/*N*/ { +/*N*/ nTab = r.nTab; +/*N*/ nColStart = r.nColStart; +/*N*/ nRowStart = r.nRowStart; +/*N*/ nColEnd = r.nColEnd; +/*N*/ nRowEnd = r.nRowEnd; +/*N*/ return *this; +/*N*/ } + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + +/*N*/ SvStream& operator>> ( SvStream& rStream, ScArea& rArea ) +/*N*/ { +/*N*/ rStream >> rArea.nTab; +/*N*/ rStream >> rArea.nColStart; +/*N*/ rStream >> rArea.nRowStart; +/*N*/ rStream >> rArea.nColEnd; +/*N*/ rStream >> rArea.nRowEnd; +/*N*/ return rStream; +/*N*/ } + +//------------------------------------------------------------------------ + +/*N*/ SvStream& operator<< ( SvStream& rStream, const ScArea& rArea ) +/*N*/ { +/*N*/ rStream << rArea.nTab; +/*N*/ rStream << rArea.nColStart; +/*N*/ rStream << rArea.nRowStart; +/*N*/ rStream << rArea.nColEnd; +/*N*/ rStream << rArea.nRowEnd; +/*N*/ return rStream; +/*N*/ } + +//------------------------------------------------------------------------ + + +//------------------------------------------------------------------------ + + + + + + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |