xref: /aoo41x/main/svx/source/dialog/connctrl.cxx (revision f6e50924)
1*f6e50924SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*f6e50924SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*f6e50924SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*f6e50924SAndrew Rist  * distributed with this work for additional information
6*f6e50924SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*f6e50924SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*f6e50924SAndrew Rist  * "License"); you may not use this file except in compliance
9*f6e50924SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*f6e50924SAndrew Rist  *
11*f6e50924SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*f6e50924SAndrew Rist  *
13*f6e50924SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*f6e50924SAndrew Rist  * software distributed under the License is distributed on an
15*f6e50924SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f6e50924SAndrew Rist  * KIND, either express or implied.  See the License for the
17*f6e50924SAndrew Rist  * specific language governing permissions and limitations
18*f6e50924SAndrew Rist  * under the License.
19*f6e50924SAndrew Rist  *
20*f6e50924SAndrew Rist  *************************************************************/
21*f6e50924SAndrew Rist 
22*f6e50924SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svx.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir // include ---------------------------------------------------------------
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <svx/svdoedge.hxx>
30cdf0e10cSrcweir #include <svx/svdattrx.hxx>
31cdf0e10cSrcweir #include <svx/svdmark.hxx>
32cdf0e10cSrcweir #include <svx/svdview.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include <svx/svdpage.hxx> // SdrObjList
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #include "svx/connctrl.hxx"
37cdf0e10cSrcweir #include <svx/dialmgr.hxx>
38cdf0e10cSrcweir #include "svx/dlgutil.hxx"
39cdf0e10cSrcweir 
40cdf0e10cSrcweir // #110094#
41cdf0e10cSrcweir #include <svx/sdr/contact/objectcontactofobjlistpainter.hxx>
42cdf0e10cSrcweir 
43cdf0e10cSrcweir // #110094#
44cdf0e10cSrcweir #include <svx/sdr/contact/displayinfo.hxx>
45cdf0e10cSrcweir #include <vcl/svapp.hxx>
46cdf0e10cSrcweir 
47cdf0e10cSrcweir /*************************************************************************
48cdf0e10cSrcweir |*
49cdf0e10cSrcweir |* Ctor SvxXConnectionPreview
50cdf0e10cSrcweir |*
51cdf0e10cSrcweir *************************************************************************/
52cdf0e10cSrcweir 
SvxXConnectionPreview(Window * pParent,const ResId & rResId,const SfxItemSet & rInAttrs)53cdf0e10cSrcweir SvxXConnectionPreview::SvxXConnectionPreview( Window* pParent, const ResId& rResId,
54cdf0e10cSrcweir 							const SfxItemSet& rInAttrs ) :
55cdf0e10cSrcweir 							Control	( pParent, rResId ),
56cdf0e10cSrcweir                             rAttrs  ( rInAttrs ),
57cdf0e10cSrcweir                             pEdgeObj( NULL ),
58cdf0e10cSrcweir 							pObjList( NULL ),
59cdf0e10cSrcweir                             pView   ( NULL )
60cdf0e10cSrcweir {
61cdf0e10cSrcweir 	SetMapMode( MAP_100TH_MM );
62cdf0e10cSrcweir 	SetStyles();
63cdf0e10cSrcweir }
64cdf0e10cSrcweir 
65cdf0e10cSrcweir /*************************************************************************
66cdf0e10cSrcweir |*
67cdf0e10cSrcweir |* Dtor SvxXConnectionPreview
68cdf0e10cSrcweir |*
69cdf0e10cSrcweir *************************************************************************/
70cdf0e10cSrcweir 
~SvxXConnectionPreview()71cdf0e10cSrcweir SvxXConnectionPreview::~SvxXConnectionPreview()
72cdf0e10cSrcweir {
73cdf0e10cSrcweir 	delete pObjList;
74cdf0e10cSrcweir }
75cdf0e10cSrcweir 
76cdf0e10cSrcweir /*************************************************************************
77cdf0e10cSrcweir |*
78cdf0e10cSrcweir |* Dtor SvxXConnectionPreview
79cdf0e10cSrcweir |*
80cdf0e10cSrcweir *************************************************************************/
81cdf0e10cSrcweir 
Construct()82cdf0e10cSrcweir void SvxXConnectionPreview::Construct()
83cdf0e10cSrcweir {
84cdf0e10cSrcweir 	DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
85cdf0e10cSrcweir 
86cdf0e10cSrcweir 	const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
87cdf0e10cSrcweir 	sal_uIntPtr nMarkCount = rMarkList.GetMarkCount();
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 	if( nMarkCount >= 1 )
90cdf0e10cSrcweir 	{
91cdf0e10cSrcweir 		sal_Bool bFound = sal_False;
92cdf0e10cSrcweir 		const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 
95cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < nMarkCount && !bFound; i++ )
96cdf0e10cSrcweir 		{
97cdf0e10cSrcweir 			pObj = rMarkList.GetMark( i )->GetMarkedSdrObj();
98cdf0e10cSrcweir 			sal_uInt32 nInv = pObj->GetObjInventor();
99cdf0e10cSrcweir 			sal_uInt16 nId = pObj->GetObjIdentifier();
100cdf0e10cSrcweir 			if( nInv == SdrInventor && nId == OBJ_EDGE )
101cdf0e10cSrcweir 			{
102cdf0e10cSrcweir 				bFound = sal_True;
103cdf0e10cSrcweir 				SdrEdgeObj* pTmpEdgeObj = (SdrEdgeObj*) pObj;
104cdf0e10cSrcweir 				pEdgeObj = (SdrEdgeObj*) pTmpEdgeObj->Clone();
105cdf0e10cSrcweir 
106cdf0e10cSrcweir 				SdrObjConnection& rConn1 = (SdrObjConnection&)pEdgeObj->GetConnection( sal_True );
107cdf0e10cSrcweir 				SdrObjConnection& rConn2 = (SdrObjConnection&)pEdgeObj->GetConnection( sal_False );
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 				rConn1 = pTmpEdgeObj->GetConnection( sal_True );
110cdf0e10cSrcweir 				rConn2 = pTmpEdgeObj->GetConnection( sal_False );
111cdf0e10cSrcweir 
112cdf0e10cSrcweir 				SdrObject* pTmpObj1 = pTmpEdgeObj->GetConnectedNode( sal_True );
113cdf0e10cSrcweir 				SdrObject* pTmpObj2 = pTmpEdgeObj->GetConnectedNode( sal_False );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 				// #110094#
116cdf0e10cSrcweir 				// potential memory leak here (!). Create SdrObjList only when there is
117cdf0e10cSrcweir 				// not yet one.
118cdf0e10cSrcweir 				if(!pObjList)
119cdf0e10cSrcweir 				{
120cdf0e10cSrcweir 					pObjList = new SdrObjList( pView->GetModel(), NULL );
121cdf0e10cSrcweir 				}
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 				if( pTmpObj1 )
124cdf0e10cSrcweir 				{
125cdf0e10cSrcweir 					SdrObject* pObj1 = pTmpObj1->Clone();
126cdf0e10cSrcweir 					pObjList->InsertObject( pObj1 );
127cdf0e10cSrcweir 					pEdgeObj->ConnectToNode( sal_True, pObj1 );
128cdf0e10cSrcweir 				}
129cdf0e10cSrcweir 				if( pTmpObj2 )
130cdf0e10cSrcweir 				{
131cdf0e10cSrcweir 					SdrObject* pObj2 = pTmpObj2->Clone();
132cdf0e10cSrcweir 					pObjList->InsertObject( pObj2 );
133cdf0e10cSrcweir 					pEdgeObj->ConnectToNode( sal_False, pObj2 );
134cdf0e10cSrcweir 				}
135cdf0e10cSrcweir 				pObjList->InsertObject( pEdgeObj );
136cdf0e10cSrcweir 			}
137cdf0e10cSrcweir 		}
138cdf0e10cSrcweir 	}
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	if( !pEdgeObj )
141cdf0e10cSrcweir 		pEdgeObj = new SdrEdgeObj();
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 	// Groesse anpassen
144cdf0e10cSrcweir 	if( pObjList )
145cdf0e10cSrcweir 	{
146cdf0e10cSrcweir 		OutputDevice* pOD = pView->GetFirstOutputDevice(); // GetWin( 0 );
147cdf0e10cSrcweir 		Rectangle aRect = pObjList->GetAllObjBoundRect();
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 		MapMode aMapMode = GetMapMode();
150cdf0e10cSrcweir 		aMapMode.SetMapUnit( pOD->GetMapMode().GetMapUnit() );
151cdf0e10cSrcweir 		SetMapMode( aMapMode );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 		MapMode			aDisplayMap( aMapMode );
154cdf0e10cSrcweir 		Point			aNewPos;
155cdf0e10cSrcweir 		Size			aNewSize;
156cdf0e10cSrcweir 		const Size		aWinSize = PixelToLogic( GetOutputSizePixel(), aDisplayMap );
157cdf0e10cSrcweir 		const long		nWidth = aWinSize.Width();
158cdf0e10cSrcweir 		const long		nHeight = aWinSize.Height();
159cdf0e10cSrcweir 		double          fRectWH = (double) aRect.GetWidth() / aRect.GetHeight();
160cdf0e10cSrcweir 		double          fWinWH = (double) nWidth / nHeight;
161cdf0e10cSrcweir 
162cdf0e10cSrcweir 		// Bitmap an Thumbgroesse anpassen (hier nicht!)
163cdf0e10cSrcweir 		if ( fRectWH < fWinWH)
164cdf0e10cSrcweir 		{
165cdf0e10cSrcweir 			aNewSize.Width() = (long) ( (double) nHeight * fRectWH );
166cdf0e10cSrcweir 			aNewSize.Height()= nHeight;
167cdf0e10cSrcweir 		}
168cdf0e10cSrcweir 		else
169cdf0e10cSrcweir 		{
170cdf0e10cSrcweir 			aNewSize.Width() = nWidth;
171cdf0e10cSrcweir 			aNewSize.Height()= (long) ( (double) nWidth / fRectWH );
172cdf0e10cSrcweir 		}
173cdf0e10cSrcweir 
174cdf0e10cSrcweir 		Fraction aFrac1( aWinSize.Width(), aRect.GetWidth() );
175cdf0e10cSrcweir 		Fraction aFrac2( aWinSize.Height(), aRect.GetHeight() );
176cdf0e10cSrcweir 		Fraction aMinFrac( aFrac1 <= aFrac2 ? aFrac1 : aFrac2 );
177cdf0e10cSrcweir 
178cdf0e10cSrcweir 		// MapMode umsetzen
179cdf0e10cSrcweir 		aDisplayMap.SetScaleX( aMinFrac );
180cdf0e10cSrcweir 		aDisplayMap.SetScaleY( aMinFrac );
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 		// Zentrierung
183cdf0e10cSrcweir 		aNewPos.X() = ( nWidth - aNewSize.Width() )  >> 1;
184cdf0e10cSrcweir 		aNewPos.Y() = ( nHeight - aNewSize.Height() ) >> 1;
185cdf0e10cSrcweir 
186cdf0e10cSrcweir 		aDisplayMap.SetOrigin( LogicToLogic( aNewPos, aMapMode, aDisplayMap ) );
187cdf0e10cSrcweir 		SetMapMode( aDisplayMap );
188cdf0e10cSrcweir 
189cdf0e10cSrcweir 		// Ursprung
190cdf0e10cSrcweir 		aNewPos = aDisplayMap.GetOrigin();
191cdf0e10cSrcweir 		aNewPos -= Point( aRect.TopLeft().X(), aRect.TopLeft().Y() );
192cdf0e10cSrcweir 		aDisplayMap.SetOrigin( aNewPos );
193cdf0e10cSrcweir 		SetMapMode( aDisplayMap );
194cdf0e10cSrcweir 
195cdf0e10cSrcweir 
196cdf0e10cSrcweir 		Point aPos;
197cdf0e10cSrcweir 		MouseEvent aMEvt( aPos, 1, 0, MOUSE_RIGHT );
198cdf0e10cSrcweir 		MouseButtonDown( aMEvt );
199cdf0e10cSrcweir 		/*
200cdf0e10cSrcweir 		Point aPt( -aRect.TopLeft().X(), -aRect.TopLeft().Y() );
201cdf0e10cSrcweir 		aMapMode.SetOrigin( aPt );
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 		// Skalierung
204cdf0e10cSrcweir 		Size aSize = GetOutputSize();
205cdf0e10cSrcweir 		Fraction aFrac1( aSize.Width(), aRect.GetWidth() );
206cdf0e10cSrcweir 		Fraction aFrac2( aSize.Height(), aRect.GetHeight() );
207cdf0e10cSrcweir 		Fraction aMaxFrac( aFrac1 > aFrac2 ? aFrac1 : aFrac2 );
208cdf0e10cSrcweir 		Fraction aMinFrac( aFrac1 <= aFrac2 ? aFrac1 : aFrac2 );
209cdf0e10cSrcweir 		sal_Bool bChange = (sal_Bool) ( (double)aMinFrac > 1.0 );
210cdf0e10cSrcweir 		aMapMode.SetScaleX( aMinFrac );
211cdf0e10cSrcweir 		aMapMode.SetScaleY( aMinFrac );
212cdf0e10cSrcweir 
213cdf0e10cSrcweir 		// zentrieren
214cdf0e10cSrcweir 		long nXXL = aSize.Width() > aRect.GetWidth() ? aSize.Width() : aRect.GetWidth();
215cdf0e10cSrcweir 		long nXS = aSize.Width() <= aRect.GetWidth() ? aSize.Width() : aRect.GetWidth();
216cdf0e10cSrcweir 		if( bChange )
217cdf0e10cSrcweir 		{
218cdf0e10cSrcweir 			long nTmp = nXXL; nXXL = nXS; nXS = nTmp;
219cdf0e10cSrcweir 		}
220cdf0e10cSrcweir 		long nX = (long) ( (double)aMinFrac * (double)nXXL );
221cdf0e10cSrcweir 		nX = (long) ( (double)labs( nXS - nX ) / (double)aMinFrac / 2.0 );
222cdf0e10cSrcweir 
223cdf0e10cSrcweir 		long nYXL = aSize.Height() > aRect.GetHeight() ? aSize.Height() : aRect.GetHeight();
224cdf0e10cSrcweir 		long nYS = aSize.Height() <= aRect.GetHeight() ? aSize.Height() : aRect.GetHeight();
225cdf0e10cSrcweir 		if( bChange )
226cdf0e10cSrcweir 		{
227cdf0e10cSrcweir 			long nTmp = nXXL; nXXL = nXS; nXS = nTmp;
228cdf0e10cSrcweir 		}
229cdf0e10cSrcweir 		long nY = (long) ( (double)aMinFrac * (double)nYXL );
230cdf0e10cSrcweir 		nY = (long) ( (double)labs( nYS - nY ) / (double)aMinFrac / 2.0 );
231cdf0e10cSrcweir 
232cdf0e10cSrcweir 		aPt += Point( nX, nY );
233cdf0e10cSrcweir 		aMapMode.SetOrigin( aPt );
234cdf0e10cSrcweir 
235cdf0e10cSrcweir 		SetMapMode( aMapMode );
236cdf0e10cSrcweir 		*/
237cdf0e10cSrcweir 	}
238cdf0e10cSrcweir }
239cdf0e10cSrcweir 
240cdf0e10cSrcweir /*************************************************************************
241cdf0e10cSrcweir |*
242cdf0e10cSrcweir |* SvxXConnectionPreview: Paint()
243cdf0e10cSrcweir |*
244cdf0e10cSrcweir *************************************************************************/
245cdf0e10cSrcweir 
Paint(const Rectangle &)246cdf0e10cSrcweir void SvxXConnectionPreview::Paint( const Rectangle& )
247cdf0e10cSrcweir {
248cdf0e10cSrcweir 	if( pObjList )
249cdf0e10cSrcweir 	{
250cdf0e10cSrcweir 		// #110094#
251cdf0e10cSrcweir 		// This will not work anymore. To not start at Adam and Eve, i will
252cdf0e10cSrcweir 		// ATM not try to change all this stuff to really using an own model
253cdf0e10cSrcweir 		// and a view. I will just try to provide a mechanism to paint such
254cdf0e10cSrcweir 		// objects without own model and without a page/view with the new
255cdf0e10cSrcweir 		// mechanism.
256cdf0e10cSrcweir 
257cdf0e10cSrcweir 		// New stuff: Use a ObjectContactOfObjListPainter.
258cdf0e10cSrcweir 		sdr::contact::SdrObjectVector aObjectVector;
259cdf0e10cSrcweir 
260cdf0e10cSrcweir 		for(sal_uInt32 a(0L); a < pObjList->GetObjCount(); a++)
261cdf0e10cSrcweir 		{
262cdf0e10cSrcweir 			SdrObject* pObject = pObjList->GetObj(a);
263cdf0e10cSrcweir 			DBG_ASSERT(pObject,
264cdf0e10cSrcweir 				"SvxXConnectionPreview::Paint: Corrupt ObjectList (!)");
265cdf0e10cSrcweir 			aObjectVector.push_back(pObject);
266cdf0e10cSrcweir 		}
267cdf0e10cSrcweir 
268cdf0e10cSrcweir 		sdr::contact::ObjectContactOfObjListPainter aPainter(*this, aObjectVector, 0);
269cdf0e10cSrcweir 		sdr::contact::DisplayInfo aDisplayInfo;
270cdf0e10cSrcweir 
271cdf0e10cSrcweir 		// do processing
272cdf0e10cSrcweir 		aPainter.ProcessDisplay(aDisplayInfo);
273cdf0e10cSrcweir 	}
274cdf0e10cSrcweir }
275cdf0e10cSrcweir 
276cdf0e10cSrcweir /*************************************************************************
277cdf0e10cSrcweir |*
278cdf0e10cSrcweir |* SvxXConnectionPreview: SetAttributes()
279cdf0e10cSrcweir |*
280cdf0e10cSrcweir *************************************************************************/
281cdf0e10cSrcweir 
SetAttributes(const SfxItemSet & rInAttrs)282cdf0e10cSrcweir void SvxXConnectionPreview::SetAttributes( const SfxItemSet& rInAttrs )
283cdf0e10cSrcweir {
284cdf0e10cSrcweir 	//pEdgeObj->SetItemSetAndBroadcast(rInAttrs);
285cdf0e10cSrcweir 	pEdgeObj->SetMergedItemSetAndBroadcast(rInAttrs);
286cdf0e10cSrcweir 
287cdf0e10cSrcweir 	Invalidate();
288cdf0e10cSrcweir }
289cdf0e10cSrcweir 
290cdf0e10cSrcweir /*************************************************************************
291cdf0e10cSrcweir |*
292cdf0e10cSrcweir |* Ermittelt die Anzahl der Linienversaetze anhand des Preview-Objektes
293cdf0e10cSrcweir |*
294cdf0e10cSrcweir *************************************************************************/
295cdf0e10cSrcweir 
GetLineDeltaAnz()296cdf0e10cSrcweir sal_uInt16 SvxXConnectionPreview::GetLineDeltaAnz()
297cdf0e10cSrcweir {
298cdf0e10cSrcweir 	const SfxItemSet& rSet = pEdgeObj->GetMergedItemSet();
299cdf0e10cSrcweir 	sal_uInt16 nCount(0);
300cdf0e10cSrcweir 
301cdf0e10cSrcweir 	if(SFX_ITEM_DONTCARE != rSet.GetItemState(SDRATTR_EDGELINEDELTAANZ))
302cdf0e10cSrcweir 		nCount = ((const SdrEdgeLineDeltaAnzItem&)rSet.Get(SDRATTR_EDGELINEDELTAANZ)).GetValue();
303cdf0e10cSrcweir 
304cdf0e10cSrcweir 	return nCount;
305cdf0e10cSrcweir }
306cdf0e10cSrcweir 
307cdf0e10cSrcweir /*************************************************************************
308cdf0e10cSrcweir |*
309cdf0e10cSrcweir |* SvxXConnectionPreview: MouseButtonDown()
310cdf0e10cSrcweir |*
311cdf0e10cSrcweir *************************************************************************/
312cdf0e10cSrcweir 
MouseButtonDown(const MouseEvent & rMEvt)313cdf0e10cSrcweir void SvxXConnectionPreview::MouseButtonDown( const MouseEvent& rMEvt )
314cdf0e10cSrcweir {
315cdf0e10cSrcweir 	sal_Bool bZoomIn  = rMEvt.IsLeft() && !rMEvt.IsShift();
316cdf0e10cSrcweir 	sal_Bool bZoomOut = rMEvt.IsRight() || rMEvt.IsShift();
317cdf0e10cSrcweir 	sal_Bool bCtrl	  = rMEvt.IsMod1();
318cdf0e10cSrcweir 
319cdf0e10cSrcweir 	if( bZoomIn || bZoomOut )
320cdf0e10cSrcweir 	{
321cdf0e10cSrcweir 		MapMode aMapMode = GetMapMode();
322cdf0e10cSrcweir 		Fraction aXFrac = aMapMode.GetScaleX();
323cdf0e10cSrcweir 		Fraction aYFrac = aMapMode.GetScaleY();
324cdf0e10cSrcweir 		Fraction* pMultFrac;
325cdf0e10cSrcweir 
326cdf0e10cSrcweir 		if( bZoomIn )
327cdf0e10cSrcweir 		{
328cdf0e10cSrcweir 			if( bCtrl )
329cdf0e10cSrcweir 				pMultFrac = new Fraction( 3, 2 );
330cdf0e10cSrcweir 			else
331cdf0e10cSrcweir 				pMultFrac = new Fraction( 11, 10 );
332cdf0e10cSrcweir 		}
333cdf0e10cSrcweir 		else
334cdf0e10cSrcweir 		{
335cdf0e10cSrcweir 			if( bCtrl )
336cdf0e10cSrcweir 				pMultFrac = new Fraction( 2, 3 );
337cdf0e10cSrcweir 			else
338cdf0e10cSrcweir 				pMultFrac = new Fraction( 10, 11 );
339cdf0e10cSrcweir 		}
340cdf0e10cSrcweir 
341cdf0e10cSrcweir 		aXFrac *= *pMultFrac;
342cdf0e10cSrcweir 		aYFrac *= *pMultFrac;
343cdf0e10cSrcweir 		if( (double)aXFrac > 0.001 && (double)aXFrac < 1000.0 &&
344cdf0e10cSrcweir 			(double)aYFrac > 0.001 && (double)aYFrac < 1000.0 )
345cdf0e10cSrcweir 		{
346cdf0e10cSrcweir 			aMapMode.SetScaleX( aXFrac );
347cdf0e10cSrcweir 			aMapMode.SetScaleY( aYFrac );
348cdf0e10cSrcweir 			SetMapMode( aMapMode );
349cdf0e10cSrcweir 
350cdf0e10cSrcweir 			Size aOutSize( GetOutputSize() );
351cdf0e10cSrcweir 
352cdf0e10cSrcweir 			Point aPt( aMapMode.GetOrigin() );
353cdf0e10cSrcweir 			long nX = (long)( ( (double)aOutSize.Width() - ( (double)aOutSize.Width() * (double)*pMultFrac  ) ) / 2.0 + 0.5 );
354cdf0e10cSrcweir 			long nY = (long)( ( (double)aOutSize.Height() - ( (double)aOutSize.Height() * (double)*pMultFrac  ) ) / 2.0 + 0.5 );
355cdf0e10cSrcweir 			aPt.X() +=  nX;
356cdf0e10cSrcweir 			aPt.Y() +=  nY;
357cdf0e10cSrcweir 
358cdf0e10cSrcweir 			aMapMode.SetOrigin( aPt );
359cdf0e10cSrcweir 			SetMapMode( aMapMode );
360cdf0e10cSrcweir 
361cdf0e10cSrcweir 			Invalidate();
362cdf0e10cSrcweir 		}
363cdf0e10cSrcweir 		delete pMultFrac;
364cdf0e10cSrcweir 	}
365cdf0e10cSrcweir }
366cdf0e10cSrcweir 
SetStyles()367cdf0e10cSrcweir void SvxXConnectionPreview::SetStyles()
368cdf0e10cSrcweir {
369cdf0e10cSrcweir 	const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
370cdf0e10cSrcweir 	SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR );
371cdf0e10cSrcweir 	SetBackground( Wallpaper( Color( rStyles.GetFieldColor() ) ) );
372cdf0e10cSrcweir }
373cdf0e10cSrcweir 
DataChanged(const DataChangedEvent & rDCEvt)374cdf0e10cSrcweir void SvxXConnectionPreview::DataChanged( const DataChangedEvent& rDCEvt )
375cdf0e10cSrcweir {
376cdf0e10cSrcweir 	Control::DataChanged( rDCEvt );
377cdf0e10cSrcweir 
378cdf0e10cSrcweir 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
379cdf0e10cSrcweir 	{
380cdf0e10cSrcweir 		SetStyles();
381cdf0e10cSrcweir 	}
382cdf0e10cSrcweir }
383cdf0e10cSrcweir 
384