1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef CHART2_VIEW_LEGENDENTRYPROVIDER_HXX
28 #define CHART2_VIEW_LEGENDENTRYPROVIDER_HXX
29 
30 #include <com/sun/star/beans/XPropertySet.hpp>
31 #include <com/sun/star/chart/ChartLegendExpansion.hpp>
32 #include <com/sun/star/chart2/XFormattedString.hpp>
33 #include <com/sun/star/drawing/XShape.hpp>
34 #include <com/sun/star/drawing/XShapes.hpp>
35 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
36 #include <com/sun/star/uno/XComponentContext.hpp>
37 
38 #include <vector>
39 
40 namespace chart
41 {
42 
43 enum LegendSymbolStyle
44 {
45     /** A square box with border.
46      */
47     LegendSymbolStyle_BOX,
48 
49     /** A line like with a symbol.
50      */
51     LegendSymbolStyle_LINE,
52 
53     /** A bordered circle which has the same bounding-box as the
54         <member>BOX</member>.
55      */
56     LegendSymbolStyle_CIRCLE
57 };
58 
59 struct ViewLegendEntry
60 {
61     /** The legend symbol that represents a data series or other
62         information contained in the legend
63      */
64     ::com::sun::star::uno::Reference<
65         ::com::sun::star::drawing::XShape > aSymbol;
66 
67     /** The descriptive text for a legend entry.
68      */
69     ::com::sun::star::uno::Sequence<
70         ::com::sun::star::uno::Reference<
71             ::com::sun::star::chart2::XFormattedString > >  aLabel;
72 };
73 
74 class LegendEntryProvider
75 {
76 public:
77     virtual ::com::sun::star::awt::Size getPreferredLegendKeyAspectRatio()=0;
78 
79     virtual std::vector< ViewLegendEntry > createLegendEntries(
80             const ::com::sun::star::awt::Size& rEntryKeyAspectRatio,
81             ::com::sun::star::chart::ChartLegendExpansion eLegendExpansion,
82             const ::com::sun::star::uno::Reference<
83                 ::com::sun::star::beans::XPropertySet >& xTextProperties,
84             const ::com::sun::star::uno::Reference<
85                 ::com::sun::star::drawing::XShapes >& xTarget,
86             const ::com::sun::star::uno::Reference<
87                 ::com::sun::star::lang::XMultiServiceFactory >& xShapeFactory,
88             const ::com::sun::star::uno::Reference<
89                 ::com::sun::star::uno::XComponentContext >& xContext
90                 ) = 0;
91 };
92 
93 } //  namespace chart
94 
95 // CHART2_VIEW_LEGENDENTRYPROVIDER_HXX
96 #endif
97