LibreOffice Module svx (master) 1
xtable.hxx
Go to the documentation of this file.
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_SVX_XTABLE_HXX
20#define INCLUDED_SVX_XTABLE_HXX
21
22#include <rtl/ref.hxx>
23#include <rtl/ustring.hxx>
24#include <svx/xdash.hxx>
25#include <svx/xhatch.hxx>
27
28#include <tools/color.hxx>
29
30#include <cppuhelper/weak.hxx>
31
32#include <svx/svxdllapi.h>
33#include <com/sun/star/embed/XStorage.hpp>
35#include <com/sun/star/container/XNameContainer.hpp>
36#include <vcl/GraphicObject.hxx>
38
39#include <limits>
40#include <memory>
41
43{
44private:
46
47public:
48 XColorEntry(const Color& rColor, const OUString& rName);
49
50 const Color& GetColor() const
51 {
52 return aColor;
53 }
54};
55
57{
58private:
60
61public:
62 XLineEndEntry(basegfx::B2DPolyPolygon aB2DPolyPolygon, const OUString& rName);
63 XLineEndEntry(const XLineEndEntry& rOther);
64
66 {
67 return aB2DPolyPolygon;
68 }
69};
70
72{
73private:
75
76public:
77 XDashEntry(const XDash& rDash, const OUString& rName);
78 XDashEntry(const XDashEntry& rOther);
79
80 const XDash& GetDash() const
81 {
82 return aDash;
83 }
84};
85
87{
88private:
90
91public:
92 XHatchEntry(const XHatch& rHatch, const OUString& rName);
93 XHatchEntry(const XHatchEntry& rOther);
94
95 const XHatch& GetHatch() const
96 {
97 return aHatch;
98 }
99};
100
102{
103private:
105
106public:
107 XGradientEntry(const basegfx::BGradient& rGradient, const OUString& rName);
108 XGradientEntry(const XGradientEntry& rOther);
109
111 {
112 return aGradient;
113 }
114};
115
117{
118private:
120
121public:
122 XBitmapEntry(const GraphicObject& rGraphicObject, const OUString& rName);
123 XBitmapEntry(const XBitmapEntry& rOther);
124
126 {
127 return maGraphicObject;
128 }
129};
130
132 Unknown = -1,
133 Color,
134 LineEnd,
135 Dash,
136 Hatch,
137 Gradient,
138 Bitmap,
139 Pattern,
140 LAST = Pattern
141};
142
144
152
154{
155protected:
157 OUString maName; // not persistent
158 OUString maPath;
159 OUString maReferer;
160
161 std::vector< std::unique_ptr<XPropertyEntry> > maList;
162
165
166 XPropertyList(XPropertyListType t, OUString aPath, OUString aReferer);
167 bool isValidIdx(tools::Long nIndex) const;
169
170public:
171 XPropertyList(const XPropertyList&) = delete;
173 virtual ~XPropertyList() override;
174
175 XPropertyListType Type() const { return meType; }
176 tools::Long Count() const;
177
178 void Insert(std::unique_ptr<XPropertyEntry> pEntry, tools::Long nIndex = std::numeric_limits<tools::Long>::max());
179 void Replace(std::unique_ptr<XPropertyEntry> pEntry, tools::Long nIndex);
180 void Remove(tools::Long nIndex);
181
182 XPropertyEntry* Get(tools::Long nIndex) const;
183 tools::Long GetIndex(std::u16string_view rName) const;
184 BitmapEx GetUiBitmap(tools::Long nIndex) const;
185
186 const OUString& GetName() const { return maName; }
187 void SetName(const OUString& rString);
188
189 const OUString& GetPath() const { return maPath; }
190 void SetPath(const OUString& rString) { maPath = rString; }
191
192 void SetDirty(bool bDirty) { mbListDirty = bDirty; }
193
194 bool IsEmbedInDocument() const { return mbEmbedInDocument; }
195
196 static OUString GetDefaultExt(XPropertyListType t);
197 OUString GetDefaultExt() const { return GetDefaultExt(meType); }
198
199 virtual css::uno::Reference< css::container::XNameContainer >
201 bool Load();
202 bool LoadFrom(const css::uno::Reference<
203 css::embed::XStorage > &xStorage,
204 const OUString &rURL, const OUString &rReferer);
205 bool Save();
206 bool SaveTo (const css::uno::Reference<
207 css::embed::XStorage > &xStorage,
208 const OUString &rURL,
209 OUString *pOptName);
210 virtual bool Create() = 0;
211
212 // Factory method for sub-classes
213 static XPropertyListRef CreatePropertyList(XPropertyListType t,
214 const OUString& rPath,
215 const OUString& rReferer);
216 // as above but initializes name as expected
217 static XPropertyListRef CreatePropertyListFromURL(XPropertyListType t,
218 std::u16string_view rUrl);
219
220 // helper accessors
221 static inline XDashListRef AsDashList(
222 rtl::Reference<XPropertyList> const & plist);
223 static inline XHatchListRef AsHatchList(
224 rtl::Reference<XPropertyList> const & plist);
225 static inline XColorListRef AsColorList(
226 rtl::Reference<XPropertyList> const & plist);
227 static inline XBitmapListRef AsBitmapList(
228 rtl::Reference<XPropertyList> const & plist);
229 static inline XPatternListRef AsPatternList(
230 rtl::Reference<XPropertyList> const & plist);
231 static inline XLineEndListRef AsLineEndList(
232 rtl::Reference<XPropertyList> const & plist);
233 static inline XGradientListRef AsGradientList(
234 rtl::Reference<XPropertyList> const & plist);
235};
236
238{
239 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
240
241public:
242 XColorList(const OUString& rPath, const OUString& rReferer)
243 : XPropertyList(XPropertyListType::Color, rPath, rReferer) {}
244
245 void Replace(tools::Long nIndex, std::unique_ptr<XColorEntry> pEntry);
246 XColorEntry* GetColor(tools::Long nIndex) const;
247 tools::Long GetIndexOfColor( const Color& rColor) const;
248 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
249 virtual bool Create() override;
250
251 static XColorListRef CreateStdColorList();
252 static XColorListRef GetStdColorList(); // returns a singleton
253};
254
256{
257 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
258
259public:
260 XLineEndList(const OUString& rPath, const OUString& rReferer);
261 virtual ~XLineEndList() override;
262
263 XLineEndEntry* GetLineEnd(tools::Long nIndex) const;
264
265 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
266 virtual bool Create() override;
267};
268
270{
271private:
275
276 static double ImpGetDefaultLineThickness();
277 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
278
279public:
280 XDashList(const OUString& rPath, const OUString& rReferer);
281 virtual ~XDashList() override;
282
283 void Replace(std::unique_ptr<XDashEntry> pEntry, tools::Long nIndex);
284 XDashEntry* GetDash(tools::Long nIndex) const;
285
286 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
287 virtual bool Create() override;
288
289 // Special call to get a bitmap for the solid line representation. It
290 // creates a bitmap fitting in size and style to the ones you get by
291 // using GetUiBitmap for existing entries.
292 BitmapEx const & GetBitmapForUISolidLine() const;
293
294 static BitmapEx CreateBitmapForXDash(const XDash* pDash, double fLineThickness);
295
296 // Special calls to get the translated strings for the UI entry for no
297 // line style (XLINE_NONE) and solid line style (XLINE_SOLID) for dialogs
298 OUString const & GetStringForUiSolidLine() const;
299 OUString const & GetStringForUiNoLine() const;
300};
301
303{
304private:
305 BitmapEx CreateBitmap(tools::Long nIndex, const Size& rSize) const;
306 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
307public:
308 XHatchList(const OUString& rPath, const OUString& rReferer);
309 virtual ~XHatchList() override;
310
311 void Replace(std::unique_ptr<XHatchEntry> pEntry, tools::Long nIndex);
312 XHatchEntry* GetHatch(tools::Long nIndex) const;
313 BitmapEx GetBitmapForPreview(tools::Long nIndex, const Size& rSize);
314
315 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
316 virtual bool Create() override;
317};
318
320{
321private:
322 BitmapEx CreateBitmap(tools::Long nIndex, const Size& rSize) const;
323 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
324
325public:
326 XGradientList(const OUString& rPath, const OUString& rReferer);
327 virtual ~XGradientList() override;
328
329 void Replace(std::unique_ptr<XGradientEntry> pEntry, tools::Long nIndex);
330 XGradientEntry* GetGradient(tools::Long nIndex) const;
331 BitmapEx GetBitmapForPreview(tools::Long nIndex, const Size& rSize);
332
333 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
334 virtual bool Create() override;
335};
336
338{
339private:
340 BitmapEx CreateBitmap( tools::Long nIndex, const Size& rSize ) const;
341 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
342
343public:
344 XBitmapList(const OUString& rPath, const OUString& rReferer)
345 : XPropertyList(XPropertyListType::Bitmap, rPath, rReferer) {}
346
347 XBitmapEntry* GetBitmap(tools::Long nIndex) const;
348 BitmapEx GetBitmapForPreview(tools::Long nIndex, const Size& rSize);
349
350 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
351 virtual bool Create() override;
352};
353
355{
356private:
357 BitmapEx CreateBitmap( tools::Long nIndex, const Size& rSize ) const;
358 virtual BitmapEx CreateBitmapForUI(tools::Long nIndex) override;
359
360public:
361 XPatternList(const OUString& rPath, const OUString& rReferer)
362 : XPropertyList(XPropertyListType::Pattern, rPath, rReferer) {}
363
364 XBitmapEntry* GetBitmap(tools::Long nIndex) const;
365 BitmapEx GetBitmapForPreview(tools::Long nIndex, const Size& rSize);
366
367 virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
368 virtual bool Create() override;
369};
370
371// FIXME: could add type checking too ...
373 rtl::Reference<XPropertyList> const & plist)
374{ return XDashListRef( static_cast<XDashList *> (plist.get()) ); }
376 rtl::Reference<XPropertyList> const & plist)
377{ return XHatchListRef( static_cast<XHatchList *> (plist.get()) ); }
379 rtl::Reference<XPropertyList> const & plist)
380{ return XColorListRef( static_cast<XColorList *> (plist.get()) ); }
382 rtl::Reference<XPropertyList> const & plist)
383{ return XBitmapListRef( static_cast<XBitmapList *> (plist.get()) ); }
385 rtl::Reference<XPropertyList> const & plist)
386{ return XPatternListRef( static_cast<XPatternList *> (plist.get()) ); }
388 rtl::Reference<XPropertyList> const & plist)
389{ return XLineEndListRef( static_cast<XLineEndList *> (plist.get()) ); }
391 rtl::Reference<XPropertyList> const & plist)
392{ return XGradientListRef( static_cast<XGradientList *> (plist.get()) ); }
393
394#endif // INCLUDED_SVX_XTABLE_HXX
395
396/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
HRESULT createInstance(REFIID iid, Ifc **ppIfc)
Any maPath
OUString maName
GraphicObject maGraphicObject
Definition: xtable.hxx:119
const GraphicObject & GetGraphicObject() const
Definition: xtable.hxx:125
XBitmapList(const OUString &rPath, const OUString &rReferer)
Definition: xtable.hxx:344
Color aColor
Definition: xtable.hxx:45
const Color & GetColor() const
Definition: xtable.hxx:50
XColorList(const OUString &rPath, const OUString &rReferer)
Definition: xtable.hxx:242
XDash aDash
Definition: xtable.hxx:74
const XDash & GetDash() const
Definition: xtable.hxx:80
OUString maStringNoLine
Definition: xtable.hxx:274
OUString maStringSolidLine
Definition: xtable.hxx:273
BitmapEx maBitmapSolidLine
Definition: xtable.hxx:272
Definition: xdash.hxx:32
basegfx::BGradient aGradient
Definition: xtable.hxx:104
const basegfx::BGradient & GetGradient() const
Definition: xtable.hxx:110
XHatch aHatch
Definition: xtable.hxx:89
const XHatch & GetHatch() const
Definition: xtable.hxx:95
const basegfx::B2DPolyPolygon & GetLineEnd() const
Definition: xtable.hxx:65
basegfx::B2DPolyPolygon aB2DPolyPolygon
Definition: xtable.hxx:59
XPatternList(const OUString &rPath, const OUString &rReferer)
Definition: xtable.hxx:361
void SetName(const OUString &rPropEntryName)
const BitmapEx & GetUiBitmap() const
static XBitmapListRef AsBitmapList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:381
virtual css::uno::Reference< css::container::XNameContainer > createInstance()=0
static XLineEndListRef AsLineEndList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:387
bool mbListDirty
Definition: xtable.hxx:163
void SetPath(const OUString &rString)
Definition: xtable.hxx:190
std::vector< std::unique_ptr< XPropertyEntry > > maList
Definition: xtable.hxx:161
static XDashListRef AsDashList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:372
static XColorListRef AsColorList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:378
virtual BitmapEx CreateBitmapForUI(tools::Long nIndex)=0
static XGradientListRef AsGradientList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:390
OUString maName
Definition: xtable.hxx:157
OUString maReferer
Definition: xtable.hxx:159
static XHatchListRef AsHatchList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:375
OUString maPath
Definition: xtable.hxx:158
static XPatternListRef AsPatternList(rtl::Reference< XPropertyList > const &plist)
Definition: xtable.hxx:384
const OUString & GetPath() const
Definition: xtable.hxx:189
bool mbEmbedInDocument
Definition: xtable.hxx:164
virtual bool Create()=0
const OUString & GetName() const
Definition: xtable.hxx:186
OUString GetDefaultExt() const
Definition: xtable.hxx:197
void SetDirty(bool bDirty)
Definition: xtable.hxx:192
bool IsEmbedInDocument() const
Definition: xtable.hxx:194
XPropertyListType Type() const
Definition: xtable.hxx:175
XPropertyListType meType
Definition: xtable.hxx:156
XPropertyList & operator=(const XPropertyList &)=delete
XPropertyList(const XPropertyList &)=delete
STDMETHOD() Get(VARIANT *val)=0
virtual void Insert(SotClipboardFormatId nFormat, const OUString &rFormatName) override
sal_Int32 nIndex
LineEnd
Unknown
void Create(SwFormatVertOrient &rItem, SvStream &rStrm, sal_uInt16 nVersionAbusedAsSize)
long Long
#define SVXCORE_DLLPUBLIC
Definition: svxdllapi.h:35
Count
RedlineType meType
XPropertyListType t
Definition: xtable.cxx:371
rtl::Reference< class XPatternList > XPatternListRef
Definition: xtable.hxx:149
rtl::Reference< class XLineEndList > XLineEndListRef
Definition: xtable.hxx:150
rtl::Reference< class XHatchList > XHatchListRef
Definition: xtable.hxx:146
rtl::Reference< class XPropertyList > XPropertyListRef
Definition: xtable.hxx:143
rtl::Reference< class XBitmapList > XBitmapListRef
Definition: xtable.hxx:148
rtl::Reference< class XGradientList > XGradientListRef
Definition: xtable.hxx:151
rtl::Reference< class XColorList > XColorListRef
Definition: xtable.hxx:147
rtl::Reference< class XDashList > XDashListRef
Definition: xtable.hxx:145
XPropertyListType
Definition: xtable.hxx:131