| 
									
										
										
										
											2010-10-12 15:53:47 +02:00
										 |  |  | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | /*************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-02-12 15:01:35 +01:00
										 |  |  |  * Copyright 2000, 2010 Oracle and/or its affiliates. | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * OpenOffice.org - a multi-platform office productivity suite | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * This file is part of OpenOffice.org. | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * OpenOffice.org is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Lesser General Public License version 3 | 
					
						
							|  |  |  |  * only, as published by the Free Software Foundation. | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * OpenOffice.org is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Lesser General Public License version 3 for more details | 
					
						
							|  |  |  |  * (a copy is included in the LICENSE file that accompanied this code). | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-11 02:12:18 +00:00
										 |  |  |  * You should have received a copy of the GNU Lesser General Public License | 
					
						
							|  |  |  |  * version 3 along with OpenOffice.org.  If not, see | 
					
						
							|  |  |  |  * <http://www.openoffice.org/license.html>
 | 
					
						
							|  |  |  |  * for a copy of the LGPLv3 License. | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  ************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // MARKER(update_precomp.py): autogen include statement, do not remove
 | 
					
						
							|  |  |  | #include "precompiled_svx.hxx"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ITEMID_FONTHEIGHT   EE_CHAR_FONTHEIGHT
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "svx/svdotext.hxx"
 | 
					
						
							|  |  |  | #include "svx/svdetc.hxx"
 | 
					
						
							| 
									
										
										
										
											2010-01-07 18:52:36 +01:00
										 |  |  | #include "editeng/outlobj.hxx"
 | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | #include "svx/svdoutl.hxx"
 | 
					
						
							|  |  |  | #include "svx/svdmodel.hxx"
 | 
					
						
							| 
									
										
										
										
											2010-01-07 18:52:36 +01:00
										 |  |  | #include "editeng/fhgtitem.hxx"
 | 
					
						
							|  |  |  | #include <editeng/eeitem.hxx>
 | 
					
						
							| 
									
										
										
										
											2009-10-16 00:05:16 +02:00
										 |  |  | #include <svl/itemset.hxx>
 | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  | SdrText::SdrText( SdrTextObj& rObject, OutlinerParaObject* pOutlinerParaObject /* = 0 */ ) | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | : mpOutlinerParaObject( pOutlinerParaObject ) | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  | , mrObject( rObject ) | 
					
						
							|  |  |  | , mpModel( rObject.GetModel() ) | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | , mbPortionInfoChecked( false ) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  |     OSL_ENSURE(&mrObject, "SdrText created without SdrTextObj (!)"); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SdrText::~SdrText() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
											  
											
												CWS-TOOLING: integrate CWS aw065
2009-06-17 13:48:12 +0200 aw  r273068 : #99385# corrected small error in SCs selection visualisation
2009-06-16 15:45:28 +0200 wg  r273021 : i102838
2009-06-16 12:46:07 +0200 wg  r273016 : i102833
2009-06-11 17:40:29 +0200 aw  r272895 : #i98870# added implementation for getPageCount helper
2009-06-11 16:39:54 +0200 aw  r272885 : #i102663#, #i102667#, #i98870# incluide file typo corrected
2009-06-11 16:24:07 +0200 aw  r272881 : #i102663#, #i102667#, #i98870# changes to SdrText, it's usage in SdrTextPrimitive2D and to OverlayObject base implementation. Also support for PageCountField added
2009-06-11 16:23:52 +0200 aw  r272880 : #i102663#, #i102667#, #i98870# changes to SdrText, it's usage in SdrTextPrimitive2D and to OverlayObject base implementation. Also support for PageCountField added
2009-06-09 13:50:29 +0200 aw  r272769 : #i98917# added support for the OverlayHatchRectanglePrimitive to follow rotation with it's hatch; simplified OverlayHatchRect
2009-06-09 13:04:06 +0200 aw  r272766 : #i98870# re-added PageNumber identification in SdrTextPrimitive2D::get2DDecomposition
2009-06-08 18:56:05 +0200 aw  r272744 : #i99385# added some last corrections to OverlayObjects in SD (had to do some merges on resync, needed to optically check and correct)
2009-06-08 11:17:57 +0200 aw  r272725 : cws aw065: corrections after resync
2009-06-08 11:02:25 +0200 aw  r272723 : cws aw065: corrections after resync
2009-06-08 10:36:22 +0200 aw  r272722 : cws aw065: corrections after resync
2009-06-05 18:57:06 +0200 aw  r272712 : CWS-TOOLING: rebase CWS aw065 to trunk@272291 (milestone: DEV300:m49)
2009-06-05 14:56:34 +0200 aw  r272690 : #i89784# stripped old stuff no longer needed due to text-to-polygon conversion using primitives
2009-06-05 14:50:07 +0200 aw  r272688 : #102091# removed on-model-lock suppression for SdrObject::ActionChanged()
2009-06-05 14:47:29 +0200 aw  r272687 : #102091# corrected local value buffering in ScenePrimitive2D::get2DDecomposition
2009-06-03 17:53:32 +0200 aw  r272599 : #i89784# version before stripping
2009-06-03 17:52:18 +0200 aw  r272598 : #i89784# version before stripping
2009-05-28 17:15:47 +0200 aw  r272420 : #i101872# old stuff removed/stripped
2009-05-28 17:15:32 +0200 aw  r272419 : #i101872# old stuff removed/stripped
2009-05-28 17:15:15 +0200 aw  r272418 : #i101872# old stuff removed/stripped
2009-05-28 17:14:45 +0200 aw  r272417 : #i101872# old stuff removed/stripped
2009-05-28 12:13:56 +0200 aw  r272396 : #i101872# stable hybrid state
2009-05-28 12:13:46 +0200 aw  r272395 : #i101872# stable hybrid state
2009-05-28 12:13:35 +0200 aw  r272394 : #i101872# stable hybrid state
2009-05-28 12:13:20 +0200 aw  r272393 : #i101872# stable hybrid state
2009-05-28 12:13:05 +0200 aw  r272392 : #i101872# stable hybrid state
2009-05-28 12:12:51 +0200 aw  r272391 : #i101872# stable hybrid state
2009-05-15 16:56:02 +0200 aw  r271952 : #i101872# HitTest unifications
2009-05-15 16:55:22 +0200 aw  r271951 : #i101872# HitTest unifications
2009-05-15 16:55:12 +0200 aw  r271950 : #i101872# HitTest unifications
2009-05-15 16:55:01 +0200 aw  r271949 : #i101872# HitTest unifications
2009-05-15 16:54:51 +0200 aw  r271948 : #i101872# HitTest unifications
2009-05-15 16:54:35 +0200 aw  r271947 : #i101872# HitTest unifications
2009-05-15 16:54:22 +0200 aw  r271946 : #i101872# HitTest unifications
2009-05-12 19:08:38 +0200 aw  r271834 : #i101684# corrected AutoShape's preparation of text transformation due to different definitions in TextBounds
2009-05-12 15:44:49 +0200 aw  r271827 : #i89784# expanded TextLayouterDevice::getTextOutlines() to support DXArray and X-Font scaling
2009-05-11 19:40:40 +0200 aw  r271790 : #i99385# extended HitTest primitive usage, removed IsHdlHit implementations; prepared further HitTest simplifications
2009-05-11 19:40:25 +0200 aw  r271789 : #i99385# extended HitTest primitive usage, removed IsHdlHit implementations; prepared further HitTest simplifications
2009-05-11 19:40:12 +0200 aw  r271788 : #i99385# extended HitTest primitive usage, removed IsHdlHit implementations; prepared further HitTest simplifications
2009-05-11 13:01:53 +0200 aw  r271765 : #i99385# corrections and optimizations
2009-05-08 14:48:40 +0200 aw  r271718 : #i1016180# added optimizations in model operations when model is locked
2009-05-08 14:11:45 +0200 aw  r271716 : #i101679# added flush() calls to OverlayManager when interaction step is prepared
2009-05-07 17:44:03 +0200 aw  r271689 : #i99385# last corrections/changes
2009-05-07 17:43:47 +0200 aw  r271688 : #i99385# last corrections/changes
2009-05-07 13:20:09 +0200 aw  r271654 : #i99385# added changes from WFH
2009-05-07 13:19:38 +0200 aw  r271653 : #i99385# added changes from WFH
2009-05-07 13:19:11 +0200 aw  r271652 : #i99385# added changes from WFH
2009-05-07 11:33:17 +0200 aw  r271643 : #i99385# corrections after resync
2009-05-07 11:17:31 +0200 aw  r271642 : #i99385# corrections after resync
2009-05-06 18:46:53 +0200 aw  r271609 : CWS-TOOLING: rebase CWS aw065 to trunk@271427 (milestone: DEV300:m47)
2009-05-05 18:24:03 +0200 aw  r271548 : #i101443# force new text decomposition when TextBackgroundColor has changed
2009-05-05 17:44:42 +0200 aw  r271542 : #i99385# 3rd round, simplifications and corrections done
2009-05-05 17:44:32 +0200 aw  r271541 : #i99385# 3rd round, simplifications and corrections done
2009-05-05 17:44:20 +0200 aw  r271540 : #i99385# 3rd round, simplifications and corrections done
2009-05-05 17:44:09 +0200 aw  r271539 : #i99385# 3rd round, simplifications and corrections done
2009-05-05 15:48:38 +0200 aw  r271527 : #i99385# 2nd round, usages checked and corrected
2009-05-05 15:48:15 +0200 aw  r271526 : #i99385# 2nd round, usages checked and corrected
2009-05-05 15:48:03 +0200 aw  r271525 : #i99385# 2nd round, usages checked and corrected
2009-05-05 15:47:51 +0200 aw  r271524 : #i99385# 2nd round, usages checked and corrected
2009-04-27 18:33:10 +0200 aw  r271300 : #i99385# state commit after all implementations are done
2009-04-27 15:36:53 +0200 aw  r271283 : #i99385# state commit after all implementations are done
2009-04-27 15:27:49 +0200 aw  r271280 : #i99385# state commit after all implementations are done
2009-04-27 15:27:33 +0200 aw  r271279 : #i99385# state commit after all implementations are done
2009-04-27 15:27:00 +0200 aw  r271278 : #i99385# state commit after all implementations are done
2009-04-27 15:26:15 +0200 aw  r271277 : #i99385# state commit after all implementations are done
2009-04-27 15:25:40 +0200 aw  r271275 : #i99385# state commit after all implementations are done
2009-04-27 15:25:19 +0200 aw  r271274 : #i99385# state commit after all implementations are done
2009-04-27 15:24:00 +0200 aw  r271272 : #i99385# state commit after all implementations are done
2009-03-19 17:12:00 +0100 aw  r269757 : #i100360# corrected bitmap's PefSize calculation for bitmap filled objects when Bitmap is Pixel-based on it's mapping
2009-02-19 17:09:47 +0100 aw  r268298 : #i98917# corrected attributes
2009-02-19 17:09:30 +0100 aw  r268297 : #i98917# corrected attributes
2009-02-19 17:08:22 +0100 aw  r268296 : #i98917# corrected attributes
2009-02-19 11:56:25 +0100 aw  r268268 : #i98870# added extra code to react on PageNumber change
2009-02-18 16:57:24 +0100 aw  r268243 : #i98917# in OverlayHatchRect::getGeometry the rotation was not applied to the TopLeft of the centered rectangle, but to the already extended one, thus the visualisation was rotating around the wrong edge
											
										 
											2009-07-02 14:28:15 +00:00
										 |  |  |     clearWeak(); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |     delete mpOutlinerParaObject; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SdrText::CheckPortionInfo( SdrOutliner& rOutliner ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if(!mbPortionInfoChecked) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-07-27 16:24:52 +00:00
										 |  |  |         // #i102062# no action when the Outliner is the HitTestOutliner,
 | 
					
						
							|  |  |  |         // this will remove WrongList info at the OPO
 | 
					
						
							|  |  |  |         if(mpModel && &rOutliner == &mpModel->GetHitTestOutliner()) | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |         // Optimierung: ggf. BigTextObject erzeugen
 | 
					
						
							|  |  |  |         mbPortionInfoChecked=true; | 
					
						
							|  |  |  |         if(mpOutlinerParaObject!=NULL && rOutliner.ShouldCreateBigTextObject()) | 
					
						
							| 
									
										
										
										
											2009-07-27 16:24:52 +00:00
										 |  |  |         { | 
					
						
							|  |  |  |             // #i102062# MemoryLeak closed
 | 
					
						
							|  |  |  |             delete mpOutlinerParaObject; | 
					
						
							|  |  |  |             mpOutlinerParaObject = rOutliner.CreateParaObject(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SdrText::ReformatText() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  |     mbPortionInfoChecked=sal_False; | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |     mpOutlinerParaObject->ClearPortionInfo(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  | const SfxItemSet& SdrText::GetItemSet() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return const_cast< SdrText* >(this)->GetObjectItemSet(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | void SdrText::SetOutlinerParaObject( OutlinerParaObject* pTextObject ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if( mpOutlinerParaObject != pTextObject ) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if( mpModel ) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             // Update HitTestOutliner
 | 
					
						
							|  |  |  |             const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj(); | 
					
						
							|  |  |  |             if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject ) | 
					
						
							|  |  |  |                 mpModel->GetHitTestOutliner().SetTextObj( 0 ); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if( mpOutlinerParaObject ) | 
					
						
							|  |  |  |             delete mpOutlinerParaObject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         mpOutlinerParaObject = pTextObject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         mbPortionInfoChecked = false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | OutlinerParaObject* SdrText::GetOutlinerParaObject() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return mpOutlinerParaObject; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** returns the current OutlinerParaObject and removes it from this instance */ | 
					
						
							|  |  |  | OutlinerParaObject* SdrText::RemoveOutlinerParaObject() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if( mpModel ) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // Update HitTestOutliner
 | 
					
						
							|  |  |  |         const SdrTextObj* pTestObj = mpModel->GetHitTestOutliner().GetTextObj(); | 
					
						
							|  |  |  |         if( pTestObj && pTestObj->GetOutlinerParaObject() == mpOutlinerParaObject ) | 
					
						
							|  |  |  |             mpModel->GetHitTestOutliner().SetTextObj( 0 ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     OutlinerParaObject* pOPO = mpOutlinerParaObject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     mpOutlinerParaObject = 0; | 
					
						
							|  |  |  |     mbPortionInfoChecked = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return pOPO; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SdrText::SetModel( SdrModel* pNewModel ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if( pNewModel == mpModel ) | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SdrModel* pOldModel = mpModel; | 
					
						
							|  |  |  |     mpModel = pNewModel; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if( mpOutlinerParaObject && pOldModel!=NULL && pNewModel!=NULL) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  |         bool bHgtSet = GetObjectItemSet().GetItemState(EE_CHAR_FONTHEIGHT, sal_True) == SFX_ITEM_SET; | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         MapUnit aOldUnit(pOldModel->GetScaleUnit()); | 
					
						
							|  |  |  |         MapUnit aNewUnit(pNewModel->GetScaleUnit()); | 
					
						
							| 
									
										
										
										
											2010-10-05 07:57:54 -05:00
										 |  |  |         bool bScaleUnitChanged=aNewUnit!=aOldUnit; | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |         // und nun dem OutlinerParaObject einen neuen Pool verpassen
 | 
					
						
							|  |  |  |         // !!! Hier muss noch DefTab und RefDevice der beiden Models
 | 
					
						
							|  |  |  |         // !!! verglichen werden und dann ggf. AutoGrow zuschlagen !!!
 | 
					
						
							|  |  |  |         // !!! fehlende Implementation !!!
 | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  |         sal_uIntPtr nOldFontHgt=pOldModel->GetDefaultFontHeight(); | 
					
						
							|  |  |  |         sal_uIntPtr nNewFontHgt=pNewModel->GetDefaultFontHeight(); | 
					
						
							|  |  |  |         sal_Bool bDefHgtChanged=nNewFontHgt!=nOldFontHgt; | 
					
						
							|  |  |  |         sal_Bool bSetHgtItem=bDefHgtChanged && !bHgtSet; | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |         if (bSetHgtItem) | 
					
						
							|  |  |  |         { // #32665#
 | 
					
						
							|  |  |  |             // zunaechst das HeightItem festklopfen, damit
 | 
					
						
							|  |  |  |             // 1. Es eben bestehen bleibt und
 | 
					
						
							|  |  |  |             // 2. DoStretchChars vom richtigen Wert ausgeht
 | 
					
						
							|  |  |  |             SetObjectItem(SvxFontHeightItem(nOldFontHgt, 100, EE_CHAR_FONTHEIGHT)); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // erst jetzt den Outliner holen, etc. damit obiges SetAttr auch wirkt
 | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  |         SdrOutliner& rOutliner = mrObject.ImpGetDrawOutliner(); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |         rOutliner.SetText(*mpOutlinerParaObject); | 
					
						
							|  |  |  |         delete mpOutlinerParaObject; | 
					
						
							|  |  |  |         mpOutlinerParaObject=0; | 
					
						
							|  |  |  |         if (bScaleUnitChanged) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Fraction aMetricFactor=GetMapFactor(aOldUnit,aNewUnit).X(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Funktioniert nicht richtig:
 | 
					
						
							|  |  |  |             // Geht am Outliner leider nur in %
 | 
					
						
							|  |  |  |             // double nPercFloat=double(aMetricFactor)*100+0.5;
 | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  |             // sal_uInt16 nPerc=(sal_uInt16)nPercFloat;
 | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |             // rOutliner.DoStretchChars(100,nPerc);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (bSetHgtItem) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 // Und nun noch das Rahmenattribut korregieren
 | 
					
						
							|  |  |  |                 nOldFontHgt=BigMulDiv(nOldFontHgt,aMetricFactor.GetNumerator(),aMetricFactor.GetDenominator()); | 
					
						
							|  |  |  |                 SetObjectItem(SvxFontHeightItem(nOldFontHgt, 100, EE_CHAR_FONTHEIGHT)); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         SetOutlinerParaObject(rOutliner.CreateParaObject()); // #34494#
 | 
					
						
							|  |  |  |         mpOutlinerParaObject->ClearPortionInfo(); | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  |         mbPortionInfoChecked=sal_False; | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  |         rOutliner.Clear(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-10 16:11:35 +01:00
										 |  |  | void SdrText::ForceOutlinerParaObject( sal_uInt16 nOutlMode ) | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     if( mpModel && !mpOutlinerParaObject ) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Outliner* pOutliner = SdrMakeOutliner( nOutlMode, mpModel ); | 
					
						
							|  |  |  |         if( pOutliner ) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Outliner& aDrawOutliner = mpModel->GetDrawOutliner(); | 
					
						
							|  |  |  |             pOutliner->SetCalcFieldValueHdl( aDrawOutliner.GetCalcFieldValueHdl() ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             pOutliner->SetStyleSheet( 0, GetStyleSheet()); | 
					
						
							|  |  |  |             OutlinerParaObject* pOutlinerParaObject = pOutliner->CreateParaObject(); | 
					
						
							|  |  |  |             SetOutlinerParaObject( pOutlinerParaObject ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             delete pOutliner; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const SfxItemSet& SdrText::GetObjectItemSet() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  |     return mrObject.GetObjectItemSet(); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SdrText::SetObjectItem(const SfxPoolItem& rItem) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  |     mrObject.SetObjectItem( rItem ); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SfxStyleSheet* SdrText::GetStyleSheet() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-19 22:27:27 +00:00
										 |  |  |     return mrObject.GetStyleSheet(); | 
					
						
							| 
									
										
										
										
											2008-03-12 08:56:51 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-10-12 15:53:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |