Coverage Report

Created: 2026-06-30 11:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/drawinglayer/primitive2d/maskprimitive2d.hxx
Line
Count
Source
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 <drawinglayer/drawinglayerdllapi.h>
23
24
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
25
#include <basegfx/polygon/b2dpolypolygon.hxx>
26
27
28
namespace drawinglayer::primitive2d
29
{
30
        /** MaskPrimitive2D class
31
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.
36
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.
40
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.
43
         */
44
        class DRAWINGLAYER_DLLPUBLIC MaskPrimitive2D final : public GroupPrimitive2D
45
        {
46
        private:
47
            /// the mask PolyPolygon
48
            basegfx::B2DPolyPolygon                 maMask;
49
50
        public:
51
            /// constructor
52
            MaskPrimitive2D(
53
                basegfx::B2DPolyPolygon aMask,
54
                Primitive2DContainer&& aChildren);
55
56
            /// data read access
57
153
            const basegfx::B2DPolyPolygon& getMask() const { return maMask; }
58
59
            /// compare operator
60
            virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
61
62
            /// get range
63
            virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
64
65
            /// provide unique ID
66
            virtual sal_uInt32 getPrimitive2DID() const override;
67
        };
68
} // end of namespace drawinglayer::primitive2d
69
70
71
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */