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