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