xref: /AOO41X/main/sc/source/core/inc/refupdat.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
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