Coverage Report

Created: 2025-12-31 10:39

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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: */