Bump version to 21.06.18.1
[LibreOffice.git] / include / drawinglayer / primitive2d / maskprimitive2d.hxx
blobb2be9ae89cd5b9df501ddfcf358dbb645e4a64fb
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #pragma once
22 #include <drawinglayer/drawinglayerdllapi.h>
24 #include <drawinglayer/primitive2d/groupprimitive2d.hxx>
25 #include <basegfx/polygon/b2dpolypolygon.hxx>
28 namespace drawinglayer::primitive2d
30 /** MaskPrimitive2D class
32 This is the central masking primitive. It's a grouping
33 primitive and contains a tools::PolyPolygon which defines the visible
34 area. Only visualisation parts of the Child primitive sequence
35 inside of the mask tools::PolyPolygon is defined to be visible.
37 This primitive should be handled by a renderer. If it is not handled,
38 it decomposes to its Child content, and thus the visualisation would
39 contain no clips.
41 The geometry range of this primitive is completely defined by the Mask
42 tools::PolyPolygon since by definition nothing outside of the mask is visible.
44 class DRAWINGLAYER_DLLPUBLIC MaskPrimitive2D final : public GroupPrimitive2D
46 private:
47 /// the mask PolyPolygon
48 basegfx::B2DPolyPolygon maMask;
50 public:
51 /// constructor
52 MaskPrimitive2D(
53 const basegfx::B2DPolyPolygon& rMask,
54 const Primitive2DContainer& rChildren);
56 /// data read access
57 const basegfx::B2DPolyPolygon& getMask() const { return maMask; }
59 /// compare operator
60 virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
62 /// get range
63 virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
65 /// provide unique ID
66 virtual sal_uInt32 getPrimitive2DID() const override;
68 } // end of namespace drawinglayer::primitive2d
71 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */