LibreOffice Module toolkit (master) 1
vclxregion.cxx
Go to the documentation of this file.
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#include <awt/vclxregion.hxx>
23
24
25
27{
28}
29
31{
32}
33
34css::awt::Rectangle VCLXRegion::getBounds()
35{
36 std::scoped_lock aGuard( maMutex );
37
39}
40
42{
43 std::scoped_lock aGuard( maMutex );
44
46}
47
48void VCLXRegion::move( sal_Int32 nHorzMove, sal_Int32 nVertMove )
49{
50 std::scoped_lock aGuard( maMutex );
51
52 maRegion.Move( nHorzMove, nVertMove );
53}
54
55void VCLXRegion::unionRectangle( const css::awt::Rectangle& rRect )
56{
57 std::scoped_lock aGuard( maMutex );
58
59 maRegion.Union( VCLRectangle( rRect ) );
60}
61
62void VCLXRegion::intersectRectangle( const css::awt::Rectangle& rRect )
63{
64 std::scoped_lock aGuard( maMutex );
65
67}
68
69void VCLXRegion::excludeRectangle( const css::awt::Rectangle& rRect )
70{
71 std::scoped_lock aGuard( maMutex );
72
73 maRegion.Exclude( VCLRectangle( rRect ) );
74}
75
76void VCLXRegion::xOrRectangle( const css::awt::Rectangle& rRect )
77{
78 std::scoped_lock aGuard( maMutex );
79
80 maRegion.XOr( VCLRectangle( rRect ) );
81}
82
83void VCLXRegion::unionRegion( const css::uno::Reference< css::awt::XRegion >& rxRegion )
84{
85 std::scoped_lock aGuard( maMutex );
86
87 if ( rxRegion.is() )
89}
90
91void VCLXRegion::intersectRegion( const css::uno::Reference< css::awt::XRegion >& rxRegion )
92{
93 std::scoped_lock aGuard( maMutex );
94
95 if ( rxRegion.is() )
97}
98
99void VCLXRegion::excludeRegion( const css::uno::Reference< css::awt::XRegion >& rxRegion )
100{
101 std::scoped_lock aGuard( maMutex );
102
103 if ( rxRegion.is() )
105}
106
107void VCLXRegion::xOrRegion( const css::uno::Reference< css::awt::XRegion >& rxRegion )
108{
109 std::scoped_lock aGuard( maMutex );
110
111 if ( rxRegion.is() )
112 maRegion.XOr( VCLUnoHelper::GetRegion( rxRegion ) );
113}
114
115css::uno::Sequence< css::awt::Rectangle > VCLXRegion::getRectangles()
116{
117 std::scoped_lock aGuard( maMutex );
118
119 RectangleVector aRectangles;
120 maRegion.GetRegionRectangles(aRectangles);
121
122// sal_uLong nRects = maRegion.GetRectCount();
123 css::uno::Sequence< css::awt::Rectangle > aRects(aRectangles.size());
124 sal_uInt32 a(0);
125
126 for(const auto& rRect : aRectangles)
127 {
128 aRects.getArray()[a++] = AWTRectangle(rRect);
129 }
130
131 //Rectangle aRect;
132 //sal_uInt32 nR = 0;
133 //RegionHandle h = maRegion.BeginEnumRects();
134 //while ( maRegion.GetEnumRects( h, aRect ) )
135 // aRects.getArray()[nR++] = AWTRectangle( aRect );
136 //maRegion.EndEnumRects( h );
137
138 return aRects;
139}
140
141
142/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static vcl::Region GetRegion(const css::uno::Reference< css::awt::XRegion > &rxRegion)
void SAL_CALL xOrRectangle(const css::awt::Rectangle &rRect) override
Definition: vclxregion.cxx:76
std::mutex maMutex
Definition: vclxregion.hxx:36
vcl::Region maRegion
Definition: vclxregion.hxx:37
void SAL_CALL intersectRegion(const css::uno::Reference< css::awt::XRegion > &rxRegion) override
Definition: vclxregion.cxx:91
void SAL_CALL unionRegion(const css::uno::Reference< css::awt::XRegion > &rxRegion) override
Definition: vclxregion.cxx:83
css::awt::Rectangle SAL_CALL getBounds() override
Definition: vclxregion.cxx:34
void SAL_CALL move(sal_Int32 nHorzMove, sal_Int32 nVertMove) override
Definition: vclxregion.cxx:48
virtual ~VCLXRegion() override
Definition: vclxregion.cxx:30
void SAL_CALL excludeRegion(const css::uno::Reference< css::awt::XRegion > &rxRegion) override
Definition: vclxregion.cxx:99
void SAL_CALL intersectRectangle(const css::awt::Rectangle &rRect) override
Definition: vclxregion.cxx:62
css::uno::Sequence< css::awt::Rectangle > SAL_CALL getRectangles() override
Definition: vclxregion.cxx:115
void SAL_CALL xOrRegion(const css::uno::Reference< css::awt::XRegion > &rxRegion) override
Definition: vclxregion.cxx:107
void SAL_CALL excludeRectangle(const css::awt::Rectangle &rRect) override
Definition: vclxregion.cxx:69
void SAL_CALL clear() override
Definition: vclxregion.cxx:41
void SAL_CALL unionRectangle(const css::awt::Rectangle &rRect) override
Definition: vclxregion.cxx:55
void Move(tools::Long nHorzMove, tools::Long nVertMove)
void Intersect(const tools::Rectangle &rRegion)
tools::Rectangle GetBoundRect() const
void XOr(const tools::Rectangle &rRegion)
void Union(const tools::Rectangle &rRegion)
void Exclude(const tools::Rectangle &rRegion)
void GetRegionRectangles(RectangleVector &rTarget) const
void SetEmpty()
css::awt::Rectangle AWTRectangle(const ::tools::Rectangle &rVCLRect)
Definition: convert.hxx:49
inline ::tools::Rectangle VCLRectangle(const css::awt::Rectangle &rAWTRect)
Definition: convert.hxx:54
uno_Any a
std::vector< tools::Rectangle > RectangleVector