blob: df45b5f3f36602d0f33995e89edfa372d3b661c6 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef OOX_DRAWINGML_CHART_OBJECTFORMATTER_HXX
#define OOX_DRAWINGML_CHART_OBJECTFORMATTER_HXX
#include "oox/helper/propertyset.hxx"
#include "oox/drawingml/drawingmltypes.hxx"
#include "oox/drawingml/chart/modelbase.hxx"
namespace com { namespace sun { namespace star {
namespace chart2 { class XChartDocument; }
} } }
namespace oox { namespace core { class XmlFilterBase; } }
namespace oox {
namespace drawingml {
namespace chart {
// ============================================================================
/** Enumerates different object types for specific automatic formatting behaviour. */
enum ObjectType
{
OBJECTTYPE_CHARTSPACE, /// Chart background.
OBJECTTYPE_CHARTTITLE, /// Chart title.
OBJECTTYPE_LEGEND, /// Legend.
OBJECTTYPE_PLOTAREA2D, /// Plot area containing axes and data series in 2D charts.
OBJECTTYPE_PLOTAREA3D, /// Plot area containing axes and data series in 3D charts.
OBJECTTYPE_WALL, /// Background and side wall in 3D charts.
OBJECTTYPE_FLOOR, /// Floor in 3D charts.
OBJECTTYPE_AXIS, /// Axis line, labels, tick marks.
OBJECTTYPE_AXISTITLE, /// Axis title.
OBJECTTYPE_AXISUNIT, /// Axis unit label.
OBJECTTYPE_MAJORGRIDLINE, /// Axis major grid line.
OBJECTTYPE_MINORGRIDLINE, /// Axis minor grid line.
OBJECTTYPE_LINEARSERIES2D, /// Linear series in 2D line/radarline/scatter charts.
OBJECTTYPE_FILLEDSERIES2D, /// Filled series in 2D bar/area/radararea/bubble/pie/surface charts.
OBJECTTYPE_FILLEDSERIES3D, /// Filled series in 3D charts.
OBJECTTYPE_DATALABEL, /// Labels for data points.
OBJECTTYPE_TRENDLINE, /// Data series trend line.
OBJECTTYPE_TRENDLINELABEL, /// Trend line label.
OBJECTTYPE_ERRORBAR, /// Data series error indicator line.
OBJECTTYPE_SERLINE, /// Data point connector lines.
OBJECTTYPE_LEADERLINE, /// Leader lines between pie slice and data label.
OBJECTTYPE_DROPLINE, /// Drop lines between data points and X axis.
OBJECTTYPE_HILOLINE, /// High/low lines in line/stock charts.
OBJECTTYPE_UPBAR, /// Up-bar in line/stock charts.
OBJECTTYPE_DOWNBAR, /// Down-bar in line/stock charts.
OBJECTTYPE_DATATABLE /// Data table.
};
// ============================================================================
struct ChartSpaceModel;
struct ObjectFormatterData;
struct PictureOptionsModel;
class ObjectFormatter
{
public:
explicit ObjectFormatter(
const ::oox::core::XmlFilterBase& rFilter,
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >& rxChartDoc,
const ChartSpaceModel& rChartSpace );
~ObjectFormatter();
/** Sets the maximum series index used for color cycling/fading. */
void setMaxSeriesIndex( sal_Int32 nMaxSeriesIdx );
/** Returns the current maximum series index used for color cycling/fading. */
sal_Int32 getMaxSeriesIndex() const;
/** Sets frame formatting properties to the passed property set. */
void convertFrameFormatting(
PropertySet& rPropSet,
const ModelRef< Shape >& rxShapeProp,
ObjectType eObjType,
sal_Int32 nSeriesIdx = -1 );
/** Sets frame formatting properties to the passed property set. */
void convertFrameFormatting(
PropertySet& rPropSet,
const ModelRef< Shape >& rxShapeProp,
const PictureOptionsModel& rPicOptions,
ObjectType eObjType,
sal_Int32 nSeriesIdx = -1 );
/** Sets text formatting properties to the passed property set. */
void convertTextFormatting(
PropertySet& rPropSet,
const ModelRef< TextBody >& rxTextProp,
ObjectType eObjType );
/** Sets frame/text formatting properties to the passed property set. */
void convertFormatting(
PropertySet& rPropSet,
const ModelRef< Shape >& rxShapeProp,
const ModelRef< TextBody >& rxTextProp,
ObjectType eObjType );
/** Sets text formatting properties to the passed property set. */
void convertTextFormatting(
PropertySet& rPropSet,
const TextCharacterProperties& rTextProps,
ObjectType eObjType );
/** Sets text rotation properties to the passed property set. */
void convertTextRotation(
PropertySet& rPropSet,
const ModelRef< TextBody >& rxTextProp,
bool bSupportsStacked );
/** Sets number format properties to the passed property set. */
void convertNumberFormat(
PropertySet& rPropSet,
const NumberFormat& rNumberFormat,
bool bPercentFormat = false );
/** Sets automatic line properties to the passed property set. */
void convertAutomaticLine(
PropertySet& rPropSet,
ObjectType eObjType,
sal_Int32 nSeriesIdx = -1 );
/** Sets automatic fill properties to the passed property set. */
void convertAutomaticFill(
PropertySet& rPropSet,
ObjectType eObjType,
sal_Int32 nSeriesIdx = -1 );
/** Returns true, if the passed shape properties have automatic line mode. */
static bool isAutomaticLine( const ModelRef< Shape >& rxShapeProp );
/** Returns true, if the passed shape properties have automatic fill mode. */
static bool isAutomaticFill( const ModelRef< Shape >& rxShapeProp );
private:
::boost::shared_ptr< ObjectFormatterData > mxData;
};
// ============================================================================
} // namespace chart
} // namespace drawingml
} // namespace oox
#endif