[Libreoffice-commits] core.git: Branch 'feature/perfwork' - 10 commits - chart2/source offapi/com

Kohei Yoshida kohei.yoshida at collabora.com
Thu Oct 9 13:32:49 PDT 2014


 chart2/source/view/axes/Tickmarks.cxx        |   20 +--
 chart2/source/view/axes/Tickmarks.hxx        |    6 -
 chart2/source/view/axes/VAxisBase.cxx        |    6 -
 chart2/source/view/axes/VAxisBase.hxx        |    2 
 chart2/source/view/axes/VAxisProperties.cxx  |   15 --
 chart2/source/view/axes/VAxisProperties.hxx  |   17 +--
 chart2/source/view/axes/VCartesianAxis.cxx   |  138 +++++++++++----------------
 chart2/source/view/axes/VCartesianAxis.hxx   |   35 +++++-
 chart2/source/view/axes/VPolarRadiusAxis.cxx |    2 
 chart2/source/view/diagram/VDiagram.cxx      |    2 
 chart2/source/view/inc/PlotterBase.hxx       |    2 
 chart2/source/view/inc/VDiagram.hxx          |    5 
 offapi/com/sun/star/chart2/XScaling.idl      |   29 +++--
 13 files changed, 144 insertions(+), 135 deletions(-)

New commits:
commit cc243d4bbd30d3d41d085fddbe12ff3391df8095
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Oct 9 16:30:12 2014 -0400

    B2DVector supports operator!=.  Let's use it.
    
    Change-Id: Iecf58e0f24909ec2fd2780a5f4b219105c7c4b47

diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index b6c95ad..1c91a10 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -1258,19 +1258,15 @@ TickFactory2D* VCartesianAxis::createTickFactory2D()
 
 void lcl_hideIdenticalScreenValues( TickIter& rTickIter )
 {
-    TickInfo* pPreviousTickInfo = rTickIter.firstInfo();
-    if(!pPreviousTickInfo)
+    TickInfo* pPrevTickInfo = rTickIter.firstInfo();
+    if (!pPrevTickInfo)
         return;
-    pPreviousTickInfo->bPaintIt = true;
+
+    pPrevTickInfo->bPaintIt = true;
     for( TickInfo* pTickInfo = rTickIter.nextInfo(); pTickInfo; pTickInfo = rTickIter.nextInfo())
     {
-        pTickInfo->bPaintIt =
-            ( static_cast<sal_Int32>(pTickInfo->aTickScreenPosition.getX())
-            != static_cast<sal_Int32>(pPreviousTickInfo->aTickScreenPosition.getX()) )
-            ||
-            ( static_cast<sal_Int32>(pTickInfo->aTickScreenPosition.getY())
-            != static_cast<sal_Int32>(pPreviousTickInfo->aTickScreenPosition.getY()) );
-        pPreviousTickInfo = pTickInfo;
+        pTickInfo->bPaintIt = (pTickInfo->aTickScreenPosition != pPrevTickInfo->aTickScreenPosition);
+        pPrevTickInfo = pTickInfo;
     }
 }
 
commit 31a62d4e8d745493000544a35e3efe51e77aa498
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Oct 9 12:33:15 2014 -0400

    Make it clear which bounding rectangle it returns & const.
    
    Change-Id: I9c8080225cfbe0f38133ce2503bd2d0c1d0f5e13

diff --git a/chart2/source/view/diagram/VDiagram.cxx b/chart2/source/view/diagram/VDiagram.cxx
index 30913e2..bdbc3dd 100644
--- a/chart2/source/view/diagram/VDiagram.cxx
+++ b/chart2/source/view/diagram/VDiagram.cxx
@@ -675,7 +675,7 @@ void VDiagram::createShapes_3d()
     adjustPosAndSize_3d( m_aAvailablePosIncludingAxes, m_aAvailableSizeIncludingAxes );
 }
 
-::basegfx::B2IRectangle VDiagram::getCurrentRectangle()
+basegfx::B2IRectangle VDiagram::getCurrentRectangle() const
 {
     return BaseGFXHelper::makeRectangle(m_aCurrentPosWithoutAxes,m_aCurrentSizeWithoutAxes);
 }
diff --git a/chart2/source/view/inc/VDiagram.hxx b/chart2/source/view/inc/VDiagram.hxx
index ecf6cf2..a57cc14 100644
--- a/chart2/source/view/inc/VDiagram.hxx
+++ b/chart2/source/view/inc/VDiagram.hxx
@@ -54,7 +54,10 @@ public: //methods
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >
             getCoordinateRegion() { return css::uno::Reference<css::drawing::XShapes>( m_xCoordinateRegionShape, css::uno::UNO_QUERY );}
 
-    ::basegfx::B2IRectangle    getCurrentRectangle();
+    /**
+     * Get current bounding rectangle for the diagram without axes.
+     */
+    basegfx::B2IRectangle getCurrentRectangle() const;
 
     void    reduceToMimimumSize();
 
commit ea9b2e8aaa4376ec8357a851edf99605ed01e06d
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Oct 9 10:27:26 2014 -0400

    Improve method descriptions.
    
    Change-Id: I25074578607dedaec9689dff9a6bb9c2fa7be56b

diff --git a/offapi/com/sun/star/chart2/XScaling.idl b/offapi/com/sun/star/chart2/XScaling.idl
index 7d65c84..0daf41b 100644
--- a/offapi/com/sun/star/chart2/XScaling.idl
+++ b/offapi/com/sun/star/chart2/XScaling.idl
@@ -28,16 +28,27 @@ module com {  module sun {  module star {  module chart2 {
 
 interface XScaling : ::com::sun::star::uno::XInterface
 {
-    /** needs to keep relative ordering
-    */
-    double doScaling([in] double value);
+    /**
+     * Given a numeric value, return the scaled value that conforms
+     * to a predefined scaling rule.  For instance, for linear
+     * scaling, given a x value, the method may return a y value as
+     * defined by y = Ax + B for predefined values of A and B.
+     *
+     * @param value input value from which to calculate the scaled
+     *              value.
+     *
+     * @return scaled value based on a predefined scaling rule.
+     */
+    double doScaling( [in] double value );
+
+    /**
+     * Get an interface object that conforms to a scaling rule that
+     * is the reverse of the original scaling rule.
+     *
+     * @return internface object that represents the reversed
+     *         scaling rule.
+     */
     com::sun::star::chart2::XScaling getInverseScaling();
-
-    //maybe provide correction for Min/Max
-    //double getMinimum(); ?adjust <-> min/max may not exist
-    //double getMaximum();
-
-    //... or better/additionally?: provide default values for Min&Max
 };
 
 
commit 304bf5d84d93d1a4785f1dd092a2ab4932a2eb04
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Oct 8 17:12:18 2014 -0400

    xInverseScaling is set but not used.  Remove it.
    
    Change-Id: I1d185df4b14e152f4da9dfdbc2e71504c2cb1f3b

diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 7524bd7..b6c95ad 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -608,10 +608,6 @@ bool VCartesianAxis::createTextShapes(
                      , TickFactory2D* pTickFactory
                      , sal_Int32 nScreenDistanceBetweenTicks )
 {
-    uno::Reference<chart2::XScaling> xInverseScaling(NULL);
-    if( m_aScale.Scaling.is() )
-        xInverseScaling = m_aScale.Scaling->getInverseScaling();
-
     FixedNumberFormatter aFixedNumberFormatter(
                 m_xNumberFormatsSupplier, rAxisLabelProperties.nNumberFormatKey );
 
commit 25b1deb0b6ad5d90229109e6e9e05d311917202a
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Oct 8 17:09:23 2014 -0400

    Re-organize method / class descriptions.
    
    Change-Id: Ib7fe33581c3aec2f58f8a16a07215b69080e0a51

diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 6448c98..7524bd7 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -367,9 +367,13 @@ bool lcl_hasWordBreak( const Reference< drawing::XShape >& rxShape )
     return false;
 }
 
+/**
+ * Iterate through only the first 2 and last 2 tick info items, and the tick
+ * that has the longest text (in terms of character length) in case it's not
+ * in the first or last 2 items.
+ */
 class MaxLabelTickIter : public TickIter
 {
-    //iterate over first two and last two labels and the longest label
 public:
     MaxLabelTickIter( ::std::vector< TickInfo >& rTickInfoVector
             , sal_Int32 nLongestLabelIndex );
@@ -604,10 +608,6 @@ bool VCartesianAxis::createTextShapes(
                      , TickFactory2D* pTickFactory
                      , sal_Int32 nScreenDistanceBetweenTicks )
 {
-    //returns true if the text shapes have been created successfully
-    //otherwise false - in this case the AxisLabelProperties have changed
-    //and contain new instructions for the next try for text shape creation
-
     uno::Reference<chart2::XScaling> xInverseScaling(NULL);
     if( m_aScale.Scaling.is() )
         xInverseScaling = m_aScale.Scaling->getInverseScaling();
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index 41d23b6..22a52e9 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -99,6 +99,12 @@ public:
     };
 
 protected: //methods
+    /**
+     * @return true if the text shapes have been successfully created,
+     *         otherwise false.  Returning false means the AxisLabelProperties
+     *         have changed during the call, and the caller needs to call this
+     *         method once again to get the text shapes created.
+     */
     bool    createTextShapes( const ::com::sun::star::uno::Reference<
                        ::com::sun::star::drawing::XShapes >& xTarget
                      , TickIter& rTickIter
commit 2bcf1c4edd72881a8f170d3263fa22d24b21672f
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Oct 7 22:27:53 2014 -0400

    Make this data member const, as it never gets modified once constructed.
    
    Change-Id: Ic01fd0591bbb524b4a6a0ec1dfe448e33f4d6b18

diff --git a/chart2/source/view/inc/PlotterBase.hxx b/chart2/source/view/inc/PlotterBase.hxx
index 4cc8b6c..4395c78 100644
--- a/chart2/source/view/inc/PlotterBase.hxx
+++ b/chart2/source/view/inc/PlotterBase.hxx
@@ -82,7 +82,7 @@ protected: //member
     AbstractShapeFactory* m_pShapeFactory;
     OUString   m_aCID;
 
-    sal_Int32                                           m_nDimension;
+    const sal_Int32 m_nDimension;
     // needs to be created and deleted by the derived class
     PlottingPositionHelper*                             m_pPosHelper;
 };
commit 9c4e3c32101068159d1ee4799ff906a80bba0381
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Oct 7 22:24:46 2014 -0400

    TickFactory_2D -> TickFactory2D.
    
    For consistent naming.
    
    Change-Id: Ic94681d4d18c0330ea5a8393c1b3d863c81e1ea8

diff --git a/chart2/source/view/axes/Tickmarks.cxx b/chart2/source/view/axes/Tickmarks.cxx
index 7dad991..0ab95cb 100644
--- a/chart2/source/view/axes/Tickmarks.cxx
+++ b/chart2/source/view/axes/Tickmarks.cxx
@@ -135,7 +135,7 @@ void TickFactory::getAllTicksShifted( ::std::vector< ::std::vector< TickInfo > >
 }
 
 // ___TickFactory_2D___
-TickFactory_2D::TickFactory_2D(
+TickFactory2D::TickFactory2D(
           const ExplicitScaleData& rScale, const ExplicitIncrementData& rIncrement
           //, double fStrech_SceneToScreen, double fOffset_SceneToScreen )
           , const B2DVector& rStartScreenPos, const B2DVector& rEndScreenPos
@@ -164,21 +164,21 @@ TickFactory_2D::TickFactory_2D(
     }
 }
 
-TickFactory_2D::~TickFactory_2D()
+TickFactory2D::~TickFactory2D()
 {
 }
 
-bool TickFactory_2D::isHorizontalAxis() const
+bool TickFactory2D::isHorizontalAxis() const
 {
     return ( m_aAxisStartScreenPosition2D.getY() == m_aAxisEndScreenPosition2D.getY() );
 }
-bool TickFactory_2D::isVerticalAxis() const
+bool TickFactory2D::isVerticalAxis() const
 {
     return ( m_aAxisStartScreenPosition2D.getX() == m_aAxisEndScreenPosition2D.getX() );
 }
 
 //static
-sal_Int32 TickFactory_2D::getTickScreenDistance( TickIter& rIter )
+sal_Int32 TickFactory2D::getTickScreenDistance( TickIter& rIter )
 {
     //return the positive distance between the two first tickmarks in screen values
     //if there are less than two tickmarks -1 is returned
@@ -191,7 +191,7 @@ sal_Int32 TickFactory_2D::getTickScreenDistance( TickIter& rIter )
     return pFirstTickInfo->getScreenDistanceBetweenTicks( *pSecondTickInfo );
 }
 
-B2DVector TickFactory_2D::getTickScreenPosition2D( double fScaledLogicTickValue ) const
+B2DVector TickFactory2D::getTickScreenPosition2D( double fScaledLogicTickValue ) const
 {
     B2DVector aRet(m_aAxisStartScreenPosition2D);
     aRet += (m_aAxisEndScreenPosition2D-m_aAxisStartScreenPosition2D)
@@ -199,7 +199,7 @@ B2DVector TickFactory_2D::getTickScreenPosition2D( double fScaledLogicTickValue
     return aRet;
 }
 
-void TickFactory_2D::addPointSequenceForTickLine( drawing::PointSequenceSequence& rPoints
+void TickFactory2D::addPointSequenceForTickLine( drawing::PointSequenceSequence& rPoints
                                 , sal_Int32 nSequenceIndex
                                 , double fScaledLogicTickValue, double fInnerDirectionSign
                                 , const TickmarkProperties& rTickmarkProperties
@@ -228,7 +228,7 @@ void TickFactory_2D::addPointSequenceForTickLine( drawing::PointSequenceSequence
     rPoints[nSequenceIndex][1].Y = static_cast<sal_Int32>(aEnd.getY());
 }
 
-B2DVector TickFactory_2D::getDistanceAxisTickToText( const AxisProperties& rAxisProperties, bool bIncludeFarAwayDistanceIfSo, bool bIncludeSpaceBetweenTickAndText ) const
+B2DVector TickFactory2D::getDistanceAxisTickToText( const AxisProperties& rAxisProperties, bool bIncludeFarAwayDistanceIfSo, bool bIncludeSpaceBetweenTickAndText ) const
 {
     bool bFarAwayLabels = false;
     if( ::com::sun::star::chart::ChartAxisLabelPosition_OUTSIDE_START == rAxisProperties.m_eLabelPos
@@ -281,7 +281,7 @@ B2DVector TickFactory_2D::getDistanceAxisTickToText( const AxisProperties& rAxis
     return aLabelDirection;
 }
 
-void TickFactory_2D::createPointSequenceForAxisMainLine( drawing::PointSequenceSequence& rPoints ) const
+void TickFactory2D::createPointSequenceForAxisMainLine( drawing::PointSequenceSequence& rPoints ) const
 {
     rPoints[0].realloc(2);
     rPoints[0][0].X = static_cast<sal_Int32>(m_aAxisStartScreenPosition2D.getX());
@@ -290,7 +290,7 @@ void TickFactory_2D::createPointSequenceForAxisMainLine( drawing::PointSequenceS
     rPoints[0][1].Y = static_cast<sal_Int32>(m_aAxisEndScreenPosition2D.getY());
 }
 
-void TickFactory_2D::updateScreenValues( ::std::vector< ::std::vector< TickInfo > >& rAllTickInfos ) const
+void TickFactory2D::updateScreenValues( ::std::vector< ::std::vector< TickInfo > >& rAllTickInfos ) const
 {
     //get the transformed screen values for all tickmarks in rAllTickInfos
     ::std::vector< ::std::vector< TickInfo > >::iterator aDepthIter       = rAllTickInfos.begin();
diff --git a/chart2/source/view/axes/Tickmarks.hxx b/chart2/source/view/axes/Tickmarks.hxx
index 4952e64..411b80f 100644
--- a/chart2/source/view/axes/Tickmarks.hxx
+++ b/chart2/source/view/axes/Tickmarks.hxx
@@ -103,16 +103,16 @@ protected: //member
     double    m_fScaledVisibleMax;
 };
 
-class TickFactory_2D : public TickFactory
+class TickFactory2D : public TickFactory
 {
 public:
-    TickFactory_2D(
+    TickFactory2D(
         const ExplicitScaleData& rScale
         , const ExplicitIncrementData& rIncrement
         , const ::basegfx::B2DVector& rStartScreenPos, const ::basegfx::B2DVector& rEndScreenPos
         , const ::basegfx::B2DVector& rAxisLineToLabelLineShift );
         //, double fStrech_SceneToScreen, double fOffset_SceneToScreen );
-    virtual ~TickFactory_2D();
+    virtual ~TickFactory2D();
 
     static sal_Int32    getTickScreenDistance( TickIter& rIter );
 
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 2c09f8c..6448c98 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -601,7 +601,7 @@ bool VCartesianAxis::createTextShapes(
                        const Reference< drawing::XShapes >& xTarget
                      , TickIter& rTickIter
                      , AxisLabelProperties& rAxisLabelProperties
-                     , TickFactory_2D* pTickFactory
+                     , TickFactory2D* pTickFactory
                      , sal_Int32 nScreenDistanceBetweenTicks )
 {
     //returns true if the text shapes have been created successfully
@@ -1249,7 +1249,7 @@ TickFactory* VCartesianAxis::createTickFactory()
     return createTickFactory2D();
 }
 
-TickFactory_2D* VCartesianAxis::createTickFactory2D()
+TickFactory2D* VCartesianAxis::createTickFactory2D()
 {
     B2DVector aStart, aEnd;
     get2DAxisMainLine( aStart, aEnd, getAxisIntersectionValue() );
@@ -1257,7 +1257,7 @@ TickFactory_2D* VCartesianAxis::createTickFactory2D()
     B2DVector aLabelLineStart, aLabelLineEnd;
     get2DAxisMainLine( aLabelLineStart, aLabelLineEnd, getLabelLineIntersectionValue() );
 
-    return new TickFactory_2D( m_aScale, m_aIncrement, aStart, aEnd, aLabelLineStart-aStart );
+    return new TickFactory2D( m_aScale, m_aIncrement, aStart, aEnd, aLabelLineStart-aStart );
 }
 
 void lcl_hideIdenticalScreenValues( TickIter& rTickIter )
@@ -1327,7 +1327,7 @@ sal_Int32 VCartesianAxis::estimateMaximumAutoMainIncrementCount()
     return nRet;
 }
 
-void VCartesianAxis::doStaggeringOfLabels( const AxisLabelProperties& rAxisLabelProperties, TickFactory_2D* pTickFactory2D )
+void VCartesianAxis::doStaggeringOfLabels( const AxisLabelProperties& rAxisLabelProperties, TickFactory2D* pTickFactory2D )
 {
     if( !pTickFactory2D )
         return;
@@ -1376,8 +1376,8 @@ void VCartesianAxis::createLabels()
     if (!m_aAxisProperties.m_bDisplayLabels)
         return;
 
-    boost::scoped_ptr< TickFactory_2D > apTickFactory2D( this->createTickFactory2D() );
-    TickFactory_2D* pTickFactory2D = apTickFactory2D.get();
+    boost::scoped_ptr< TickFactory2D > apTickFactory2D( this->createTickFactory2D() );
+    TickFactory2D* pTickFactory2D = apTickFactory2D.get();
     if( !pTickFactory2D )
         return;
 
@@ -1398,7 +1398,7 @@ void VCartesianAxis::createLabels()
         {
             if(nTextLevel==0)
             {
-                nScreenDistanceBetweenTicks = TickFactory_2D::getTickScreenDistance( *apTickIter.get() );
+                nScreenDistanceBetweenTicks = TickFactory2D::getTickScreenDistance( *apTickIter.get() );
                 if( nTextLevelCount>1 )
                     nScreenDistanceBetweenTicks*=2; //the above used tick iter does contain also the sub ticks -> thus the given distance is only the half
             }
@@ -1430,8 +1430,8 @@ void VCartesianAxis::createMaximumLabels()
     if (!m_aAxisProperties.m_bDisplayLabels)
         return;
 
-    boost::scoped_ptr< TickFactory_2D > apTickFactory2D( this->createTickFactory2D() );
-    TickFactory_2D* pTickFactory2D = apTickFactory2D.get();
+    boost::scoped_ptr< TickFactory2D > apTickFactory2D( this->createTickFactory2D() );
+    TickFactory2D* pTickFactory2D = apTickFactory2D.get();
     if( !pTickFactory2D )
         return;
 
@@ -1467,8 +1467,8 @@ void VCartesianAxis::updatePositions()
     if (!m_aAxisProperties.m_bDisplayLabels)
         return;
 
-    boost::scoped_ptr< TickFactory_2D > apTickFactory2D( this->createTickFactory2D() );
-    TickFactory_2D* pTickFactory2D = apTickFactory2D.get();
+    boost::scoped_ptr< TickFactory2D > apTickFactory2D( this->createTickFactory2D() );
+    TickFactory2D* pTickFactory2D = apTickFactory2D.get();
     if( !pTickFactory2D )
         return;
 
@@ -1532,7 +1532,7 @@ void VCartesianAxis::updatePositions()
     doStaggeringOfLabels( m_aAxisLabelProperties, pTickFactory2D );
 }
 
-void VCartesianAxis::createTickMarkLineShapes( ::std::vector< TickInfo >& rTickInfos, const TickmarkProperties& rTickmarkProperties, TickFactory_2D& rTickFactory2D, bool bOnlyAtLabels )
+void VCartesianAxis::createTickMarkLineShapes( ::std::vector< TickInfo >& rTickInfos, const TickmarkProperties& rTickmarkProperties, TickFactory2D& rTickFactory2D, bool bOnlyAtLabels )
 {
     sal_Int32 nPointCount = rTickInfos.size();
     drawing::PointSequenceSequence aPoints(2*nPointCount);
@@ -1568,8 +1568,8 @@ void VCartesianAxis::createShapes()
     if( !prepareShapeCreation() )
         return;
 
-    boost::scoped_ptr< TickFactory_2D > apTickFactory2D( this->createTickFactory2D() );
-    TickFactory_2D* pTickFactory2D = apTickFactory2D.get();
+    boost::scoped_ptr< TickFactory2D > apTickFactory2D( this->createTickFactory2D() );
+    TickFactory2D* pTickFactory2D = apTickFactory2D.get();
     if( !pTickFactory2D )
         return;
 
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index 2f320f3..41d23b6 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -103,16 +103,16 @@ protected: //methods
                        ::com::sun::star::drawing::XShapes >& xTarget
                      , TickIter& rTickIter
                      , AxisLabelProperties& rAxisLabelProperties
-                     , TickFactory_2D* pTickFactory
+                     , TickFactory2D* pTickFactory
                      , sal_Int32 nScreenDistanceBetweenTicks );
 
-    void    createTickMarkLineShapes( ::std::vector< TickInfo >& rTickInfos, const TickmarkProperties& rTickmarkProperties, TickFactory_2D& rTickFactory2D, bool bOnlyAtLabels );
+    void    createTickMarkLineShapes( ::std::vector< TickInfo >& rTickInfos, const TickmarkProperties& rTickmarkProperties, TickFactory2D& rTickFactory2D, bool bOnlyAtLabels );
 
-    TickFactory_2D* createTickFactory2D();
+    TickFactory2D* createTickFactory2D();
     void    hideIdenticalScreenValues(  ::std::vector< ::std::vector< TickInfo > >& rTickInfos ) const;
 
     void    doStaggeringOfLabels( const AxisLabelProperties& rAxisLabelProperties
-                            , TickFactory_2D* pTickFactory2D );
+                            , TickFactory2D* pTickFactory2D );
     bool    isAutoStaggeringOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties
                             , bool bIsHorizontalAxis, bool bIsVerticalAxis );
     bool    isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis );
commit 3dee8b3877635910aabb3c6a8e008e6b29a1003e
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Oct 7 22:22:54 2014 -0400

    Make thie method consistent with the others.
    
    Change-Id: I028f0dd833cb2307e842805636458f51c71dbd66

diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 1e2aa5c..2c09f8c 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -847,17 +847,22 @@ double VCartesianAxis::getLabelLineIntersectionValue() const
     return getAxisIntersectionValue();
 }
 
-bool VCartesianAxis::getLogicValueWhereExtraLineCrossesOtherAxis( double& fCrossesOtherAxis ) const
+double VCartesianAxis::getExtraLineIntersectionValue() const
 {
+    double fNan;
+    rtl::math::setNan(&fNan);
+
     if( !m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis )
-        return false;
+        return fNan;
+
     double fMin = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMinX() : m_pPosHelper->getLogicMinY();
     double fMax = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMaxX() : m_pPosHelper->getLogicMaxY();
+
     if( *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis <= fMin
         || *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis >= fMax )
-        return false;
-    fCrossesOtherAxis = *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis;
-    return true;
+        return fNan;
+
+    return *m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis;
 }
 
 B2DVector VCartesianAxis::getScreenPosition( double fLogicX, double fLogicY, double fLogicZ ) const
@@ -1640,8 +1645,8 @@ void VCartesianAxis::createShapes()
         //create an additional line at NULL
         if( !AxisHelper::isAxisPositioningEnabled() )
         {
-            double fExtraLineCrossesOtherAxis;
-            if( getLogicValueWhereExtraLineCrossesOtherAxis(fExtraLineCrossesOtherAxis) )
+            double fExtraLineCrossesOtherAxis = getExtraLineIntersectionValue();
+            if (!rtl::math::isNan(fExtraLineCrossesOtherAxis))
             {
                 B2DVector aStart, aEnd;
                 this->get2DAxisMainLine( aStart, aEnd, fExtraLineCrossesOtherAxis );
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index 757fd1a..2f320f3 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -63,7 +63,14 @@ public:
      */
     double getLabelLineIntersectionValue() const;
 
-    bool        getLogicValueWhereExtraLineCrossesOtherAxis( double& fCrossesOtherAxis) const;
+    /**
+     * Get the value at which extra line crosses the other axis.
+     *
+     * @return a NaN if the line doesn't cross the other axis, a non-NaN value
+     *         otherwise.
+     */
+    double getExtraLineIntersectionValue() const;
+
     void        get2DAxisMainLine( ::basegfx::B2DVector& rStart, ::basegfx::B2DVector& rEnd, double fCrossesOtherAxis );
 
     //Layout interface for cartesian axes:
commit 875232373e9b3398c22eecc3fa2a36753c21eeca
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Oct 7 22:13:48 2014 -0400

    Simplify AxisProperties and its surrounding code.
    
    Change-Id: Ie47421d778c2beb8eb8e132532220054f183a5f1

diff --git a/chart2/source/view/axes/VAxisProperties.hxx b/chart2/source/view/axes/VAxisProperties.hxx
index 860aa6a..6ad35c5 100644
--- a/chart2/source/view/axes/VAxisProperties.hxx
+++ b/chart2/source/view/axes/VAxisProperties.hxx
@@ -86,15 +86,15 @@ struct AxisLabelProperties
 
 struct AxisProperties
 {
-    ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis > m_xAxisModel;
+    css::uno::Reference<css::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;
+    css::chart::ChartAxisPosition      m_eCrossoverType;
+    css::chart::ChartAxisLabelPosition m_eLabelPos;
+    css::chart::ChartAxisMarkPosition  m_eTickmarkPos;
 
     boost::optional<double> m_pfMainLinePositionAtOtherAxis;
     boost::optional<double> m_pfExrtaLinePositionAtOtherAxis;
@@ -125,9 +125,7 @@ struct AxisProperties
     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 categories or series names
+    css::uno::Reference<css::chart2::data::XTextualDataSequence> m_xAxisTextProvider; //for categories or series names
     //<- category axes
 
     //methods:
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index ca6ab68..1e2aa5c 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -49,16 +49,14 @@
 #include <basegfx/polygon/b2dpolygonclipper.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 
-namespace chart
-{
 using namespace ::com::sun::star;
-using namespace ::com::sun::star::chart2;
-using namespace ::rtl::math;
-using ::basegfx::B2DVector;
 using ::com::sun::star::uno::Reference;
+using ::basegfx::B2DVector;
 using ::basegfx::B2DPolygon;
 using ::basegfx::B2DPolyPolygon;
 
+namespace chart {
+
 VCartesianAxis::VCartesianAxis( const AxisProperties& rAxisProperties
             , const Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier
             , sal_Int32 nDimensionIndex, sal_Int32 nDimensionCount
@@ -610,7 +608,7 @@ bool VCartesianAxis::createTextShapes(
     //otherwise false - in this case the AxisLabelProperties have changed
     //and contain new instructions for the next try for text shape creation
 
-    Reference< XScaling > xInverseScaling( NULL );
+    uno::Reference<chart2::XScaling> xInverseScaling(NULL);
     if( m_aScale.Scaling.is() )
         xInverseScaling = m_aScale.Scaling->getInverseScaling();
 
@@ -827,37 +825,26 @@ drawing::PointSequenceSequence lcl_makePointSequence( B2DVector& rStart, B2DVect
     return aPoints;
 }
 
-double VCartesianAxis::getLogicValueWhereMainLineCrossesOtherAxis() const
+double VCartesianAxis::getAxisIntersectionValue() const
 {
+    if (m_aAxisProperties.m_pfMainLinePositionAtOtherAxis)
+        return *m_aAxisProperties.m_pfMainLinePositionAtOtherAxis;
+
     double fMin = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMinX() : m_pPosHelper->getLogicMinY();
     double fMax = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMaxX() : m_pPosHelper->getLogicMaxY();
 
-    double fCrossesOtherAxis;
-    if(m_aAxisProperties.m_pfMainLinePositionAtOtherAxis)
-        fCrossesOtherAxis = *m_aAxisProperties.m_pfMainLinePositionAtOtherAxis;
-    else
-    {
-        if( ::com::sun::star::chart::ChartAxisPosition_END == m_aAxisProperties.m_eCrossoverType )
-            fCrossesOtherAxis = fMax;
-        else
-            fCrossesOtherAxis = fMin;
-    }
-    return fCrossesOtherAxis;
+    return (css::chart::ChartAxisPosition_END == m_aAxisProperties.m_eCrossoverType) ? fMax : fMin;
 }
 
-double VCartesianAxis::getLogicValueWhereLabelLineCrossesOtherAxis() const
+double VCartesianAxis::getLabelLineIntersectionValue() const
 {
-    double fMin = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMinX() : m_pPosHelper->getLogicMinY();
-    double fMax = (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMaxX() : m_pPosHelper->getLogicMaxY();
+    if (css::chart::ChartAxisLabelPosition_OUTSIDE_START == m_aAxisProperties.m_eLabelPos)
+        return (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMinX() : m_pPosHelper->getLogicMinY();
 
-    double fCrossesOtherAxis;
-    if( ::com::sun::star::chart::ChartAxisLabelPosition_OUTSIDE_START == m_aAxisProperties.m_eLabelPos )
-        fCrossesOtherAxis = fMin;
-    else if( ::com::sun::star::chart::ChartAxisLabelPosition_OUTSIDE_END == m_aAxisProperties.m_eLabelPos )
-        fCrossesOtherAxis = fMax;
-    else
-        fCrossesOtherAxis = getLogicValueWhereMainLineCrossesOtherAxis();
-    return fCrossesOtherAxis;
+    if (css::chart::ChartAxisLabelPosition_OUTSIDE_END == m_aAxisProperties.m_eLabelPos)
+        return (m_nDimensionIndex==1) ? m_pPosHelper->getLogicMaxX() : m_pPosHelper->getLogicMaxY();
+
+    return getAxisIntersectionValue();
 }
 
 bool VCartesianAxis::getLogicValueWhereExtraLineCrossesOtherAxis( double& fCrossesOtherAxis ) const
@@ -1207,8 +1194,8 @@ void VCartesianAxis::get2DAxisMainLine( B2DVector& rStart, B2DVector& rEnd, doub
                 ( m_aAxisProperties.m_fLabelDirectionSign<0 ) ?
                     LABEL_ALIGN_LEFT :  LABEL_ALIGN_RIGHT;
 
-            if( ( fDeltaY<0 && m_aScale.Orientation == AxisOrientation_REVERSE ) ||
-                ( fDeltaY>0 && m_aScale.Orientation == AxisOrientation_MATHEMATICAL ) )
+            if( ( fDeltaY<0 && m_aScale.Orientation == chart2::AxisOrientation_REVERSE ) ||
+                ( fDeltaY>0 && m_aScale.Orientation == chart2::AxisOrientation_MATHEMATICAL ) )
                 m_aAxisProperties.m_aLabelAlignment =
                     ( m_aAxisProperties.m_aLabelAlignment==LABEL_ALIGN_RIGHT ) ?
                         LABEL_ALIGN_LEFT :  LABEL_ALIGN_RIGHT;
@@ -1225,8 +1212,8 @@ void VCartesianAxis::get2DAxisMainLine( B2DVector& rStart, B2DVector& rEnd, doub
                 ( m_aAxisProperties.m_fLabelDirectionSign<0 ) ?
                     LABEL_ALIGN_LEFT :  LABEL_ALIGN_RIGHT;
 
-            if( ( fDeltaY<0 && m_aScale.Orientation == AxisOrientation_REVERSE ) ||
-                ( fDeltaY>0 && m_aScale.Orientation == AxisOrientation_MATHEMATICAL ) )
+            if( ( fDeltaY<0 && m_aScale.Orientation == chart2::AxisOrientation_REVERSE ) ||
+                ( fDeltaY>0 && m_aScale.Orientation == chart2::AxisOrientation_MATHEMATICAL ) )
                 m_aAxisProperties.m_aLabelAlignment =
                     ( m_aAxisProperties.m_aLabelAlignment==LABEL_ALIGN_RIGHT ) ?
                         LABEL_ALIGN_LEFT :  LABEL_ALIGN_RIGHT;
@@ -1243,8 +1230,8 @@ void VCartesianAxis::get2DAxisMainLine( B2DVector& rStart, B2DVector& rEnd, doub
                 ( m_aAxisProperties.m_fLabelDirectionSign<0 ) ?
                     LABEL_ALIGN_TOP : LABEL_ALIGN_BOTTOM;
 
-            if( ( fDeltaX>0 && m_aScale.Orientation == AxisOrientation_REVERSE ) ||
-                ( fDeltaX<0 && m_aScale.Orientation == AxisOrientation_MATHEMATICAL ) )
+            if( ( fDeltaX>0 && m_aScale.Orientation == chart2::AxisOrientation_REVERSE ) ||
+                ( fDeltaX<0 && m_aScale.Orientation == chart2::AxisOrientation_MATHEMATICAL ) )
                 m_aAxisProperties.m_aLabelAlignment =
                     ( m_aAxisProperties.m_aLabelAlignment==LABEL_ALIGN_TOP ) ?
                         LABEL_ALIGN_BOTTOM : LABEL_ALIGN_TOP;
@@ -1260,10 +1247,10 @@ TickFactory* VCartesianAxis::createTickFactory()
 TickFactory_2D* VCartesianAxis::createTickFactory2D()
 {
     B2DVector aStart, aEnd;
-    this->get2DAxisMainLine( aStart, aEnd, this->getLogicValueWhereMainLineCrossesOtherAxis() );
+    get2DAxisMainLine( aStart, aEnd, getAxisIntersectionValue() );
 
     B2DVector aLabelLineStart, aLabelLineEnd;
-    this->get2DAxisMainLine( aLabelLineStart, aLabelLineEnd, this->getLogicValueWhereLabelLineCrossesOtherAxis() );
+    get2DAxisMainLine( aLabelLineStart, aLabelLineEnd, getLabelLineIntersectionValue() );
 
     return new TickFactory_2D( m_aScale, m_aIncrement, aStart, aEnd, aLabelLineStart-aStart );
 }
@@ -1313,7 +1300,7 @@ sal_Int32 VCartesianAxis::estimateMaximumAutoMainIncrementCount()
         return nRet;
 
     B2DVector aStart, aEnd;
-    this->get2DAxisMainLine( aStart, aEnd, this->getLogicValueWhereMainLineCrossesOtherAxis() );
+    this->get2DAxisMainLine( aStart, aEnd, getAxisIntersectionValue() );
 
     sal_Int32 nMaxHeight = static_cast<sal_Int32>(fabs(aEnd.getY()-aStart.getY()));
     sal_Int32 nMaxWidth = static_cast<sal_Int32>(fabs(aEnd.getX()-aStart.getX()));
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index b5122d9..757fd1a 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -53,8 +53,16 @@ public:
 
     virtual TickFactory* createTickFactory() SAL_OVERRIDE;
 
-    double      getLogicValueWhereMainLineCrossesOtherAxis() const;
-    double      getLogicValueWhereLabelLineCrossesOtherAxis() const;
+    /**
+     * Get the value at which the other axis crosses.
+     */
+    double getAxisIntersectionValue() const;
+
+    /**
+     * Get the value at which label line crosses the other axis.
+     */
+    double getLabelLineIntersectionValue() const;
+
     bool        getLogicValueWhereExtraLineCrossesOtherAxis( double& fCrossesOtherAxis) const;
     void        get2DAxisMainLine( ::basegfx::B2DVector& rStart, ::basegfx::B2DVector& rEnd, double fCrossesOtherAxis );
 
commit 1f53df9c07351df17826017b5b0cf50f1c6dfc48
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Oct 7 20:38:56 2014 -0400

    Use boost::optional for these members.
    
    Change-Id: I60c52bf99d0e63e27f7c576e2582c26e19809c8c

diff --git a/chart2/source/view/axes/VAxisBase.cxx b/chart2/source/view/axes/VAxisBase.cxx
index 15f75ca..94f3799 100644
--- a/chart2/source/view/axes/VAxisBase.cxx
+++ b/chart2/source/view/axes/VAxisBase.cxx
@@ -111,11 +111,9 @@ sal_Int32 VAxisBase::estimateMaximumAutoMainIncrementCount()
     return 10;
 }
 
-void VAxisBase::setExrtaLinePositionAtOtherAxis( const double& fCrossingAt )
+void VAxisBase::setExrtaLinePositionAtOtherAxis( double fCrossingAt )
 {
-    if( m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis )
-        delete m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis;
-    m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis = new double(fCrossingAt);
+    m_aAxisProperties.m_pfExrtaLinePositionAtOtherAxis.reset(fCrossingAt);
 }
 
 sal_Int32 VAxisBase::getDimensionCount() const
diff --git a/chart2/source/view/axes/VAxisBase.hxx b/chart2/source/view/axes/VAxisBase.hxx
index cc2ef58..b27c604 100644
--- a/chart2/source/view/axes/VAxisBase.hxx
+++ b/chart2/source/view/axes/VAxisBase.hxx
@@ -62,7 +62,7 @@ public:
     virtual sal_Int32 estimateMaximumAutoMainIncrementCount();
     virtual void createAllTickInfos( ::std::vector< ::std::vector< TickInfo > >& rAllTickInfos );
 
-    void setExrtaLinePositionAtOtherAxis( const double& fCrossingAt );
+    void setExrtaLinePositionAtOtherAxis( double fCrossingAt );
 
 protected: //methods
     sal_Int32 getIndexOfLongestLabel( const ::com::sun::star::uno::Sequence< OUString >& rLabels );
diff --git a/chart2/source/view/axes/VAxisProperties.cxx b/chart2/source/view/axes/VAxisProperties.cxx
index e6fb154..ec63826 100644
--- a/chart2/source/view/axes/VAxisProperties.cxx
+++ b/chart2/source/view/axes/VAxisProperties.cxx
@@ -156,8 +156,6 @@ AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
     , m_eCrossoverType( ::com::sun::star::chart::ChartAxisPosition_ZERO )
     , m_eLabelPos( ::com::sun::star::chart::ChartAxisLabelPosition_NEAR_AXIS )
     , m_eTickmarkPos( ::com::sun::star::chart::ChartAxisMarkPosition_AT_LABELS_AND_AXIS )
-    , m_pfMainLinePositionAtOtherAxis(NULL)
-    , m_pfExrtaLinePositionAtOtherAxis(NULL)
     , m_bCrossingAxisHasReverseDirection(false)
     , m_bCrossingAxisIsCategoryAxes(false)
     , m_fLabelDirectionSign(1.0)
@@ -184,9 +182,6 @@ AxisProperties::AxisProperties( const AxisProperties& rAxisProperties )
     , m_bSwapXAndY( rAxisProperties.m_bSwapXAndY )
     , m_eCrossoverType( rAxisProperties.m_eCrossoverType )
     , m_eLabelPos( rAxisProperties.m_eLabelPos )
-    , m_eTickmarkPos( rAxisProperties.m_eTickmarkPos )
-    , m_pfMainLinePositionAtOtherAxis( NULL )
-    , m_pfExrtaLinePositionAtOtherAxis( NULL )
     , m_bCrossingAxisHasReverseDirection( rAxisProperties.m_bCrossingAxisHasReverseDirection )
     , m_bCrossingAxisIsCategoryAxes( rAxisProperties.m_bCrossingAxisIsCategoryAxes )
     , m_fLabelDirectionSign( rAxisProperties.m_fLabelDirectionSign )
@@ -205,15 +200,13 @@ AxisProperties::AxisProperties( const AxisProperties& rAxisProperties )
     , m_xAxisTextProvider( rAxisProperties.m_xAxisTextProvider )
 {
     if( rAxisProperties.m_pfMainLinePositionAtOtherAxis )
-        m_pfMainLinePositionAtOtherAxis = new double(*rAxisProperties.m_pfMainLinePositionAtOtherAxis);
+        m_pfMainLinePositionAtOtherAxis.reset(*rAxisProperties.m_pfMainLinePositionAtOtherAxis);
     if( rAxisProperties.m_pfExrtaLinePositionAtOtherAxis )
-        m_pfExrtaLinePositionAtOtherAxis = new double (*rAxisProperties.m_pfExrtaLinePositionAtOtherAxis);
+        m_pfExrtaLinePositionAtOtherAxis.reset(*rAxisProperties.m_pfExrtaLinePositionAtOtherAxis);
 }
 
 AxisProperties::~AxisProperties()
 {
-    delete m_pfMainLinePositionAtOtherAxis;
-    delete m_pfExrtaLinePositionAtOtherAxis;
 }
 
 LabelAlignment lcl_getLabelAlignmentForZAxis( const AxisProperties& rAxisProperties )
@@ -256,10 +249,10 @@ void AxisProperties::initAxisPositioning( const uno::Reference< beans::XProperty
 
                 if( m_bCrossingAxisIsCategoryAxes )
                     fValue = ::rtl::math::round(fValue);
-                m_pfMainLinePositionAtOtherAxis = new double(fValue);
+                m_pfMainLinePositionAtOtherAxis.reset(fValue);
             }
             else if( ::com::sun::star::chart::ChartAxisPosition_ZERO == m_eCrossoverType )
-                m_pfMainLinePositionAtOtherAxis = new double(0.0);
+                m_pfMainLinePositionAtOtherAxis.reset(0.0);
 
             xAxisProp->getPropertyValue("LabelPosition") >>= m_eLabelPos;
             xAxisProp->getPropertyValue("MarkPosition") >>= m_eTickmarkPos;
diff --git a/chart2/source/view/axes/VAxisProperties.hxx b/chart2/source/view/axes/VAxisProperties.hxx
index bf4a508..860aa6a 100644
--- a/chart2/source/view/axes/VAxisProperties.hxx
+++ b/chart2/source/view/axes/VAxisProperties.hxx
@@ -37,6 +37,7 @@
 #include <com/sun/star/lang/Locale.hpp>
 
 #include <vector>
+#include <boost/optional.hpp>
 
 namespace chart
 {
@@ -95,8 +96,8 @@ struct AxisProperties
     ::com::sun::star::chart::ChartAxisLabelPosition m_eLabelPos;
     ::com::sun::star::chart::ChartAxisMarkPosition  m_eTickmarkPos;
 
-    double*     m_pfMainLinePositionAtOtherAxis;
-    double*     m_pfExrtaLinePositionAtOtherAxis;
+    boost::optional<double> m_pfMainLinePositionAtOtherAxis;
+    boost::optional<double> m_pfExrtaLinePositionAtOtherAxis;
 
     bool        m_bCrossingAxisHasReverseDirection;
     bool        m_bCrossingAxisIsCategoryAxes;
diff --git a/chart2/source/view/axes/VPolarRadiusAxis.cxx b/chart2/source/view/axes/VPolarRadiusAxis.cxx
index 4b6d8e2..4d89d26 100644
--- a/chart2/source/view/axes/VPolarRadiusAxis.cxx
+++ b/chart2/source/view/axes/VPolarRadiusAxis.cxx
@@ -152,7 +152,7 @@ void VPolarRadiusAxis::createShapes()
         }
 
         //xxxxx pTickInfo->updateUnscaledValue( xInverseScaling );
-        aAxisProperties.m_pfMainLinePositionAtOtherAxis = new double( pTickInfo->getUnscaledTickValue() );
+        aAxisProperties.m_pfMainLinePositionAtOtherAxis.reset(pTickInfo->getUnscaledTickValue());
         aAxisProperties.m_bDisplayLabels=false;
 
         VCartesianAxis aAxis(aAxisProperties,m_xNumberFormatsSupplier


More information about the Libreoffice-commits mailing list