xref: /AOO41X/main/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.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_HATCHTEXTUREPRIMITIVE3D_HXX
25 #define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
26 
27 #include <drawinglayer/drawinglayerdllapi.h>
28 #include <drawinglayer/primitive3d/textureprimitive3d.hxx>
29 #include <drawinglayer/attribute/fillhatchattribute.hxx>
30 
31 //////////////////////////////////////////////////////////////////////////////
32 
33 namespace drawinglayer
34 {
35     namespace primitive3d
36     {
37         /** HatchTexturePrimitive3D class
38 
39             HatchTexturePrimitive3D is derived from GroupPrimitive3D, but implements
40             a decomposition which is complicated enough for buffering. Since the group
41             primitive has no default buffering, it is necessary here to add a local
42             buffering mechanism for the decomposition
43          */
44         class DRAWINGLAYER_DLLPUBLIC HatchTexturePrimitive3D : public TexturePrimitive3D
45         {
46         private:
47             /// the hatch definition
48             attribute::FillHatchAttribute                   maHatch;
49 
50             /// the buffered decomposed hatch
51             Primitive3DSequence                             maBuffered3DDecomposition;
52 
53         protected:
54             /// helper: local decomposition
55             Primitive3DSequence impCreate3DDecomposition() const;
56 
57             /// local access methods to maBufferedDecomposition
getBuffered3DDecomposition() const58             const Primitive3DSequence& getBuffered3DDecomposition() const { return maBuffered3DDecomposition; }
setBuffered3DDecomposition(const Primitive3DSequence & rNew)59             void setBuffered3DDecomposition(const Primitive3DSequence& rNew) { maBuffered3DDecomposition = rNew; }
60 
61         public:
62             /// constructor
63             HatchTexturePrimitive3D(
64                 const attribute::FillHatchAttribute& rHatch,
65                 const Primitive3DSequence& rChildren,
66                 const basegfx::B2DVector& rTextureSize,
67                 bool bModulate,
68                 bool bFilter);
69 
70             /// data read access
getHatch() const71             const attribute::FillHatchAttribute& getHatch() const { return maHatch; }
72 
73             /// compare operator
74             virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
75 
76             /// local decomposition.
77             virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
78 
79             /// provide unique ID
80             DeclPrimitrive3DIDBlock()
81         };
82     } // end of namespace primitive3d
83 } // end of namespace drawinglayer
84 
85 //////////////////////////////////////////////////////////////////////////////
86 
87 #endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
88 
89 //////////////////////////////////////////////////////////////////////////////
90 // eof
91