chart2/source/view/diagram/VDiagram.cxx | 1 chart2/source/view/inc/AbstractShapeFactory.hxx | 20 +++ chart2/source/view/inc/DummyShapeFactory.hxx | 18 +++ chart2/source/view/inc/ShapeFactory.hxx | 20 +++ chart2/source/view/main/ChartView.cxx | 48 ++------ chart2/source/view/main/DummyShapeFactory.cxx | 26 ++++ chart2/source/view/main/PlotterBase.cxx | 1 chart2/source/view/main/ShapeFactory.cxx | 53 ++++++++ chart2/source/view/main/VLegend.cxx | 75 ++++-------- chart2/source/view/main/VLegendSymbolFactory.cxx | 136 +++++++++++------------ chart2/source/view/main/VTitle.cxx | 1 11 files changed, 250 insertions(+), 149 deletions(-)
New commits: commit 8c687694daff0351d00042f31d01616964846928 Author: Markus Mohrhard <[email protected]> Date: Sun Oct 6 07:43:07 2013 +0200 more use of ShapeFactory and set Properties in factory if possible Change-Id: I7d172fd7bde506233fc74ec07b9603ee29149e5c diff --git a/chart2/source/view/inc/AbstractShapeFactory.hxx b/chart2/source/view/inc/AbstractShapeFactory.hxx index 6b97276..fc25226 100644 --- a/chart2/source/view/inc/AbstractShapeFactory.hxx +++ b/chart2/source/view/inc/AbstractShapeFactory.hxx @@ -200,7 +200,9 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize - , const ::com::sun::star::awt::Point& rPosition ) = 0; + , const ::com::sun::star::awt::Point& rPosition + , const tNameSequence& rPropNames + , const tAnySequence& rPropValues ) = 0; virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< diff --git a/chart2/source/view/inc/DummyShapeFactory.hxx b/chart2/source/view/inc/DummyShapeFactory.hxx index d774333..fab8132 100644 --- a/chart2/source/view/inc/DummyShapeFactory.hxx +++ b/chart2/source/view/inc/DummyShapeFactory.hxx @@ -156,7 +156,9 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize - , const ::com::sun::star::awt::Point& rPosition ); + , const ::com::sun::star::awt::Point& rPosition + , const tNameSequence& rPropNames + , const tAnySequence& rPropValues ); virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx index 577ce20..0f5d5e9 100644 --- a/chart2/source/view/inc/ShapeFactory.hxx +++ b/chart2/source/view/inc/ShapeFactory.hxx @@ -171,7 +171,9 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize - , const ::com::sun::star::awt::Point& rPosition ); + , const ::com::sun::star::awt::Point& rPosition + , const tNameSequence& rPropNames + , const tAnySequence& rPropValues ); virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index c9198be..ae309b4 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -2303,39 +2303,25 @@ void formatPage( if( !xShapeFactory.is() ) return; - uno::Reference< beans::XPropertySet > xPageProp; - // create a shape for the background - { - uno::Reference< drawing::XShape > xShape( - xShapeFactory->createInstance( - "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); - if( xTarget.is() && - xShape.is()) - { - xTarget->add( xShape ); - xShape->setSize( rPageSize ); - xPageProp.set( xShape, uno::UNO_QUERY ); - if( xPageProp.is()) - { - xPageProp->setPropertyValue( "LineStyle", uno::makeAny( drawing::LineStyle_NONE )); - } - } - } //format page - if( xPageProp.is()) - { - tPropertyNameValueMap aNameValueMap; - PropertyMapper::getValueMap( aNameValueMap, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), xModelPage ); - - OUString aCID( ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_PAGE, OUString() ) ); - aNameValueMap.insert( tPropertyNameValueMap::value_type( "Name", uno::makeAny( aCID ) ) ); //CID OUString - - tNameSequence aNames; - tAnySequence aValues; - PropertyMapper::getMultiPropertyListsFromValueMap( aNames, aValues, aNameValueMap ); - PropertyMapper::setMultiProperties( aNames, aValues, xPageProp ); - } + tPropertyNameValueMap aNameValueMap; + aNameValueMap.insert( tPropertyNameValueMap::value_type( "LineStyle", uno::makeAny( drawing::LineStyle_NONE ))); + PropertyMapper::getValueMap( aNameValueMap, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), xModelPage ); + + OUString aCID( ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_PAGE, OUString() ) ); + aNameValueMap.insert( tPropertyNameValueMap::value_type( "Name", uno::makeAny( aCID ) ) ); //CID OUString + + tNameSequence aNames; + tAnySequence aValues; + PropertyMapper::getMultiPropertyListsFromValueMap( aNames, aValues, aNameValueMap ); + + AbstractShapeFactory* pShapeFactory = AbstractShapeFactory::getOrCreateShapeFactory(xShapeFactory); + uno::Reference< drawing::XShape > xShape = + pShapeFactory->createRectangle( xTarget, + rPageSize, + awt::Point( 0, 0 ), + aNames, aValues ); } catch( const uno::Exception & ex ) { diff --git a/chart2/source/view/main/DummyShapeFactory.cxx b/chart2/source/view/main/DummyShapeFactory.cxx index 1972297..187e8fe 100644 --- a/chart2/source/view/main/DummyShapeFactory.cxx +++ b/chart2/source/view/main/DummyShapeFactory.cxx @@ -244,7 +244,9 @@ uno::Reference< drawing::XShape > DummyShapeFactory::createInvisibleRectangle( uno::Reference< drawing::XShape > DummyShapeFactory::createRectangle( const uno::Reference< drawing::XShapes >& , const awt::Size& - , const awt::Point& ) + , const awt::Point& + , const tNameSequence& + , const tAnySequence& ) { return new DummyXShape(); } diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx index 3353f3c..69cc0c1 100644 --- a/chart2/source/view/main/ShapeFactory.cxx +++ b/chart2/source/view/main/ShapeFactory.cxx @@ -2042,7 +2042,9 @@ uno::Reference< drawing::XShape > ShapeFactory::createInvisibleRectangle( uno::Reference< drawing::XShape > ShapeFactory::createRectangle( const uno::Reference< drawing::XShapes >& xTarget , const awt::Size& rSize - , const awt::Point& rPosition ) + , const awt::Point& rPosition + , const tNameSequence& rPropNames + , const tAnySequence& rPropValues ) { uno::Reference< drawing::XShape > xShape( m_xShapeFactory->createInstance( "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); @@ -2051,6 +2053,8 @@ uno::Reference< drawing::XShape > ShapeFactory::createRectangle( xTarget->add( xShape ); xShape->setSize( rSize ); xShape->setPosition( rPosition ); + uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY_THROW ); + PropertyMapper::setMultiProperties( rPropNames, rPropValues, xPropSet ); } return xShape; diff --git a/chart2/source/view/main/VLegend.cxx b/chart2/source/view/main/VLegend.cxx index f13724d..60872ec 100644 --- a/chart2/source/view/main/VLegend.cxx +++ b/chart2/source/view/main/VLegend.cxx @@ -915,19 +915,12 @@ void VLegend::createShapes( Reference< drawing::XShape > xBorder = pShapeFactory->createRectangle( xLegendContainer, aLegendSize, - awt::Point(0,0)); + awt::Point(0,0), + aLineFillProperties.first, + aLineFillProperties.second ); - if( xBorder.is()) - { - - // apply legend properties - PropertyMapper::setMultiProperties( - aLineFillProperties.first, aLineFillProperties.second, - Reference< beans::XPropertySet >( xBorder, uno::UNO_QUERY )); - - //because of this name this border will be used for marking the legend - AbstractShapeFactory::setShapeName( xBorder, "MarkHandles" ); - } + //because of this name this border will be used for marking the legend + AbstractShapeFactory::setShapeName( xBorder, "MarkHandles" ); } } catch( const uno::Exception & ex ) diff --git a/chart2/source/view/main/VLegendSymbolFactory.cxx b/chart2/source/view/main/VLegendSymbolFactory.cxx index cd8dcc9..465b690 100644 --- a/chart2/source/view/main/VLegendSymbolFactory.cxx +++ b/chart2/source/view/main/VLegendSymbolFactory.cxx @@ -31,11 +31,12 @@ using ::com::sun::star::uno::Sequence; namespace { -void lcl_setPropetiesToShape( - const Reference< beans::XPropertySet > & xProp, - const Reference< drawing::XShape > & xShape, - ::chart::VLegendSymbolFactory::tPropertyType ePropertyType, - const awt::Size& aMaxSymbolExtent = awt::Size(0,0)) + +void getPropNamesAndValues( const Reference< beans::XPropertySet >& xProp, + ::chart::tNameSequence& rNames, + ::chart::tAnySequence& rValues, + ::chart::VLegendSymbolFactory::tPropertyType ePropertyType, + const awt::Size& aMaxSymbolExtent = awt::Size(0,0)) { const ::chart::tPropertyNameMap & aFilledSeriesNameMap( ::chart::PropertyMapper::getPropertyNameMapForFilledSeriesProperties()); const ::chart::tPropertyNameMap & aLineSeriesNameMap( ::chart::PropertyMapper::getPropertyNameMapForLineSeriesProperties()); @@ -43,47 +44,54 @@ void lcl_setPropetiesToShape( const ::chart::tPropertyNameMap & aFillNameMap( ::chart::PropertyMapper::getPropertyNameMapForFillProperties()); const ::chart::tPropertyNameMap & aFillLineNameMap( ::chart::PropertyMapper::getPropertyNameMapForFillAndLineProperties()); - Reference< beans::XPropertySet > xShapeProp( xShape, uno::UNO_QUERY ); - if( xProp.is() && xShapeProp.is() ) + ::chart::tPropertyNameValueMap aValueMap; + switch( ePropertyType ) { - ::chart::tPropertyNameValueMap aValueMap; - switch( ePropertyType ) - { - case ::chart::VLegendSymbolFactory::PROP_TYPE_FILLED_SERIES: - ::chart::PropertyMapper::getValueMap( aValueMap, aFilledSeriesNameMap, xProp ); - break; - case ::chart::VLegendSymbolFactory::PROP_TYPE_LINE_SERIES: - ::chart::PropertyMapper::getValueMap( aValueMap, aLineSeriesNameMap, xProp ); - break; - case ::chart::VLegendSymbolFactory::PROP_TYPE_LINE: - ::chart::PropertyMapper::getValueMap( aValueMap, aLineNameMap, xProp ); - break; - case ::chart::VLegendSymbolFactory::PROP_TYPE_FILL: - ::chart::PropertyMapper::getValueMap( aValueMap, aFillNameMap, xProp ); - break; - case ::chart::VLegendSymbolFactory::PROP_TYPE_FILL_AND_LINE: - ::chart::PropertyMapper::getValueMap( aValueMap, aFillLineNameMap, xProp ); - break; - } + case ::chart::VLegendSymbolFactory::PROP_TYPE_FILLED_SERIES: + ::chart::PropertyMapper::getValueMap( aValueMap, aFilledSeriesNameMap, xProp ); + break; + case ::chart::VLegendSymbolFactory::PROP_TYPE_LINE_SERIES: + ::chart::PropertyMapper::getValueMap( aValueMap, aLineSeriesNameMap, xProp ); + break; + case ::chart::VLegendSymbolFactory::PROP_TYPE_LINE: + ::chart::PropertyMapper::getValueMap( aValueMap, aLineNameMap, xProp ); + break; + case ::chart::VLegendSymbolFactory::PROP_TYPE_FILL: + ::chart::PropertyMapper::getValueMap( aValueMap, aFillNameMap, xProp ); + break; + case ::chart::VLegendSymbolFactory::PROP_TYPE_FILL_AND_LINE: + ::chart::PropertyMapper::getValueMap( aValueMap, aFillLineNameMap, xProp ); + break; + } - ::chart::tNameSequence aPropNames; - ::chart::tAnySequence aPropValues; - ::chart::PropertyMapper::getMultiPropertyListsFromValueMap( aPropNames, aPropValues, aValueMap ); + ::chart::PropertyMapper::getMultiPropertyListsFromValueMap( rNames, rValues, aValueMap ); - uno::Any* pLineWidthAny = ::chart::PropertyMapper::getValuePointer(aPropValues,aPropNames,"LineWidth"); - sal_Int32 nLineWidth = 0; - if( pLineWidthAny && (*pLineWidthAny>>=nLineWidth) ) - { - // use legend entry height as upper limit for line width - sal_Int32 nMaxLineWidthForLegend = aMaxSymbolExtent.Height; - if( nLineWidth>nMaxLineWidthForLegend ) - *pLineWidthAny = uno::makeAny( nMaxLineWidthForLegend ); - } - - ::chart::PropertyMapper::setMultiProperties( aPropNames, aPropValues, xShapeProp ); + uno::Any* pLineWidthAny = ::chart::PropertyMapper::getValuePointer(rValues,rNames,"LineWidth"); + sal_Int32 nLineWidth = 0; + if( pLineWidthAny && (*pLineWidthAny>>=nLineWidth) ) + { + // use legend entry height as upper limit for line width + sal_Int32 nMaxLineWidthForLegend = aMaxSymbolExtent.Height; + if( nLineWidth>nMaxLineWidthForLegend ) + *pLineWidthAny = uno::makeAny( nMaxLineWidthForLegend ); } } +void lcl_setPropetiesToShape( + const Reference< beans::XPropertySet > & xProp, + const Reference< drawing::XShape > & xShape, + ::chart::VLegendSymbolFactory::tPropertyType ePropertyType, + const awt::Size& aMaxSymbolExtent = awt::Size(0,0)) +{ + ::chart::tNameSequence aPropNames; + ::chart::tAnySequence aPropValues; + getPropNamesAndValues( xProp, aPropNames, aPropValues, + ePropertyType, aMaxSymbolExtent ); + + Reference< beans::XPropertySet > xShapeProp( xShape, uno::UNO_QUERY ); + ::chart::PropertyMapper::setMultiProperties( aPropNames, aPropValues, xShapeProp ); +} + } // anonymous namespace namespace chart @@ -176,13 +184,16 @@ Reference< drawing::XShape > VLegendSymbolFactory::createSymbol( } else // eStyle == LegendSymbolStyle_BOX { + tNameSequence aPropNames; + tAnySequence aPropValues; + + getPropNamesAndValues( xLegendEntryProperties, aPropNames, aPropValues, + ePropertyType );// PROP_TYPE_FILLED_SERIES + Reference< drawing::XShape > xShape = pShapeFactory->createRectangle( xResultGroup, - rEntryKeyAspectRatio, awt::Point( 0, 0 )); - if( xShape.is() ) - { - lcl_setPropetiesToShape( xLegendEntryProperties, xShape, ePropertyType ); // PROP_TYPE_FILLED_SERIES ); - } + rEntryKeyAspectRatio, awt::Point( 0, 0 ), + aPropNames, aPropValues ); } } catch( const uno::Exception & ex ) commit 0c3913cabf16228a38f228d210f5edea143ffcab Author: Markus Mohrhard <[email protected]> Date: Sun Oct 6 03:30:51 2013 +0200 and another file that only uses AbstractShapeFactory Change-Id: I5f986083fcbedae81281eb2bdaa6361115e1063a diff --git a/chart2/source/view/main/VLegend.cxx b/chart2/source/view/main/VLegend.cxx index 5efb74a..f13724d 100644 --- a/chart2/source/view/main/VLegend.cxx +++ b/chart2/source/view/main/VLegend.cxx @@ -153,19 +153,14 @@ awt::Size lcl_createTextShapes( const tPropertyValues & rTextProperties ) { awt::Size aResult; + AbstractShapeFactory* pShapeFactory = AbstractShapeFactory::getOrCreateShapeFactory(xShapeFactory); for( tViewLegendEntryContainer::const_iterator aIt( rEntries.begin()); aIt != rEntries.end(); ++aIt ) { try { - // create label shape - Reference< drawing::XShape > xEntry( - xShapeFactory->createInstance( - "com.sun.star.drawing.TextShape"), uno::UNO_QUERY_THROW ); - xTarget->add( xEntry ); - - // set label text + OUString aLabelString; Sequence< Reference< XFormattedString2 > > aLabelSeq = (*aIt).aLabel; for( sal_Int32 i = 0; i < aLabelSeq.getLength(); ++i ) { @@ -173,23 +168,20 @@ awt::Size lcl_createTextShapes( if( i == 1 ) break; - Reference< text::XTextRange > xRange( xEntry, uno::UNO_QUERY ); - OUString aLabelString( aLabelSeq[i]->getString()); + aLabelString = aLabelString + aLabelSeq[i]->getString(); // workaround for Issue #i67540# if( aLabelString.isEmpty()) aLabelString = " "; - if( xRange.is()) - xRange->setString( aLabelString ); + } - PropertyMapper::setMultiProperties( - rTextProperties.first, rTextProperties.second, - Reference< beans::XPropertySet >( xRange, uno::UNO_QUERY )); + Reference< drawing::XShape > xEntry = + pShapeFactory->createText( xTarget, aLabelString, + rTextProperties.first, rTextProperties.second, uno::Any() ); - // adapt max-extent - awt::Size aCurrSize( xEntry->getSize()); - aResult.Width = ::std::max( aResult.Width, aCurrSize.Width ); - aResult.Height = ::std::max( aResult.Height, aCurrSize.Height ); - } + // adapt max-extent + awt::Size aCurrSize( xEntry->getSize()); + aResult.Width = ::std::max( aResult.Width, aCurrSize.Width ); + aResult.Height = ::std::max( aResult.Height, aCurrSize.Height ); rOutTextShapes.push_back( xEntry ); } @@ -840,24 +832,16 @@ void VLegend::createShapes( try { //create shape and add to page - m_xShape.set( m_xShapeFactory->createInstance( - "com.sun.star.drawing.GroupShape"), uno::UNO_QUERY ); - m_xTarget->add( m_xShape ); - - // set name to enable selection - { - OUString aLegendParticle( ObjectIdentifier::createParticleForLegend( m_xLegend, m_xModel ) ); - AbstractShapeFactory::setShapeName( m_xShape, ObjectIdentifier::createClassifiedIdentifierForParticle( aLegendParticle ) ); - } + AbstractShapeFactory* pShapeFactory = AbstractShapeFactory::getOrCreateShapeFactory(m_xShapeFactory); + OUString aLegendParticle( ObjectIdentifier::createParticleForLegend( m_xLegend, m_xModel ) ); + m_xShape.set( pShapeFactory->createGroup2D( m_xTarget, + ObjectIdentifier::createClassifiedIdentifierForParticle( aLegendParticle )), + uno::UNO_QUERY); // create and insert sub-shapes Reference< drawing::XShapes > xLegendContainer( m_xShape, uno::UNO_QUERY ); if( xLegendContainer.is()) { - Reference< drawing::XShape > xBorder( - m_xShapeFactory->createInstance( - "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); - // for quickly setting properties tPropertyValues aLineFillProperties; tPropertyValues aTextProperties; @@ -884,19 +868,6 @@ void VLegend::createShapes( lcl_getProperties( xLegendProp, aLineFillProperties, aTextProperties, rPageSize ); } - if( xBorder.is()) - { - xLegendContainer->add( xBorder ); - - // apply legend properties - PropertyMapper::setMultiProperties( - aLineFillProperties.first, aLineFillProperties.second, - Reference< beans::XPropertySet >( xBorder, uno::UNO_QUERY )); - - //because of this name this border will be used for marking the legend - AbstractShapeFactory::setShapeName( xBorder, "MarkHandles" ); - } - // create entries double fViewFontSize = lcl_CalcViewFontSize( xLegendProp, rPageSize );//todo // #i109336# Improve auto positioning in chart @@ -934,13 +905,28 @@ void VLegend::createShapes( bool bSymbolsLeftSide = lcl_shouldSymbolsBePlacedOnTheLeftSide( xLegendProp, m_nDefaultWritingMode ); - if( aViewEntries.size() ) { + if( !aViewEntries.empty() ) { // place entries aLegendSize = lcl_placeLegendEntries( aViewEntries, eExpansion, bSymbolsLeftSide, fViewFontSize, aMaxSymbolExtent, aTextProperties, xLegendContainer, m_xShapeFactory, aLegendSize ); - if( xBorder.is() ) - xBorder->setSize( aLegendSize ); + } + + Reference< drawing::XShape > xBorder = + pShapeFactory->createRectangle( xLegendContainer, + aLegendSize, + awt::Point(0,0)); + + if( xBorder.is()) + { + + // apply legend properties + PropertyMapper::setMultiProperties( + aLineFillProperties.first, aLineFillProperties.second, + Reference< beans::XPropertySet >( xBorder, uno::UNO_QUERY )); + + //because of this name this border will be used for marking the legend + AbstractShapeFactory::setShapeName( xBorder, "MarkHandles" ); } } } commit 60e8ae2e37a34dfcb850ba8dee01628bf8afd47f Author: Markus Mohrhard <[email protected]> Date: Sun Oct 6 02:57:26 2013 +0200 use the AbstractShapeFactory in more places Change-Id: I992533b5e38ca5cb91f7688d94c35652f7dbaa38 diff --git a/chart2/source/view/inc/AbstractShapeFactory.hxx b/chart2/source/view/inc/AbstractShapeFactory.hxx index 163bfa3..6b97276 100644 --- a/chart2/source/view/inc/AbstractShapeFactory.hxx +++ b/chart2/source/view/inc/AbstractShapeFactory.hxx @@ -19,6 +19,8 @@ #include <com/sun/star/drawing/PointSequenceSequence.hpp> #include <com/sun/star/drawing/PolyPolygonShape3D.hpp> #include <com/sun/star/drawing/Position3D.hpp> +#include <com/sun/star/awt/Size.hpp> +#include <com/sun/star/awt/Point.hpp> #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/drawing/XShapes.hpp> #include <com/sun/star/graphic/XGraphic.hpp> @@ -160,6 +162,10 @@ public: , const ::com::sun::star::drawing::PointSequenceSequence& rPoints , const VLineProperties* pLineProperties = NULL ) = 0; + virtual com::sun::star::uno::Reference< com::sun::star::drawing::XShape > + createLine ( const ::com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& xTarget, + const com::sun::star::awt::Size& rSize, const com::sun::star::awt::Point& rPosition ) = 0; + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createLine3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::drawing::PolyPolygonShape3D& rPoints @@ -171,6 +177,11 @@ public: , const ::com::sun::star::drawing::Direction3D& rSize ) = 0; virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createCircle( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ) = 0; + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createText( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget2D , const OUString& rText , const tNameSequence& rPropNames @@ -184,6 +195,13 @@ public: ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize ) = 0; + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createRectangle( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ) = 0; + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ) = 0; diff --git a/chart2/source/view/inc/DummyShapeFactory.hxx b/chart2/source/view/inc/DummyShapeFactory.hxx index 57ab726..d774333 100644 --- a/chart2/source/view/inc/DummyShapeFactory.hxx +++ b/chart2/source/view/inc/DummyShapeFactory.hxx @@ -118,6 +118,10 @@ public: , const ::com::sun::star::drawing::PointSequenceSequence& rPoints , const VLineProperties* pLineProperties = NULL ); + virtual com::sun::star::uno::Reference< com::sun::star::drawing::XShape > + createLine ( const ::com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& xTarget, + const com::sun::star::awt::Size& rSize, const com::sun::star::awt::Point& rPosition ); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createLine3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::drawing::PolyPolygonShape3D& rPoints @@ -129,6 +133,11 @@ public: , const ::com::sun::star::drawing::Direction3D& rSize ); virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createCircle( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createText( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget2D , const OUString& rText , const tNameSequence& rPropNames @@ -142,6 +151,13 @@ public: ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize ); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createRectangle( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ); diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx index f67bfcc..577ce20 100644 --- a/chart2/source/view/inc/ShapeFactory.hxx +++ b/chart2/source/view/inc/ShapeFactory.hxx @@ -20,7 +20,6 @@ #define _CHART2_VIEW_SHAPEFACTORY_HXX #include "AbstractShapeFactory.hxx" -#include <com/sun/star/lang/XMultiServiceFactory.hpp> namespace chart { @@ -134,6 +133,10 @@ public: , const ::com::sun::star::drawing::PointSequenceSequence& rPoints , const VLineProperties* pLineProperties = NULL ); + virtual com::sun::star::uno::Reference< com::sun::star::drawing::XShape > + createLine ( const ::com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& xTarget, + const com::sun::star::awt::Size& rSize, const com::sun::star::awt::Point& rPosition ); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createLine3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::drawing::PolyPolygonShape3D& rPoints @@ -145,6 +148,11 @@ public: , const ::com::sun::star::drawing::Direction3D& rSize ); virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createCircle( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > createText( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget2D , const OUString& rText , const tNameSequence& rPropNames @@ -158,6 +166,14 @@ public: ::com::sun::star::drawing::XShapes >& xTarget , const ::com::sun::star::awt::Size& rSize ); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > + createRectangle( + const ::com::sun::star::uno::Reference< + ::com::sun::star::drawing::XShapes >& xTarget + , const ::com::sun::star::awt::Size& rSize + , const ::com::sun::star::awt::Point& rPosition ); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage>& xPage ); diff --git a/chart2/source/view/main/DummyShapeFactory.cxx b/chart2/source/view/main/DummyShapeFactory.cxx index 452de3a..1972297 100644 --- a/chart2/source/view/main/DummyShapeFactory.cxx +++ b/chart2/source/view/main/DummyShapeFactory.cxx @@ -204,6 +204,14 @@ uno::Reference< drawing::XShape > } uno::Reference< drawing::XShape > + DummyShapeFactory::createCircle( const uno::Reference< drawing::XShapes >& + , const awt::Size& + , const awt::Point& ) +{ + return new DummyXShape(); +} + +uno::Reference< drawing::XShape > DummyShapeFactory::createLine3D( const uno::Reference< drawing::XShapes >& , const drawing::PolyPolygonShape3D& , const VLineProperties& ) @@ -219,6 +227,13 @@ uno::Reference< drawing::XShape > return new DummyXShape(); } +uno::Reference< drawing::XShape > + DummyShapeFactory::createLine ( const uno::Reference< drawing::XShapes >& , + const awt::Size& , const awt::Point& ) +{ + return new DummyXShape(); +} + uno::Reference< drawing::XShape > DummyShapeFactory::createInvisibleRectangle( const uno::Reference< drawing::XShapes >& , const awt::Size& ) @@ -226,6 +241,14 @@ uno::Reference< drawing::XShape > DummyShapeFactory::createInvisibleRectangle( return new DummyXShape(); } +uno::Reference< drawing::XShape > DummyShapeFactory::createRectangle( + const uno::Reference< drawing::XShapes >& + , const awt::Size& + , const awt::Point& ) +{ + return new DummyXShape(); +} + uno::Reference< drawing::XShape > DummyShapeFactory::createText( const uno::Reference< drawing::XShapes >& , const OUString& diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx index bf8b360..3353f3c 100644 --- a/chart2/source/view/main/ShapeFactory.cxx +++ b/chart2/source/view/main/ShapeFactory.cxx @@ -1859,6 +1859,21 @@ uno::Reference< drawing::XShape > } uno::Reference< drawing::XShape > + ShapeFactory::createCircle( const uno::Reference< drawing::XShapes >& xTarget + , const awt::Size& rSize + , const awt::Point& rPosition ) +{ + uno::Reference< drawing::XShape > xShape( + m_xShapeFactory->createInstance( + "com.sun.star.drawing.EllipseShape" ), uno::UNO_QUERY ); + xTarget->add(xShape); + xShape->setSize( rSize ); + xShape->setPosition( rPosition ); + + return xShape; +} + +uno::Reference< drawing::XShape > ShapeFactory::createLine3D( const uno::Reference< drawing::XShapes >& xTarget , const drawing::PolyPolygonShape3D& rPoints , const VLineProperties& rLineProperties ) @@ -1983,6 +1998,21 @@ uno::Reference< drawing::XShape > return xShape; } +uno::Reference< drawing::XShape > + ShapeFactory::createLine ( const uno::Reference< drawing::XShapes >& xTarget, + const awt::Size& rSize, const awt::Point& rPosition ) +{ + //create shape + uno::Reference< drawing::XShape > xShape( + m_xShapeFactory->createInstance( + "com.sun.star.drawing.LineShape" ), uno::UNO_QUERY ); + xTarget->add(xShape); + xShape->setSize( rSize ); + xShape->setPosition( rPosition ); + + return xShape; +} + uno::Reference< drawing::XShape > ShapeFactory::createInvisibleRectangle( const uno::Reference< drawing::XShapes >& xTarget , const awt::Size& rSize ) @@ -1994,7 +2024,7 @@ uno::Reference< drawing::XShape > ShapeFactory::createInvisibleRectangle( uno::Reference< drawing::XShape > xShape( m_xShapeFactory->createInstance( "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); - if( xTarget.is() && xShape.is()) + if( xShape.is()) { xTarget->add( xShape ); ShapeFactory::makeShapeInvisible( xShape ); @@ -2009,6 +2039,23 @@ uno::Reference< drawing::XShape > ShapeFactory::createInvisibleRectangle( return 0; } +uno::Reference< drawing::XShape > ShapeFactory::createRectangle( + const uno::Reference< drawing::XShapes >& xTarget + , const awt::Size& rSize + , const awt::Point& rPosition ) +{ + uno::Reference< drawing::XShape > xShape( m_xShapeFactory->createInstance( + "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); + if( xShape.is()) + { + xTarget->add( xShape ); + xShape->setSize( rSize ); + xShape->setPosition( rPosition ); + } + + return xShape; +} + uno::Reference< drawing::XShape > ShapeFactory::createText( const uno::Reference< drawing::XShapes >& xTarget , const OUString& rText diff --git a/chart2/source/view/main/VLegendSymbolFactory.cxx b/chart2/source/view/main/VLegendSymbolFactory.cxx index 4588273..cd8dcc9 100644 --- a/chart2/source/view/main/VLegendSymbolFactory.cxx +++ b/chart2/source/view/main/VLegendSymbolFactory.cxx @@ -102,15 +102,15 @@ Reference< drawing::XShape > VLegendSymbolFactory::createSymbol( if( ! (xSymbolContainer.is() && xShapeFactory.is())) return xResult; - xResult.set( xShapeFactory->createInstance( - "com.sun.star.drawing.GroupShape"), uno::UNO_QUERY ); - xSymbolContainer->add( xResult ); + AbstractShapeFactory* pShapeFactory = AbstractShapeFactory::getOrCreateShapeFactory(xShapeFactory); + xResult.set( pShapeFactory->createGroup2D( xSymbolContainer ), uno::UNO_QUERY ); + Reference< drawing::XShapes > xResultGroup( xResult, uno::UNO_QUERY ); if( ! xResultGroup.is()) return xResult; // add an invisible square box to maintain aspect ratio - Reference< drawing::XShape > xBound( AbstractShapeFactory::getOrCreateShapeFactory(xShapeFactory)->createInvisibleRectangle( + Reference< drawing::XShape > xBound( pShapeFactory->createInvisibleRectangle( xResultGroup, rEntryKeyAspectRatio )); // create symbol @@ -118,14 +118,11 @@ Reference< drawing::XShape > VLegendSymbolFactory::createSymbol( { if( eStyle == LegendSymbolStyle_LINE ) { - Reference< drawing::XShape > xLine( xShapeFactory->createInstance( - "com.sun.star.drawing.LineShape"), uno::UNO_QUERY ); + Reference< drawing::XShape > xLine = + pShapeFactory->createLine( xResultGroup, awt::Size( rEntryKeyAspectRatio.Width, 0 ), + awt::Point( 0, rEntryKeyAspectRatio.Height/2 )); if( xLine.is()) { - xResultGroup->add( xLine ); - xLine->setSize( awt::Size( rEntryKeyAspectRatio.Width, 0 )); - xLine->setPosition( awt::Point( 0, rEntryKeyAspectRatio.Height/2 )); - lcl_setPropetiesToShape( xLegendEntryProperties, xLine, ePropertyType, rEntryKeyAspectRatio ); } @@ -162,32 +159,28 @@ Reference< drawing::XShape > VLegendSymbolFactory::createSymbol( } else if( aSymbol.Style == chart2::SymbolStyle_AUTO ) { - OSL_TRACE("the given parameter is not allowed to contain an automatic symbol style"); + SAL_WARN("chart", "the given parameter is not allowed to contain an automatic symbol style"); } } } else if( eStyle == LegendSymbolStyle_CIRCLE ) { - Reference< drawing::XShape > xShape( xShapeFactory->createInstance( - "com.sun.star.drawing.EllipseShape"), uno::UNO_QUERY ); + sal_Int32 nSize = std::min( rEntryKeyAspectRatio.Width, rEntryKeyAspectRatio.Height ); + Reference< drawing::XShape > xShape = + pShapeFactory->createCircle( xResultGroup, awt::Size( nSize, nSize ), + awt::Point( rEntryKeyAspectRatio.Width/2-nSize/2, rEntryKeyAspectRatio.Height/2-nSize/2 )); if( xShape.is() ) { - xResultGroup->add( xShape ); - sal_Int32 nSize = std::min( rEntryKeyAspectRatio.Width, rEntryKeyAspectRatio.Height ); - xShape->setSize( awt::Size( nSize, nSize ) ); - xShape->setPosition( awt::Point( rEntryKeyAspectRatio.Width/2-nSize/2, rEntryKeyAspectRatio.Height/2-nSize/2 ) ); lcl_setPropetiesToShape( xLegendEntryProperties, xShape, ePropertyType ); // PROP_TYPE_FILLED_SERIES ); } } else // eStyle == LegendSymbolStyle_BOX { - Reference< drawing::XShape > xShape( xShapeFactory->createInstance( - "com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY ); + Reference< drawing::XShape > xShape = + pShapeFactory->createRectangle( xResultGroup, + rEntryKeyAspectRatio, awt::Point( 0, 0 )); if( xShape.is() ) { - xResultGroup->add( xShape ); - xShape->setSize( rEntryKeyAspectRatio ); - xShape->setPosition( awt::Point( 0, 0 ) ); lcl_setPropetiesToShape( xLegendEntryProperties, xShape, ePropertyType ); // PROP_TYPE_FILLED_SERIES ); } } diff --git a/chart2/source/view/main/VTitle.cxx b/chart2/source/view/main/VTitle.cxx index 81b1be5..c95ff24 100644 --- a/chart2/source/view/main/VTitle.cxx +++ b/chart2/source/view/main/VTitle.cxx @@ -177,6 +177,7 @@ void VTitle::createShapes( { ASSERT_EXCEPTION( e ); } + if(bStackCharacters) { //if the characters should be stacked we use only the first character properties for code simplicity commit 5f62355a0707f1b988e66bc60d594522753efbcf Author: Markus Mohrhard <[email protected]> Date: Sat Oct 5 22:43:47 2013 +0200 some small fixes Change-Id: I9e18fc04e0e8d8be0bed0b9c7b80fd0e983893f1 diff --git a/chart2/source/view/diagram/VDiagram.cxx b/chart2/source/view/diagram/VDiagram.cxx index 36b0d20..643146c 100644 --- a/chart2/source/view/diagram/VDiagram.cxx +++ b/chart2/source/view/diagram/VDiagram.cxx @@ -85,7 +85,6 @@ VDiagram::VDiagram( VDiagram::~VDiagram() { - delete m_pShapeFactory; } void VDiagram::init( diff --git a/chart2/source/view/main/DummyShapeFactory.cxx b/chart2/source/view/main/DummyShapeFactory.cxx index 19f9030..452de3a 100644 --- a/chart2/source/view/main/DummyShapeFactory.cxx +++ b/chart2/source/view/main/DummyShapeFactory.cxx @@ -86,6 +86,7 @@ uno::Reference<drawing::XShape> , const drawing::Position3D& , const drawing::Direction3D& , sal_Int32 ) { + return new DummyXShape(); } uno::Reference<drawing::XShape> diff --git a/chart2/source/view/main/PlotterBase.cxx b/chart2/source/view/main/PlotterBase.cxx index a81b041..94eee35 100644 --- a/chart2/source/view/main/PlotterBase.cxx +++ b/chart2/source/view/main/PlotterBase.cxx @@ -56,7 +56,6 @@ void PlotterBase::initPlotter( const uno::Reference< drawing::XShapes >& xLogic PlotterBase::~PlotterBase() { - delete m_pShapeFactory; } void PlotterBase::setScales( const std::vector< ExplicitScaleData >& rScales, bool bSwapXAndYAxis ) _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
