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 #ifndef INCLUDED_CHART2_SOURCE_VIEW_INC_LEGENDENTRYPROVIDER_HXX 20 #define INCLUDED_CHART2_SOURCE_VIEW_INC_LEGENDENTRYPROVIDER_HXX 21 22 #include <com/sun/star/chart/ChartLegendExpansion.hpp> 23 #include <com/sun/star/awt/Size.hpp> 24 #include <com/sun/star/uno/Reference.h> 25 #include <com/sun/star/uno/Sequence.h> 26 #include <vector> 27 28 namespace chart { class ChartModel; } 29 namespace com { namespace sun { namespace star { namespace beans { class XPropertySet; } } } } 30 namespace com { namespace sun { namespace star { namespace chart2 { class XFormattedString2; } } } } 31 namespace com { namespace sun { namespace star { namespace drawing { class XShape; } } } } 32 namespace com { namespace sun { namespace star { namespace drawing { class XShapes; } } } } 33 namespace com { namespace sun { namespace star { namespace lang { class XMultiServiceFactory; } } } } 34 namespace com { namespace sun { namespace star { namespace uno { class XComponentContext; } } } } 35 36 namespace chart 37 { 38 39 enum class LegendSymbolStyle 40 { 41 /** A square box with border. 42 */ 43 Box, 44 45 /** A line like with a symbol. 46 */ 47 Line, 48 49 /** A bordered circle which has the same bounding-box as the 50 <member>BOX</member>. 51 */ 52 Circle 53 }; 54 55 struct ViewLegendEntry 56 { 57 /** The legend symbol that represents a data series or other 58 information contained in the legend 59 */ 60 css::uno::Reference< css::drawing::XShape > aSymbol; 61 62 /** The descriptive text for a legend entry. 63 */ 64 css::uno::Sequence< 65 css::uno::Reference< css::chart2::XFormattedString2 > > aLabel; 66 }; 67 68 class LegendEntryProvider 69 { 70 public: 71 virtual css::awt::Size getPreferredLegendKeyAspectRatio()=0; 72 73 virtual std::vector< ViewLegendEntry > createLegendEntries( 74 const css::awt::Size& rEntryKeyAspectRatio, 75 css::chart::ChartLegendExpansion eLegendExpansion, 76 const css::uno::Reference< css::beans::XPropertySet >& xTextProperties, 77 const css::uno::Reference< css::drawing::XShapes >& xTarget, 78 const css::uno::Reference< css::lang::XMultiServiceFactory >& xShapeFactory, 79 const css::uno::Reference< css::uno::XComponentContext >& xContext, 80 ChartModel& rModel 81 ) = 0; 82 83 protected: ~LegendEntryProvider()84 ~LegendEntryProvider() {} 85 }; 86 87 } // namespace chart 88 89 // INCLUDED_CHART2_SOURCE_VIEW_INC_LEGENDENTRYPROVIDER_HXX 90 #endif 91 92 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 93