xref: /trunk/main/sc/source/filter/starcalc/scfobj.cxx (revision b77af630)
1 /**************************************************************
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
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
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.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_scfilt.hxx"
26 
27 
28 #include <com/sun/star/embed/XEmbeddedObject.hpp>
29 #include <com/sun/star/embed/XVisualObject.hpp>
30 #include <com/sun/star/embed/Aspects.hpp>
31 
32 
33 using namespace com::sun::star;
34 
35 // INCLUDE ---------------------------------------------------------------
36 
37 #include <unotools/moduleoptions.hxx>
38 #include <svx/svdoole2.hxx>
39 #include <svx/svdpage.hxx>
40 #include <sfx2/objsh.hxx>
41 #include <sot/storage.hxx>
42 #include <sfx2/app.hxx>
43 #include <sot/clsids.hxx>
44 #include <svx/charthelper.hxx>
45 #include "address.hxx"
46 
47 #include "scfobj.hxx"
48 #include "document.hxx"
49 #include "drwlayer.hxx"
50 #include "chartarr.hxx"
51 
52 
53 // STATIC DATA -----------------------------------------------------------
54 
55 
56 //==================================================================
57 
InsertChart(ScDocument * pDoc,SCTAB nDestTab,const Rectangle & rRect,SCTAB nSrcTab,sal_uInt16 nX1,sal_uInt16 nY1,sal_uInt16 nX2,sal_uInt16 nY2)58 void Sc10InsertObject::InsertChart( ScDocument* pDoc, SCTAB nDestTab, const Rectangle& rRect,
59 								SCTAB nSrcTab, sal_uInt16 nX1, sal_uInt16 nY1, sal_uInt16 nX2, sal_uInt16 nY2 )
60 {
61 	//	wenn Chart nicht installiert ist, darf nicht auf SCH_MOD zugegriffen werden!
62 	if ( !SvtModuleOptions().IsChart() )
63 		return;
64 
65     ::rtl::OUString aName;
66     uno::Reference < embed::XEmbeddedObject > xObj = pDoc->GetDocumentShell()->
67             GetEmbeddedObjectContainer().CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID ).GetByteSequence(), aName );
68     if ( xObj.is() )
69 	{
70         SdrOle2Obj* pSdrOle2Obj = new SdrOle2Obj( ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), aName, rRect );
71 
72 		ScDrawLayer* pModel = pDoc->GetDrawLayer();
73 		if (!pModel)
74 		{
75 			pDoc->InitDrawLayer();
76 			pModel = pDoc->GetDrawLayer();
77 			DBG_ASSERT(pModel,"Draw Layer ?");
78 		}
79 
80 		SdrPage* pPage = pModel->GetPage(static_cast<sal_uInt16>(nDestTab));
81 		DBG_ASSERT(pPage,"Page ?");
82 		pPage->InsertObject(pSdrOle2Obj);
83 
84 		pSdrOle2Obj->SetLogicRect(rRect);				// erst nach InsertObject !!!
85         awt::Size aSz;
86         aSz.Width = rRect.GetSize().Width();
87         aSz.Height = rRect.GetSize().Height();
88         xObj->setVisualAreaSize( embed::Aspects::MSOLE_CONTENT, aSz );
89 
90         // #121334# This call will change the chart's default background fill from white to transparent.
91         // Add here again if this is wanted (see task description for details)
92         // ChartHelper::AdaptDefaultsForChart( xObj );
93 
94 			// hier kann das Chart noch nicht mit Daten gefuettert werden,
95 			// weil die Formeln noch nicht berechnet sind.
96 			// Deshalb in die ChartCollection, die Daten werden dann im
97 			// Sc10Import dtor geholt.
98 
99 		ScChartCollection* pColl = pDoc->GetChartCollection();
100 		pColl->Insert( new ScChartArray( pDoc, nSrcTab, static_cast<SCCOL>(nX1), static_cast<SCROW>(nY1), static_cast<SCCOL>(nX2), static_cast<SCROW>(nY2), aName ) );
101 	}
102 }
103 
104 
105 
106