/************************************************************** * * 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_VIEW_DATASERIES_HXX #define _CHART2_VIEW_DATASERIES_HXX #include "PropertyMapper.hxx" #include //for auto_ptr #include #include #include #include #include #include #include #include #include #include #include #include //............................................................................. namespace chart { //............................................................................. //----------------------------------------------------------------------------- /** */ class VDataSequence { public: void init( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xModel ); bool is() const; void clear(); double getValue( sal_Int32 index ) const; sal_Int32 detectNumberFormatKey( sal_Int32 index ) const; sal_Int32 getLength() const; ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > Model; mutable ::com::sun::star::uno::Sequence< double > Doubles; }; class VDataSeries { public: VDataSeries( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries >& xDataSeries ); virtual ~VDataSeries(); ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > getModel() const; void setCategoryXAxis(); void setXValues( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValues ); void setXValuesIfNone( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValues ); void setParticle( const rtl::OUString& rSeriesParticle ); void setGlobalSeriesIndex( sal_Int32 nGlobalSeriesIndex ); void setPageReferenceSize( const ::com::sun::star::awt::Size & rPageRefSize ); sal_Int32 getTotalPointCount() const; double getXValue( sal_Int32 index ) const; double getYValue( sal_Int32 index ) const; double getY_Min( sal_Int32 index ) const; double getY_Max( sal_Int32 index ) const; double getY_First( sal_Int32 index ) const; double getY_Last( sal_Int32 index ) const; double getBubble_Size( sal_Int32 index ) const; double getMinimumofAllDifferentYValues( sal_Int32 index ) const; double getMaximumofAllDifferentYValues( sal_Int32 index ) const; ::com::sun::star::uno::Sequence< double > getAllX() const; ::com::sun::star::uno::Sequence< double > getAllY() const; double getYMeanValue() const; bool hasExplicitNumberFormat( sal_Int32 nPointIndex, bool bForPercentage ) const; sal_Int32 getExplicitNumberFormat( sal_Int32 nPointIndex, bool bForPercentage ) const; sal_Int32 detectNumberFormatKey( sal_Int32 nPointIndex ) const; bool shouldLabelNumberFormatKeyBeDetectedFromYAxis() const; sal_Int32 getLabelPlacement( sal_Int32 nPointIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartType >& xChartType , sal_Int32 nDimensionCount, sal_Bool bSwapXAndY ) const; ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getPropertiesOfPoint( sal_Int32 index ) const; ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getPropertiesOfSeries() const; ::com::sun::star::chart2::Symbol* getSymbolProperties( sal_Int32 index ) const; ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getYErrorBarProperties( sal_Int32 index ) const; bool hasPointOwnColor( sal_Int32 index ) const; ::com::sun::star::chart2::StackingDirection getStackingDirection() const; sal_Int32 getAttachedAxisIndex() const; void setAttachedAxisIndex( sal_Int32 nAttachedAxisIndex ); void doSortByXValues(); void setConnectBars( sal_Bool bConnectBars ); sal_Bool getConnectBars() const; void setGroupBarsPerAxis( sal_Bool bGroupBarsPerAxis ); sal_Bool getGroupBarsPerAxis() const; void setStartingAngle( sal_Int32 nStartingAngle ); sal_Int32 getStartingAngle() const; void setRoleOfSequenceForDataLabelNumberFormatDetection( const rtl::OUString& rRole ); //this is only temporarily here for area chart: ::com::sun::star::drawing::PolyPolygonShape3D m_aPolyPolygonShape3D; sal_Int32 m_nPolygonIndex; double m_fLogicMinX; double m_fLogicMaxX; // //this is here for deep stacking: double m_fLogicZPos;//from 0 to series count -1 // rtl::OUString getCID() const; rtl::OUString getSeriesParticle() const; rtl::OUString getPointCID_Stub() const; rtl::OUString getErrorBarsCID() const; rtl::OUString getLabelsCID() const; rtl::OUString getLabelCID_Stub() const; rtl::OUString getDataCurveCID( sal_Int32 nCurveIndex, bool bAverageLine ) const; ::com::sun::star::chart2::DataPointLabel* getDataPointLabelIfLabel( sal_Int32 index ) const; bool getTextLabelMultiPropertyLists( sal_Int32 index, tNameSequence*& pPropNames, tAnySequence*& pPropValues ) const; rtl::OUString getDataCurveEquationCID( sal_Int32 nCurveIndex ) const; bool isAttributedDataPoint( sal_Int32 index ) const; bool isVaryColorsByPoint() const; void releaseShapes(); void setMissingValueTreatment( sal_Int32 nMissingValueTreatment ); sal_Int32 getMissingValueTreatment() const; private: //methods ::com::sun::star::chart2::DataPointLabel* getDataPointLabel( sal_Int32 index ) const; void adaptPointCache( sal_Int32 nNewPointIndex ) const; public: //member ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xGroupShape; ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xLabelsGroupShape; ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xErrorBarsGroupShape; //the following group shapes will be created as children of m_xGroupShape on demand //they can be used to assure that some parts of a series shape are always in front of others (e.g. symbols in front of lines) ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xFrontSubGroupShape; ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xBackSubGroupShape; private: //member ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > m_xDataSeries; ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > > m_aDataSequences; //all points given by the model data (here are not only the visible points meant) sal_Int32 m_nPointCount; VDataSequence m_aValues_X; VDataSequence m_aValues_Y; VDataSequence m_aValues_Z; VDataSequence m_aValues_Y_Min; VDataSequence m_aValues_Y_Max; VDataSequence m_aValues_Y_First; VDataSequence m_aValues_Y_Last; VDataSequence m_aValues_Bubble_Size; VDataSequence* m_pValueSequenceForDataLabelNumberFormatDetection; mutable double m_fYMeanValue; ::com::sun::star::uno::Sequence< sal_Int32 > m_aAttributedDataPointIndexList; ::com::sun::star::chart2::StackingDirection m_eStackingDirection; sal_Int32 m_nAxisIndex;//indicates whether this is attached to a main or secondary axis sal_Bool m_bConnectBars; sal_Bool m_bGroupBarsPerAxis; sal_Int32 m_nStartingAngle; rtl::OUString m_aSeriesParticle; rtl::OUString m_aCID; rtl::OUString m_aPointCID_Stub; rtl::OUString m_aLabelCID_Stub; sal_Int32 m_nGlobalSeriesIndex; //some cached values for data labels as they are very expensive mutable ::std::auto_ptr< ::com::sun::star::chart2::DataPointLabel > m_apLabel_Series; mutable ::std::auto_ptr< tNameSequence > m_apLabelPropNames_Series; mutable ::std::auto_ptr< tAnySequence > m_apLabelPropValues_Series; mutable ::std::auto_ptr< ::com::sun::star::chart2::Symbol > m_apSymbolProperties_Series; mutable ::std::auto_ptr< ::com::sun::star::chart2::DataPointLabel > m_apLabel_AttributedPoint; mutable ::std::auto_ptr< tNameSequence > m_apLabelPropNames_AttributedPoint; mutable ::std::auto_ptr< tAnySequence > m_apLabelPropValues_AttributedPoint; mutable ::std::auto_ptr< ::com::sun::star::chart2::Symbol > m_apSymbolProperties_AttributedPoint; mutable ::std::auto_ptr< ::com::sun::star::chart2::Symbol > m_apSymbolProperties_InvisibleSymbolForSelection; mutable sal_Int32 m_nCurrentAttributedPoint; ::com::sun::star::awt::Size m_aReferenceSize; // sal_Int32 m_nMissingValueTreatment; bool m_bAllowPercentValueInDataLabel; }; //............................................................................. } //namespace chart //............................................................................. #endif