1/**************************************************************
| 1/**************************************************************
|
2 *
| 2 *
|
3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at
| 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at
|
10 *
| 10 *
|
11 * http://www.apache.org/licenses/LICENSE-2.0
| 11 * http://www.apache.org/licenses/LICENSE-2.0
|
12 *
| 12 *
|
13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License.
| 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License.
|
19 *
| 19 *
|
20 *************************************************************/ 21
| 20 *************************************************************/ 21
|
| 22 23
|
22// MARKER(update_precomp.py): autogen include statement, do not remove 23#include "precompiled_svx.hxx" 24 25#include <svx/charthelper.hxx> 26#include <svtools/embedhlp.hxx> 27#include <tools/globname.hxx> 28#include <sot/clsids.hxx> 29#include <com/sun/star/lang/XUnoTunnel.hpp> 30#include <com/sun/star/util/XUpdatable.hpp> 31#include <com/sun/star/drawing/XDrawPageSupplier.hpp> 32#include <com/sun/star/lang/XMultiServiceFactory.hpp> 33#include <comphelper/processfactory.hxx> 34#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp> 35#include <drawinglayer/geometry/viewinformation2d.hxx> 36#include <com/sun/star/chart2/XChartDocument.hpp> 37#include <com/sun/star/drawing/FillStyle.hpp> 38#include <com/sun/star/drawing/LineStyle.hpp> 39
| 24// MARKER(update_precomp.py): autogen include statement, do not remove 25#include "precompiled_svx.hxx" 26 27#include <svx/charthelper.hxx> 28#include <svtools/embedhlp.hxx> 29#include <tools/globname.hxx> 30#include <sot/clsids.hxx> 31#include <com/sun/star/lang/XUnoTunnel.hpp> 32#include <com/sun/star/util/XUpdatable.hpp> 33#include <com/sun/star/drawing/XDrawPageSupplier.hpp> 34#include <com/sun/star/lang/XMultiServiceFactory.hpp> 35#include <comphelper/processfactory.hxx> 36#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp> 37#include <drawinglayer/geometry/viewinformation2d.hxx> 38#include <com/sun/star/chart2/XChartDocument.hpp> 39#include <com/sun/star/drawing/FillStyle.hpp> 40#include <com/sun/star/drawing/LineStyle.hpp> 41
|
40//////////////////////////////////////////////////////////////////////////////
| |
41 42using namespace ::com::sun::star; 43
| 42 43using namespace ::com::sun::star; 44
|
44//////////////////////////////////////////////////////////////////////////////
| |
45 46bool ChartHelper::IsChart(const svt::EmbeddedObjectRef& xObjRef) 47{
| 45 46bool ChartHelper::IsChart(const svt::EmbeddedObjectRef& xObjRef) 47{
|
48 if(!xObjRef.is()) 49 { 50 return false; 51 }
| 48 if(!xObjRef.is()) 49 { 50 return false; 51 }
|
52
| 52
|
53 const SvGlobalName aObjClsId(xObjRef->getClassID());
| 53 const SvGlobalName aObjClsId(xObjRef->getClassID());
|
54
| 54
|
55 if(SvGlobalName(SO3_SCH_CLASSID_30) == aObjClsId 56 || SvGlobalName(SO3_SCH_CLASSID_40) == aObjClsId 57 || SvGlobalName(SO3_SCH_CLASSID_50) == aObjClsId 58 || SvGlobalName(SO3_SCH_CLASSID_60) == aObjClsId) 59 { 60 return true; 61 }
| 55 if(SvGlobalName(SO3_SCH_CLASSID_30) == aObjClsId 56 || SvGlobalName(SO3_SCH_CLASSID_40) == aObjClsId 57 || SvGlobalName(SO3_SCH_CLASSID_50) == aObjClsId 58 || SvGlobalName(SO3_SCH_CLASSID_60) == aObjClsId) 59 { 60 return true; 61 }
|
62
| 62
|
63 return false;
| 63 return false;
|
64} 65 66drawinglayer::primitive2d::Primitive2DSequence ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
| 64} 65 66drawinglayer::primitive2d::Primitive2DSequence ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
|
67 const uno::Reference< ::frame::XModel >& rXModel, 68 basegfx::B2DRange& rRange)
| 67 const uno::Reference< ::frame::XModel >& rXModel, 68 basegfx::B2DRange& rRange)
|
69{
| 69{
|
70 drawinglayer::primitive2d::Primitive2DSequence aRetval;
| 70 drawinglayer::primitive2d::Primitive2DSequence aRetval;
|
71
| 71
|
72 if(rXModel.is()) 73 { 74 try 75 { 76 const uno::Reference< lang::XMultiServiceFactory > xChartFact(rXModel, uno::UNO_QUERY_THROW); 77 const uno::Reference< lang::XUnoTunnel > xChartView(xChartFact->createInstance(::rtl::OUString::createFromAscii("com.sun.star.chart2.ChartView")), uno::UNO_QUERY_THROW); 78 const uno::Reference< util::XUpdatable > xUpdatable(xChartView, uno::UNO_QUERY_THROW);
| 72 if(rXModel.is()) 73 { 74 try 75 { 76 const uno::Reference< lang::XMultiServiceFactory > xChartFact(rXModel, uno::UNO_QUERY_THROW); 77 const uno::Reference< lang::XUnoTunnel > xChartView(xChartFact->createInstance(::rtl::OUString::createFromAscii("com.sun.star.chart2.ChartView")), uno::UNO_QUERY_THROW); 78 const uno::Reference< util::XUpdatable > xUpdatable(xChartView, uno::UNO_QUERY_THROW);
|
79
| 79
|
80 if(xUpdatable.is()) 81 { 82 xUpdatable->update();
| 80 if(xUpdatable.is()) 81 { 82 xUpdatable->update();
|
83
| 83
|
84 const uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier(rXModel, uno::UNO_QUERY_THROW); 85 const uno::Reference< container::XIndexAccess > xShapeAccess(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW);
| 84 const uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier(rXModel, uno::UNO_QUERY_THROW); 85 const uno::Reference< container::XIndexAccess > xShapeAccess(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW);
|
86
| 86
|
87 if(xShapeAccess.is() && xShapeAccess->getCount()) 88 { 89 const sal_Int32 nShapeCount(xShapeAccess->getCount()); 90 const uno::Reference< lang::XMultiServiceFactory > xMgr(::comphelper::getProcessServiceFactory()); 91 const uno::Reference< graphic::XPrimitiveFactory2D > xPrimitiveFactory( 92 xMgr->createInstance( 93 String(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.graphic.PrimitiveFactory2D" ))), 94 uno::UNO_QUERY);
| 87 if(xShapeAccess.is() && xShapeAccess->getCount()) 88 { 89 const sal_Int32 nShapeCount(xShapeAccess->getCount()); 90 const uno::Reference< lang::XMultiServiceFactory > xMgr(::comphelper::getProcessServiceFactory()); 91 const uno::Reference< graphic::XPrimitiveFactory2D > xPrimitiveFactory( 92 xMgr->createInstance( 93 String(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.graphic.PrimitiveFactory2D" ))), 94 uno::UNO_QUERY);
|
95
| 95
|
96 if(xPrimitiveFactory.is()) 97 { 98 const uno::Sequence< beans::PropertyValue > aParams; 99 uno::Reference< drawing::XShape > xShape;
| 96 if(xPrimitiveFactory.is()) 97 { 98 const uno::Sequence< beans::PropertyValue > aParams; 99 uno::Reference< drawing::XShape > xShape;
|
100
| 100
|
101 for(sal_Int32 a(0); a < nShapeCount; a++) 102 { 103 xShapeAccess->getByIndex(a) >>= xShape;
| 101 for(sal_Int32 a(0); a < nShapeCount; a++) 102 { 103 xShapeAccess->getByIndex(a) >>= xShape;
|
104
| 104
|
105 if(xShape.is()) 106 { 107 const drawinglayer::primitive2d::Primitive2DSequence aNew( 108 xPrimitiveFactory->createPrimitivesFromXShape( 109 xShape, 110 aParams));
| 105 if(xShape.is()) 106 { 107 const drawinglayer::primitive2d::Primitive2DSequence aNew( 108 xPrimitiveFactory->createPrimitivesFromXShape( 109 xShape, 110 aParams));
|
111
| 111
|
112 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence( 113 aRetval, 114 aNew); 115 } 116 } 117 } 118 } 119 } 120 } 121 catch(uno::Exception&) 122 { 123 OSL_ENSURE(false, "Unexpected exception!"); 124 }
| 112 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence( 113 aRetval, 114 aNew); 115 } 116 } 117 } 118 } 119 } 120 } 121 catch(uno::Exception&) 122 { 123 OSL_ENSURE(false, "Unexpected exception!"); 124 }
|
125
| 125
|
126 if(aRetval.hasElements()) 127 { 128 const drawinglayer::geometry::ViewInformation2D aViewInformation2D; 129 130 rRange = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(aRetval, aViewInformation2D); 131 } 132 }
| 126 if(aRetval.hasElements()) 127 { 128 const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
|
133
| 129
|
134 return aRetval;
| 130 rRange = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(aRetval, aViewInformation2D); 131 } 132 } 133 134 return aRetval;
|
135} 136 137void ChartHelper::AdaptDefaultsForChart(
| 135} 136 137void ChartHelper::AdaptDefaultsForChart(
|
138 const uno::Reference < embed::XEmbeddedObject > & xEmbObj, 139 bool /* bNoFillStyle */, 140 bool /* bNoLineStyle */)
| 138 const uno::Reference < embed::XEmbeddedObject > & xEmbObj, 139 bool /* bNoFillStyle */, 140 bool /* bNoLineStyle */)
|
141{
| 141{
|
142 if( xEmbObj.is()) 143 { 144 uno::Reference< chart2::XChartDocument > xChartDoc( xEmbObj->getComponent(), uno::UNO_QUERY ); 145 OSL_ENSURE( xChartDoc.is(), "Trying to set chart property to non-chart OLE" ); 146 if( !xChartDoc.is()) 147 return;
| 142 if( xEmbObj.is()) 143 { 144 uno::Reference< chart2::XChartDocument > xChartDoc( xEmbObj->getComponent(), uno::UNO_QUERY ); 145 OSL_ENSURE( xChartDoc.is(), "Trying to set chart property to non-chart OLE" ); 146 if( !xChartDoc.is()) 147 return;
|
148
| 148
|
149 try 150 { 151 // set background to transparent (none) 152 uno::Reference< beans::XPropertySet > xPageProp( xChartDoc->getPageBackground()); 153 if( xPageProp.is()) 154 xPageProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FillStyle")), 155 uno::makeAny( drawing::FillStyle_NONE )); 156 // set no border 157 if( xPageProp.is()) 158 xPageProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LineStyle")), 159 uno::makeAny( drawing::LineStyle_NONE )); 160 } 161 catch( const uno::Exception & ) 162 { 163 OSL_ENSURE( false, "Exception caught in AdaptDefaultsForChart" ); 164 } 165 }
| 149 try 150 { 151 // set background to transparent (none) 152 uno::Reference< beans::XPropertySet > xPageProp( xChartDoc->getPageBackground()); 153 if( xPageProp.is()) 154 xPageProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FillStyle")), 155 uno::makeAny( drawing::FillStyle_NONE )); 156 // set no border 157 if( xPageProp.is()) 158 xPageProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LineStyle")), 159 uno::makeAny( drawing::LineStyle_NONE )); 160 } 161 catch( const uno::Exception & ) 162 { 163 OSL_ENSURE( false, "Exception caught in AdaptDefaultsForChart" ); 164 } 165 }
|
166} 167
| 166} 167
|
168////////////////////////////////////////////////////////////////////////////// 169// eof
| 168/* vim: set noet sw=4 ts=4: */
|
| |