xref: /AOO41X/main/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx (revision 4f506f19cd544df9572ed8c88b6bdbc6c8f33210)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
25 #define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
26 
27 #include <drawinglayer/drawinglayerdllapi.h>
28 #include <drawinglayer/primitive3d/baseprimitive3d.hxx>
29 
30 //////////////////////////////////////////////////////////////////////////////
31 
32 namespace drawinglayer
33 {
34     namespace primitive3d
35     {
36         /** GroupPrimitive3D class
37 
38             Baseclass for all grouping 3D primitives
39 
40             The description/functionality is identical with the 2D case in groupprimitive2d.hxx,
41             please see there for detailed information.
42 
43             Current Basic 3D StatePrimitives are:
44 
45             - ModifiedColorPrimitive3D (for a stack of color modifications)
46             - ShadowPrimitive3D (for 3D objects with shadow; this is a special case
47               since the shadow of a 3D primitive is a 2D primitive set)
48             - TexturePrimitive3D (with the following variations)
49                 - GradientTexturePrimitive3D (for 3D gradient fill)
50                 - BitmapTexturePrimitive3D (for 3D Bitmap fill)
51                 - TransparenceTexturePrimitive3D (for 3D transparence)
52                 - HatchTexturePrimitive3D (for 3D hatch fill)
53             - TransformPrimitive3D (for a transformation stack)
54          */
55         class DRAWINGLAYER_DLLPUBLIC GroupPrimitive3D : public BasePrimitive3D
56         {
57         private:
58             /// the children. Declared private since this shall never be changed at all after construction
59             Primitive3DSequence                             maChildren;
60 
61         public:
62             /// constructor
63             GroupPrimitive3D(const Primitive3DSequence& rChildren);
64 
65             /// data read access
getChildren() const66             Primitive3DSequence getChildren() const { return maChildren; }
67 
68             /// compare operator
69             virtual bool operator==( const BasePrimitive3D& rPrimitive ) const;
70 
71             /// local decomposition. Implementation will just return children
72             virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
73 
74             /// provide unique ID
75             DeclPrimitrive3DIDBlock()
76         };
77     } // end of namespace primitive3d
78 } // end of namespace drawinglayer
79 
80 //////////////////////////////////////////////////////////////////////////////
81 
82 #endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
83 
84 //////////////////////////////////////////////////////////////////////////////
85 // eof
86