summaryrefslogtreecommitdiffstats
path: root/include/svx/svx3ditems.hxx
blob: 190eb3a83245afce0b5c6f6bdfa8748294fa85d7 (plain)
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
/* -*- 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_SVX_SVX3DITEMS_HXX
#define INCLUDED_SVX_SVX3DITEMS_HXX

#include <config_options.h>
#include <svl/intitem.hxx>
#include <svl/eitem.hxx>


#include <editeng/colritem.hxx>
#include <svx/e3ditem.hxx>
#include <svx/viewpt3d.hxx>
#include <svx/svddef.hxx>
#include <svx/svxdllapi.h>

// Svx3D _3DOBJ_ Items
inline SfxUInt16Item makeSvx3DPercentDiagonalItem(sal_uInt16 nVal) {
    return SfxUInt16Item(SDRATTR_3DOBJ_PERCENT_DIAGONAL, nVal);
}

inline SfxUInt16Item makeSvx3DBackscaleItem(sal_uInt16 nVal) {
    return SfxUInt16Item(SDRATTR_3DOBJ_BACKSCALE, nVal);
}

inline SfxUInt32Item makeSvx3DDepthItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DOBJ_DEPTH, nVal);
}

inline SfxUInt32Item makeSvx3DHorizontalSegmentsItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DOBJ_HORZ_SEGS, nVal);
}

inline SfxUInt32Item makeSvx3DVerticalSegmentsItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DOBJ_VERT_SEGS, nVal);
}

inline SfxUInt32Item makeSvx3DEndAngleItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DOBJ_END_ANGLE, nVal);
}

inline SfxBoolItem makeSvx3DDoubleSidedItem(bool bVal) {
    return SfxBoolItem(SDRATTR_3DOBJ_DOUBLE_SIDED, bVal);
}

// #i28528#
// Added extra Item (Bool) for chart2 to be able to show reduced line geometry
class Svx3DReducedLineGeometryItem final : public SfxBoolItem {
public:
    Svx3DReducedLineGeometryItem(bool bVal = false);
    Svx3DReducedLineGeometryItem* Clone(SfxItemPool * = nullptr) const override;
};

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DNormalsKindItem final : public SfxUInt16Item {
public:
    Svx3DNormalsKindItem(sal_uInt16 nVal = 0);

    // use drawing::NormalsKind
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DNormalsKindItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

inline SfxBoolItem makeSvx3DNormalsInvertItem(bool bVal) {
    return SfxBoolItem(SDRATTR_3DOBJ_NORMALS_INVERT, bVal);
}

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DTextureProjectionXItem final : public SfxUInt16Item {
public:
    Svx3DTextureProjectionXItem(sal_uInt16 nVal = 0);

    // use drawing::TextureProjectionMode
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DTextureProjectionXItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DTextureProjectionYItem final : public SfxUInt16Item {
public:
    Svx3DTextureProjectionYItem(sal_uInt16 nVal = 0);

    // use drawing::TextureProjectionMode
    virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    virtual Svx3DTextureProjectionYItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

inline SfxBoolItem makeSvx3DShadow3DItem(bool bVal) {
    return SfxBoolItem(SDRATTR_3DOBJ_SHADOW_3D, bVal);
}

inline SvxColorItem makeSvx3DMaterialEmissionItem(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DOBJ_MAT_EMISSION);
}

inline SvxColorItem makeSvx3DMaterialSpecularItem(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DOBJ_MAT_SPECULAR);
}

inline SfxUInt16Item makeSvx3DMaterialSpecularIntensityItem(sal_uInt16 nVal) {
    return SfxUInt16Item(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY, nVal);
}

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DTextureKindItem final : public SfxUInt16Item {
public:
    Svx3DTextureKindItem(sal_uInt16 nVal = 3);

    // use drawing::TextureKind
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DTextureKindItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DTextureModeItem final : public SfxUInt16Item {
public:
    Svx3DTextureModeItem(sal_uInt16 nVal = 2);

    // use drawing:TextureMode
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DTextureModeItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

inline SfxBoolItem makeSvx3DTextureFilterItem(bool bVal) {
    return SfxBoolItem(SDRATTR_3DOBJ_TEXTURE_FILTER, bVal);
}

// Svx3D _3DSCENE_ Items
class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DPerspectiveItem final : public SfxUInt16Item {
public:
    Svx3DPerspectiveItem(ProjectionType nVal = ProjectionType::Perspective);

    // use drawing::ProjectionMode
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DPerspectiveItem* Clone(SfxItemPool* pPool = nullptr) const override;
};

inline SfxUInt32Item makeSvx3DDistanceItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DSCENE_DISTANCE, nVal);
}

inline SfxUInt32Item makeSvx3DFocalLengthItem(sal_uInt32 nVal) {
    return SfxUInt32Item(SDRATTR_3DSCENE_FOCAL_LENGTH, nVal);
}

inline SfxBoolItem makeSvx3DTwoSidedLightingItem(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, bVal);
}

inline SvxColorItem makeSvx3DLightcolor1Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_1);
}

inline SvxColorItem makeSvx3DLightcolor2Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_2);
}

inline SvxColorItem makeSvx3DLightcolor3Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_3);
}

inline SvxColorItem makeSvx3DLightcolor4Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_4);
}

inline SvxColorItem makeSvx3DLightcolor5Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_5);
}

inline SvxColorItem makeSvx3DLightcolor6Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_6);
}

inline SvxColorItem makeSvx3DLightcolor7Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_7);
}

inline SvxColorItem makeSvx3DLightcolor8Item(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_8);
}

inline SvxColorItem makeSvx3DAmbientcolorItem(const Color& rCol, const SfxItemSet& rSet) {
    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_AMBIENTCOLOR);
}

inline SfxBoolItem makeSvx3DLightOnOff1Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_1, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff2Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_2, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff3Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_3, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff4Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_4, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff5Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_5, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff6Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_6, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff7Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_7, bVal);
}

inline SfxBoolItem makeSvx3DLightOnOff8Item(bool bVal) {
    return SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_8, bVal);
}

inline SvxB3DVectorItem makeSvx3DLightDirection1Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_1, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection2Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_2, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection3Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_3, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection4Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_4, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection5Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_5, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection6Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_6, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection7Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_7, rVec);
}

inline SvxB3DVectorItem makeSvx3DLightDirection8Item(const basegfx::B3DVector& rVec) {
    return SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_8, rVec);
}

inline SfxUInt16Item makeSvx3DShadowSlantItem(sal_uInt16 nVal) {
    return SfxUInt16Item(SDRATTR_3DSCENE_SHADOW_SLANT, nVal);
}

class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DShadeModeItem final : public SfxUInt16Item {
public:
    Svx3DShadeModeItem(sal_uInt16 nVal = 2);

    // use drawing::ShadeMode
    SVX_DLLPRIVATE virtual  bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
    SVX_DLLPRIVATE virtual  bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
    SVX_DLLPRIVATE virtual Svx3DShadeModeItem* Clone(SfxItemPool* pPool = nullptr) const override;
};


// #107245# Item to replace bExtrudeSmoothed and bLatheSmoothed
class Svx3DSmoothNormalsItem final : public SfxBoolItem {
public:
    Svx3DSmoothNormalsItem(bool bVal = true);
    Svx3DSmoothNormalsItem* Clone(SfxItemPool * = nullptr) const override;
};

// #107245# Item to replace bExtrudeSmoothFrontBack and bLatheSmoothFrontBack
class Svx3DSmoothLidsItem final : public SfxBoolItem {
public:
    Svx3DSmoothLidsItem(bool bVal = false);
    Svx3DSmoothLidsItem* Clone(SfxItemPool * = nullptr) const override;
};

// #107245# Item to replace bExtrudeCharacterMode and bLatheCharacterMode
class Svx3DCharacterModeItem final : public SfxBoolItem {
public:
    Svx3DCharacterModeItem(bool bVal = false);
    Svx3DCharacterModeItem* Clone(SfxItemPool * = nullptr) const override;
};

// #107245# Item to replace bExtrudeCloseFront and bLatheCloseFront
class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DCloseFrontItem final : public SfxBoolItem {
public:
    Svx3DCloseFrontItem(bool bVal = true);
    Svx3DCloseFrontItem* Clone(SfxItemPool * = nullptr) const override;
};

// #107245# Item to replace bExtrudeCloseBack and bLatheCloseBack
class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DCloseBackItem final : public SfxBoolItem {
public:
    Svx3DCloseBackItem(bool bVal = true);
    Svx3DCloseBackItem* Clone(SfxItemPool * = nullptr) const override;
};

#endif // INCLUDED_SVX_SVX3DITEMS_HXX

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */