1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_WRITERFILTER_SOURCE_DMAPPER_STYLESHEETTABLE_HXX
#define INCLUDED_WRITERFILTER_SOURCE_DMAPPER_STYLESHEETTABLE_HXX
#include <memory>
#include "TblStylePrHandler.hxx"
#include "DomainMapper.hxx"
#include <com/sun/star/beans/PropertyValues.hpp>
#include "PropertyMap.hxx"
#include "FontTable.hxx"
#include "LoggedResources.hxx"
namespace com::sun::star::text { class XTextDocument; }
namespace writerfilter {
namespace dmapper
{
enum StyleType
{
STYLE_TYPE_UNKNOWN,
STYLE_TYPE_PARA,
STYLE_TYPE_CHAR,
STYLE_TYPE_TABLE,
STYLE_TYPE_LIST
};
class StyleSheetTable;
typedef tools::SvRef<StyleSheetTable> StyleSheetTablePtr;
struct StyleSheetTable_Impl;
class StyleSheetEntry : public virtual SvRefBase
{
std::vector<css::beans::PropertyValue> m_aInteropGrabBag;
public:
OUString sStyleIdentifierD; // WW8 name
bool bIsDefaultStyle;
bool bInvalidHeight;
bool bHasUPE; //universal property expansion
StyleType nStyleTypeCode; //sgc
OUString sBaseStyleIdentifier;
OUString sNextStyleIdentifier;
OUString sStyleName;
const PropertyMapPtr pProperties; ///< always StyleSheetPropertyMap
OUString sConvertedStyleName;
std::vector<css::beans::PropertyValue> aLatentStyles; ///< Attributes of latentStyles
std::vector<css::beans::PropertyValue> aLsdExceptions; ///< List of lsdException attribute lists
bool bAutoRedefine; ///< Writer calls this auto-update.
void AppendInteropGrabBag(const css::beans::PropertyValue& rValue);
css::beans::PropertyValue GetInteropGrabBag(); ///< Used for table styles, has a name.
css::beans::PropertyValues GetInteropGrabBagSeq() const; ///< Used for existing styles, just a list of properties.
// Get all properties, merged with the all of the parent's properties
PropertyMapPtr GetMergedInheritedProperties(const StyleSheetTablePtr& pStyleSheetTable);
StyleSheetEntry();
virtual ~StyleSheetEntry() override;
};
typedef tools::SvRef<StyleSheetEntry> StyleSheetEntryPtr;
class DomainMapper;
class StyleSheetTable :
public LoggedProperties,
public LoggedTable
{
std::unique_ptr<StyleSheetTable_Impl> m_pImpl;
public:
StyleSheetTable(DomainMapper& rDMapper, css::uno::Reference<css::text::XTextDocument> const& xTextDocument, bool bIsNewDoc);
virtual ~StyleSheetTable() override;
void ApplyNumberingStyleNameToParaStyles();
void ApplyStyleSheets( const FontTablePtr& rFontTable );
StyleSheetEntryPtr FindStyleSheetByISTD(const OUString& sIndex);
StyleSheetEntryPtr FindStyleSheetByConvertedStyleName(const OUString& rIndex);
StyleSheetEntryPtr FindDefaultParaStyle();
OUString ConvertStyleName( const OUString& rWWName, bool bExtendedSearch = false );
OUString getOrCreateCharStyle( PropertyValueVector_t& rCharProperties, bool bAlwaysCreate );
void SetDefaultParaProps(PropertyIds eId, const css::uno::Any& rAny);
PropertyMapPtr const & GetDefaultParaProps() const;
/// Returns the default character properties.
PropertyMapPtr const & GetDefaultCharProps() const;
const StyleSheetEntryPtr & GetCurrentEntry() const;
private:
// Properties
virtual void lcl_attribute(Id Name, Value & val) override;
virtual void lcl_sprm(Sprm & sprm) override;
// Table
virtual void lcl_entry(writerfilter::Reference<Properties>::Pointer_t ref) override;
void applyDefaults(bool bParaProperties);
};
class TableStyleSheetEntry :
public StyleSheetEntry
{
public:
// Adds a new tblStylePr to the table style entry. This method
// fixes some possible properties conflicts, like borders ones.
void AddTblStylePr( TblStyleType nType, const PropertyMapPtr& pProps );
// Gets all the properties
// + corresponding to the mask,
// + from the parent styles
// @param mask mask describing which properties to return
PropertyMapPtr GetProperties( sal_Int32 nMask);
TableStyleSheetEntry( StyleSheetEntry const & aEntry );<--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided. <--- Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. [+]Class 'TableStyleSheetEntry' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided.
virtual ~TableStyleSheetEntry( ) override;
private:
typedef std::map<TblStyleType, PropertyMapPtr> TblStylePrs;
TblStylePrs m_aStyles;
PropertyMapPtr GetLocalPropertiesFromMask( sal_Int32 nMask );
};
}}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|