/src/libreoffice/sc/inc/sheetdata.hxx
Line | Count | Source |
1 | | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | | /* |
3 | | * This file is part of the LibreOffice project. |
4 | | * |
5 | | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | | * |
9 | | * This file incorporates work covered by the following license notice: |
10 | | * |
11 | | * Licensed to the Apache Software Foundation (ASF) under one or more |
12 | | * contributor license agreements. See the NOTICE file distributed |
13 | | * with this work for additional information regarding copyright |
14 | | * ownership. The ASF licenses this file to you under the Apache |
15 | | * License, Version 2.0 (the "License"); you may not use this file |
16 | | * except in compliance with the License. You may obtain a copy of |
17 | | * the License at http://www.apache.org/licenses/LICENSE-2.0 . |
18 | | */ |
19 | | |
20 | | #pragma once |
21 | | |
22 | | #include <map> |
23 | | #include <unordered_set> |
24 | | #include <utility> |
25 | | #include <vector> |
26 | | #include <editeng/ESelection.hxx> |
27 | | |
28 | | #include "address.hxx" |
29 | | |
30 | | class SvXMLNamespaceMap; |
31 | | enum class XmlStyleFamily; |
32 | | |
33 | | struct ScStreamEntry |
34 | | { |
35 | | sal_Int64 mnStartOffset; |
36 | | sal_Int64 mnEndOffset; |
37 | | |
38 | | ScStreamEntry() : |
39 | 0 | mnStartOffset(-1), |
40 | 0 | mnEndOffset(-1) |
41 | 0 | { |
42 | 0 | } |
43 | | |
44 | | ScStreamEntry( sal_Int64 nStart, sal_Int64 nEnd ) : |
45 | 0 | mnStartOffset(nStart), |
46 | 0 | mnEndOffset(nEnd) |
47 | 0 | { |
48 | 0 | } |
49 | | }; |
50 | | |
51 | | struct ScCellStyleEntry |
52 | | { |
53 | | OUString maName; |
54 | | ScAddress maCellPos; |
55 | | |
56 | | ScCellStyleEntry( OUString aName, const ScAddress& rPos ) : |
57 | 4.55k | maName(std::move(aName)), |
58 | 4.55k | maCellPos(rPos) |
59 | 4.55k | { |
60 | 4.55k | } |
61 | | }; |
62 | | |
63 | | struct ScNoteStyleEntry |
64 | | { |
65 | | OUString maStyleName; |
66 | | OUString maTextStyle; |
67 | | ScAddress maCellPos; |
68 | | |
69 | | ScNoteStyleEntry( OUString aStyle, OUString aText, const ScAddress& rPos ) : |
70 | 47.7k | maStyleName(std::move(aStyle)), |
71 | 47.7k | maTextStyle(std::move(aText)), |
72 | 47.7k | maCellPos(rPos) |
73 | 47.7k | { |
74 | 47.7k | } |
75 | | }; |
76 | | |
77 | | struct ScTextStyleEntry |
78 | | { |
79 | | OUString maName; |
80 | | ScAddress maCellPos; |
81 | | ESelection maSelection; |
82 | | |
83 | | ScTextStyleEntry( OUString aName, const ScAddress& rPos, const ESelection& rSel ) : |
84 | 0 | maName(std::move(aName)), |
85 | 0 | maCellPos(rPos), |
86 | 0 | maSelection(rSel) |
87 | 0 | { |
88 | 0 | } |
89 | | }; |
90 | | |
91 | | struct ScLoadedNamespaceEntry |
92 | | { |
93 | | OUString maPrefix; |
94 | | OUString maName; |
95 | | sal_uInt16 mnKey; |
96 | | |
97 | | ScLoadedNamespaceEntry( OUString aPrefix, OUString aName, sal_uInt16 nKey ) : |
98 | 135k | maPrefix(std::move(aPrefix)), |
99 | 135k | maName(std::move(aName)), |
100 | 135k | mnKey(nKey) |
101 | 135k | { |
102 | 135k | } |
103 | | }; |
104 | | |
105 | | class ScSheetSaveData |
106 | | { |
107 | | std::unordered_set<OUString> maInitialPrefixes; |
108 | | std::vector<ScLoadedNamespaceEntry> maLoadedNamespaces; |
109 | | |
110 | | std::vector<ScCellStyleEntry> maCellStyles; |
111 | | std::vector<ScCellStyleEntry> maColumnStyles; |
112 | | std::vector<ScCellStyleEntry> maRowStyles; |
113 | | std::vector<ScCellStyleEntry> maTableStyles; |
114 | | std::vector<ScNoteStyleEntry> maNoteStyles; |
115 | | std::vector<ScTextStyleEntry> maNoteParaStyles; |
116 | | std::vector<ScTextStyleEntry> maNoteTextStyles; |
117 | | std::vector<ScTextStyleEntry> maTextStyles; |
118 | | std::vector<bool> maBlocked; |
119 | | std::vector<ScStreamEntry> maStreamEntries; |
120 | | std::vector<ScStreamEntry> maSaveEntries; |
121 | | SCTAB mnStartTab; |
122 | | sal_Int64 mnStartOffset; |
123 | | |
124 | | ScNoteStyleEntry maPreviousNote; |
125 | | |
126 | | bool mbInSupportedSave; |
127 | | |
128 | | public: |
129 | | ScSheetSaveData(); |
130 | | ~ScSheetSaveData(); |
131 | | |
132 | | void AddCellStyle( const OUString& rName, const ScAddress& rCellPos ); |
133 | | void AddColumnStyle( const OUString& rName, const ScAddress& rCellPos ); |
134 | | void AddRowStyle( const OUString& rName, const ScAddress& rCellPos ); |
135 | | void AddTableStyle( const OUString& rName, const ScAddress& rCellPos ); |
136 | | |
137 | | void HandleNoteStyles( const OUString& rStyleName, const OUString& rTextName, const ScAddress& rCellPos ); |
138 | | void AddNoteContentStyle( XmlStyleFamily nFamily, const OUString& rName, const ScAddress& rCellPos, const ESelection& rSelection ); |
139 | | |
140 | | void AddTextStyle( const OUString& rName, const ScAddress& rCellPos, const ESelection& rSelection ); |
141 | | |
142 | | void BlockSheet( SCTAB nTab ); |
143 | | bool IsSheetBlocked( SCTAB nTab ) const; |
144 | | |
145 | | void AddStreamPos( SCTAB nTab, sal_Int64 nStartOffset, sal_Int64 nEndOffset ); |
146 | | void GetStreamPos( SCTAB nTab, sal_Int64& rStartOffset, sal_Int64& rEndOffset ) const; |
147 | | bool HasStreamPos( SCTAB nTab ) const; |
148 | | |
149 | | void StartStreamPos( SCTAB nTab, sal_Int64 nStartOffset ); |
150 | | void EndStreamPos( sal_Int64 nEndOffset ); |
151 | | |
152 | 115k | bool HasStartPos() const { return mnStartTab >= 0; } |
153 | | |
154 | | void ResetSaveEntries(); |
155 | | void AddSavePos( SCTAB nTab, sal_Int64 nStartOffset, sal_Int64 nEndOffset ); |
156 | | void UseSaveEntries(); |
157 | | |
158 | | void StoreInitialNamespaces( const SvXMLNamespaceMap& rNamespaces ); |
159 | | void StoreLoadedNamespaces( const SvXMLNamespaceMap& rNamespaces ); |
160 | | bool AddLoadedNamespaces( SvXMLNamespaceMap& rNamespaces ) const; |
161 | | |
162 | 0 | const std::vector<ScCellStyleEntry>& GetCellStyles() const { return maCellStyles; } |
163 | 0 | const std::vector<ScCellStyleEntry>& GetColumnStyles() const { return maColumnStyles; } |
164 | 0 | const std::vector<ScCellStyleEntry>& GetRowStyles() const { return maRowStyles; } |
165 | 0 | const std::vector<ScCellStyleEntry>& GetTableStyles() const { return maTableStyles; } |
166 | 0 | const std::vector<ScNoteStyleEntry>& GetNoteStyles() const { return maNoteStyles; } |
167 | 0 | const std::vector<ScTextStyleEntry>& GetNoteParaStyles() const { return maNoteParaStyles; } |
168 | 0 | const std::vector<ScTextStyleEntry>& GetNoteTextStyles() const { return maNoteTextStyles; } |
169 | 0 | const std::vector<ScTextStyleEntry>& GetTextStyles() const { return maTextStyles; } |
170 | | |
171 | 0 | bool IsInSupportedSave() const { return mbInSupportedSave;} |
172 | | void SetInSupportedSave( bool bSet ); |
173 | | }; |
174 | | |
175 | | struct ScFormatSaveData |
176 | | { |
177 | | std::map<sal_uInt64, OUString> maIDToName; |
178 | | }; |
179 | | |
180 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |