xref: /aoo41x/main/sc/source/core/inc/refupdat.hxx (revision 38d50f7b)
1*38d50f7bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*38d50f7bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*38d50f7bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*38d50f7bSAndrew Rist  * distributed with this work for additional information
6*38d50f7bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*38d50f7bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*38d50f7bSAndrew Rist  * "License"); you may not use this file except in compliance
9*38d50f7bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*38d50f7bSAndrew Rist  *
11*38d50f7bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*38d50f7bSAndrew Rist  *
13*38d50f7bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*38d50f7bSAndrew Rist  * software distributed under the License is distributed on an
15*38d50f7bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*38d50f7bSAndrew Rist  * KIND, either express or implied.  See the License for the
17*38d50f7bSAndrew Rist  * specific language governing permissions and limitations
18*38d50f7bSAndrew Rist  * under the License.
19*38d50f7bSAndrew Rist  *
20*38d50f7bSAndrew Rist  *************************************************************/
21*38d50f7bSAndrew Rist 
22*38d50f7bSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef SC_REFUPDAT_HXX
25cdf0e10cSrcweir #define SC_REFUPDAT_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "global.hxx"
28cdf0e10cSrcweir 
29cdf0e10cSrcweir class ScDocument;
30cdf0e10cSrcweir class ScBigRange;
31cdf0e10cSrcweir struct ScComplexRefData;
32cdf0e10cSrcweir class ScAddress;
33cdf0e10cSrcweir class ScRange;
34cdf0e10cSrcweir 
35cdf0e10cSrcweir enum ScRefUpdateRes {
36cdf0e10cSrcweir 	UR_NOTHING	= 0,		// keine Anpassungen
37cdf0e10cSrcweir 	UR_UPDATED	= 1,		// Anpassungen erfolgt
38cdf0e10cSrcweir 	UR_INVALID	= 2			// Referenz wurde ungueltig
39cdf0e10cSrcweir };
40cdf0e10cSrcweir 
41cdf0e10cSrcweir class ScRefUpdate
42cdf0e10cSrcweir {
43cdf0e10cSrcweir public:
44cdf0e10cSrcweir 
45cdf0e10cSrcweir     /// What type of reference is to be updated.
46cdf0e10cSrcweir     enum WhatType
47cdf0e10cSrcweir     {
48cdf0e10cSrcweir         ALL,        /// all references
49cdf0e10cSrcweir         ABSOLUTE    /// only absolute references
50cdf0e10cSrcweir     };
51cdf0e10cSrcweir 
52cdf0e10cSrcweir 	static ScRefUpdateRes Update
53cdf0e10cSrcweir 		( ScDocument* pDoc, UpdateRefMode eUpdateRefMode,
54cdf0e10cSrcweir 							SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
55cdf0e10cSrcweir 							SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
56cdf0e10cSrcweir 							SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
57cdf0e10cSrcweir 							SCCOL& theCol1, SCROW& theRow1, SCTAB& theTab1,
58cdf0e10cSrcweir 							SCCOL& theCol2, SCROW& theRow2, SCTAB& theTab2 );
59cdf0e10cSrcweir 
60cdf0e10cSrcweir 	static ScRefUpdateRes Update( UpdateRefMode eUpdateRefMode,
61cdf0e10cSrcweir 								const ScBigRange& rWhere,
62cdf0e10cSrcweir 								sal_Int32 nDx, sal_Int32 nDy, sal_Int32 nDz,
63cdf0e10cSrcweir 								ScBigRange& rWhat );
64cdf0e10cSrcweir 
65cdf0e10cSrcweir     /// Before calling, the absolute references must be up-to-date!
66cdf0e10cSrcweir 	static ScRefUpdateRes Update( ScDocument* pDoc,
67cdf0e10cSrcweir 								  UpdateRefMode eUpdateRefMode,
68cdf0e10cSrcweir 								  const ScAddress& rPos, const ScRange& rRange,
69cdf0e10cSrcweir 								  SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
70cdf0e10cSrcweir 								  ScComplexRefData& rRef, WhatType eWhat = ALL );
71cdf0e10cSrcweir 
72cdf0e10cSrcweir     /// Before calling, the absolute references must be up-to-date!
73cdf0e10cSrcweir 	static ScRefUpdateRes Move( ScDocument* pDoc, const ScAddress& rPos,
74cdf0e10cSrcweir 								SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
75cdf0e10cSrcweir 								ScComplexRefData& rRef, sal_Bool bWrap, sal_Bool bAbsolute );
76cdf0e10cSrcweir 
77cdf0e10cSrcweir     static void MoveRelWrap( ScDocument* pDoc, const ScAddress& rPos,
78cdf0e10cSrcweir                              SCCOL nMaxCol, SCROW nMaxRow, ScComplexRefData& rRef );
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     /// Before calling, the absolute references must be up-to-date!
81cdf0e10cSrcweir 	static ScRefUpdateRes UpdateTranspose( ScDocument* pDoc,
82cdf0e10cSrcweir 								const ScRange& rSource, const ScAddress& rDest,
83cdf0e10cSrcweir 								ScComplexRefData& rRef );
84cdf0e10cSrcweir 
85cdf0e10cSrcweir 	static void DoTranspose( SCsCOL& rCol, SCsROW& rRow, SCsTAB& rTab, ScDocument* pDoc,
86cdf0e10cSrcweir 								const ScRange& rSource, const ScAddress& rDest );
87cdf0e10cSrcweir 
88cdf0e10cSrcweir     /// Before calling, the absolute references must be up-to-date!
89cdf0e10cSrcweir 	static ScRefUpdateRes UpdateGrow(
90cdf0e10cSrcweir 								const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY,
91cdf0e10cSrcweir 								ScComplexRefData& rRef );
92cdf0e10cSrcweir };
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 
95cdf0e10cSrcweir #endif
96cdf0e10cSrcweir 
97