blob: 0e95e7d15f2fa8cefd43959f36f105442eed4c5f (
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
|
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
// GroupPrimitive2D class
namespace drawinglayer
{
namespace primitive2d
{
/** GroupPrimitive2D class
Baseclass for all grouping 2D primitives
The grouping primitive in it's basic form is capable of holding
a child primitive content and returns it on decomposition on default.
It is used for two main purposes, but more may apply:
- to transport extended information, e.g. for text classification,
see e.g. TextHierarchy*Primitive2D implementations. Since they
decompose to their child content, renderers not aware/interested
in that extra information will just ignore these primitives
- to encapsulate common geometry, e.g. the ShadowPrimitive2D implements
applying a generic shadow to a child sequence by adding the needed
offset and color stuff in the decomposition
In most cases the decomposition is straightforward, so by default
this primitive will not buffer the result and is not derived from
BufferedDecompositionPrimitive2D, but from BasePrimitive2D.
A renderer has to take GroupPrimitive2D derivations into account which
are used to hold a state.
Current Basic 2D StatePrimitives are:
- TransparencePrimitive2D (objects with freely defined transparence)
- InvertPrimitive2D (for XOR)
- MaskPrimitive2D (for masking)
- ModifiedColorPrimitive2D (for a stack of color modifications)
- TransformPrimitive2D (for a transformation stack)
*/
class GroupPrimitive2D : public BasePrimitive2D
{
private:
/// the children. Declared private since this shall never be changed at all after construction
Primitive2DSequence maChildren;
public:
/// constructor
GroupPrimitive2D(const Primitive2DSequence& rChildren);
/// data read access
const Primitive2DSequence& getChildren() const { return maChildren; }
/// compare operator
virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
/// local decomposition. Implementation will just return children
virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
/// provide unique ID
DeclPrimitrive2DIDBlock()
};
} // end of namespace primitive2d
} // end of namespace drawinglayer
//////////////////////////////////////////////////////////////////////////////
#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
//////////////////////////////////////////////////////////////////////////////
// eof
|