1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #pragma once 21 22 #include <primitive3d/textureprimitive3d.hxx> 23 #include <drawinglayer/attribute/fillhatchattribute.hxx> 24 25 26 namespace drawinglayer::primitive3d 27 { 28 /** HatchTexturePrimitive3D class 29 30 HatchTexturePrimitive3D is derived from GroupPrimitive3D, but implements 31 a decomposition which is complicated enough for buffering. Since the group 32 primitive has no default buffering, it is necessary here to add a local 33 buffering mechanism for the decomposition 34 */ 35 class HatchTexturePrimitive3D final : public TexturePrimitive3D 36 { 37 /// the hatch definition 38 attribute::FillHatchAttribute maHatch; 39 40 /// the buffered decomposed hatch 41 Primitive3DContainer maBuffered3DDecomposition; 42 43 /// helper: local decomposition 44 Primitive3DContainer impCreate3DDecomposition() const; 45 46 /// local access methods to maBufferedDecomposition getBuffered3DDecomposition() const47 const Primitive3DContainer& getBuffered3DDecomposition() const { return maBuffered3DDecomposition; } 48 49 public: 50 /// constructor 51 HatchTexturePrimitive3D( 52 const attribute::FillHatchAttribute& rHatch, 53 const Primitive3DContainer& rChildren, 54 const basegfx::B2DVector& rTextureSize, 55 bool bModulate, 56 bool bFilter); 57 58 /// data read access getHatch() const59 const attribute::FillHatchAttribute& getHatch() const { return maHatch; } 60 61 /// compare operator 62 virtual bool operator==(const BasePrimitive3D& rPrimitive) const override; 63 64 /// local decomposition. 65 virtual Primitive3DContainer get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const override; 66 67 /// provide unique ID 68 DeclPrimitive3DIDBlock() 69 }; 70 71 } // end of namespace drawinglayer::primitive3d 72 73 74 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 75