Coverage Report

Created: 2026-10-14 09:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/vcl/EnumContext.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
#ifndef INCLUDED_VCL_ENUMCONTEXT_HXX
20
#define INCLUDED_VCL_ENUMCONTEXT_HXX
21
22
#include <vcl/dllapi.h>
23
24
#include <rtl/ustring.hxx>
25
26
27
namespace vcl {
28
29
class VCL_DLLPUBLIC EnumContext
30
{
31
public:
32
    enum class Application
33
    {
34
        Writer,
35
        WriterGlobal,
36
        WriterWeb,
37
        WriterXML,
38
        WriterForm,
39
        WriterReport,
40
        Calc,
41
        Chart,
42
        Draw,
43
        Impress,
44
        Formula,
45
        Base,
46
47
        // For your convenience to avoid duplicate code in the common
48
        // case that Draw and Impress use identical context configurations.
49
        DrawImpress,
50
51
        // Also for your convenience for the different variants of Writer documents.
52
        WriterVariants,
53
54
        // Used only by deck or panel descriptors.  Matches any
55
        // application.
56
        Any,
57
58
        // Use this only in special circumstances.  One might be the
59
        // wish to disable a deck or panel during debugging.
60
        NONE,
61
62
        LAST = Application::NONE
63
    };
64
    enum class Context
65
    {
66
        ThreeDObject,
67
        Annotation,
68
        Auditing,
69
        Axis,
70
        Cell,
71
        Chart,
72
        ChartLabel,
73
        ChartLegend,
74
        ChartTitle,
75
        ChartElements,
76
        Draw,
77
        DrawFontwork,
78
        DrawLine,
79
        DrawPage,
80
        DrawText,
81
        EditCell,
82
        ErrorBar,
83
        Form,
84
        Frame,
85
        Graphic,
86
        Grid,
87
        HandoutPage,
88
        MasterPage,
89
        Math,
90
        Media,
91
        MultiObject,
92
        NotesPage,
93
        OLE,
94
        OutlineText,
95
        Pivot,
96
        Printpreview,
97
        Series,
98
        SlidesorterPage,
99
        Table,
100
        Text,
101
        TextObject,
102
        Trendline,
103
        Sparkline,
104
105
        // Default context of an application.  Do we need this?
106
        Default,
107
108
        // Used only by deck or panel descriptors.  Matches any context.
109
        Any,
110
111
        // Special context name that is only used when a deck would
112
        // otherwise be empty.
113
        Empty,
114
115
        Unknown,
116
117
        LAST = Unknown
118
    };
119
120
    EnumContext();
121
    EnumContext (
122
        const Application eApplication,
123
        const Context eContext);
124
125
    /** This variant of the GetCombinedContext() method treats some
126
        application names as identical to each other.  Replacements
127
        made are:
128
            Draw or Impress     -> DrawImpress
129
            Writer or WriterWeb -> WriterAndWeb
130
        Use the Application::DrawImpress or Application::WriterAndWeb values in the CombinedEnumContext macro.
131
    */
132
    sal_Int32 GetCombinedContext_DI() const;
133
134
    Application GetApplication() const;
135
0
    Context GetContext() const {return meContext;}
136
137
    SAL_DLLPRIVATE Application GetApplication_DI() const;
138
139
    bool operator == (const EnumContext& rOther) const;
140
    bool operator != (const EnumContext& rOther) const;
141
142
    /** When two contexts are matched against each other, then
143
        application or context name may have the wildcard value 'any'.
144
        In order to prefer matches without wildcards over matches with
145
        wildcards we introduce an integer evaluation for matches.
146
    */
147
    const static sal_Int32 NoMatch;
148
149
    static Application GetApplicationEnum (const OUString& rsApplicationName);
150
    static const OUString& GetApplicationName (const Application eApplication);
151
152
    static Context GetContextEnum (const OUString& rsContextName);
153
    static const OUString& GetContextName (const Context eContext);
154
155
private:
156
    Application meApplication;
157
    Context meContext;
158
159
    SAL_DLLPRIVATE static void ProvideApplicationContainers();
160
    SAL_DLLPRIVATE static void ProvideContextContainers();
161
    SAL_DLLPRIVATE static void AddEntry (const OUString& rsName, const Application eApplication);
162
    SAL_DLLPRIVATE static void AddEntry (const OUString& rsName, const Context eContext);
163
};
164
165
166
0
#define CombinedEnumContext(a,e) ((static_cast<sal_uInt16>(::vcl::EnumContext::a)<<16)\
167
0
        | static_cast<sal_uInt16>(::vcl::EnumContext::e))
168
169
} // end of namespace vcl
170
171
#endif
172
173
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */