| /************************************************************** |
| * |
| * 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 _CHART2_VAXIS_PROPERTIES_HXX |
| #define _CHART2_VAXIS_PROPERTIES_HXX |
| |
| #include "TickmarkProperties.hxx" |
| #include "PlottingPositionHelper.hxx" |
| #include "LabelAlignment.hxx" |
| #include "ExplicitCategoriesProvider.hxx" |
| |
| #include <com/sun/star/chart/ChartAxisLabelPosition.hpp> |
| #include <com/sun/star/chart/ChartAxisMarkPosition.hpp> |
| #include <com/sun/star/chart/ChartAxisPosition.hpp> |
| #include <com/sun/star/chart2/XAxis.hpp> |
| #include <com/sun/star/chart2/AxisType.hpp> |
| #include <com/sun/star/chart2/data/XTextualDataSequence.hpp> |
| #include <com/sun/star/awt/Rectangle.hpp> |
| #include <com/sun/star/awt/Size.hpp> |
| #include <com/sun/star/drawing/TextVerticalAdjust.hpp> |
| #include <com/sun/star/drawing/TextHorizontalAdjust.hpp> |
| #include <com/sun/star/lang/Locale.hpp> |
| |
| #include <vector> |
| |
| //............................................................................. |
| namespace chart |
| { |
| //............................................................................. |
| |
| //----------------------------------------------------------------------------- |
| /** |
| */ |
| |
| //These properties describe how a couple of labels are arranged one to another. |
| //The couple can contain all labels for all tickmark depth or just the labels for one single depth or |
| //the labels from an coherent range of tick depths (e.g. the major and first minor tickmarks should be handled together). |
| //... only allow side by side for different tick depth |
| enum AxisLabelStaggering |
| { |
| SIDE_BY_SIDE |
| , STAGGER_EVEN |
| , STAGGER_ODD |
| , STAGGER_AUTO |
| }; |
| |
| struct AxisLabelProperties |
| { |
| AxisLabelProperties(); |
| |
| ::com::sun::star::awt::Size m_aFontReferenceSize;//reference size to calculate the font height |
| ::com::sun::star::awt::Rectangle m_aMaximumSpaceForLabels;//Labels need to be clipped in order to fit into this rectangle |
| |
| sal_Int32 nNumberFormatKey; |
| |
| AxisLabelStaggering eStaggering; |
| |
| sal_Bool bLineBreakAllowed; |
| sal_Bool bOverlapAllowed; |
| |
| sal_Bool bStackCharacters; |
| double fRotationAngleDegree; |
| |
| sal_Int32 nRhythm; //show only each nth label with n==nRhythm |
| bool bRhythmIsFix; //states wether the given rhythm is fix or may be changed |
| |
| //methods: |
| void init( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::chart2::XAxis >& xAxisModel ); |
| |
| sal_Bool getIsStaggered() const; |
| }; |
| |
| struct AxisProperties |
| { |
| ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis > m_xAxisModel; |
| |
| sal_Int32 m_nDimensionIndex; |
| bool m_bIsMainAxis;//not secondary axis |
| bool m_bSwapXAndY; |
| |
| ::com::sun::star::chart::ChartAxisPosition m_eCrossoverType; |
| ::com::sun::star::chart::ChartAxisLabelPosition m_eLabelPos; |
| ::com::sun::star::chart::ChartAxisMarkPosition m_eTickmarkPos; |
| |
| double* m_pfMainLinePositionAtOtherAxis; |
| double* m_pfExrtaLinePositionAtOtherAxis; |
| |
| bool m_bCrossingAxisHasReverseDirection; |
| bool m_bCrossingAxisIsCategoryAxes; |
| |
| //this direction is used to indicate in which direction the labels are to be drawn |
| double m_fLabelDirectionSign; |
| //this direction is used to indicate in which direction inner tickmarks are to be drawn |
| double m_fInnerDirectionSign; |
| LabelAlignment m_aLabelAlignment; |
| sal_Bool m_bDisplayLabels; |
| |
| sal_Int32 m_nNumberFormatKey; |
| |
| /* |
| 0: no tickmarks 1: inner tickmarks |
| 2: outer tickmarks 3: inner and outer tickmarks |
| */ |
| sal_Int32 m_nMajorTickmarks; |
| sal_Int32 m_nMinorTickmarks; |
| ::std::vector<TickmarkProperties> m_aTickmarkPropertiesList; |
| |
| VLineProperties m_aLineProperties; |
| |
| //for category axes -> |
| sal_Int32 m_nAxisType;//REALNUMBER, CATEGORY etc. type ::com::sun::star::chart2::AxisType |
| bool m_bComplexCategories; |
| ExplicitCategoriesProvider* m_pExplicitCategoriesProvider;/*no ownership here*/ |
| ::com::sun::star::uno::Reference< |
| ::com::sun::star::chart2::data::XTextualDataSequence > |
| m_xAxisTextProvider; //for categries or series names |
| //<- category axes |
| |
| //methods: |
| |
| AxisProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxisModel |
| , ExplicitCategoriesProvider* pExplicitCategoriesProvider ); |
| AxisProperties( const AxisProperties& rAxisProperties ); |
| virtual ~AxisProperties(); |
| virtual void init(bool bCartesian=false);//init from model data (m_xAxisModel) |
| |
| void initAxisPositioning( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xAxisProp ); |
| |
| static TickmarkProperties getBiggestTickmarkProperties(); |
| TickmarkProperties makeTickmarkPropertiesForComplexCategories( sal_Int32 nTickLength, sal_Int32 nTickStartDistanceToAxis, sal_Int32 nTextLevel ) const; |
| |
| private: |
| AxisProperties(); |
| |
| protected: |
| virtual TickmarkProperties makeTickmarkProperties( sal_Int32 nDepth ) const; |
| VLineProperties makeLinePropertiesForDepth( sal_Int32 nDepth ) const; |
| }; |
| |
| //............................................................................. |
| } //namespace chart |
| //............................................................................. |
| #endif |