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 #ifndef INCLUDED_CPPCANVAS_POLYPOLYGON_HXX 21 #define INCLUDED_CPPCANVAS_POLYPOLYGON_HXX 22 23 #include <com/sun/star/uno/Reference.hxx> 24 #include <cppcanvas/canvasgraphic.hxx> 25 #include <cppcanvas/color.hxx> 26 #include <memory> 27 28 namespace com { namespace sun { namespace star { namespace rendering 29 { 30 class XPolyPolygon2D; 31 } } } } 32 33 34 /* Definition of tools::PolyPolygon interface */ 35 36 namespace cppcanvas 37 { 38 39 /** This interface defines a tools::PolyPolygon canvas object 40 41 Consider this object part of the view, and not of the model 42 data. Although the given polygon is typically copied and held 43 internally (to facilitate migration to incompatible canvases), 44 ::basegfx::B2DPolygon et al. are ref-counted copy-on-write 45 classes, i.e. memory shouldn't be wasted. On the other hand, 46 the API polygon created internally _does_ necessarily 47 duplicate the data held, but can be easily flushed away via 48 flush(). 49 */ 50 class PolyPolygon : public virtual CanvasGraphic 51 { 52 public: 53 54 /** Set polygon fill color 55 */ 56 virtual void setRGBAFillColor( IntSRGBA ) = 0; 57 /** Set polygon line color 58 */ 59 virtual void setRGBALineColor( IntSRGBA ) = 0; 60 /** Get polygon line color 61 */ 62 virtual IntSRGBA getRGBALineColor() const = 0; 63 64 virtual void setStrokeWidth( const double& rStrokeWidth ) = 0; 65 virtual double getStrokeWidth() const = 0; 66 67 virtual css::uno::Reference< 68 css::rendering::XPolyPolygon2D > getUNOPolyPolygon() const = 0; 69 }; 70 71 typedef std::shared_ptr< ::cppcanvas::PolyPolygon > PolyPolygonSharedPtr; 72 } 73 74 #endif // INCLUDED_CPPCANVAS_POLYPOLYGON_HXX 75 76 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 77