chart2/inc/ChartView.hxx | 12 -- chart2/source/inc/BaseGFXHelper.hxx | 2 chart2/source/tools/BaseGFXHelper.cxx | 5 + chart2/source/view/main/ChartView.cxx | 169 ++++++++++++++++------------------ 4 files changed, 92 insertions(+), 96 deletions(-)
New commits: commit 3b6dcf40f1ac395af3301af08f47c4db9cd1e1e0 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 16:44:34 2014 -0400 These are no longer used. Change-Id: I55a19ab06108825ece00844bb20c3fd5f65dfe37 diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 747ebe8..3a6e6f5 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -3090,9 +3090,6 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) if (getAvailablePosAndSizeForDiagram(aParam, rPageSize, mrChartModel.getFirstDiagram())) { - awt::Point aAvailablePosDia(aParam.maRemainingSpace.X, aParam.maRemainingSpace.Y); - awt::Size aAvailableSizeForDiagram(aParam.maRemainingSpace.Width, aParam.maRemainingSpace.Height); - awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent(aSeriesPlotterContainer, aParam, rPageSize); if (aParam.mxPlotAreaWithAxes.is()) commit 9396f59a3c3012cc7514d50f1b3f6476cb73ca9d Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 16:41:41 2014 -0400 Finally, move the group shape object for the diagram with axes to the param. Change-Id: I134275076256bb1b5441ae7804eacaaaa689d171 diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx index 1d90414..dc3d495 100644 --- a/chart2/inc/ChartView.hxx +++ b/chart2/inc/ChartView.hxx @@ -222,10 +222,9 @@ private: //methods void render(); - ::com::sun::star::awt::Rectangle impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer - , const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes>& xDiagramPlusAxes_Shapes - , const CreateShapeParam2D& rParam - , const ::com::sun::star::awt::Size& rPageSize ); + css::awt::Rectangle impl_createDiagramAndContent( + SeriesPlotterContainer& rSeriesPlotterContainer, + const CreateShapeParam2D& rParam, const css::awt::Size& rPageSize ); DECL_LINK( UpdateTimeBased, void* ); diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index a40799f..747ebe8 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -144,6 +144,8 @@ struct CreateShapeParam2D css::uno::Reference<css::drawing::XShape> mxMarkHandles; css::uno::Reference<css::drawing::XShape> mxPlotAreaWithAxes; + css::uno::Reference<css::drawing::XShapes> mxDiagramWithAxesShapes; + bool mbAutoPosTitleX; bool mbAutoPosTitleY; bool mbAutoPosTitleZ; @@ -1430,10 +1432,9 @@ sal_Int16 lcl_getDefaultWritingModeFromPool( const boost::shared_ptr<DrawModelWr } //end anonymous namespace -awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer - , const uno::Reference< drawing::XShapes>& xDiagramPlusAxes_Shapes - , const CreateShapeParam2D& rParam - , const awt::Size& rPageSize ) +awt::Rectangle ChartView::impl_createDiagramAndContent( + SeriesPlotterContainer& rSeriesPlotterContainer, + const CreateShapeParam2D& rParam, const awt::Size& rPageSize ) { //return the used rectangle awt::Rectangle aUsedOuterRect(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y, 0, 0); @@ -1490,7 +1491,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& VDiagram aVDiagram(xDiagram, aPreferredAspectRatio, nDimensionCount); bool bIsPieOrDonut = lcl_IsPieOrDonut(xDiagram); {//create diagram - aVDiagram.init(xDiagramPlusAxes_Shapes, m_xShapeFactory); + aVDiagram.init(rParam.mxDiagramWithAxesShapes, m_xShapeFactory); aVDiagram.createShapes( awt::Point(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y), awt::Size(rParam.maRemainingSpace.Width, rParam.maRemainingSpace.Height)); @@ -1501,7 +1502,8 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& aVDiagram.reduceToMimimumSize(); } - uno::Reference< drawing::XShapes > xTextTargetShapes( AbstractShapeFactory::getOrCreateShapeFactory(m_xShapeFactory)->createGroup2D(xDiagramPlusAxes_Shapes) ); + uno::Reference< drawing::XShapes > xTextTargetShapes = + AbstractShapeFactory::getOrCreateShapeFactory(m_xShapeFactory)->createGroup2D(rParam.mxDiagramWithAxesShapes); // - create axis and grids for all coordinate systems @@ -1519,7 +1521,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& //calculate resulting size respecting axis label layout and fontscaling - uno::Reference< drawing::XShape > xBoundingShape( xDiagramPlusAxes_Shapes, uno::UNO_QUERY ); + uno::Reference< drawing::XShape > xBoundingShape(rParam.mxDiagramWithAxesShapes, uno::UNO_QUERY); ::basegfx::B2IRectangle aConsumedOuterRect; //use first coosys only so far; todo: calculate for more than one coosys if we have more in future @@ -3035,7 +3037,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0, 0)); AbstractShapeFactory::setShapeName(aParam.mxPlotAreaWithAxes, "PlotAreaIncludingAxes"); - uno::Reference< drawing::XShapes > xDiagramPlusAxes_Shapes( pShapeFactory->createGroup2D(xDiagramPlusAxesPlusMarkHandlesGroup_Shapes ) ); + aParam.mxDiagramWithAxesShapes = pShapeFactory->createGroup2D(xDiagramPlusAxesPlusMarkHandlesGroup_Shapes); bool bAutoPositionDummy = true; @@ -3091,8 +3093,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) awt::Point aAvailablePosDia(aParam.maRemainingSpace.X, aParam.maRemainingSpace.Y); awt::Size aAvailableSizeForDiagram(aParam.maRemainingSpace.Width, aParam.maRemainingSpace.Height); - awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( - aSeriesPlotterContainer, xDiagramPlusAxes_Shapes, aParam, rPageSize); + awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent(aSeriesPlotterContainer, aParam, rPageSize); if (aParam.mxPlotAreaWithAxes.is()) { commit 21c92bb25cb67c589adb3799d07a9703c6ce83d3 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 16:31:24 2014 -0400 Move the "PlotAreaIncludingAxes" shape object to CreateShapeParam2D. Change-Id: I6c88611e837f651af92406952df273693d651121 diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index cebc415..a40799f 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -142,6 +142,7 @@ struct CreateShapeParam2D boost::shared_ptr<VTitle> mpVTitleSecondY; css::uno::Reference<css::drawing::XShape> mxMarkHandles; + css::uno::Reference<css::drawing::XShape> mxPlotAreaWithAxes; bool mbAutoPosTitleX; bool mbAutoPosTitleY; @@ -3030,9 +3031,9 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0)); AbstractShapeFactory::setShapeName(aParam.mxMarkHandles, "MarkHandles"); - uno::Reference< drawing::XShape > xDiagram_OuterRect( pShapeFactory->createInvisibleRectangle( - xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0) ) ); - AbstractShapeFactory::setShapeName( xDiagram_OuterRect, "PlotAreaIncludingAxes" ); + aParam.mxPlotAreaWithAxes = pShapeFactory->createInvisibleRectangle( + xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0, 0)); + AbstractShapeFactory::setShapeName(aParam.mxPlotAreaWithAxes, "PlotAreaIncludingAxes"); uno::Reference< drawing::XShapes > xDiagramPlusAxes_Shapes( pShapeFactory->createGroup2D(xDiagramPlusAxesPlusMarkHandlesGroup_Shapes ) ); @@ -3093,10 +3094,10 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( aSeriesPlotterContainer, xDiagramPlusAxes_Shapes, aParam, rPageSize); - if( xDiagram_OuterRect.is() ) + if (aParam.mxPlotAreaWithAxes.is()) { - xDiagram_OuterRect->setPosition( awt::Point( aUsedOuterRect.X, aUsedOuterRect.Y ) ); - xDiagram_OuterRect->setSize( awt::Size( aUsedOuterRect.Width, aUsedOuterRect.Height ) ); + aParam.mxPlotAreaWithAxes->setPosition(awt::Point(aUsedOuterRect.X, aUsedOuterRect.Y)); + aParam.mxPlotAreaWithAxes->setSize(awt::Size(aUsedOuterRect.Width, aUsedOuterRect.Height)); } //correct axis title position commit 133b7b935ccf09afbe40649c5781c225ee3ac757 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 16:25:46 2014 -0400 Move the "MarkHandles" shape object to CreateShapeParam2D. Change-Id: I66843ca4ded3b69cb7f5256c94566c8f5d2de31c diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx index 7019187..1d90414 100644 --- a/chart2/inc/ChartView.hxx +++ b/chart2/inc/ChartView.hxx @@ -225,8 +225,7 @@ private: //methods ::com::sun::star::awt::Rectangle impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer , const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes>& xDiagramPlusAxes_Shapes , const CreateShapeParam2D& rParam - , const ::com::sun::star::awt::Size& rPageSize - , const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>& xDiagram_MarkHandles ); + , const ::com::sun::star::awt::Size& rPageSize ); DECL_LINK( UpdateTimeBased, void* ); diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 8e8dec6..cebc415 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -141,6 +141,8 @@ struct CreateShapeParam2D boost::shared_ptr<VTitle> mpVTitleSecondX; boost::shared_ptr<VTitle> mpVTitleSecondY; + css::uno::Reference<css::drawing::XShape> mxMarkHandles; + bool mbAutoPosTitleX; bool mbAutoPosTitleY; bool mbAutoPosTitleZ; @@ -1430,9 +1432,7 @@ sal_Int16 lcl_getDefaultWritingModeFromPool( const boost::shared_ptr<DrawModelWr awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer , const uno::Reference< drawing::XShapes>& xDiagramPlusAxes_Shapes , const CreateShapeParam2D& rParam - , const awt::Size& rPageSize - , const uno::Reference< drawing::XShape>& xDiagram_MarkHandles /*needs to be resized to fit the result*/ - ) + , const awt::Size& rPageSize ) { //return the used rectangle awt::Rectangle aUsedOuterRect(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y, 0, 0); @@ -1690,7 +1690,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& } } - if( xDiagram_MarkHandles.is() ) + if (rParam.mxMarkHandles.is()) { awt::Point aPos(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y); awt::Size aSize(rParam.maRemainingSpace.Width, rParam.maRemainingSpace.Height); @@ -1704,8 +1704,8 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& aPos = awt::Point( m_aResultingDiagramRectangleExcludingAxes.X, m_aResultingDiagramRectangleExcludingAxes.Y ); aSize = awt::Size( m_aResultingDiagramRectangleExcludingAxes.Width, m_aResultingDiagramRectangleExcludingAxes.Height ); } - xDiagram_MarkHandles->setPosition( aPos ); - xDiagram_MarkHandles->setSize( aSize ); + rParam.mxMarkHandles->setPosition(aPos); + rParam.mxMarkHandles->setSize(aSize); } return aUsedOuterRect; @@ -3026,9 +3026,9 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) uno::Reference< drawing::XShapes > xDiagramPlusAxesPlusMarkHandlesGroup_Shapes( pShapeFactory->createGroup2D(mxRootShape,aDiagramCID) ); - uno::Reference< drawing::XShape > xDiagram_MarkHandles( pShapeFactory->createInvisibleRectangle( - xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0) ) ); - AbstractShapeFactory::setShapeName( xDiagram_MarkHandles, "MarkHandles" ); + aParam.mxMarkHandles = pShapeFactory->createInvisibleRectangle( + xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0)); + AbstractShapeFactory::setShapeName(aParam.mxMarkHandles, "MarkHandles"); uno::Reference< drawing::XShape > xDiagram_OuterRect( pShapeFactory->createInvisibleRectangle( xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0) ) ); @@ -3091,7 +3091,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) awt::Size aAvailableSizeForDiagram(aParam.maRemainingSpace.Width, aParam.maRemainingSpace.Height); awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( - aSeriesPlotterContainer, xDiagramPlusAxes_Shapes, aParam, rPageSize, xDiagram_MarkHandles); + aSeriesPlotterContainer, xDiagramPlusAxes_Shapes, aParam, rPageSize); if( xDiagram_OuterRect.is() ) { commit db51e40450959cbd5557034663a65f973be1a167 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 15:38:06 2014 -0400 Remove double-conversion between awt::Rectangle and basegfx::B2IRectangle. Change-Id: I51b1a366ca49f680f964814b0fd0fa69a6a7f5bd diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index f13e6aa..8e8dec6 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -1467,10 +1467,8 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& CuboidPlanePosition eBottomPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardBottom( xSceneProperties ) ); pVCooSys->set3DWallPositions( eLeftWallPos, eBackWallPos, eBottomPos ); } - pVCooSys->createVAxisList( xNumberFormatsSupplier - , rPageSize //font reference size - , BaseGFXHelper::B2IRectangleToAWTRectangle( aAvailableOuterRect ) //maximum space for labels - ); + + pVCooSys->createVAxisList(xNumberFormatsSupplier, rPageSize, rParam.maRemainingSpace); } // - prepare list of all axis and how they are used commit af655d2f76cf4739024832642aef4a01d5d977e1 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 15:09:06 2014 -0400 Refactor impl_createDiagramAndContent() to take CreateShapeParam2D. Change-Id: I517c4e4a2296531c0d7f129ff46adca0f85a969d diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx index 51b6a48..7019187 100644 --- a/chart2/inc/ChartView.hxx +++ b/chart2/inc/ChartView.hxx @@ -205,7 +205,7 @@ private: //methods void createShapes(); void createShapes2D( const css::awt::Size& rPageSize ); - bool createAxisTitleShapes2D( const css::awt::Size& rPageSize, CreateShapeParam2D& rParam ); + bool createAxisTitleShapes2D( CreateShapeParam2D& rParam, const css::awt::Size& rPageSize ); void createShapes3D(); bool isReal3DChart(); void getMetaFile( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutStream @@ -224,10 +224,8 @@ private: //methods ::com::sun::star::awt::Rectangle impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer , const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes>& xDiagramPlusAxes_Shapes - , const ::com::sun::star::awt::Point& rAvailablePos - , const ::com::sun::star::awt::Size& rAvailableSize + , const CreateShapeParam2D& rParam , const ::com::sun::star::awt::Size& rPageSize - , bool bUseFixedInnerSize , const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>& xDiagram_MarkHandles ); DECL_LINK( UpdateTimeBased, void* ); diff --git a/chart2/source/inc/BaseGFXHelper.hxx b/chart2/source/inc/BaseGFXHelper.hxx index fec9f27..e4f9867 100644 --- a/chart2/source/inc/BaseGFXHelper.hxx +++ b/chart2/source/inc/BaseGFXHelper.hxx @@ -47,6 +47,8 @@ OOO_DLLPUBLIC_CHARTTOOLS ::basegfx::B2IRectangle makeRectangle( const com::sun::star::awt::Point& rPosition, const com::sun::star::awt::Size& rSize ); +OOO_DLLPUBLIC_CHARTTOOLS ::basegfx::B2IRectangle makeRectangle( const css::awt::Rectangle& rRect ); + OOO_DLLPUBLIC_CHARTTOOLS com::sun::star::awt::Point B2IRectangleToAWTPoint( const ::basegfx::B2IRectangle& rB2IRectangle ); diff --git a/chart2/source/tools/BaseGFXHelper.cxx b/chart2/source/tools/BaseGFXHelper.cxx index df67116..8b79b68 100644 --- a/chart2/source/tools/BaseGFXHelper.cxx +++ b/chart2/source/tools/BaseGFXHelper.cxx @@ -66,6 +66,11 @@ B2IRectangle makeRectangle( const awt::Point& rPos, const awt::Size& rSize ) return B2IRectangle(rPos.X,rPos.Y,rPos.X+rSize.Width,rPos.Y+rSize.Height); } +B2IRectangle makeRectangle( const awt::Rectangle& rRect ) +{ + return B2IRectangle(rRect.X, rRect.Y, rRect.X+rRect.Width, rRect.Y+rRect.Height); +} + awt::Point B2IRectangleToAWTPoint( const ::basegfx::B2IRectangle& rB2IRectangle ) { return awt::Point( rB2IRectangle.getMinX(), rB2IRectangle.getMinY() ); diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 70e1494..f13e6aa 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -1429,17 +1429,14 @@ sal_Int16 lcl_getDefaultWritingModeFromPool( const boost::shared_ptr<DrawModelWr awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& rSeriesPlotterContainer , const uno::Reference< drawing::XShapes>& xDiagramPlusAxes_Shapes - , const awt::Point& rAvailablePos - , const awt::Size& rAvailableSize + , const CreateShapeParam2D& rParam , const awt::Size& rPageSize - , bool bUseFixedInnerSize , const uno::Reference< drawing::XShape>& xDiagram_MarkHandles /*needs to be resized to fit the result*/ ) { //return the used rectangle - awt::Rectangle aUsedOuterRect( rAvailablePos.X, rAvailablePos.Y, 0, 0 ); + awt::Rectangle aUsedOuterRect(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y, 0, 0); -// sal_Int32 nDiagramIndex = 0;//todo if more than one diagam is supported uno::Reference< XDiagram > xDiagram( mrChartModel.getFirstDiagram() ); if( !xDiagram.is()) return aUsedOuterRect; @@ -1451,7 +1448,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& nDimensionCount = 2; } - ::basegfx::B2IRectangle aAvailableOuterRect( BaseGFXHelper::makeRectangle(rAvailablePos,rAvailableSize) ); + basegfx::B2IRectangle aAvailableOuterRect = BaseGFXHelper::makeRectangle(rParam.maRemainingSpace); const std::vector< VCoordinateSystem* >& rVCooSysList( rSeriesPlotterContainer.getCooSysList() ); const std::vector< VSeriesPlotter* >& rSeriesPlotterList( rSeriesPlotterContainer.getSeriesPlotterList() ); @@ -1495,10 +1492,13 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& bool bIsPieOrDonut = lcl_IsPieOrDonut(xDiagram); {//create diagram aVDiagram.init(xDiagramPlusAxes_Shapes, m_xShapeFactory); - aVDiagram.createShapes(rAvailablePos,rAvailableSize); + aVDiagram.createShapes( + awt::Point(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y), + awt::Size(rParam.maRemainingSpace.Width, rParam.maRemainingSpace.Height)); + xSeriesTargetInFrontOfAxis = aVDiagram.getCoordinateRegion(); // It is preferrable to use full size than minimum for pie charts - if( !bIsPieOrDonut && !bUseFixedInnerSize ) + if (!bIsPieOrDonut && !rParam.mbUseFixedInnerSize) aVDiagram.reduceToMimimumSize(); } @@ -1532,7 +1532,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& aConsumedOuterRect = AbstractShapeFactory::getRectangleOfShape(xBoundingShape); ::basegfx::B2IRectangle aNewInnerRect( aVDiagram.getCurrentRectangle() ); - if( !bUseFixedInnerSize ) + if (!rParam.mbUseFixedInnerSize) aNewInnerRect = aVDiagram.adjustInnerSize( aConsumedOuterRect ); pVCooSys->setTransformationSceneToScreen( B3DHomMatrixToHomogenMatrix( @@ -1555,7 +1555,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& bLessSpaceConsumedThanExpected = true; } - if( bLessSpaceConsumedThanExpected && !bUseFixedInnerSize ) + if (bLessSpaceConsumedThanExpected && !rParam.mbUseFixedInnerSize) { aVDiagram.adjustInnerSize( aConsumedOuterRect ); pVCooSys->setTransformationSceneToScreen( B3DHomMatrixToHomogenMatrix( @@ -1616,7 +1616,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& aConsumedOuterRect = ::basegfx::B2IRectangle( AbstractShapeFactory::getRectangleOfShape(xBoundingShape) ); ::basegfx::B2IRectangle aNewInnerRect( aVDiagram.getCurrentRectangle() ); - if( !bUseFixedInnerSize ) + if (!rParam.mbUseFixedInnerSize) aNewInnerRect = aVDiagram.adjustInnerSize( aConsumedOuterRect ); for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) @@ -1656,12 +1656,12 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& } } - if( bUseFixedInnerSize ) + if (rParam.mbUseFixedInnerSize) { aUsedOuterRect = awt::Rectangle( aConsumedOuterRect.getMinX(), aConsumedOuterRect.getMinY(), aConsumedOuterRect.getWidth(), aConsumedOuterRect.getHeight() ); } else - aUsedOuterRect = awt::Rectangle( rAvailablePos.X, rAvailablePos.Y, rAvailableSize.Width, rAvailableSize.Height ); + aUsedOuterRect = rParam.maRemainingSpace; bool bSnapRectToUsedArea = false; for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) @@ -1673,7 +1673,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& } if(bSnapRectToUsedArea) { - if( bUseFixedInnerSize ) + if (rParam.mbUseFixedInnerSize) m_aResultingDiagramRectangleExcludingAxes = getRectangleOfObject( "PlotAreaExcludingAxes" ); else { @@ -1683,8 +1683,8 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& } else { - if( bUseFixedInnerSize ) - m_aResultingDiagramRectangleExcludingAxes = awt::Rectangle( rAvailablePos.X, rAvailablePos.Y, rAvailableSize.Width, rAvailableSize.Height ); + if (rParam.mbUseFixedInnerSize) + m_aResultingDiagramRectangleExcludingAxes = rParam.maRemainingSpace; else { ::basegfx::B2IRectangle aConsumedInnerRect = aVDiagram.getCurrentRectangle(); @@ -1694,13 +1694,14 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( SeriesPlotterContainer& if( xDiagram_MarkHandles.is() ) { - awt::Point aPos(rAvailablePos); - awt::Size aSize(rAvailableSize); + awt::Point aPos(rParam.maRemainingSpace.X, rParam.maRemainingSpace.Y); + awt::Size aSize(rParam.maRemainingSpace.Width, rParam.maRemainingSpace.Height); + bool bPosSizeExcludeAxesProperty = true; uno::Reference< beans::XPropertySet > xDiaProps( xDiagram, uno::UNO_QUERY_THROW ); if( xDiaProps.is() ) xDiaProps->getPropertyValue("PosSizeExcludeAxes") >>= bPosSizeExcludeAxesProperty; - if( bUseFixedInnerSize || bPosSizeExcludeAxesProperty ) + if (rParam.mbUseFixedInnerSize || bPosSizeExcludeAxesProperty) { aPos = awt::Point( m_aResultingDiagramRectangleExcludingAxes.X, m_aResultingDiagramRectangleExcludingAxes.Y ); aSize = awt::Size( m_aResultingDiagramRectangleExcludingAxes.Width, m_aResultingDiagramRectangleExcludingAxes.Height ); @@ -3080,7 +3081,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) if (aParam.maRemainingSpace.Width <= 0 || aParam.maRemainingSpace.Height <= 0) return; - if (!createAxisTitleShapes2D(rPageSize, aParam)) + if (!createAxisTitleShapes2D(aParam, rPageSize)) return; bool bDummy = false; @@ -3091,9 +3092,8 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) awt::Point aAvailablePosDia(aParam.maRemainingSpace.X, aParam.maRemainingSpace.Y); awt::Size aAvailableSizeForDiagram(aParam.maRemainingSpace.Width, aParam.maRemainingSpace.Height); - awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( aSeriesPlotterContainer - , xDiagramPlusAxes_Shapes - , aAvailablePosDia ,aAvailableSizeForDiagram, rPageSize, aParam.mbUseFixedInnerSize, xDiagram_MarkHandles ); + awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( + aSeriesPlotterContainer, xDiagramPlusAxes_Shapes, aParam, rPageSize, xDiagram_MarkHandles); if( xDiagram_OuterRect.is() ) { @@ -3159,7 +3159,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) } } -bool ChartView::createAxisTitleShapes2D( const css::awt::Size& rPageSize, CreateShapeParam2D& rParam ) +bool ChartView::createAxisTitleShapes2D( CreateShapeParam2D& rParam, const css::awt::Size& rPageSize ) { uno::Reference<XDiagram> xDiagram = mrChartModel.getFirstDiagram(); commit d4a6d85cef5a0773f9c9679727191e3f0d871002 Author: Kohei Yoshida <[email protected]> Date: Fri Sep 19 14:51:33 2014 -0400 Refactor getAvailablePosAndSizeForDiagram() to use CreateShapeParam2D. Re-use its maRemainingSpace member to keep track of available space. Change-Id: I28fdaf11c4ab895cd09a5b6c7ea3da7c730044d5 diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 34f0ee1..70e1494 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -148,12 +148,15 @@ struct CreateShapeParam2D bool mbAutoPosSecondTitleX; bool mbAutoPosSecondTitleY; + bool mbUseFixedInnerSize; + CreateShapeParam2D() : mbAutoPosTitleX(true), mbAutoPosTitleY(true), mbAutoPosTitleZ(true), mbAutoPosSecondTitleX(true), - mbAutoPosSecondTitleY(true) {} + mbAutoPosSecondTitleY(true), + mbUseFixedInnerSize(false) {} }; class GL2DRenderer : public IRenderer @@ -2105,25 +2108,19 @@ double lcl_getPageLayoutDistancePercentage() } bool getAvailablePosAndSizeForDiagram( - awt::Point& rOutPos, awt::Size& rOutAvailableDiagramSize - , const awt::Rectangle& rSpaceLeft - , const awt::Size & rPageSize - , const uno::Reference< XDiagram > & xDiagram - , bool& bUseFixedInnerSize ) + CreateShapeParam2D& rParam, const awt::Size & rPageSize, const uno::Reference<XDiagram>& xDiagram ) { - bUseFixedInnerSize = false; + rParam.mbUseFixedInnerSize = false; //@todo: we need a size dependent on the axis labels - awt::Rectangle aRemainingSpace(rSpaceLeft); - { - sal_Int32 nYDistance = static_cast<sal_Int32>(rPageSize.Height*lcl_getPageLayoutDistancePercentage()); - sal_Int32 nXDistance = static_cast<sal_Int32>(rPageSize.Width*lcl_getPageLayoutDistancePercentage()); - aRemainingSpace.X+=nXDistance; - aRemainingSpace.Width-=2*nXDistance; - aRemainingSpace.Y+=nYDistance; - aRemainingSpace.Height-=2*nYDistance; - } - if(aRemainingSpace.Width <= 0 || aRemainingSpace.Height <= 0 ) + sal_Int32 nYDistance = static_cast<sal_Int32>(rPageSize.Height*lcl_getPageLayoutDistancePercentage()); + sal_Int32 nXDistance = static_cast<sal_Int32>(rPageSize.Width*lcl_getPageLayoutDistancePercentage()); + rParam.maRemainingSpace.X += nXDistance; + rParam.maRemainingSpace.Width -= 2*nXDistance; + rParam.maRemainingSpace.Y += nYDistance; + rParam.maRemainingSpace.Height -= 2*nYDistance; + + if (rParam.maRemainingSpace.Width <= 0 || rParam.maRemainingSpace.Height <= 0) return false; uno::Reference< beans::XPropertySet > xProp(xDiagram, uno::UNO_QUERY); @@ -2136,12 +2133,10 @@ bool getAvailablePosAndSizeForDiagram( ::com::sun::star::chart2::RelativeSize aRelativeSize; if( xProp.is() && (xProp->getPropertyValue( "RelativeSize" )>>=aRelativeSize) ) { - rOutAvailableDiagramSize.Height = static_cast<sal_Int32>(aRelativeSize.Secondary*rPageSize.Height); - rOutAvailableDiagramSize.Width = static_cast<sal_Int32>(aRelativeSize.Primary*rPageSize.Width); - bUseFixedInnerSize = bPosSizeExcludeAxes; + rParam.maRemainingSpace.Height = static_cast<sal_Int32>(aRelativeSize.Secondary*rPageSize.Height); + rParam.maRemainingSpace.Width = static_cast<sal_Int32>(aRelativeSize.Primary*rPageSize.Width); + rParam.mbUseFixedInnerSize = bPosSizeExcludeAxes; } - else - rOutAvailableDiagramSize = awt::Size(aRemainingSpace.Width,aRemainingSpace.Height); //position: chart2::RelativePosition aRelativePosition; @@ -2153,21 +2148,23 @@ bool getAvailablePosAndSizeForDiagram( double fX = aRelativePosition.Primary*rPageSize.Width; double fY = aRelativePosition.Secondary*rPageSize.Height; - rOutPos = RelativePositionHelper::getUpperLeftCornerOfAnchoredObject( - awt::Point(static_cast<sal_Int32>(fX),static_cast<sal_Int32>(fY)) - , rOutAvailableDiagramSize, aRelativePosition.Anchor ); - bUseFixedInnerSize = bPosSizeExcludeAxes; + awt::Point aPos = RelativePositionHelper::getUpperLeftCornerOfAnchoredObject( + awt::Point(static_cast<sal_Int32>(fX),static_cast<sal_Int32>(fY)), + awt::Size(rParam.maRemainingSpace.Width, rParam.maRemainingSpace.Height), + aRelativePosition.Anchor); + + rParam.maRemainingSpace.X = aPos.X; + rParam.maRemainingSpace.Y = aPos.Y; + + rParam.mbUseFixedInnerSize = bPosSizeExcludeAxes; } - else - rOutPos = awt::Point(aRemainingSpace.X,aRemainingSpace.Y); //ensure that the diagram does not lap out right side or out of bottom - { - if( rOutPos.Y + rOutAvailableDiagramSize.Height > rPageSize.Height ) - rOutAvailableDiagramSize.Height = rPageSize.Height - rOutPos.Y; - if( rOutPos.X + rOutAvailableDiagramSize.Width > rPageSize.Width ) - rOutAvailableDiagramSize.Width = rPageSize.Width - rOutPos.X; - } + if (rParam.maRemainingSpace.Y + rParam.maRemainingSpace.Height > rPageSize.Height) + rParam.maRemainingSpace.Height = rPageSize.Height - rParam.maRemainingSpace.Y; + + if (rParam.maRemainingSpace.X + rParam.maRemainingSpace.Width > rPageSize.Width) + rParam.maRemainingSpace.Width = rPageSize.Width - rParam.maRemainingSpace.X; return true; } @@ -3086,18 +3083,17 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) if (!createAxisTitleShapes2D(rPageSize, aParam)) return; - awt::Point aAvailablePosDia; - awt::Size aAvailableSizeForDiagram; - bool bUseFixedInnerSize = false; bool bDummy = false; bool bIsVertical = DiagramHelper::getVertical(xDiagram, bDummy, bDummy); - if (getAvailablePosAndSizeForDiagram( - aAvailablePosDia, aAvailableSizeForDiagram, aParam.maRemainingSpace, rPageSize, mrChartModel.getFirstDiagram(), bUseFixedInnerSize)) + if (getAvailablePosAndSizeForDiagram(aParam, rPageSize, mrChartModel.getFirstDiagram())) { + awt::Point aAvailablePosDia(aParam.maRemainingSpace.X, aParam.maRemainingSpace.Y); + awt::Size aAvailableSizeForDiagram(aParam.maRemainingSpace.Width, aParam.maRemainingSpace.Height); + awt::Rectangle aUsedOuterRect = impl_createDiagramAndContent( aSeriesPlotterContainer , xDiagramPlusAxes_Shapes - , aAvailablePosDia ,aAvailableSizeForDiagram, rPageSize, bUseFixedInnerSize, xDiagram_MarkHandles ); + , aAvailablePosDia ,aAvailableSizeForDiagram, rPageSize, aParam.mbUseFixedInnerSize, xDiagram_MarkHandles ); if( xDiagram_OuterRect.is() ) { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
