xref: /AOO41X/main/sc/source/ui/view/drawvie3.cxx (revision 54628ca40d27d15cc98fe861da7fff7e60c2f7d6)
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_sc.hxx"
26 
27 
28 
29 // INCLUDE ---------------------------------------------------------------
30 
31 #include <svx/svdograf.hxx>
32 #include <svx/svdoole2.hxx>
33 #include <sfx2/app.hxx>
34 #include <sfx2/viewfrm.hxx>
35 
36 #include "drawview.hxx"
37 #include "drwlayer.hxx"
38 #include "viewdata.hxx"
39 #include "dbfunc.hxx"
40 #include "document.hxx"
41 #include "userdat.hxx"
42 #include "tabvwsh.hxx"
43 #include "docsh.hxx"
44 
45 void ScIMapDlgSet( const Graphic& rGraphic, const ImageMap* pImageMap,
46                     const TargetList* pTargetList, void* pEditingObj );     // imapwrap
47 sal_uInt16 ScIMapChildWindowId();
48 
49 // STATIC DATA -----------------------------------------------------------
50 
51 ScDrawView::ScDrawView( OutputDevice* pOut, ScViewData* pData ) :
52     FmFormView( pData->GetDocument()->GetDrawLayer(), pOut ),
53     pViewData( pData ),
54     pDev( pOut ),
55     pDoc( pData->GetDocument() ),
56     nTab( pData->GetTabNo() ),
57     pDropMarker( NULL ),
58     pDropMarkObj( NULL ),
59     bInConstruct( sal_True )
60     //HMHbDisableHdl( sal_False )
61 {
62     // #i73602# Use default from the configuration
63     SetBufferedOverlayAllowed(getOptionsDrawinglayer().IsOverlayBuffer_Calc());
64 
65     // #i74769#, #i75172# Use default from the configuration
66     SetBufferedOutputAllowed(getOptionsDrawinglayer().IsPaintBuffer_Calc());
67 
68     Construct();
69 }
70 
71 // Verankerung setzen
72 
73 void ScDrawView::SetAnchor( ScAnchorType eType )
74 {
75     SdrObject* pObj = NULL;
76     if( AreObjectsMarked() )
77     {
78         const SdrMarkList* pMark = &GetMarkedObjectList();
79         sal_uLong nCount = pMark->GetMarkCount();
80         for( sal_uLong i=0; i<nCount; i++ )
81         {
82             pObj = pMark->GetMark(i)->GetMarkedSdrObj();
83             ScDrawLayer::SetAnchor( pObj, eType );
84         }
85 
86         if ( pViewData )
87             pViewData->GetDocShell()->SetDrawModified();
88     }
89 }
90 
91 ScAnchorType ScDrawView::GetAnchor() const
92 {
93     sal_Bool bPage = sal_False;
94     sal_Bool bCell = sal_False;
95     const SdrObject* pObj = NULL;
96     if( AreObjectsMarked() )
97     {
98         const SdrMarkList* pMark = &GetMarkedObjectList();
99         sal_uLong nCount = pMark->GetMarkCount();
100         Point p0;
101         for( sal_uLong i=0; i<nCount; i++ )
102         {
103             pObj = pMark->GetMark(i)->GetMarkedSdrObj();
104             if( ScDrawLayer::GetAnchor( pObj ) == SCA_CELL )
105                 bCell =sal_True;
106             else
107                 bPage = sal_True;
108         }
109     }
110     if( bPage && !bCell )
111         return SCA_PAGE;
112     if( !bPage && bCell )
113         return SCA_CELL;
114     return SCA_DONTKNOW;
115 }
116 
117 void __EXPORT ScDrawView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
118 {
119     if (rHint.ISA(ScTabDeletedHint))                        // Tabelle geloescht
120     {
121         SCTAB nDelTab = ((ScTabDeletedHint&)rHint).GetTab();
122         if (ValidTab(nDelTab))
123         {
124             // used to be: HidePagePgNum(nDelTab) - hide only if the deleted sheet is shown here
125             if ( nDelTab == nTab )
126                 HideSdrPage();
127         }
128     }
129     else if (rHint.ISA(ScTabSizeChangedHint))               // Groesse geaendert
130     {
131         if ( nTab == ((ScTabSizeChangedHint&)rHint).GetTab() )
132             UpdateWorkArea();
133     }
134     else
135         FmFormView::Notify( rBC,rHint );
136 }
137 
138 void ScDrawView::UpdateIMap( SdrObject* pObj )
139 {
140     if ( pViewData &&
141          pViewData->GetViewShell()->GetViewFrame()->HasChildWindow( ScIMapChildWindowId() ) &&
142          pObj && ( pObj->ISA(SdrGrafObj) || pObj->ISA(SdrOle2Obj) ) )
143     {
144         Graphic     aGraphic;
145         TargetList  aTargetList;
146         ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo( pObj );
147         const ImageMap* pImageMap = NULL;
148         if ( pIMapInfo )
149             pImageMap = &pIMapInfo->GetImageMap();
150 
151         // Target-Liste besorgen
152         pViewData->GetViewShell()->GetViewFrame()->GetTargetList( aTargetList );
153 
154         // Grafik vom Objekt besorgen
155         if ( pObj->ISA( SdrGrafObj ) )
156             aGraphic = ( (SdrGrafObj*) pObj )->GetGraphic();
157         else
158         {
159             Graphic* pGraphic = ((const SdrOle2Obj*) pObj )->GetGraphic();
160             if ( pGraphic )
161                 aGraphic = *pGraphic;
162         }
163 
164         ScIMapDlgSet( aGraphic, pImageMap, &aTargetList, pObj );    // aus imapwrap
165 
166         // TargetListe kann von uns wieder geloescht werden
167         String* pEntry = aTargetList.First();
168         while( pEntry )
169         {
170             delete pEntry;
171             pEntry = aTargetList.Next();
172         }
173     }
174 }
175 
176 
177 
178 
179