LibreOffice Module canvas (master)  1
dx_linepolypolygon.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 <sal/config.h>
21 
23 
24 #include "dx_linepolypolygon.hxx"
25 
26 
27 using namespace ::com::sun::star;
28 
29 namespace dxcanvas
30 {
31  LinePolyPolygon::LinePolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly ) :
32  ::basegfx::unotools::UnoPolyPolygon( rPolyPoly ),
33  mpGdiPlusUser( GDIPlusUser::createInstance() ),
34  mpPath()
35  {
36  }
37 
39  {
40  // generate GraphicsPath only on demand (gets deleted as soon
41  // as any of the modifying methods above touches the
42  // B2DPolyPolygon).
43  if( !mpPath )
44  {
46  mpPath->SetFillMode( const_cast<LinePolyPolygon*>(this)->getFillRule() == rendering::FillRule_EVEN_ODD ?
47  Gdiplus::FillModeAlternate : Gdiplus::FillModeWinding );
48  }
49 
50  return mpPath;
51  }
52 
54  {
55  mpPath.reset();
56  }
57 }
58 
59 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
GraphicsPathSharedPtr getGraphicsPath(bool bNoLineJoin=false) const
LinePolyPolygon(const ::basegfx::B2DPolyPolygon &)
const B2DPolyPolygon & getPolyPolygonUnsafe() const
HRESULT createInstance(REFIID iid, Ifc **ppIfc)
GraphicsPathSharedPtr graphicsPathFromB2DPolyPolygon(const ::basegfx::B2DPolyPolygon &rPoly, bool bNoLineJoin)
virtual css::rendering::FillRule SAL_CALL getFillRule() override
virtual void modifying() const override
GraphicsPathSharedPtr mpPath
std::shared_ptr< Gdiplus::GraphicsPath > GraphicsPathSharedPtr
Definition: dx_winstuff.hxx:62