LCOV - code coverage report
Current view: top level - sw/source/core/unocore - unoframe.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1624 2056 79.0 %
Date: 2014-11-03 Functions: 132 159 83.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
      21             : #include <com/sun/star/container/XChild.hpp>
      22             : #include <com/sun/star/drawing/BitmapMode.hpp>
      23             : #include <com/sun/star/drawing/FillStyle.hpp>
      24             : #include <com/sun/star/awt/Gradient.hpp>
      25             : #include <com/sun/star/embed/XClassifiedObject.hpp>
      26             : #include <com/sun/star/embed/XVisualObject.hpp>
      27             : #include <com/sun/star/embed/XComponentSupplier.hpp>
      28             : #include <com/sun/star/embed/EmbedStates.hpp>
      29             : #include <com/sun/star/embed/Aspects.hpp>
      30             : #include <com/sun/star/graphic/XGraphicProvider.hpp>
      31             : #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
      32             : #include <svx/svxids.hrc>
      33             : #include <svx/xfillit0.hxx>
      34             : #include <svx/xflgrit.hxx>
      35             : #include <svx/sdtaitm.hxx>
      36             : #include <svx/xflclit.hxx>
      37             : #include <editeng/memberids.hrc>
      38             : #include <swtypes.hxx>
      39             : #include <cmdid.h>
      40             : #include <memory>
      41             : #include <utility>
      42             : #include <hints.hxx>
      43             : #include <doc.hxx>
      44             : #include <drawdoc.hxx>
      45             : #include <IDocumentUndoRedo.hxx>
      46             : #include <IDocumentDrawModelAccess.hxx>
      47             : #include <IDocumentLayoutAccess.hxx>
      48             : #include <IDocumentStylePoolAccess.hxx>
      49             : #include <docsh.hxx>
      50             : #include <editsh.hxx>
      51             : #include <swcli.hxx>
      52             : #include <ndindex.hxx>
      53             : #include <pam.hxx>
      54             : #include <ndnotxt.hxx>
      55             : #include <svx/unomid.hxx>
      56             : #include <unocrsr.hxx>
      57             : #include <unocrsrhelper.hxx>
      58             : #include <docstyle.hxx>
      59             : #include <dcontact.hxx>
      60             : #include <fmtcnct.hxx>
      61             : #include <ndole.hxx>
      62             : #include <frmfmt.hxx>
      63             : #include <frame.hxx>
      64             : #include <textboxhelper.hxx>
      65             : #include <unotextrange.hxx>
      66             : #include <unotextcursor.hxx>
      67             : #include <unoparagraph.hxx>
      68             : #include <unomap.hxx>
      69             : #include <unoprnms.hxx>
      70             : #include <unoevent.hxx>
      71             : #include <com/sun/star/util/XModifyBroadcaster.hpp>
      72             : #include <com/sun/star/table/ShadowFormat.hpp>
      73             : #include <com/sun/star/style/GraphicLocation.hpp>
      74             : #include <com/sun/star/text/GraphicCrop.hpp>
      75             : #include <com/sun/star/text/TextContentAnchorType.hpp>
      76             : #include <com/sun/star/text/XTextColumns.hpp>
      77             : #include <com/sun/star/text/WrapTextMode.hpp>
      78             : #include <com/sun/star/beans/PropertyAttribute.hpp>
      79             : #include <com/sun/star/drawing/PointSequenceSequence.hpp>
      80             : #include <com/sun/star/drawing/PointSequence.hpp>
      81             : #include <com/sun/star/drawing/ColorMode.hpp>
      82             : #include <tools/poly.hxx>
      83             : #include <swundo.hxx>
      84             : #include <unostyle.hxx>
      85             : #include <svx/svdmodel.hxx>
      86             : #include <svx/svdpage.hxx>
      87             : #include <editeng/brushitem.hxx>
      88             : #include <editeng/protitem.hxx>
      89             : #include <fmtornt.hxx>
      90             : #include <fmturl.hxx>
      91             : #include <editeng/lrspitem.hxx>
      92             : #include <editeng/ulspitem.hxx>
      93             : #include <editeng/boxitem.hxx>
      94             : #include <editeng/opaqitem.hxx>
      95             : #include <editeng/prntitem.hxx>
      96             : #include <editeng/shaditem.hxx>
      97             : #include <fmtsrnd.hxx>
      98             : #include <fmtfsize.hxx>
      99             : #include <grfatr.hxx>
     100             : #include <unoframe.hxx>
     101             : #include <fmtanchr.hxx>
     102             : #include <fmtclds.hxx>
     103             : #include <fmtcntnt.hxx>
     104             : #include <frmatr.hxx>
     105             : #include <ndtxt.hxx>
     106             : #include <ndgrf.hxx>
     107             : #include <osl/mutex.hxx>
     108             : #include <vcl/svapp.hxx>
     109             : #include <sfx2/printer.hxx>
     110             : #include <SwStyleNameMapper.hxx>
     111             : #include <editeng/xmlcnitm.hxx>
     112             : #include <poolfmt.hxx>
     113             : #include <pagedesc.hxx>
     114             : #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
     115             : #include <editeng/frmdiritem.hxx>
     116             : #include <fmtfollowtextflow.hxx>
     117             : #include <fmtwrapinfluenceonobjpos.hxx>
     118             : #include <toolkit/helper/vclunohelper.hxx>
     119             : #include <switerator.hxx>
     120             : #include <comphelper/servicehelper.hxx>
     121             : #include <cppuhelper/supportsservice.hxx>
     122             : 
     123             : #include <svx/unobrushitemhelper.hxx>
     124             : #include <svx/xbtmpit.hxx>
     125             : #include <svx/xgrscit.hxx>
     126             : #include <svx/xflbmtit.hxx>
     127             : #include <svx/xflbmpit.hxx>
     128             : #include <svx/xflbmsxy.hxx>
     129             : #include <svx/xflftrit.hxx>
     130             : #include <svx/xsflclit.hxx>
     131             : #include <svx/xflbmsli.hxx>
     132             : #include <svx/xflbtoxy.hxx>
     133             : #include <svx/xflbstit.hxx>
     134             : #include <svx/xflboxy.hxx>
     135             : #include <svx/xflbckit.hxx>
     136             : #include <svx/unoshape.hxx>
     137             : #include <svx/xflhtit.hxx>
     138             : #include <svx/xfltrit.hxx>
     139             : #include <swunohelper.hxx>
     140             : #include <fefly.hxx>
     141             : 
     142             : using namespace ::com::sun::star;
     143             : 
     144             : using ::com::sun::star::frame::XModel;
     145             : using ::com::sun::star::container::XNameAccess;
     146             : using ::com::sun::star::style::XStyleFamiliesSupplier;
     147             : 
     148             : const sal_Char sPackageProtocol[] = "vnd.sun.star.Package:";
     149             : const sal_Char sGraphicObjectProtocol[] = "vnd.sun.star.GraphicObject:";
     150             : 
     151        3074 : class BaseFrameProperties_Impl
     152             : {
     153             :     SwUnoCursorHelper::SwAnyMapHelper aAnyMap;
     154             : 
     155             : public:
     156             :     virtual ~BaseFrameProperties_Impl();
     157             : 
     158             :     void            SetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any& rVal);
     159             :     bool            GetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any*& pAny );
     160             :     bool FillBaseProperties(SfxItemSet& rToSet, const SfxItemSet &rFromSet, bool& rSizeFound);
     161             : 
     162             :     virtual bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, bool& rSizeFound) = 0;
     163             : };
     164             : 
     165        3074 : BaseFrameProperties_Impl::~BaseFrameProperties_Impl()
     166             : {
     167        3074 : }
     168             : 
     169       33724 : void BaseFrameProperties_Impl::SetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any& rVal)
     170             : {
     171       33724 :     aAnyMap.SetValue( nWID, nMemberId, rVal );
     172       33724 : }
     173             : 
     174      310454 : bool BaseFrameProperties_Impl::GetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any*& rpAny)
     175             : {
     176      310454 :     return aAnyMap.FillValue( nWID, nMemberId, rpAny );
     177             : }
     178             : 
     179        3072 : bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxItemSet& rFromSet, bool& rSizeFound)
     180             : {
     181             :     //UUUU assert when the target SfxItemSet has no parent. It *should* have the pDfltFrmFmt
     182             :     // from SwDoc set as parent (or similar) to have the necessary XFILL_NONE in the ItemSet
     183        3072 :     if(!rToSet.GetParent())
     184             :     {
     185             :         OSL_ENSURE(false, "OOps, target SfxItemSet *should* have a parent which contains XFILL_NONE as XFillStyleItem (!)");
     186             :     }
     187             : 
     188        3072 :     bool bRet = true;
     189             :     // always add an anchor to the set
     190        3072 :     SwFmtAnchor aAnchor ( static_cast < const SwFmtAnchor & > ( rFromSet.Get ( RES_ANCHOR ) ) );
     191             :     {
     192             :         const ::uno::Any* pAnchorPgNo;
     193        3072 :         if(GetProperty(RES_ANCHOR, MID_ANCHOR_PAGENUM, pAnchorPgNo))
     194         182 :             bRet &= ((SfxPoolItem&)aAnchor).PutValue(*pAnchorPgNo, MID_ANCHOR_PAGENUM);
     195             :         const ::uno::Any* pAnchorType;
     196        3072 :         if(GetProperty(RES_ANCHOR, MID_ANCHOR_ANCHORTYPE, pAnchorType))
     197        2000 :             bRet &= ((SfxPoolItem&)aAnchor).PutValue(*pAnchorType, MID_ANCHOR_ANCHORTYPE);
     198             :     }
     199             : 
     200        3072 :     rToSet.Put(aAnchor);
     201             : 
     202             :     //UUUU check for SvxBrushItem (RES_BACKGROUND) properties
     203        3072 :     const ::uno::Any* pCol = 0; GetProperty(RES_BACKGROUND, MID_BACK_COLOR, pCol );
     204        3072 :     const ::uno::Any* pRGBCol = 0; GetProperty(RES_BACKGROUND, MID_BACK_COLOR_R_G_B, pRGBCol );
     205        3072 :     const ::uno::Any* pColTrans = 0; GetProperty(RES_BACKGROUND, MID_BACK_COLOR_TRANSPARENCY, pColTrans);
     206        3072 :     const ::uno::Any* pTrans = 0; GetProperty(RES_BACKGROUND, MID_GRAPHIC_TRANSPARENT, pTrans );
     207        3072 :     const ::uno::Any* pGrLoc = 0; GetProperty(RES_BACKGROUND, MID_GRAPHIC_POSITION, pGrLoc );
     208        3072 :     const ::uno::Any* pGrURL = 0; GetProperty(RES_BACKGROUND, MID_GRAPHIC_URL, pGrURL     );
     209        3072 :     const ::uno::Any* pGrFilter = 0; GetProperty(RES_BACKGROUND, MID_GRAPHIC_FILTER, pGrFilter     );
     210        3072 :     const ::uno::Any* pGrTranparency = 0; GetProperty(RES_BACKGROUND, MID_GRAPHIC_TRANSPARENCY, pGrTranparency     );
     211             :     const bool bSvxBrushItemPropertiesUsed(
     212        2856 :         pCol ||
     213        2846 :         pTrans ||
     214        2810 :         pGrURL ||
     215        2810 :         pGrFilter ||
     216        2810 :         pGrLoc ||
     217        2810 :         pGrTranparency ||
     218        5762 :         pColTrans ||
     219        3072 :         pRGBCol);
     220             : 
     221             :     //UUUU check for FillStyle properties in the range XATTR_FILL_FIRST, XATTR_FILL_LAST
     222        3072 :     const uno::Any* pXFillStyleItem = 0; GetProperty(XATTR_FILLSTYLE, 0, pXFillStyleItem);
     223        3072 :     const uno::Any* pXFillColorItem = 0; GetProperty(XATTR_FILLCOLOR, 0, pXFillColorItem);
     224             : 
     225             :     // XFillGradientItem: two possible slots supported in UNO API
     226        3072 :     const uno::Any* pXFillGradientItem = 0; GetProperty(XATTR_FILLGRADIENT, MID_FILLGRADIENT, pXFillGradientItem);
     227        3072 :     const uno::Any* pXFillGradientNameItem = 0; GetProperty(XATTR_FILLGRADIENT, MID_NAME, pXFillGradientNameItem);
     228             : 
     229             :     // XFillHatchItem: two possible slots supported in UNO API
     230        3072 :     const uno::Any* pXFillHatchItem = 0; GetProperty(XATTR_FILLHATCH, MID_FILLHATCH, pXFillHatchItem);
     231        3072 :     const uno::Any* pXFillHatchNameItem = 0; GetProperty(XATTR_FILLHATCH, MID_NAME, pXFillHatchNameItem);
     232             : 
     233             :     // XFillBitmapItem: three possible slots supported in UNO API
     234        3072 :     const uno::Any* pXFillBitmapItem = 0; GetProperty(XATTR_FILLBITMAP, MID_BITMAP, pXFillBitmapItem);
     235        3072 :     const uno::Any* pXFillBitmapNameItem = 0; GetProperty(XATTR_FILLBITMAP, MID_NAME, pXFillBitmapNameItem);
     236        3072 :     const uno::Any* pXFillBitmapURLItem = 0; GetProperty(XATTR_FILLBITMAP, MID_GRAFURL, pXFillBitmapURLItem);
     237             : 
     238        3072 :     const uno::Any* pXFillTransparenceItem = 0; GetProperty(XATTR_FILLTRANSPARENCE, 0, pXFillTransparenceItem);
     239        3072 :     const uno::Any* pXGradientStepCountItem = 0; GetProperty(XATTR_GRADIENTSTEPCOUNT, 0, pXGradientStepCountItem);
     240        3072 :     const uno::Any* pXFillBmpPosItem = 0; GetProperty(XATTR_FILLBMP_POS, 0, pXFillBmpPosItem);
     241        3072 :     const uno::Any* pXFillBmpSizeXItem = 0; GetProperty(XATTR_FILLBMP_SIZEX, 0, pXFillBmpSizeXItem);
     242        3072 :     const uno::Any* pXFillBmpSizeYItem = 0; GetProperty(XATTR_FILLBMP_SIZEY, 0, pXFillBmpSizeYItem);
     243             : 
     244             :     // XFillFloatTransparenceItem: two possible slots supported in UNO API
     245        3072 :     const uno::Any* pXFillFloatTransparenceItem = 0; GetProperty(XATTR_FILLFLOATTRANSPARENCE, MID_FILLGRADIENT, pXFillFloatTransparenceItem);
     246        3072 :     const uno::Any* pXFillFloatTransparenceNameItem = 0; GetProperty(XATTR_FILLFLOATTRANSPARENCE, MID_NAME, pXFillFloatTransparenceNameItem);
     247             : 
     248        3072 :     const uno::Any* pXSecondaryFillColorItem = 0; GetProperty(XATTR_SECONDARYFILLCOLOR, 0, pXSecondaryFillColorItem);
     249        3072 :     const uno::Any* pXFillBmpSizeLogItem = 0; GetProperty(XATTR_FILLBMP_SIZELOG, 0, pXFillBmpSizeLogItem);
     250        3072 :     const uno::Any* pXFillBmpTileOffsetXItem = 0; GetProperty(XATTR_FILLBMP_TILEOFFSETX, 0, pXFillBmpTileOffsetXItem);
     251        3072 :     const uno::Any* pXFillBmpTileOffsetYItem = 0; GetProperty(XATTR_FILLBMP_TILEOFFSETY, 0, pXFillBmpTileOffsetYItem);
     252        3072 :     const uno::Any* pXFillBmpPosOffsetXItem = 0; GetProperty(XATTR_FILLBMP_POSOFFSETX, 0, pXFillBmpPosOffsetXItem);
     253        3072 :     const uno::Any* pXFillBmpPosOffsetYItem = 0; GetProperty(XATTR_FILLBMP_POSOFFSETY, 0, pXFillBmpPosOffsetYItem);
     254        3072 :     const uno::Any* pXFillBackgroundItem = 0; GetProperty(XATTR_FILLBACKGROUND, 0, pXFillBackgroundItem);
     255        3072 :     const uno::Any* pOwnAttrFillBmpItem = 0; GetProperty(OWN_ATTR_FILLBMP_MODE, 0, pOwnAttrFillBmpItem);
     256             : 
     257             :     const bool bXFillStyleItemUsed(
     258        2864 :         pXFillStyleItem ||
     259        2864 :         pXFillColorItem ||
     260        2864 :         pXFillGradientItem || pXFillGradientNameItem ||
     261        2864 :         pXFillHatchItem || pXFillHatchNameItem ||
     262        2864 :         pXFillBitmapItem || pXFillBitmapNameItem || pXFillBitmapURLItem ||
     263        2806 :         pXFillTransparenceItem ||
     264        2806 :         pXGradientStepCountItem ||
     265        2806 :         pXFillBmpPosItem ||
     266        2806 :         pXFillBmpSizeXItem ||
     267        2806 :         pXFillBmpSizeYItem ||
     268        2806 :         pXFillFloatTransparenceItem || pXFillFloatTransparenceNameItem ||
     269        2806 :         pXSecondaryFillColorItem ||
     270        2806 :         pXFillBmpSizeLogItem ||
     271        2806 :         pXFillBmpTileOffsetXItem ||
     272        2806 :         pXFillBmpTileOffsetYItem ||
     273        2806 :         pXFillBmpPosOffsetXItem ||
     274        2806 :         pXFillBmpPosOffsetYItem ||
     275        5878 :         pXFillBackgroundItem ||
     276        3072 :         pOwnAttrFillBmpItem);
     277             : 
     278             :     // use brush items, but *only* if no FillStyle properties are used; if both are used and when applying both
     279             :     // in the obvious order some attributes may be wrong since they are set by the 1st set, but not
     280             :     // redefined as needed by the 2nd set when they are default (and thus no tset) in the 2nd set. If
     281             :     // it is necessary for any reason to set both (it should not) a in-between step will be needed
     282             :     // that resets the items for FillAttributes in rToSet to default.
     283             :     // Note: There are other mechanisms in XMLOFF to pre-sort this relationship already, but this version
     284             :     // was used initially, is tested and works. Keep it to be able to react when another feed adds attributes
     285             :     // from both sets.
     286        3072 :     if(bSvxBrushItemPropertiesUsed && !bXFillStyleItemUsed)
     287             :     {
     288             :         //UUUU create a temporary SvxBrushItem, fill the attributes to it and use it to set
     289             :         // the corresponding FillAttributes
     290         270 :         SvxBrushItem aBrush(RES_BACKGROUND);
     291             : 
     292         270 :         if(pCol)
     293             :         {
     294         144 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pCol,MID_BACK_COLOR    );
     295             :         }
     296             : 
     297         270 :         if(pColTrans)
     298             :         {
     299         124 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pColTrans, MID_BACK_COLOR_TRANSPARENCY);
     300             :         }
     301             : 
     302         270 :         if(pRGBCol)
     303             :         {
     304           2 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pRGBCol, MID_BACK_COLOR_R_G_B);
     305             :         }
     306             : 
     307         270 :         if(pTrans)
     308             :         {
     309             :             // don't overwrite transparency with a non-transparence flag
     310           6 :             if(!pColTrans || Any2Bool( *pTrans ))
     311           6 :                 bRet &= ((SfxPoolItem&)aBrush).PutValue(*pTrans, MID_GRAPHIC_TRANSPARENT);
     312             :         }
     313             : 
     314         270 :         if(pGrURL)
     315             :         {
     316           4 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pGrURL, MID_GRAPHIC_URL);
     317             :         }
     318             : 
     319         270 :         if(pGrFilter)
     320             :         {
     321           4 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pGrFilter, MID_GRAPHIC_FILTER);
     322             :         }
     323             : 
     324         270 :         if(pGrLoc)
     325             :         {
     326           4 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pGrLoc, MID_GRAPHIC_POSITION);
     327             :         }
     328             : 
     329         270 :         if(pGrTranparency)
     330             :         {
     331           4 :             bRet &= ((SfxPoolItem&)aBrush).PutValue(*pGrTranparency, MID_GRAPHIC_TRANSPARENCY);
     332             :         }
     333             : 
     334         270 :         setSvxBrushItemAsFillAttributesToTargetSet(aBrush, rToSet);
     335             :     }
     336             : 
     337        3072 :     if(bXFillStyleItemUsed)
     338             :     {
     339         266 :         XFillStyleItem aXFillStyleItem;
     340         532 :         SvxBrushItem aBrush(RES_BACKGROUND);
     341             : 
     342         266 :         if(pXFillStyleItem)
     343             :         {
     344         208 :             aXFillStyleItem.PutValue(*pXFillStyleItem);
     345         208 :             rToSet.Put(aXFillStyleItem);
     346             :         }
     347             : 
     348         266 :         if(pXFillColorItem)
     349             :         {
     350          12 :             const Color aNullCol(COL_DEFAULT_SHAPE_FILLING);
     351          12 :             XFillColorItem aXFillColorItem(OUString(), aNullCol);
     352             : 
     353          12 :             aXFillColorItem.PutValue(*pXFillColorItem);
     354          12 :             rToSet.Put(aXFillColorItem);
     355             :         }
     356         254 :         else if (aXFillStyleItem.GetValue() == drawing::FillStyle_SOLID && (pCol || pRGBCol))
     357             :         {
     358             :             // Fill style is set to solid, but no fill color is given.
     359             :             // On the other hand, we have a BackColor, so use that.
     360          80 :             if (pCol)
     361          60 :                 aBrush.PutValue(*pCol, MID_BACK_COLOR);
     362             :             else
     363          20 :                 aBrush.PutValue(*pRGBCol, MID_BACK_COLOR_R_G_B);
     364          80 :             setSvxBrushItemAsFillAttributesToTargetSet(aBrush, rToSet);
     365             :         }
     366             : 
     367         266 :         if(pXFillGradientItem || pXFillGradientNameItem)
     368             :         {
     369          38 :             if(pXFillGradientItem)
     370             :             {
     371          24 :                 const XGradient aNullGrad(RGB_Color(COL_BLACK), RGB_Color(COL_WHITE));
     372          24 :                 XFillGradientItem aXFillGradientItem(aNullGrad);
     373             : 
     374          24 :                 aXFillGradientItem.PutValue(*pXFillGradientItem, MID_FILLGRADIENT);
     375          24 :                 rToSet.Put(aXFillGradientItem);
     376             :             }
     377             : 
     378          38 :             if(pXFillGradientNameItem)
     379             :             {
     380          14 :                 OUString aTempName;
     381             : 
     382          14 :                 if(!(*pXFillGradientNameItem >>= aTempName ))
     383             :                 {
     384           0 :                     throw lang::IllegalArgumentException();
     385             :                 }
     386             : 
     387          14 :                 bRet &= SvxShape::SetFillAttribute(XATTR_FILLGRADIENT, aTempName, rToSet);
     388             :             }
     389             :         }
     390             : 
     391         266 :         if(pXFillHatchItem || pXFillHatchNameItem)
     392             :         {
     393           0 :             if(pXFillHatchItem)
     394             :             {
     395           0 :                 const Color aNullCol(COL_DEFAULT_SHAPE_STROKE);
     396           0 :                 const XHatch aNullHatch(aNullCol);
     397           0 :                 XFillHatchItem aXFillHatchItem(rToSet.GetPool(), aNullHatch);
     398             : 
     399           0 :                 aXFillHatchItem.PutValue(*pXFillHatchItem, MID_FILLHATCH);
     400           0 :                 rToSet.Put(aXFillHatchItem);
     401             :             }
     402             : 
     403           0 :             if(pXFillHatchNameItem)
     404             :             {
     405           0 :                 OUString aTempName;
     406             : 
     407           0 :                 if(!(*pXFillHatchNameItem >>= aTempName ))
     408             :                 {
     409           0 :                     throw lang::IllegalArgumentException();
     410             :                 }
     411             : 
     412           0 :                 bRet &= SvxShape::SetFillAttribute(XATTR_FILLHATCH, aTempName, rToSet);
     413             :             }
     414             :         }
     415             : 
     416         266 :         if(pXFillBitmapItem || pXFillBitmapNameItem || pXFillBitmapURLItem)
     417             :         {
     418           0 :             if(pXFillBitmapItem)
     419             :             {
     420           0 :                 const Graphic aNullGraphic;
     421           0 :                 XFillBitmapItem aXFillBitmapItem(rToSet.GetPool(), aNullGraphic);
     422             : 
     423           0 :                 aXFillBitmapItem.PutValue(*pXFillBitmapItem, MID_BITMAP);
     424           0 :                 rToSet.Put(aXFillBitmapItem);
     425             :             }
     426             : 
     427           0 :             if(pXFillBitmapNameItem)
     428             :             {
     429           0 :                 OUString aTempName;
     430             : 
     431           0 :                 if(!(*pXFillBitmapNameItem >>= aTempName ))
     432             :                 {
     433           0 :                     throw lang::IllegalArgumentException();
     434             :                 }
     435             : 
     436           0 :                 bRet &= SvxShape::SetFillAttribute(XATTR_FILLBITMAP, aTempName, rToSet);
     437             :             }
     438             : 
     439           0 :             if(pXFillBitmapURLItem)
     440             :             {
     441           0 :                 const Graphic aNullGraphic;
     442           0 :                 XFillBitmapItem aXFillBitmapItem(rToSet.GetPool(), aNullGraphic);
     443             : 
     444           0 :                 aXFillBitmapItem.PutValue(*pXFillBitmapURLItem, MID_GRAFURL);
     445           0 :                 rToSet.Put(aXFillBitmapItem);
     446             :             }
     447             :         }
     448             : 
     449         266 :         if(pXFillTransparenceItem)
     450             :         {
     451          58 :             const XGradient aNullGrad(RGB_Color(COL_BLACK), RGB_Color(COL_WHITE));
     452          58 :             XFillTransparenceItem aXFillTransparenceItem;
     453             : 
     454          58 :             aXFillTransparenceItem.PutValue(*pXFillTransparenceItem);
     455          58 :             rToSet.Put(aXFillTransparenceItem);
     456             :         }
     457         208 :         else if (aXFillStyleItem.GetValue() == drawing::FillStyle_SOLID && pColTrans)
     458             :         {
     459             :             // Fill style is set to solid, but no fill transparency is given.
     460             :             // On the other hand, we have a BackColorTransparency, so use that.
     461          34 :             aBrush.PutValue(*pColTrans, MID_BACK_COLOR_TRANSPARENCY);
     462          34 :             setSvxBrushItemAsFillAttributesToTargetSet(aBrush, rToSet);
     463             :         }
     464             : 
     465         266 :         if(pXGradientStepCountItem)
     466             :         {
     467           0 :             XGradientStepCountItem aXGradientStepCountItem;
     468             : 
     469           0 :             aXGradientStepCountItem.PutValue(*pXGradientStepCountItem);
     470           0 :             rToSet.Put(aXGradientStepCountItem);
     471             :         }
     472             : 
     473         266 :         if(pXFillBmpPosItem)
     474             :         {
     475           0 :             XFillBmpPosItem aXFillBmpPosItem;
     476             : 
     477           0 :             aXFillBmpPosItem.PutValue(*pXFillBmpPosItem);
     478           0 :             rToSet.Put(aXFillBmpPosItem);
     479             :         }
     480             : 
     481         266 :         if(pXFillBmpSizeXItem)
     482             :         {
     483           2 :             XFillBmpSizeXItem aXFillBmpSizeXItem;
     484             : 
     485           2 :             aXFillBmpSizeXItem.PutValue(*pXFillBmpSizeXItem);
     486           2 :             rToSet.Put(aXFillBmpSizeXItem);
     487             :         }
     488             : 
     489         266 :         if(pXFillBmpSizeYItem)
     490             :         {
     491           2 :             XFillBmpSizeYItem aXFillBmpSizeYItem;
     492             : 
     493           2 :             aXFillBmpSizeYItem.PutValue(*pXFillBmpSizeYItem);
     494           2 :             rToSet.Put(aXFillBmpSizeYItem);
     495             :         }
     496             : 
     497         266 :         if(pXFillFloatTransparenceItem || pXFillFloatTransparenceNameItem)
     498             :         {
     499           0 :             if(pXFillFloatTransparenceItem)
     500             :             {
     501           0 :                 const XGradient aNullGrad(RGB_Color(COL_BLACK), RGB_Color(COL_WHITE));
     502           0 :                 XFillFloatTransparenceItem aXFillFloatTransparenceItem(rToSet.GetPool(), aNullGrad, false);
     503             : 
     504           0 :                 aXFillFloatTransparenceItem.PutValue(*pXFillFloatTransparenceItem, MID_FILLGRADIENT);
     505           0 :                 rToSet.Put(aXFillFloatTransparenceItem);
     506             :             }
     507             : 
     508           0 :             if(pXFillFloatTransparenceNameItem)
     509             :             {
     510           0 :                 OUString aTempName;
     511             : 
     512           0 :                 if(!(*pXFillFloatTransparenceNameItem >>= aTempName ))
     513             :                 {
     514           0 :                     throw lang::IllegalArgumentException();
     515             :                 }
     516             : 
     517           0 :                 bRet &= SvxShape::SetFillAttribute(XATTR_FILLFLOATTRANSPARENCE, aTempName, rToSet);
     518             :             }
     519             :         }
     520             : 
     521         266 :         if(pXSecondaryFillColorItem)
     522             :         {
     523           0 :             const Color aNullCol(COL_DEFAULT_SHAPE_FILLING);
     524           0 :             XSecondaryFillColorItem aXSecondaryFillColorItem(OUString(), aNullCol);
     525             : 
     526           0 :             aXSecondaryFillColorItem.PutValue(*pXSecondaryFillColorItem);
     527           0 :             rToSet.Put(aXSecondaryFillColorItem);
     528             :         }
     529             : 
     530         266 :         if(pXFillBmpSizeLogItem)
     531             :         {
     532           2 :             XFillBmpSizeLogItem aXFillBmpSizeLogItem;
     533             : 
     534           2 :             aXFillBmpSizeLogItem.PutValue(*pXFillBmpSizeLogItem);
     535           2 :             rToSet.Put(aXFillBmpSizeLogItem);
     536             :         }
     537             : 
     538         266 :         if(pXFillBmpTileOffsetXItem)
     539             :         {
     540           0 :             XFillBmpTileOffsetXItem aXFillBmpTileOffsetXItem;
     541             : 
     542           0 :             aXFillBmpTileOffsetXItem.PutValue(*pXFillBmpTileOffsetXItem);
     543           0 :             rToSet.Put(aXFillBmpTileOffsetXItem);
     544             :         }
     545             : 
     546         266 :         if(pXFillBmpTileOffsetYItem)
     547             :         {
     548           0 :             XFillBmpTileOffsetYItem aXFillBmpTileOffsetYItem;
     549             : 
     550           0 :             aXFillBmpTileOffsetYItem.PutValue(*pXFillBmpTileOffsetYItem);
     551           0 :             rToSet.Put(aXFillBmpTileOffsetYItem);
     552             :         }
     553             : 
     554         266 :         if(pXFillBmpPosOffsetXItem)
     555             :         {
     556           0 :             XFillBmpPosOffsetXItem aXFillBmpPosOffsetXItem;
     557             : 
     558           0 :             aXFillBmpPosOffsetXItem.PutValue(*pXFillBmpPosOffsetXItem);
     559           0 :             rToSet.Put(aXFillBmpPosOffsetXItem);
     560             :         }
     561             : 
     562         266 :         if(pXFillBmpPosOffsetYItem)
     563             :         {
     564           0 :             XFillBmpPosOffsetYItem aXFillBmpPosOffsetYItem;
     565             : 
     566           0 :             aXFillBmpPosOffsetYItem.PutValue(*pXFillBmpPosOffsetYItem);
     567           0 :             rToSet.Put(aXFillBmpPosOffsetYItem);
     568             :         }
     569             : 
     570         266 :         if(pXFillBackgroundItem)
     571             :         {
     572           0 :             XFillBackgroundItem aXFillBackgroundItem;
     573             : 
     574           0 :             aXFillBackgroundItem.PutValue(*pXFillBackgroundItem);
     575           0 :             rToSet.Put(aXFillBackgroundItem);
     576             :         }
     577             : 
     578         266 :         if(pOwnAttrFillBmpItem)
     579             :         {
     580             :             drawing::BitmapMode eMode;
     581             : 
     582           0 :             if(!(*pOwnAttrFillBmpItem >>= eMode))
     583             :             {
     584           0 :                 sal_Int32 nMode = 0;
     585             : 
     586           0 :                 if(!(*pOwnAttrFillBmpItem >>= nMode))
     587             :                 {
     588           0 :                     throw lang::IllegalArgumentException();
     589             :                 }
     590             : 
     591           0 :                 eMode = (drawing::BitmapMode)nMode;
     592             :             }
     593             : 
     594           0 :             rToSet.Put(XFillBmpStretchItem(drawing::BitmapMode_STRETCH == eMode));
     595           0 :             rToSet.Put(XFillBmpTileItem(drawing::BitmapMode_REPEAT == eMode));
     596         266 :         }
     597             :     }
     598             :     {
     599        3072 :         const ::uno::Any* pCont = 0;
     600        3072 :         GetProperty(RES_PROTECT, MID_PROTECT_CONTENT, pCont );
     601        3072 :         const ::uno::Any* pPos = 0;
     602        3072 :         GetProperty(RES_PROTECT,MID_PROTECT_POSITION, pPos );
     603        3072 :         const ::uno::Any* pName = 0;
     604        3072 :         GetProperty(RES_PROTECT, MID_PROTECT_SIZE, pName );
     605        3072 :         if(pCont||pPos||pName)
     606             :         {
     607          44 :             SvxProtectItem aProt ( static_cast < const :: SvxProtectItem & > ( rFromSet.Get ( RES_PROTECT ) ) );
     608          44 :             if(pCont)
     609          44 :                 bRet &= ((SfxPoolItem&)aProt).PutValue(*pCont, MID_PROTECT_CONTENT);
     610          44 :             if(pPos )
     611          44 :                 bRet &= ((SfxPoolItem&)aProt).PutValue(*pPos, MID_PROTECT_POSITION);
     612          44 :             if(pName)
     613          44 :                 bRet &= ((SfxPoolItem&)aProt).PutValue(*pName, MID_PROTECT_SIZE);
     614          44 :             rToSet.Put(aProt);
     615             :         }
     616             :     }
     617             :     {
     618        3072 :         const ::uno::Any* pHori  = 0;
     619        3072 :         GetProperty(RES_HORI_ORIENT, MID_HORIORIENT_ORIENT, pHori );
     620        3072 :         const ::uno::Any* pHoriP = 0;
     621        3072 :         GetProperty(RES_HORI_ORIENT, MID_HORIORIENT_POSITION|CONVERT_TWIPS, pHoriP );
     622        3072 :         const ::uno::Any* pHoriR = 0;
     623        3072 :         GetProperty(RES_HORI_ORIENT, MID_HORIORIENT_RELATION, pHoriR );
     624        3072 :         const ::uno::Any* pPageT = 0;
     625        3072 :         GetProperty(RES_HORI_ORIENT, MID_HORIORIENT_PAGETOGGLE, pPageT);
     626        3072 :         if(pHori||pHoriP||pHoriR||pPageT)
     627             :         {
     628        1086 :             SwFmtHoriOrient aOrient ( static_cast < const :: SwFmtHoriOrient & > ( rFromSet.Get ( RES_HORI_ORIENT ) ) );
     629        1086 :             if(pHori )
     630         812 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pHori, MID_HORIORIENT_ORIENT);
     631        1086 :             if(pHoriP)
     632        1044 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pHoriP, MID_HORIORIENT_POSITION|CONVERT_TWIPS);
     633        1086 :             if(pHoriR)
     634         706 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pHoriR, MID_HORIORIENT_RELATION);
     635        1086 :             if(pPageT)
     636         290 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pPageT, MID_HORIORIENT_PAGETOGGLE);
     637        1086 :             rToSet.Put(aOrient);
     638             :         }
     639             :     }
     640             : 
     641             :     {
     642        3072 :         const ::uno::Any* pVert  = 0;
     643        3072 :         GetProperty(RES_VERT_ORIENT, MID_VERTORIENT_ORIENT, pVert);
     644        3072 :         const ::uno::Any* pVertP = 0;
     645        3072 :         GetProperty(RES_VERT_ORIENT, MID_VERTORIENT_POSITION|CONVERT_TWIPS, pVertP );
     646        3072 :         const ::uno::Any* pVertR = 0;
     647        3072 :         GetProperty(RES_VERT_ORIENT, MID_VERTORIENT_RELATION, pVertR );
     648        3072 :         if(pVert||pVertP||pVertR)
     649             :         {
     650        1000 :             SwFmtVertOrient aOrient ( static_cast < const :: SwFmtVertOrient & > ( rFromSet.Get ( RES_VERT_ORIENT ) ) );
     651        1000 :             if(pVert )
     652         822 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pVert, MID_VERTORIENT_ORIENT);
     653        1000 :             if(pVertP)
     654         950 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pVertP, MID_VERTORIENT_POSITION|CONVERT_TWIPS);
     655        1000 :             if(pVertR)
     656         688 :                 bRet &= ((SfxPoolItem&)aOrient).PutValue(*pVertR, MID_VERTORIENT_RELATION);
     657        1000 :             rToSet.Put(aOrient);
     658             :         }
     659             :     }
     660             :     {
     661        3072 :         const ::uno::Any* pURL = 0;
     662        3072 :         GetProperty(RES_URL, MID_URL_URL, pURL );
     663        3072 :         const ::uno::Any* pTarget = 0;
     664        3072 :         GetProperty(RES_URL, MID_URL_TARGET, pTarget );
     665        3072 :         const ::uno::Any* pHyLNm = 0;
     666        3072 :         GetProperty(RES_URL, MID_URL_HYPERLINKNAME, pHyLNm );
     667        3072 :         const ::uno::Any* pHySMp = 0;
     668        3072 :         GetProperty(RES_URL, MID_URL_SERVERMAP, pHySMp );
     669        3072 :         if(pURL||pTarget||pHyLNm||pHySMp)
     670             :         {
     671           0 :             SwFmtURL aURL ( static_cast < const :: SwFmtURL & > ( rFromSet.Get ( RES_URL ) ) );
     672           0 :             if(pURL)
     673           0 :                 bRet &= ((SfxPoolItem&)aURL).PutValue(*pURL, MID_URL_URL);
     674           0 :             if(pTarget)
     675           0 :                 bRet &= ((SfxPoolItem&)aURL).PutValue(*pTarget, MID_URL_TARGET);
     676           0 :             if(pHyLNm)
     677           0 :                 bRet &= ((SfxPoolItem&)aURL).PutValue(*pHyLNm, MID_URL_HYPERLINKNAME  );
     678           0 :             if(pHySMp)
     679           0 :                 bRet &= ((SfxPoolItem&)aURL).PutValue(*pHySMp, MID_URL_SERVERMAP);
     680           0 :             rToSet.Put(aURL);
     681             :         }
     682             :     }
     683        3072 :     const ::uno::Any* pL = 0;
     684        3072 :     GetProperty(RES_LR_SPACE, MID_L_MARGIN|CONVERT_TWIPS, pL );
     685        3072 :     const ::uno::Any* pR = 0;
     686        3072 :     GetProperty(RES_LR_SPACE, MID_R_MARGIN|CONVERT_TWIPS, pR );
     687        3072 :     if(pL||pR)
     688             :     {
     689         866 :         SvxLRSpaceItem aLR ( static_cast < const :: SvxLRSpaceItem & > ( rFromSet.Get ( RES_LR_SPACE ) ) );
     690         866 :         if(pL)
     691         866 :             bRet &= ((SfxPoolItem&)aLR).PutValue(*pL, MID_L_MARGIN|CONVERT_TWIPS);
     692         866 :         if(pR)
     693         866 :             bRet &= ((SfxPoolItem&)aLR).PutValue(*pR, MID_R_MARGIN|CONVERT_TWIPS);
     694         866 :         rToSet.Put(aLR);
     695             :     }
     696        3072 :     const ::uno::Any* pT = 0;
     697        3072 :     GetProperty(RES_UL_SPACE, MID_UP_MARGIN|CONVERT_TWIPS, pT );
     698        3072 :     const ::uno::Any* pB = 0;
     699        3072 :     GetProperty(RES_UL_SPACE, MID_LO_MARGIN|CONVERT_TWIPS, pB );
     700        3072 :     if(pT||pB)
     701             :     {
     702         862 :         SvxULSpaceItem aTB ( static_cast < const :: SvxULSpaceItem &> ( rFromSet.Get ( RES_UL_SPACE ) ) );
     703         862 :         if(pT)
     704         862 :             bRet &= ((SfxPoolItem&)aTB).PutValue(*pT, MID_UP_MARGIN|CONVERT_TWIPS);
     705         862 :         if(pB)
     706         862 :             bRet &= ((SfxPoolItem&)aTB).PutValue(*pB, MID_LO_MARGIN|CONVERT_TWIPS);
     707         862 :         rToSet.Put(aTB);
     708             :     }
     709             :     const ::uno::Any* pOp;
     710        3072 :     if(GetProperty(RES_OPAQUE, 0, pOp))
     711             :     {
     712         454 :         SvxOpaqueItem aOp ( static_cast < const :: SvxOpaqueItem& > ( rFromSet.Get ( RES_OPAQUE ) ) );
     713         454 :         bRet &= ((SfxPoolItem&)aOp).PutValue(*pOp, 0);
     714         454 :         rToSet.Put(aOp);
     715             :     }
     716             :     const ::uno::Any* pPrt;
     717        3072 :     if(GetProperty(RES_PRINT, 0, pPrt))
     718             :     {
     719           0 :         SvxPrintItem aPrt ( static_cast < const :: SvxPrintItem & > ( rFromSet.Get ( RES_PRINT ) ) );
     720           0 :         bRet &= ((SfxPoolItem&)aPrt).PutValue(*pPrt, 0);
     721           0 :         rToSet.Put(aPrt);
     722             :     }
     723             :     const ::uno::Any* pSh;
     724        3072 :     if(GetProperty(RES_SHADOW, CONVERT_TWIPS, pSh))
     725             :     {
     726         108 :         SvxShadowItem aSh ( static_cast < const :: SvxShadowItem& > ( rFromSet.Get ( RES_SHADOW ) ) );
     727         108 :         bRet &= ((SfxPoolItem&)aSh).PutValue(*pSh, CONVERT_TWIPS);
     728         108 :         rToSet.Put(aSh);
     729             :     }
     730             :     const ::uno::Any* pShTr;
     731        3072 :     if(GetProperty(RES_SHADOW, MID_SHADOW_TRANSPARENCE, pShTr) && rToSet.HasItem(RES_SHADOW))
     732             :     {
     733          16 :         SvxShadowItem aSh(static_cast<const SvxShadowItem&>(rToSet.Get(RES_SHADOW)));
     734          16 :         bRet &= aSh.PutValue(*pShTr, MID_SHADOW_TRANSPARENCE);
     735          16 :         rToSet.Put(aSh);
     736             :     }
     737        3072 :     const ::uno::Any* pSur      = 0;
     738        3072 :     GetProperty(RES_SURROUND, MID_SURROUND_SURROUNDTYPE, pSur);
     739        3072 :     const ::uno::Any* pSurAnch = 0;
     740        3072 :     GetProperty(RES_SURROUND, MID_SURROUND_ANCHORONLY, pSurAnch);
     741        3072 :     if(pSur || pSurAnch)
     742             :     {
     743         914 :         SwFmtSurround aSrnd ( static_cast < const :: SwFmtSurround & > ( rFromSet.Get ( RES_SURROUND ) ) );
     744         914 :         if(pSur)
     745         914 :             bRet &= ((SfxPoolItem&)aSrnd).PutValue(*pSur, MID_SURROUND_SURROUNDTYPE );
     746         914 :         if(pSurAnch)
     747          74 :             bRet &= ((SfxPoolItem&)aSrnd).PutValue(*pSurAnch, MID_SURROUND_ANCHORONLY);
     748         914 :         rToSet.Put(aSrnd);
     749             :     }
     750        3072 :     const ::uno::Any* pLeft        = 0;
     751        3072 :     GetProperty(RES_BOX, LEFT_BORDER  |CONVERT_TWIPS,    pLeft  );
     752        3072 :     const ::uno::Any* pRight       = 0;
     753        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|RIGHT_BORDER ,    pRight );
     754        3072 :     const ::uno::Any* pTop         = 0;
     755        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|TOP_BORDER     , pTop   );
     756        3072 :     const ::uno::Any* pBottom  = 0;
     757        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|BOTTOM_BORDER,    pBottom);
     758        3072 :     const ::uno::Any* pDistance    = 0;
     759        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|BORDER_DISTANCE,  pDistance);
     760        3072 :     const ::uno::Any* pLeftDistance    = 0;
     761        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|LEFT_BORDER_DISTANCE, pLeftDistance);
     762        3072 :     const ::uno::Any* pRightDistance   = 0;
     763        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|RIGHT_BORDER_DISTANCE,    pRightDistance);
     764        3072 :     const ::uno::Any* pTopDistance     = 0;
     765        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|TOP_BORDER_DISTANCE,  pTopDistance);
     766        3072 :     const ::uno::Any* pBottomDistance  = 0;
     767        3072 :     GetProperty(RES_BOX, CONVERT_TWIPS|BOTTOM_BORDER_DISTANCE,   pBottomDistance);
     768        3072 :     const ::uno::Any* pLineStyle  = 0;
     769        3072 :     GetProperty(RES_BOX, LINE_STYLE,   pLineStyle);
     770        3072 :     const ::uno::Any* pLineWidth  = 0;
     771        3072 :     GetProperty(RES_BOX, LINE_WIDTH,   pLineWidth);
     772        3072 :     if( pLeft || pRight || pTop ||  pBottom || pDistance ||
     773        2096 :         pLeftDistance  || pRightDistance || pTopDistance || pBottomDistance ||
     774        2096 :         pLineStyle || pLineWidth )
     775             :     {
     776         976 :         SvxBoxItem aBox ( static_cast < const :: SvxBoxItem & > ( rFromSet.Get ( RES_BOX ) ) );
     777         976 :         if( pLeft )
     778         884 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pLeft, CONVERT_TWIPS|LEFT_BORDER );
     779         976 :         if( pRight )
     780         884 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pRight, CONVERT_TWIPS|RIGHT_BORDER );
     781         976 :         if( pTop )
     782         884 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pTop, CONVERT_TWIPS|TOP_BORDER);
     783         976 :         if( pBottom )
     784         884 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pBottom, CONVERT_TWIPS|BOTTOM_BORDER);
     785         976 :         if( pDistance )
     786           0 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pDistance, CONVERT_TWIPS|BORDER_DISTANCE);
     787         976 :         if( pLeftDistance )
     788         524 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pLeftDistance, CONVERT_TWIPS|LEFT_BORDER_DISTANCE);
     789         976 :         if( pRightDistance )
     790         524 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pRightDistance, CONVERT_TWIPS|RIGHT_BORDER_DISTANCE);
     791         976 :         if( pTopDistance )
     792         524 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pTopDistance, CONVERT_TWIPS|TOP_BORDER_DISTANCE);
     793         976 :         if( pBottomDistance )
     794         524 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pBottomDistance, CONVERT_TWIPS|BOTTOM_BORDER_DISTANCE);
     795         976 :         if( pLineStyle )
     796         158 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pLineStyle, LINE_STYLE);
     797         976 :         if( pLineWidth )
     798           0 :             bRet &= ((SfxPoolItem&)aBox).PutValue(*pLineWidth, LINE_WIDTH|CONVERT_TWIPS);
     799         976 :         rToSet.Put(aBox);
     800             :     }
     801             :     {
     802        3072 :         const ::uno::Any* pRelH = 0;
     803        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_REL_HEIGHT, pRelH);
     804        3072 :         const ::uno::Any* pRelHRelation = 0;
     805        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_REL_HEIGHT_RELATION, pRelHRelation);
     806        3072 :         const ::uno::Any* pRelW = 0;
     807        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_REL_WIDTH, pRelW);
     808        3072 :         const ::uno::Any* pRelWRelation = 0;
     809        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_REL_WIDTH_RELATION, pRelWRelation);
     810        3072 :         const ::uno::Any* pSyncWidth = 0;
     811        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_IS_SYNC_WIDTH_TO_HEIGHT, pSyncWidth);
     812        3072 :         const ::uno::Any* pSyncHeight = 0;
     813        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_IS_SYNC_HEIGHT_TO_WIDTH, pSyncHeight);
     814        3072 :         const ::uno::Any* pWidth = 0;
     815        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_WIDTH|CONVERT_TWIPS, pWidth);
     816        3072 :         const ::uno::Any* pHeight = 0;
     817        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_HEIGHT|CONVERT_TWIPS, pHeight);
     818        3072 :         const ::uno::Any* pSize = 0;
     819        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_SIZE|CONVERT_TWIPS, pSize);
     820        3072 :         const ::uno::Any* pSizeType = 0;
     821        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_SIZE_TYPE, pSizeType);
     822        3072 :         const ::uno::Any* pWidthType = 0;
     823        3072 :         GetProperty(RES_FRM_SIZE, MID_FRMSIZE_WIDTH_TYPE, pWidthType);
     824        3072 :         if( pWidth || pHeight ||pRelH || pRelHRelation || pRelW || pRelWRelation || pSize ||pSizeType ||
     825        1106 :             pWidthType ||pSyncWidth || pSyncHeight )
     826             :         {
     827        1966 :             rSizeFound = true;
     828        1966 :             SwFmtFrmSize aFrmSz ( static_cast < const :: SwFmtFrmSize& > ( rFromSet.Get ( RES_FRM_SIZE ) ) );
     829        1966 :             if(pWidth)
     830        1722 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pWidth, MID_FRMSIZE_WIDTH|CONVERT_TWIPS);
     831        1966 :             if(pHeight)
     832        1668 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pHeight, MID_FRMSIZE_HEIGHT|CONVERT_TWIPS);
     833        1966 :             if(pRelH )
     834         450 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pRelH, MID_FRMSIZE_REL_HEIGHT);
     835        1966 :             if (pRelHRelation)
     836          18 :                 bRet &= const_cast<SwFmtFrmSize&>(aFrmSz).PutValue(*pRelHRelation, MID_FRMSIZE_REL_HEIGHT_RELATION);
     837        1966 :             if(pRelW )
     838         460 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pRelW, MID_FRMSIZE_REL_WIDTH);
     839        1966 :             if (pRelWRelation)
     840          18 :                 bRet &= const_cast<SwFmtFrmSize&>(aFrmSz).PutValue(*pRelWRelation, MID_FRMSIZE_REL_WIDTH_RELATION);
     841        1966 :             if(pSyncWidth)
     842         444 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pSyncWidth, MID_FRMSIZE_IS_SYNC_WIDTH_TO_HEIGHT);
     843        1966 :             if(pSyncHeight)
     844         444 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pSyncHeight, MID_FRMSIZE_IS_SYNC_HEIGHT_TO_WIDTH);
     845        1966 :             if(pSize)
     846         678 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pSize, MID_FRMSIZE_SIZE|CONVERT_TWIPS);
     847        1966 :             if(pSizeType)
     848         514 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pSizeType, MID_FRMSIZE_SIZE_TYPE);
     849        1966 :             if(pWidthType)
     850         298 :                 bRet &= ((SfxPoolItem&)aFrmSz).PutValue(*pWidthType, MID_FRMSIZE_WIDTH_TYPE);
     851        1966 :             if(!aFrmSz.GetWidth())
     852          10 :                 aFrmSz.SetWidth(MINFLY);
     853        1966 :             if(!aFrmSz.GetHeight())
     854          64 :                 aFrmSz.SetHeight(MINFLY);
     855        1966 :             rToSet.Put(aFrmSz);
     856             :         }
     857             :         else
     858             :         {
     859        1106 :             rSizeFound = false;
     860        1106 :             SwFmtFrmSize aFrmSz;
     861        1106 :             awt::Size aSize;
     862        1106 :             aSize.Width = 2 * MM50;
     863        1106 :             aSize.Height = 2 * MM50;
     864        2212 :             ::uno::Any aSizeVal;
     865        1106 :             aSizeVal <<= aSize;
     866        1106 :             ((SfxPoolItem&)aFrmSz).PutValue(aSizeVal, MID_FRMSIZE_SIZE|CONVERT_TWIPS);
     867        2212 :             rToSet.Put(aFrmSz);
     868             :         }
     869             :     }
     870        3072 :     const ::uno::Any* pFrameDirection = 0;
     871        3072 :     GetProperty(RES_FRAMEDIR, 0, pFrameDirection);
     872        3072 :     if(pFrameDirection)
     873             :     {
     874          72 :         SvxFrameDirectionItem aAttr(FRMDIR_HORI_LEFT_TOP, RES_FRAMEDIR);
     875          72 :         aAttr.PutValue(*pFrameDirection, 0);
     876          72 :         rToSet.Put(aAttr);
     877             :     }
     878        3072 :     const ::uno::Any* pUnknown = 0;
     879        3072 :     GetProperty(RES_UNKNOWNATR_CONTAINER, 0, pUnknown);
     880        3072 :     if(pUnknown)
     881             :     {
     882           0 :         SvXMLAttrContainerItem aAttr(RES_UNKNOWNATR_CONTAINER);
     883           0 :         aAttr.PutValue(*pUnknown, 0);
     884           0 :         rToSet.Put(aAttr);
     885             :     }
     886             : 
     887             :     // #i18732#
     888        3072 :     const ::uno::Any* pFollowTextFlow = 0;
     889        3072 :     GetProperty(RES_FOLLOW_TEXT_FLOW, 0, pFollowTextFlow);
     890        3072 :     if ( pFollowTextFlow )
     891             :     {
     892          52 :         SwFmtFollowTextFlow aFmtFollowTextFlow;
     893          52 :         aFmtFollowTextFlow.PutValue(*pFollowTextFlow, 0);
     894          52 :         rToSet.Put(aFmtFollowTextFlow);
     895             :     }
     896             : 
     897             :     // #i28701# - RES_WRAP_INFLUENCE_ON_OBJPOS
     898        3072 :     const ::uno::Any* pWrapInfluenceOnObjPos = 0;
     899        3072 :     GetProperty(RES_WRAP_INFLUENCE_ON_OBJPOS, MID_WRAP_INFLUENCE, pWrapInfluenceOnObjPos);
     900        3072 :     if ( pWrapInfluenceOnObjPos )
     901             :     {
     902           0 :         SwFmtWrapInfluenceOnObjPos aFmtWrapInfluenceOnObjPos;
     903           0 :         aFmtWrapInfluenceOnObjPos.PutValue( *pWrapInfluenceOnObjPos, MID_WRAP_INFLUENCE );
     904           0 :         rToSet.Put(aFmtWrapInfluenceOnObjPos);
     905             :     }
     906             : 
     907             :     {
     908        3072 :         const ::uno::Any* pTextVertAdjust = 0;
     909        3072 :         GetProperty(RES_TEXT_VERT_ADJUST, 0, pTextVertAdjust);
     910        3072 :         if ( pTextVertAdjust )
     911             :         {
     912          18 :             SdrTextVertAdjustItem aTextVertAdjust(static_cast <const :: SdrTextVertAdjustItem & > ( rFromSet.Get ( RES_TEXT_VERT_ADJUST ) ));
     913          18 :             bRet &= ((SfxPoolItem&)aTextVertAdjust).PutValue(*pTextVertAdjust);
     914          18 :             rToSet.Put(aTextVertAdjust);
     915             :         }
     916             :     }
     917             : 
     918        3072 :     return bRet;
     919             : }
     920             : 
     921             : class SwFrameProperties_Impl : public BaseFrameProperties_Impl
     922             : {
     923             : public:
     924             :     SwFrameProperties_Impl();
     925        3832 :     virtual ~SwFrameProperties_Impl(){}
     926             : 
     927             :     bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, bool& rSizeFound) SAL_OVERRIDE;
     928             : };
     929             : 
     930        2324 : SwFrameProperties_Impl::SwFrameProperties_Impl():
     931        2324 :     BaseFrameProperties_Impl(/*aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_FRAME)*/ )
     932             : {
     933        2324 : }
     934             : 
     935        2322 : static inline void lcl_FillCol ( SfxItemSet &rToSet, const :: SfxItemSet &rFromSet, const :: uno::Any *pAny)
     936             : {
     937        2322 :     if ( pAny )
     938             :     {
     939          10 :         SwFmtCol aCol ( static_cast < const :: SwFmtCol & > ( rFromSet.Get ( RES_COL ) ) );
     940          10 :         ((SfxPoolItem&)aCol).PutValue( *pAny, MID_COLUMNS);
     941          10 :         rToSet.Put(aCol);
     942             :     }
     943        2322 : }
     944             : 
     945        2322 : bool SwFrameProperties_Impl::AnyToItemSet(SwDoc *pDoc, SfxItemSet& rSet, SfxItemSet&, bool& rSizeFound)
     946             : {
     947             :     //Properties fuer alle Frames
     948             :     const ::uno::Any *pStyleName;
     949        2322 :     SwDocStyleSheet* pStyle = NULL;
     950             :     bool bRet;
     951             : 
     952        2322 :     if ( GetProperty ( FN_UNO_FRAME_STYLE_NAME, 0, pStyleName ) )
     953             :     {
     954         154 :         OUString sStyle;
     955         154 :         *pStyleName >>= sStyle;
     956         154 :         SwStyleNameMapper::FillUIName(sStyle, sStyle, nsSwGetPoolIdFromName::GET_POOLID_FRMFMT, true);
     957         154 :         pStyle = (SwDocStyleSheet*)pDoc->GetDocShell()->GetStyleSheetPool()->Find(sStyle,
     958         154 :                                                     SFX_STYLE_FAMILY_FRAME);
     959             :     }
     960             : 
     961        2322 :     const ::uno::Any* pColumns = NULL;
     962        2322 :     GetProperty (RES_COL, MID_COLUMNS, pColumns);
     963        2322 :     if ( pStyle )
     964             :     {
     965         154 :         rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *pStyle ) );
     966         154 :         const :: SfxItemSet *pItemSet = &xStyle->GetItemSet();
     967         154 :            bRet = FillBaseProperties( rSet, *pItemSet, rSizeFound );
     968         154 :         lcl_FillCol ( rSet, *pItemSet, pColumns );
     969             :     }
     970             :     else
     971             :     {
     972        2168 :         const :: SfxItemSet *pItemSet = &pDoc->getIDocumentStylePoolAccess().GetFrmFmtFromPool( RES_POOLFRM_FRAME )->GetAttrSet();
     973        2168 :            bRet = FillBaseProperties( rSet, *pItemSet, rSizeFound );
     974        2168 :         lcl_FillCol ( rSet, *pItemSet, pColumns );
     975             :     }
     976             :     const ::uno::Any* pEdit;
     977        2322 :     if(GetProperty(RES_EDIT_IN_READONLY, 0, pEdit))
     978             :     {
     979           4 :         SfxBoolItem aBool(RES_EDIT_IN_READONLY);
     980           4 :         ((SfxPoolItem&)aBool).PutValue(*pEdit, 0);
     981           4 :         rSet.Put(aBool);
     982             :     }
     983        2322 :     return bRet;
     984             : }
     985             : 
     986             : class SwGraphicProperties_Impl : public BaseFrameProperties_Impl
     987             : {
     988             : public:
     989             :     SwGraphicProperties_Impl();
     990        1500 :     virtual ~SwGraphicProperties_Impl(){}
     991             : 
     992             :     virtual bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, bool& rSizeFound) SAL_OVERRIDE;
     993             : };
     994             : 
     995         750 : SwGraphicProperties_Impl::SwGraphicProperties_Impl( ) :
     996         750 :     BaseFrameProperties_Impl(/*aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_GRAPHIC)*/ )
     997             : {
     998         750 : }
     999             : 
    1000         750 : static inline void lcl_FillMirror ( SfxItemSet &rToSet, const :: SfxItemSet &rFromSet, const ::uno::Any *pHEvenMirror, const ::uno::Any *pHOddMirror, const ::uno::Any *pVMirror, bool &rRet )
    1001             : {
    1002         750 :     if(pHEvenMirror || pHOddMirror || pVMirror )
    1003             :     {
    1004          42 :         SwMirrorGrf aMirror ( static_cast < const :: SwMirrorGrf& > ( rFromSet.Get ( RES_GRFATR_MIRRORGRF ) ) );
    1005          42 :         if(pHEvenMirror)
    1006          42 :             rRet &= ((SfxPoolItem&)aMirror).PutValue(*pHEvenMirror, MID_MIRROR_HORZ_EVEN_PAGES);
    1007          42 :         if(pHOddMirror)
    1008          42 :             rRet &= ((SfxPoolItem&)aMirror).PutValue(*pHOddMirror, MID_MIRROR_HORZ_ODD_PAGES);
    1009          42 :         if(pVMirror)
    1010          42 :             rRet &= ((SfxPoolItem&)aMirror).PutValue(*pVMirror, MID_MIRROR_VERT);
    1011          42 :         rToSet.Put(aMirror);
    1012             :     }
    1013         750 : }
    1014             : 
    1015         750 : bool SwGraphicProperties_Impl::AnyToItemSet(
    1016             :             SwDoc* pDoc,
    1017             :             SfxItemSet& rFrmSet,
    1018             :             SfxItemSet& rGrSet,
    1019             :             bool& rSizeFound)
    1020             : {
    1021             :     //Properties fuer alle Frames
    1022             :     bool bRet;
    1023             :     const ::uno::Any *pStyleName;
    1024         750 :     SwDocStyleSheet* pStyle = NULL;
    1025             : 
    1026         750 :     if ( GetProperty ( FN_UNO_FRAME_STYLE_NAME, 0, pStyleName ) )
    1027             :     {
    1028         292 :         OUString sStyle;
    1029         292 :         *pStyleName >>= sStyle;
    1030         292 :         SwStyleNameMapper::FillUIName(sStyle, sStyle, nsSwGetPoolIdFromName::GET_POOLID_FRMFMT, true);
    1031         292 :         pStyle = (SwDocStyleSheet*)pDoc->GetDocShell()->GetStyleSheetPool()->Find(sStyle,
    1032         292 :                                                     SFX_STYLE_FAMILY_FRAME);
    1033             :     }
    1034             : 
    1035         750 :     const ::uno::Any* pHEvenMirror = 0;
    1036         750 :     const ::uno::Any* pHOddMirror = 0;
    1037         750 :     const ::uno::Any* pVMirror = 0;
    1038         750 :     GetProperty(RES_GRFATR_MIRRORGRF, MID_MIRROR_HORZ_EVEN_PAGES, pHEvenMirror);
    1039         750 :     GetProperty(RES_GRFATR_MIRRORGRF, MID_MIRROR_HORZ_ODD_PAGES, pHOddMirror);
    1040         750 :     GetProperty(RES_GRFATR_MIRRORGRF, MID_MIRROR_VERT, pVMirror);
    1041             : 
    1042         750 :     if ( pStyle )
    1043             :     {
    1044         292 :         rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet(*pStyle) );
    1045         292 :         const :: SfxItemSet *pItemSet = &xStyle->GetItemSet();
    1046         292 :         bRet = FillBaseProperties(rFrmSet, *pItemSet, rSizeFound);
    1047         292 :         lcl_FillMirror ( rGrSet, *pItemSet, pHEvenMirror, pHOddMirror, pVMirror, bRet );
    1048             :     }
    1049             :     else
    1050             :     {
    1051         458 :         const :: SfxItemSet *pItemSet = &pDoc->getIDocumentStylePoolAccess().GetFrmFmtFromPool( RES_POOLFRM_GRAPHIC )->GetAttrSet();
    1052         458 :         bRet = FillBaseProperties(rFrmSet, *pItemSet, rSizeFound);
    1053         458 :         lcl_FillMirror ( rGrSet, *pItemSet, pHEvenMirror, pHOddMirror, pVMirror, bRet );
    1054             :     }
    1055             : 
    1056             :     static const :: sal_uInt16 nIDs[] =
    1057             :     {
    1058             :         RES_GRFATR_CROPGRF,
    1059             :         RES_GRFATR_ROTATION,
    1060             :         RES_GRFATR_LUMINANCE,
    1061             :         RES_GRFATR_CONTRAST,
    1062             :         RES_GRFATR_CHANNELR,
    1063             :         RES_GRFATR_CHANNELG,
    1064             :         RES_GRFATR_CHANNELB,
    1065             :         RES_GRFATR_GAMMA,
    1066             :         RES_GRFATR_INVERT,
    1067             :         RES_GRFATR_TRANSPARENCY,
    1068             :         RES_GRFATR_DRAWMODE,
    1069             :         0
    1070             :     };
    1071             :     const ::uno::Any* pAny;
    1072        9000 :     for(sal_Int16 nIndex = 0; nIDs[nIndex]; nIndex++)
    1073             :     {
    1074        8250 :         sal_uInt8 nMId = RES_GRFATR_CROPGRF == nIDs[nIndex] ? CONVERT_TWIPS : 0;
    1075        8250 :         if(GetProperty(nIDs[nIndex], nMId, pAny ))
    1076             :         {
    1077        1432 :             SfxPoolItem* pItem = ::GetDfltAttr( nIDs[nIndex] )->Clone();
    1078        1432 :             bRet &= pItem->PutValue(*pAny, nMId );
    1079        1432 :             rGrSet.Put(*pItem);
    1080        1432 :             delete pItem;
    1081             :         }
    1082             :     }
    1083             : 
    1084         750 :     return bRet;
    1085             : }
    1086             : 
    1087             : class SwOLEProperties_Impl : public SwFrameProperties_Impl
    1088             : {
    1089             : public:
    1090         816 :     SwOLEProperties_Impl() :
    1091         816 :         SwFrameProperties_Impl(/*aSwMapProvider.GetPropertyMap(PROPERTY_MAP_EMBEDDED_OBJECT)*/ ){}
    1092        1632 :     virtual ~SwOLEProperties_Impl(){}
    1093             : 
    1094             :     virtual bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, bool& rSizeFound) SAL_OVERRIDE;
    1095             : };
    1096             : 
    1097         816 : bool SwOLEProperties_Impl::AnyToItemSet(
    1098             :         SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, bool& rSizeFound)
    1099             : {
    1100             :     const ::uno::Any* pTemp;
    1101        2436 :     if(!GetProperty(FN_UNO_CLSID, 0, pTemp) && !GetProperty(FN_UNO_STREAM_NAME, 0, pTemp)
    1102        1522 :          && !GetProperty(FN_EMBEDDED_OBJECT, 0, pTemp) )
    1103           0 :         return false;
    1104         816 :     SwFrameProperties_Impl::AnyToItemSet( pDoc, rFrmSet, rSet, rSizeFound);
    1105             : 
    1106         816 :     return true;
    1107             : }
    1108             : 
    1109       23828 : class SwXFrame::Impl
    1110             : {
    1111             : private:
    1112             :     ::osl::Mutex m_Mutex; // just for OInterfaceContainerHelper
    1113             : 
    1114             : public:
    1115             :     uno::WeakReference<uno::XInterface> m_wThis;
    1116             :     ::cppu::OInterfaceContainerHelper m_EventListeners;
    1117             : 
    1118       23828 :     Impl() : m_EventListeners(m_Mutex) { }
    1119             : };
    1120             : 
    1121             : namespace
    1122             : {
    1123             :     class theSwXFrameUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theSwXFrameUnoTunnelId > {};
    1124             : }
    1125             : 
    1126       24762 : const :: uno::Sequence< sal_Int8 > & SwXFrame::getUnoTunnelId()
    1127             : {
    1128       24762 :     return theSwXFrameUnoTunnelId::get().getSeq();
    1129             : }
    1130             : 
    1131       24706 : sal_Int64 SAL_CALL SwXFrame::getSomething( const :: uno::Sequence< sal_Int8 >& rId )
    1132             :     throw(uno::RuntimeException, std::exception)
    1133             : {
    1134       49412 :     if( rId.getLength() == 16
    1135       74118 :         && 0 == memcmp( getUnoTunnelId().getConstArray(),
    1136       49412 :                                         rId.getConstArray(), 16 ) )
    1137             :     {
    1138          38 :         return sal::static_int_cast< sal_Int64 >( reinterpret_cast< sal_IntPtr >(this) );
    1139             :     }
    1140       24668 :     return 0;
    1141             : }
    1142             : 
    1143       93606 : TYPEINIT1(SwXFrame, SwClient);
    1144             : 
    1145           0 : OUString SwXFrame::getImplementationName(void) throw( uno::RuntimeException, std::exception )
    1146             : {
    1147           0 :     return OUString("SwXFrame");
    1148             : }
    1149             : 
    1150           0 : sal_Bool SwXFrame::supportsService(const :: OUString& rServiceName) throw( uno::RuntimeException, std::exception )
    1151             : {
    1152           0 :     return cppu::supportsService(this, rServiceName);
    1153             : }
    1154             : 
    1155        1788 : uno::Sequence< OUString > SwXFrame::getSupportedServiceNames(void) throw( uno::RuntimeException, std::exception )
    1156             : {
    1157        1788 :     uno::Sequence< OUString > aRet(3);
    1158        1788 :     aRet[0] = "com.sun.star.text.BaseFrame";
    1159        1788 :     aRet[1] = "com.sun.star.text.TextContent";
    1160        1788 :     aRet[2] = "com.sun.star.document.LinkTarget";
    1161        1788 :     return aRet;
    1162             : }
    1163             : 
    1164        3074 : SwXFrame::SwXFrame(FlyCntType eSet, const :: SfxItemPropertySet* pSet, SwDoc *pDoc)
    1165        3074 :     : m_pImpl(new Impl)
    1166             :     , m_pPropSet(pSet)
    1167             :     , m_pDoc(pDoc)
    1168             :     , eType(eSet)
    1169             :     , bIsDescriptor(true)
    1170        6148 :     , m_pCopySource(0)
    1171             : {
    1172             :     // Register ourselves as a listener to the document (via the page descriptor)
    1173        3074 :     pDoc->getIDocumentStylePoolAccess().GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this);
    1174             :     // get the property set for the default style data
    1175             :     // First get the model
    1176        3074 :     uno::Reference < XModel > xModel = pDoc->GetDocShell()->GetBaseModel();
    1177             :     // Ask the model for it's family supplier interface
    1178        6148 :     uno::Reference < XStyleFamiliesSupplier > xFamilySupplier ( xModel, uno::UNO_QUERY );
    1179             :     // Get the style families
    1180        6148 :     uno::Reference < XNameAccess > xFamilies = xFamilySupplier->getStyleFamilies();
    1181             :     // Get the Frame family (and keep it for later)
    1182        6148 :     const ::uno::Any aAny = xFamilies->getByName ("FrameStyles");
    1183        3074 :     aAny >>= mxStyleFamily;
    1184             :     // In the derived class, we'll ask mxStyleFamily for the relevant default style
    1185             :     // mxStyleFamily is initialised in the SwXFrame constructor
    1186        3074 :     switch(eType)
    1187             :     {
    1188             :         case FLYCNTTYPE_FRM:
    1189             :         {
    1190        1508 :             uno::Any aAny2 = mxStyleFamily->getByName ("Frame");
    1191        1508 :             aAny2 >>= mxStyleData;
    1192        1508 :             pProps = new SwFrameProperties_Impl( );
    1193             :         }
    1194        1508 :         break;
    1195             :         case FLYCNTTYPE_GRF:
    1196             :         {
    1197         750 :             uno::Any aAny2 = mxStyleFamily->getByName ("Graphics");
    1198         750 :             aAny2 >>= mxStyleData;
    1199         750 :             pProps = new SwGraphicProperties_Impl( );
    1200             :         }
    1201         750 :         break;
    1202             :         case FLYCNTTYPE_OLE:
    1203             :         {
    1204         816 :             uno::Any aAny2 = mxStyleFamily->getByName ("OLE");
    1205         816 :             aAny2 >>= mxStyleData;
    1206         816 :             pProps = new SwOLEProperties_Impl( );
    1207             :         }
    1208         816 :         break;
    1209             : 
    1210             :         default:
    1211           0 :             pProps = NULL;
    1212             :             ;
    1213        3074 :     }
    1214        3074 : }
    1215             : 
    1216       20754 : SwXFrame::SwXFrame(SwFrmFmt& rFrmFmt, FlyCntType eSet, const :: SfxItemPropertySet* pSet)
    1217             :     : SwClient( &rFrmFmt )
    1218       20754 :     , m_pImpl(new Impl)
    1219             :     ,
    1220             :     m_pPropSet(pSet),
    1221             :     m_pDoc( 0 ),
    1222             :     eType(eSet),
    1223             :     pProps(0),
    1224             :     bIsDescriptor(false),
    1225       41508 :     m_pCopySource(0)
    1226             : {
    1227             : 
    1228       20754 : }
    1229             : 
    1230       47656 : SwXFrame::~SwXFrame()
    1231             : {
    1232       23828 :     delete m_pCopySource;
    1233       23828 :     delete pProps;
    1234       23828 : }
    1235             : 
    1236             : template<class Interface, class NameLookupIsHard>
    1237             : uno::Reference<Interface>
    1238       27596 : SwXFrame::CreateXFrame(SwDoc & rDoc, SwFrmFmt *const pFrmFmt)
    1239             : {
    1240             :     assert(!pFrmFmt || &rDoc == pFrmFmt->GetDoc());
    1241       27596 :     uno::Reference<Interface> xFrame;
    1242       27596 :     if (pFrmFmt)
    1243             :     {
    1244       24522 :         xFrame.set(pFrmFmt->GetXObject(), uno::UNO_QUERY); // cached?
    1245             :     }
    1246       27596 :     if (!xFrame.is())
    1247             :     {
    1248             :         NameLookupIsHard *const pNew((pFrmFmt)
    1249       23828 :                 ? new NameLookupIsHard(*pFrmFmt)
    1250       47656 :                 : new NameLookupIsHard(&rDoc));
    1251       23828 :         xFrame.set(pNew);
    1252       23828 :         if (pFrmFmt)
    1253             :         {
    1254       20754 :             pFrmFmt->SetXObject(xFrame);
    1255             :         }
    1256             :         // need a permanent Reference to initialize m_wThis
    1257       23828 :         pNew->SwXFrame::m_pImpl->m_wThis = xFrame;
    1258             :     }
    1259       27596 :     return xFrame;
    1260             : }
    1261             : 
    1262        1126 : OUString SwXFrame::getName(void) throw( uno::RuntimeException, std::exception )
    1263             : {
    1264        1126 :     SolarMutexGuard aGuard;
    1265        1126 :     SwFrmFmt* pFmt = GetFrmFmt();
    1266        1126 :     if(pFmt)
    1267         680 :         return pFmt->GetName();
    1268         446 :     if(!bIsDescriptor)
    1269           0 :         throw uno::RuntimeException();
    1270         446 :     return m_sName;
    1271             : }
    1272             : 
    1273        1936 : void SwXFrame::setName(const OUString& rName) throw( uno::RuntimeException, std::exception )
    1274             : {
    1275        1936 :     SolarMutexGuard aGuard;
    1276        1936 :     SwFrmFmt* pFmt = GetFrmFmt();
    1277        1936 :     if(pFmt)
    1278             :     {
    1279        1068 :         pFmt->GetDoc()->SetFlyName((SwFlyFrmFmt&)*pFmt, rName);
    1280        1068 :         if(pFmt->GetName() != rName)
    1281             :         {
    1282           0 :             throw uno::RuntimeException();
    1283             :         }
    1284             :     }
    1285         868 :     else if(bIsDescriptor)
    1286         868 :         m_sName = rName;
    1287             :     else
    1288           0 :         throw uno::RuntimeException();
    1289        1936 : }
    1290             : 
    1291        5036 : uno::Reference< beans::XPropertySetInfo >  SwXFrame::getPropertySetInfo(void) throw( uno::RuntimeException, std::exception )
    1292             : {
    1293        5036 :     uno::Reference< beans::XPropertySetInfo >  xRef;
    1294        5036 :     static uno::Reference< beans::XPropertySetInfo >  xFrmRef;
    1295        5036 :     static uno::Reference< beans::XPropertySetInfo >  xGrfRef;
    1296        5036 :     static uno::Reference< beans::XPropertySetInfo >  xOLERef;
    1297        5036 :     switch(eType)
    1298             :     {
    1299             :     case FLYCNTTYPE_FRM:
    1300        3422 :         if( !xFrmRef.is() )
    1301          36 :             xFrmRef = m_pPropSet->getPropertySetInfo();
    1302        3422 :         xRef = xFrmRef;
    1303        3422 :         break;
    1304             :     case FLYCNTTYPE_GRF:
    1305        1374 :         if( !xGrfRef.is() )
    1306          40 :             xGrfRef = m_pPropSet->getPropertySetInfo();
    1307        1374 :         xRef = xGrfRef;
    1308        1374 :         break;
    1309             :     case FLYCNTTYPE_OLE:
    1310         240 :         if( !xOLERef.is() )
    1311          18 :             xOLERef = m_pPropSet->getPropertySetInfo();
    1312         240 :         xRef = xOLERef;
    1313         240 :         break;
    1314             :     default:
    1315             :         ;
    1316             :     }
    1317        5036 :     return xRef;
    1318             : }
    1319             : 
    1320         202 : void SwXFrame::SetSelection(SwPaM& rCopySource)
    1321             : {
    1322         202 :     delete m_pCopySource;
    1323         202 :     m_pCopySource = new SwPaM( *rCopySource.Start() );
    1324         202 :     m_pCopySource->SetMark();
    1325         202 :     *m_pCopySource->GetMark() = *rCopySource.End();
    1326         202 : }
    1327             : 
    1328        4412 : SdrObject *SwXFrame::GetOrCreateSdrObject(SwFlyFrmFmt &rFmt)
    1329             : {
    1330        4412 :     SdrObject* pObject = rFmt.FindSdrObject();
    1331        4412 :     if( !pObject )
    1332             :     {
    1333        2748 :         SwDoc *pDoc = rFmt.GetDoc();
    1334             :         // #i52858# - method name changed
    1335        2748 :         SwDrawModel* pDrawModel = pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel();
    1336             :         SwFlyDrawContact* pContactObject
    1337        2748 :                     = new SwFlyDrawContact( &rFmt, pDrawModel );
    1338        2748 :         pObject = pContactObject->GetMaster();
    1339             : 
    1340        2748 :         const :: SwFmtSurround& rSurround = rFmt.GetSurround();
    1341             :         pObject->SetLayer(
    1342        3212 :             ( SURROUND_THROUGHT == rSurround.GetSurround() &&
    1343         656 :               !rFmt.GetOpaque().GetValue() ) ? pDoc->getIDocumentDrawModelAccess().GetHellId()
    1344        5688 :                                              : pDoc->getIDocumentDrawModelAccess().GetHeavenId() );
    1345        2748 :         pDrawModel->GetPage(0)->InsertObject( pObject );
    1346             :     }
    1347             : 
    1348        4412 :     return pObject;
    1349             : }
    1350             : 
    1351         482 : static SwFrmFmt *lcl_GetFrmFmt( const :: uno::Any& rValue, SwDoc *pDoc )
    1352             : {
    1353         482 :     SwFrmFmt *pRet = 0;
    1354         482 :     SwDocShell* pDocSh = pDoc->GetDocShell();
    1355         482 :     if(pDocSh)
    1356             :     {
    1357         482 :         OUString uTemp;
    1358         482 :         rValue >>= uTemp;
    1359         964 :         OUString sStyle;
    1360             :         SwStyleNameMapper::FillUIName(uTemp, sStyle,
    1361         482 :                 nsSwGetPoolIdFromName::GET_POOLID_FRMFMT, true);
    1362             :         SwDocStyleSheet* pStyle =
    1363         482 :                 (SwDocStyleSheet*)pDocSh->GetStyleSheetPool()->Find(sStyle,
    1364         482 :                                                     SFX_STYLE_FAMILY_FRAME);
    1365         482 :         if(pStyle)
    1366         964 :             pRet = pStyle->GetFrmFmt();
    1367             :     }
    1368             : 
    1369         482 :     return pRet;
    1370             : }
    1371             : 
    1372       61544 : void SwXFrame::setPropertyValue(const :: OUString& rPropertyName, const :: uno::Any& _rValue)
    1373             :     throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    1374             : {
    1375       61544 :     SolarMutexGuard aGuard;
    1376       61544 :     SwFrmFmt* pFmt = GetFrmFmt();
    1377       61544 :     const :: SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(rPropertyName);
    1378             : 
    1379       61544 :     if (!pEntry)
    1380          66 :         throw beans::UnknownPropertyException( "Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    1381             : 
    1382             :     //UUUU
    1383       61478 :     const sal_uInt8 nMemberId(pEntry->nMemberId & (~SFX_METRIC_ITEM));
    1384      122956 :     uno::Any aValue(_rValue);
    1385             : 
    1386             :     //UUUU check for needed metric translation
    1387       61478 :     if(pEntry->nMemberId & SFX_METRIC_ITEM)
    1388             :     {
    1389          14 :         bool bDoIt(true);
    1390             : 
    1391          14 :         if(XATTR_FILLBMP_SIZEX == pEntry->nWID || XATTR_FILLBMP_SIZEY == pEntry->nWID)
    1392             :         {
    1393             :             // exception: If these ItemTypes are used, do not convert when these are negative
    1394             :             // since this means they are intended as percent values
    1395           8 :             sal_Int32 nValue = 0;
    1396             : 
    1397           8 :             if(aValue >>= nValue)
    1398             :             {
    1399           8 :                 bDoIt = nValue > 0;
    1400             :             }
    1401             :         }
    1402             : 
    1403          14 :         if(bDoIt)
    1404             :         {
    1405           6 :             const SwDoc* pDoc = (IsDescriptor() ? m_pDoc : GetFrmFmt()->GetDoc());
    1406           6 :             const SfxItemPool& rPool = pDoc->GetAttrPool();
    1407           6 :             const SfxMapUnit eMapUnit(rPool.GetMetric(pEntry->nWID));
    1408             : 
    1409           6 :             if(eMapUnit != SFX_MAPUNIT_100TH_MM)
    1410             :             {
    1411           6 :                 SvxUnoConvertFromMM(eMapUnit, aValue);
    1412             :             }
    1413             :         }
    1414             :     }
    1415             : 
    1416       61478 :     if(pFmt)
    1417             :     {
    1418       27754 :         bool bNextFrame = false;
    1419       27754 :         if ( pEntry->nFlags & beans::PropertyAttribute::READONLY)
    1420          12 :             throw beans::PropertyVetoException("Property is read-only: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    1421             : 
    1422       27742 :         SwDoc* pDoc = pFmt->GetDoc();
    1423       84760 :         if ( ((eType == FLYCNTTYPE_GRF) && isGRFATR(pEntry->nWID)) ||
    1424       55296 :             (FN_PARAM_COUNTOUR_PP        == pEntry->nWID) ||
    1425       82902 :             (FN_UNO_IS_AUTOMATIC_CONTOUR == pEntry->nWID) ||
    1426       27580 :             (FN_UNO_IS_PIXEL_CONTOUR     == pEntry->nWID) )
    1427             :         {
    1428         162 :             const :: SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    1429         162 :             if(pIdx)
    1430             :             {
    1431         162 :                 SwNodeIndex aIdx(*pIdx, 1);
    1432         162 :                 SwNoTxtNode* pNoTxt = aIdx.GetNode().GetNoTxtNode();
    1433         162 :                 if(pEntry->nWID == FN_PARAM_COUNTOUR_PP)
    1434             :                 {
    1435         136 :                     drawing::PointSequenceSequence aParam;
    1436         136 :                     if(!aValue.hasValue())
    1437         116 :                         pNoTxt->SetContour(0);
    1438          20 :                     else if(aValue >>= aParam)
    1439             :                     {
    1440          20 :                         tools::PolyPolygon aPoly((sal_uInt16)aParam.getLength());
    1441          40 :                         for(sal_Int32 i = 0; i < aParam.getLength(); i++)
    1442             :                         {
    1443          20 :                             const :: drawing::PointSequence* pPointSeq = aParam.getConstArray();
    1444          20 :                             sal_Int32 nPoints = pPointSeq[i].getLength();
    1445          20 :                             const :: awt::Point* pPoints = pPointSeq[i].getConstArray();
    1446          20 :                             Polygon aSet( (sal_uInt16)nPoints );
    1447         192 :                             for(sal_Int32 j = 0; j < nPoints; j++)
    1448             :                             {
    1449         172 :                                 Point aPoint(pPoints[j].X, pPoints[j].Y);
    1450         172 :                                 aSet.SetPoint(aPoint, (sal_uInt16)j);
    1451             :                             }
    1452             :                             // Close polygon if it isn't closed already.
    1453          20 :                             aSet.Optimize( POLY_OPTIMIZE_CLOSE );
    1454          20 :                             aPoly.Insert( aSet );
    1455          20 :                         }
    1456          20 :                         pNoTxt->SetContourAPI( &aPoly );
    1457             :                     }
    1458             :                     else
    1459           0 :                         throw lang::IllegalArgumentException();
    1460             :                 }
    1461          26 :                 else if(pEntry->nWID == FN_UNO_IS_AUTOMATIC_CONTOUR )
    1462             :                 {
    1463           0 :                     pNoTxt->SetAutomaticContour( *(sal_Bool *)aValue.getValue() );
    1464             :                 }
    1465          26 :                 else if(pEntry->nWID == FN_UNO_IS_PIXEL_CONTOUR )
    1466             :                 {
    1467             :                     // The IsPixelContour property can only be set if there
    1468             :                     // is no contour, or if the contour has been set by the
    1469             :                     // API itself (or in other words, if the contour isn't
    1470             :                     // used already).
    1471           0 :                     if( !pNoTxt->_HasContour() ||
    1472           0 :                         !pNoTxt->IsContourMapModeValid() )
    1473           0 :                         pNoTxt->SetPixelContour( *(sal_Bool *)aValue.getValue() );
    1474             :                     else
    1475           0 :                         throw lang::IllegalArgumentException();
    1476             :                 }
    1477             :                 else
    1478             :                 {
    1479          26 :                     SfxItemSet aSet(pNoTxt->GetSwAttrSet());
    1480          26 :                     m_pPropSet->setPropertyValue(*pEntry, aValue, aSet);
    1481          26 :                     pNoTxt->SetAttr(aSet);
    1482         162 :                 }
    1483             :             }
    1484             :         }
    1485             :         // New attribute Title
    1486       27580 :         else if( FN_UNO_TITLE == pEntry->nWID )
    1487             :         {
    1488         448 :             SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    1489         448 :             OUString sTitle;
    1490         448 :             aValue >>= sTitle;
    1491             :             // assure that <SdrObject> instance exists.
    1492         448 :             GetOrCreateSdrObject(rFlyFmt);
    1493         448 :             rFlyFmt.GetDoc()->SetFlyFrmTitle(rFlyFmt, sTitle);
    1494             :         }
    1495             :         // New attribute Description
    1496       27132 :         else if( FN_UNO_DESCRIPTION == pEntry->nWID )
    1497             :         {
    1498         460 :             SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    1499         460 :             OUString sDescription;
    1500         460 :             aValue >>= sDescription;
    1501             :             // assure that <SdrObject> instance exists.
    1502         460 :             GetOrCreateSdrObject(rFlyFmt);
    1503         460 :             rFlyFmt.GetDoc()->SetFlyFrmDescription(rFlyFmt, sDescription);
    1504             :         }
    1505       26672 :         else if(FN_UNO_FRAME_STYLE_NAME == pEntry->nWID)
    1506             :         {
    1507          36 :             SwFrmFmt *pFrmFmt = lcl_GetFrmFmt( aValue, pFmt->GetDoc() );
    1508          36 :             if( pFrmFmt )
    1509             :             {
    1510          36 :                 UnoActionContext aAction(pFmt->GetDoc());
    1511             : 
    1512          36 :                 SfxItemSet* pSet = 0;
    1513             :                 // #i31771#, #i25798# - No adjustment of
    1514             :                 // anchor ( no call of method <sw_ChkAndSetNewAnchor(..)> ),
    1515             :                 // if document is currently in reading mode.
    1516          36 :                 if ( !pFmt->GetDoc()->IsInReading() )
    1517             :                 {
    1518             :                     // see SwFEShell::SetFrmFmt( SwFrmFmt *pNewFmt, bool bKeepOrient, Point* pDocPos )
    1519          16 :                     SwFlyFrm *pFly = 0;
    1520             :                     {
    1521          16 :                         const :: SwFrmFmt* pFmtXX = pFmt;
    1522          16 :                         if (PTR_CAST(SwFlyFrmFmt, pFmtXX))
    1523          16 :                             pFly = ((SwFlyFrmFmt*)pFmtXX)->GetFrm();
    1524             :                     }
    1525          16 :                     if ( pFly )
    1526             :                     {
    1527             :                         const :: SfxPoolItem* pItem;
    1528          16 :                         if( SfxItemState::SET == pFrmFmt->GetItemState( RES_ANCHOR, false, &pItem ))
    1529             :                         {
    1530           6 :                             pSet = new SfxItemSet( pDoc->GetAttrPool(), aFrmFmtSetRange );
    1531           6 :                             pSet->Put( *pItem );
    1532          12 :                             if ( pFmt->GetDoc()->GetEditShell() != NULL
    1533           6 :                                  && !sw_ChkAndSetNewAnchor( *(pFmt->GetDoc()->GetEditShell()), *pFly, *pSet ) )
    1534           2 :                                 delete pSet, pSet = 0;
    1535             :                         }
    1536             :                     }
    1537             :                 }
    1538             : 
    1539          36 :                 pFmt->GetDoc()->SetFrmFmtToFly( *pFmt, *pFrmFmt, pSet, false );
    1540          36 :                 delete pSet;
    1541             :             }
    1542             :             else
    1543           0 :                 throw lang::IllegalArgumentException();
    1544             :         }
    1545       53262 :         else if( FN_UNO_GRAPHIC_U_R_L == pEntry->nWID ||
    1546       26626 :                 FN_UNO_GRAPHIC_FILTER == pEntry->nWID)
    1547             :         {
    1548          12 :             OUString sGrfName;
    1549          24 :             OUString sFltName;
    1550          12 :             GraphicObject *pGrfObj = 0;
    1551          12 :             pFmt->GetDoc()->GetGrfNms( *(SwFlyFrmFmt*)pFmt, &sGrfName, &sFltName );
    1552          24 :             OUString sTmp;
    1553          12 :             aValue >>= sTmp;
    1554          24 :             UnoActionContext aAction(pFmt->GetDoc());
    1555          12 :             if(FN_UNO_GRAPHIC_U_R_L == pEntry->nWID)
    1556             :             {
    1557          10 :                 if( sTmp.startsWith(sPackageProtocol) )
    1558             :                 {
    1559           0 :                     pGrfObj = new GraphicObject;
    1560           0 :                     pGrfObj->SetUserData( sTmp );
    1561           0 :                     pGrfObj->SetSwapState();
    1562           0 :                     sGrfName = "";
    1563             :                 }
    1564          10 :                 else if( sTmp.startsWith(sGraphicObjectProtocol) )
    1565             :                 {
    1566             :                     const OString sId(OUStringToOString(
    1567             :                         sTmp.copy(sizeof(sGraphicObjectProtocol)-1),
    1568           0 :                         RTL_TEXTENCODING_ASCII_US));
    1569           0 :                     pGrfObj = new GraphicObject( sId );
    1570           0 :                     sGrfName = "";
    1571             :                 }
    1572             :                 else
    1573             :                 {
    1574          10 :                     sGrfName = sTmp;
    1575             :                 }
    1576             :             }
    1577             :             else
    1578             :             {
    1579           2 :                 sFltName = sTmp;
    1580             :             }
    1581             : 
    1582          12 :             const :: SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    1583          12 :             if(pIdx)
    1584             :             {
    1585          12 :                 SwNodeIndex aIdx(*pIdx, 1);
    1586          12 :                 SwGrfNode* pGrfNode = aIdx.GetNode().GetGrfNode();
    1587          12 :                 if(!pGrfNode)
    1588             :                 {
    1589           0 :                     delete pGrfObj;
    1590           0 :                     throw uno::RuntimeException();
    1591             :                 }
    1592          24 :                 SwPaM aGrfPaM(*pGrfNode);
    1593          12 :                 pFmt->GetDoc()->getIDocumentContentOperations().ReRead( aGrfPaM, sGrfName, sFltName, 0,
    1594          24 :                                         pGrfObj );
    1595             :             }
    1596          24 :             delete pGrfObj;
    1597             :         }
    1598       26624 :         else if( FN_UNO_GRAPHIC == pEntry->nWID )
    1599             :         {
    1600           0 :             uno::Reference< graphic::XGraphic > xGraphic;
    1601           0 :             aValue >>= xGraphic;
    1602           0 :             if(xGraphic.is())
    1603             :             {
    1604           0 :                 const :: SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    1605           0 :                 if(pIdx)
    1606             :                 {
    1607           0 :                     SwNodeIndex aIdx(*pIdx, 1);
    1608           0 :                     SwGrfNode* pGrfNode = aIdx.GetNode().GetGrfNode();
    1609           0 :                     if(!pGrfNode)
    1610             :                     {
    1611           0 :                         throw uno::RuntimeException();
    1612             :                     }
    1613           0 :                     SwPaM aGrfPaM(*pGrfNode);
    1614           0 :                     Graphic aGraphic( xGraphic );
    1615           0 :                     pFmt->GetDoc()->getIDocumentContentOperations().ReRead( aGrfPaM, OUString(), OUString(), &aGraphic, 0 );
    1616             :                 }
    1617           0 :             }
    1618             :         }
    1619       26624 :         else if( FN_UNO_REPLACEMENT_GRAPHIC_URL == pEntry->nWID || FN_UNO_REPLACEMENT_GRAPHIC == pEntry->nWID )
    1620             :         {
    1621         124 :             bool bURL = FN_UNO_REPLACEMENT_GRAPHIC_URL == pEntry->nWID;
    1622         124 :             bool bApply = false;
    1623         124 :             Graphic aGraphic;
    1624         124 :             if( bURL )
    1625             :             {
    1626          20 :                 GraphicObject *pGrfObj = 0;
    1627          20 :                 OUString aGrfUrl;
    1628          20 :                 aValue >>= aGrfUrl;
    1629             : 
    1630             :                 // the package URL based graphics are handled in different way currently
    1631             :                 // TODO/LATER: actually this is the correct place to handle them
    1632          40 :                 OUString aGraphicProtocol( sGraphicObjectProtocol );
    1633          20 :                 if( aGrfUrl.startsWith( aGraphicProtocol ) )
    1634             :                 {
    1635             :                     OString sId(OUStringToOString(
    1636             :                         aGrfUrl.copy(sizeof(sGraphicObjectProtocol)-1),
    1637           0 :                         RTL_TEXTENCODING_ASCII_US));
    1638           0 :                     pGrfObj = new GraphicObject( sId );
    1639           0 :                     aGraphic = pGrfObj->GetGraphic();
    1640           0 :                     bApply = true;
    1641          20 :                 }
    1642             :             }
    1643             :             else
    1644             :             {
    1645         104 :                 uno::Reference< graphic::XGraphic > xGraphic;
    1646         104 :                 aValue >>= xGraphic;
    1647         104 :                 if( xGraphic.is() )
    1648             :                 {
    1649         104 :                     aGraphic = Graphic( xGraphic );
    1650         104 :                     bApply = true;
    1651         104 :                 }
    1652             :             }
    1653             : 
    1654         124 :             if ( bApply )
    1655             :             {
    1656         104 :                 const :: SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    1657         104 :                 if ( pCnt->GetCntntIdx() && pDoc->GetNodes()[ pCnt->GetCntntIdx()->GetIndex() + 1 ] )
    1658             :                 {
    1659         104 :                     SwOLENode* pOleNode =  pDoc->GetNodes()[ pCnt->GetCntntIdx()->GetIndex() + 1 ]->GetOLENode();
    1660             : 
    1661         104 :                     if ( pOleNode )
    1662             :                     {
    1663         104 :                         svt::EmbeddedObjectRef &rObj = pOleNode->GetOLEObj().GetObject();
    1664             : 
    1665         104 :                         OUString aMediaType;
    1666         104 :                         rObj.SetGraphic( aGraphic, aMediaType );
    1667             :                     }
    1668             :                 }
    1669         124 :             }
    1670             :         }
    1671       26500 :         else if((bNextFrame = (rPropertyName == UNO_NAME_CHAIN_NEXT_NAME))
    1672       26500 :             || rPropertyName == UNO_NAME_CHAIN_PREV_NAME)
    1673             :         {
    1674          26 :             OUString sChainName;
    1675          26 :             aValue >>= sChainName;
    1676          26 :             if (sChainName.isEmpty())
    1677             :             {
    1678           0 :                 if(bNextFrame)
    1679           0 :                     pDoc->Unchain(*pFmt);
    1680             :                 else
    1681             :                 {
    1682           0 :                     SwFmtChain aChain( pFmt->GetChain() );
    1683           0 :                     SwFrmFmt *pPrev = aChain.GetPrev();
    1684           0 :                     if(pPrev)
    1685           0 :                         pDoc->Unchain(*pPrev);
    1686             :                 }
    1687             :             }
    1688             :             else
    1689             :             {
    1690          26 :                 sal_uInt16 nCount = pDoc->GetFlyCount(FLYCNTTYPE_FRM);
    1691             : 
    1692          26 :                 SwFrmFmt* pChain = 0;
    1693          38 :                 for( sal_uInt16 i = 0; i < nCount; i++)
    1694             :                 {
    1695          38 :                     SwFrmFmt* pFmt2 = pDoc->GetFlyNum(i, FLYCNTTYPE_FRM);
    1696          38 :                     if(sChainName == pFmt2->GetName() )
    1697             :                     {
    1698          26 :                         pChain = pFmt2;
    1699          26 :                         break;
    1700             :                     }
    1701             :                 }
    1702          26 :                 if(pChain)
    1703             :                 {
    1704          26 :                     SwFrmFmt* pSource = bNextFrame ? pFmt : pChain;
    1705          26 :                     SwFrmFmt* pDest = bNextFrame ? pChain: pFmt;
    1706          26 :                     pDoc->Chain(*pSource, *pDest);
    1707             :                 }
    1708          26 :             }
    1709             :         }
    1710       26474 :         else if(FN_UNO_Z_ORDER == pEntry->nWID)
    1711             :         {
    1712         406 :             sal_Int32 nZOrder = - 1;
    1713         406 :             aValue >>= nZOrder;
    1714             : 
    1715             :             // Don't set an explicit ZOrder on TextBoxes.
    1716         406 :             std::set<const SwFrmFmt*> aTextBoxes = SwTextBoxHelper::findTextBoxes(pDoc);
    1717         406 :             if( nZOrder >= 0 && aTextBoxes.find(pFmt) == aTextBoxes.end())
    1718             :             {
    1719             :                 SdrObject* pObject =
    1720         388 :                     GetOrCreateSdrObject( (SwFlyFrmFmt&)*pFmt );
    1721         388 :                 SwDrawModel *pDrawModel = pDoc->getIDocumentDrawModelAccess().GetDrawModel();
    1722         388 :                 pDrawModel->GetPage(0)->
    1723         388 :                             SetObjectOrdNum(pObject->GetOrdNum(), nZOrder);
    1724         406 :             }
    1725             :         }
    1726       26068 :         else if(RES_ANCHOR == pEntry->nWID && MID_ANCHOR_ANCHORFRAME == nMemberId)
    1727             :         {
    1728           0 :             bool bDone = false;
    1729           0 :             uno::Reference<text::XTextFrame> xFrame;
    1730           0 :             if(aValue >>= xFrame)
    1731             :             {
    1732           0 :                 uno::Reference<lang::XUnoTunnel> xTunnel(xFrame, uno::UNO_QUERY);
    1733           0 :                 SwXFrame* pFrame = xTunnel.is() ?
    1734           0 :                         reinterpret_cast< SwXFrame * >( sal::static_int_cast< sal_IntPtr >( xTunnel->getSomething(SwXFrame::getUnoTunnelId()) ))
    1735           0 :                         : 0;
    1736           0 :                 if(pFrame && this != pFrame && pFrame->GetFrmFmt() && pFrame->GetFrmFmt()->GetDoc() == pDoc)
    1737             :                 {
    1738           0 :                     SfxItemSet aSet( pDoc->GetAttrPool(),
    1739           0 :                                 RES_FRMATR_BEGIN, RES_FRMATR_END - 1 );
    1740           0 :                     aSet.SetParent(&pFmt->GetAttrSet());
    1741           0 :                     SwFmtAnchor aAnchor = (const :: SwFmtAnchor&)aSet.Get(pEntry->nWID);
    1742             : 
    1743           0 :                     SwPosition aPos(*pFrame->GetFrmFmt()->GetCntnt().GetCntntIdx());
    1744           0 :                     aAnchor.SetAnchor(&aPos);
    1745           0 :                     aAnchor.SetType(FLY_AT_FLY);
    1746           0 :                     aSet.Put(aAnchor);
    1747           0 :                     pDoc->SetFlyFrmAttr( *pFmt, aSet );
    1748           0 :                     bDone = true;
    1749           0 :                 }
    1750             :             }
    1751           0 :             if(!bDone)
    1752           0 :                 throw lang::IllegalArgumentException();
    1753             :         }
    1754             :         else
    1755             :         {   //UUUU
    1756             :             // standard UNO API write attributes
    1757             :             // adapt former attr from SvxBrushItem::PutValue to new items XATTR_FILL_FIRST, XATTR_FILL_LAST
    1758       26068 :             SfxItemSet aSet( pDoc->GetAttrPool(),
    1759             :                 RES_FRMATR_BEGIN, RES_FRMATR_END - 1,
    1760             :                 RES_UNKNOWNATR_CONTAINER, RES_UNKNOWNATR_CONTAINER,
    1761             : 
    1762             :                 //UUUU FillAttribute support
    1763             :                 XATTR_FILL_FIRST, XATTR_FILL_LAST,
    1764             : 
    1765       26068 :                 0L);
    1766       26068 :             bool bDone(false);
    1767             : 
    1768       26068 :             aSet.SetParent(&pFmt->GetAttrSet());
    1769             : 
    1770       26068 :             if(RES_BACKGROUND == pEntry->nWID)
    1771             :             {
    1772          30 :                 const SwAttrSet& rSet = pFmt->GetAttrSet();
    1773          30 :                 const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(rSet, RES_BACKGROUND));
    1774          60 :                 SvxBrushItem aChangedBrushItem(aOriginalBrushItem);
    1775             : 
    1776          30 :                 aChangedBrushItem.PutValue(aValue, nMemberId);
    1777             : 
    1778          30 :                 if(!(aChangedBrushItem == aOriginalBrushItem))
    1779             :                 {
    1780          30 :                     setSvxBrushItemAsFillAttributesToTargetSet(aChangedBrushItem, aSet);
    1781          30 :                     pFmt->GetDoc()->SetFlyFrmAttr( *pFmt, aSet );
    1782             :                 }
    1783             : 
    1784          60 :                 bDone = true;
    1785             :             }
    1786       26038 :             else if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
    1787             :             {
    1788             :                 //UUUU
    1789             :                 drawing::BitmapMode eMode;
    1790             : 
    1791           0 :                 if(!(aValue >>= eMode))
    1792             :                 {
    1793           0 :                     sal_Int32 nMode = 0;
    1794             : 
    1795           0 :                     if(!(aValue >>= nMode))
    1796             :                     {
    1797           0 :                         throw lang::IllegalArgumentException();
    1798             :                     }
    1799             : 
    1800           0 :                     eMode = (drawing::BitmapMode)nMode;
    1801             :                 }
    1802             : 
    1803           0 :                 aSet.Put(XFillBmpStretchItem(drawing::BitmapMode_STRETCH == eMode));
    1804           0 :                 aSet.Put(XFillBmpTileItem(drawing::BitmapMode_REPEAT == eMode));
    1805           0 :                 pFmt->GetDoc()->SetFlyFrmAttr( *pFmt, aSet );
    1806           0 :                 bDone = true;
    1807             :             }
    1808             : 
    1809       26068 :             switch(nMemberId)
    1810             :             {
    1811             :                 case MID_NAME:
    1812             :                 {
    1813             :                     //UUUU when named items get set, replace these with the NameOrIndex items
    1814             :                     // which exist already in the pool
    1815           0 :                     switch(pEntry->nWID)
    1816             :                     {
    1817             :                         case XATTR_FILLGRADIENT:
    1818             :                         case XATTR_FILLHATCH:
    1819             :                         case XATTR_FILLBITMAP:
    1820             :                         case XATTR_FILLFLOATTRANSPARENCE:
    1821             :                         {
    1822           0 :                             OUString aTempName;
    1823             : 
    1824           0 :                             if(!(aValue >>= aTempName ))
    1825             :                             {
    1826           0 :                                 throw lang::IllegalArgumentException();
    1827             :                             }
    1828             : 
    1829           0 :                             bDone = SvxShape::SetFillAttribute(pEntry->nWID, aTempName, aSet);
    1830           0 :                             break;
    1831             :                         }
    1832             :                         default:
    1833             :                         {
    1834           0 :                             break;
    1835             :                         }
    1836             :                     }
    1837           0 :                     break;
    1838             :                 }
    1839             :                 case MID_GRAFURL:
    1840             :                 {
    1841             :                     //UUUU Bitmap also has the MID_GRAFURL mode where a Bitmap URL is used
    1842           0 :                     switch(pEntry->nWID)
    1843             :                     {
    1844             :                         case XATTR_FILLBITMAP:
    1845             :                         {
    1846           0 :                             const Graphic aNullGraphic;
    1847           0 :                             XFillBitmapItem aXFillBitmapItem(aSet.GetPool(), aNullGraphic);
    1848             : 
    1849           0 :                             aXFillBitmapItem.PutValue(aValue, nMemberId);
    1850           0 :                             aSet.Put(aXFillBitmapItem);
    1851           0 :                             bDone = true;
    1852           0 :                             break;
    1853             :                         }
    1854             :                         default:
    1855             :                         {
    1856           0 :                             break;
    1857             :                         }
    1858             :                     }
    1859           0 :                     break;
    1860             :                 }
    1861             :                 default:
    1862             :                 {
    1863       26068 :                     break;
    1864             :                 }
    1865             :             }
    1866             : 
    1867       26068 :             if(!bDone)
    1868             :             {
    1869       26038 :                 m_pPropSet->setPropertyValue(*pEntry, aValue, aSet);
    1870             :             }
    1871             : 
    1872       26044 :             if(RES_ANCHOR == pEntry->nWID && MID_ANCHOR_ANCHORTYPE == nMemberId)
    1873             :             {
    1874          62 :                 SwFmtAnchor aAnchor = (const :: SwFmtAnchor&)aSet.Get(pEntry->nWID);
    1875          62 :                 if(aAnchor.GetAnchorId() == FLY_AT_FLY)
    1876             :                 {
    1877           0 :                     const :: SwPosition* pPosition = aAnchor.GetCntntAnchor();
    1878           0 :                     SwFrmFmt* pFlyFmt = pPosition ? pPosition->nNode.GetNode().GetFlyFmt() : 0;
    1879           0 :                     if(!pFlyFmt || pFlyFmt->Which() == RES_DRAWFRMFMT)
    1880             :                     {
    1881           0 :                         lang::IllegalArgumentException aExcept;
    1882           0 :                         aExcept.Message = "Anchor to frame: no frame found";
    1883           0 :                         throw aExcept;
    1884             :                     }
    1885             :                     else
    1886             :                     {
    1887           0 :                         SwPosition aPos = *pPosition;
    1888           0 :                         aPos.nNode = *pFlyFmt->GetCntnt().GetCntntIdx();
    1889           0 :                         aAnchor.SetAnchor(&aPos);
    1890           0 :                         aSet.Put(aAnchor);
    1891             :                     }
    1892             :                 }
    1893         116 :                 else if ((aAnchor.GetAnchorId() != FLY_AT_PAGE) &&
    1894          54 :                          !aAnchor.GetCntntAnchor())
    1895             :                 {
    1896           2 :                     SwNode& rNode = pDoc->GetNodes().GetEndOfContent();
    1897           2 :                     SwPaM aPam(rNode);
    1898           2 :                     aPam.Move( fnMoveBackward, fnGoDoc );
    1899           2 :                     aAnchor.SetAnchor( aPam.Start() );
    1900           2 :                     aSet.Put(aAnchor);
    1901             :                 }
    1902             : 
    1903             :                 // #i31771#, #i25798# - No adjustment of
    1904             :                 // anchor ( no call of method <sw_ChkAndSetNewAnchor(..)> ),
    1905             :                 // if document is currently in reading mode.
    1906          62 :                 if ( !pFmt->GetDoc()->IsInReading() )
    1907             :                 {
    1908             :                     // see SwFEShell::SetFlyFrmAttr( SfxItemSet& rSet )
    1909          18 :                     SwFlyFrm *pFly = 0;
    1910          18 :                     if (PTR_CAST(SwFlyFrmFmt, pFmt))
    1911          18 :                         pFly = ((SwFlyFrmFmt*)pFmt)->GetFrm();
    1912          18 :                     if (pFly)
    1913             :                     {
    1914             :                         const :: SfxPoolItem* pItem;
    1915          18 :                         if( SfxItemState::SET == aSet.GetItemState( RES_ANCHOR, false, &pItem ))
    1916             :                         {
    1917          18 :                             aSet.Put( *pItem );
    1918          18 :                             if ( pFmt->GetDoc()->GetEditShell() != NULL )
    1919             :                             {
    1920          18 :                                 sw_ChkAndSetNewAnchor( *(pFmt->GetDoc()->GetEditShell()), *pFly, aSet );
    1921             :                             }
    1922             :                         }
    1923             :                     }
    1924             :                 }
    1925             : 
    1926          62 :                 pFmt->GetDoc()->SetFlyFrmAttr( *pFmt, aSet );
    1927             :             }
    1928       25982 :             else if(FN_UNO_CLSID == pEntry->nWID || FN_UNO_STREAM_NAME == pEntry->nWID || FN_EMBEDDED_OBJECT == pEntry->nWID)
    1929             :             {
    1930           0 :                 throw lang::IllegalArgumentException();
    1931             :             }
    1932             :             else
    1933             :             {
    1934       25982 :                 pFmt->SetFmtAttr(aSet);
    1935       26068 :             }
    1936             :         }
    1937             :     }
    1938       33724 :     else if(IsDescriptor())
    1939             :     {
    1940       33724 :         pProps->SetProperty(pEntry->nWID, nMemberId, aValue);
    1941       33724 :         if( FN_UNO_FRAME_STYLE_NAME == pEntry->nWID )
    1942             :         {
    1943         446 :             OUString sStyleName;
    1944         446 :             aValue >>= sStyleName;
    1945             :             try
    1946             :             {
    1947         446 :                 uno::Any aAny = mxStyleFamily->getByName ( sStyleName );
    1948         446 :                 aAny >>= mxStyleData;
    1949             :             }
    1950           0 :             catch ( container::NoSuchElementException const & )
    1951             :             {
    1952             :             }
    1953           0 :             catch ( lang::WrappedTargetException const  & )
    1954             :             {
    1955             :             }
    1956           0 :             catch ( uno::RuntimeException const & )
    1957             :             {
    1958         446 :             }
    1959             :         }
    1960             :     }
    1961             :     else
    1962       61544 :         throw uno::RuntimeException();
    1963       61442 : }
    1964             : 
    1965        9634 : uno::Any SwXFrame::getPropertyValue(const OUString& rPropertyName)
    1966             :     throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    1967             : {
    1968        9634 :     SolarMutexGuard aGuard;
    1969        9634 :     uno::Any aAny;
    1970        9634 :     SwFrmFmt* pFmt = GetFrmFmt();
    1971        9634 :     const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(rPropertyName);
    1972        9634 :     if (!pEntry)
    1973           6 :         throw beans::UnknownPropertyException( "Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    1974             : 
    1975             :     //UUUU
    1976        9628 :     const sal_uInt8 nMemberId(pEntry->nMemberId & (~SFX_METRIC_ITEM));
    1977             : 
    1978        9628 :     if(FN_UNO_ANCHOR_TYPES == pEntry->nWID)
    1979             :     {
    1980          12 :         uno::Sequence<text::TextContentAnchorType> aTypes(5);
    1981          12 :          text::TextContentAnchorType* pArray = aTypes.getArray();
    1982          12 :         pArray[0] = text::TextContentAnchorType_AT_PARAGRAPH;
    1983          12 :         pArray[1] = text::TextContentAnchorType_AS_CHARACTER;
    1984          12 :         pArray[2] = text::TextContentAnchorType_AT_PAGE;
    1985          12 :         pArray[3] = text::TextContentAnchorType_AT_FRAME;
    1986          12 :         pArray[4] = text::TextContentAnchorType_AT_CHARACTER;
    1987          12 :         aAny.setValue(&aTypes, ::getCppuType(static_cast<uno::Sequence<text::TextContentAnchorType>*>(0)));
    1988             :     }
    1989        9616 :     else if(pFmt)
    1990             :     {
    1991       21996 :         if( ((eType == FLYCNTTYPE_GRF) || (eType == FLYCNTTYPE_OLE)) &&
    1992       10132 :                 pEntry &&
    1993        4364 :                 (isGRFATR(pEntry->nWID) ||
    1994        4108 :                         pEntry->nWID == FN_PARAM_COUNTOUR_PP ||
    1995        4076 :                         pEntry->nWID == FN_UNO_IS_AUTOMATIC_CONTOUR ||
    1996        2038 :                         pEntry->nWID == FN_UNO_IS_PIXEL_CONTOUR ))
    1997             :         {
    1998         256 :             const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    1999         256 :             if(pIdx)
    2000             :             {
    2001         256 :                 SwNodeIndex aIdx(*pIdx, 1);
    2002         256 :                 SwNoTxtNode* pNoTxt = aIdx.GetNode().GetNoTxtNode();
    2003         256 :                 if(pEntry->nWID == FN_PARAM_COUNTOUR_PP)
    2004             :                 {
    2005          32 :                     tools::PolyPolygon aContour;
    2006          32 :                     if( pNoTxt->GetContourAPI( aContour ) )
    2007             :                     {
    2008          10 :                         drawing::PointSequenceSequence aPtSeq(aContour.Count());
    2009          10 :                         drawing::PointSequence* pPSeq = aPtSeq.getArray();
    2010          20 :                         for(sal_uInt16 i = 0; i < aContour.Count(); i++)
    2011             :                         {
    2012          10 :                             const Polygon& rPoly = aContour.GetObject(i);
    2013          10 :                             pPSeq[i].realloc(rPoly.GetSize());
    2014          10 :                             awt::Point* pPoints = pPSeq[i].getArray();
    2015         108 :                             for(sal_uInt16 j = 0; j < rPoly.GetSize(); j++)
    2016             :                             {
    2017          98 :                                 const Point& rPoint = rPoly.GetPoint(j);
    2018          98 :                                 pPoints[j].X = rPoint.X();
    2019          98 :                                 pPoints[j].Y = rPoint.Y();
    2020             :                             }
    2021             :                         }
    2022          10 :                         aAny <<= aPtSeq;
    2023          32 :                     }
    2024             :                 }
    2025         224 :                 else if(pEntry->nWID == FN_UNO_IS_AUTOMATIC_CONTOUR )
    2026             :                 {
    2027           0 :                     sal_Bool bValue = pNoTxt->HasAutomaticContour();
    2028           0 :                     aAny.setValue( &bValue, ::getBooleanCppuType() );
    2029             :                 }
    2030         224 :                 else if(pEntry->nWID == FN_UNO_IS_PIXEL_CONTOUR )
    2031             :                 {
    2032           0 :                     sal_Bool bValue = pNoTxt->IsPixelContour();
    2033           0 :                     aAny.setValue( &bValue, ::getBooleanCppuType() );
    2034             :                 }
    2035             :                 else
    2036             :                 {
    2037         224 :                     SfxItemSet aSet(pNoTxt->GetSwAttrSet());
    2038         224 :                     m_pPropSet->getPropertyValue(*pEntry, aSet, aAny);
    2039         256 :                 }
    2040             :             }
    2041             :         }
    2042        7326 :         else if( FN_UNO_GRAPHIC_U_R_L == pEntry->nWID)
    2043             :         {
    2044         112 :             OUString sGrfName;
    2045         112 :             const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2046         112 :             if(pIdx)
    2047             :             {
    2048         112 :                 SwNodeIndex aIdx(*pIdx, 1);
    2049         112 :                 SwGrfNode* pGrfNode = aIdx.GetNode().GetGrfNode();
    2050         112 :                 if(!pGrfNode)
    2051           0 :                     throw uno::RuntimeException();
    2052         112 :                 if( pGrfNode->IsGrfLink() )
    2053             :                 {
    2054           4 :                     pFmt->GetDoc()->GetGrfNms( *(SwFlyFrmFmt*)pFmt, &sGrfName, 0 );
    2055             :                 }
    2056             :                 else
    2057             :                 {
    2058             :                     OUString sId(OStringToOUString(
    2059         108 :                         pGrfNode->GetGrfObj().GetUniqueID(),
    2060         108 :                         RTL_TEXTENCODING_ASCII_US));
    2061         108 :                     sGrfName = sGraphicObjectProtocol + sId;
    2062         112 :                 }
    2063             :             }
    2064         112 :             aAny <<= sGrfName;
    2065             :         }
    2066        7214 :         else if( FN_UNO_REPLACEMENT_GRAPHIC_U_R_L == pEntry->nWID)
    2067             :         {
    2068           2 :             OUString sGrfName;
    2069           2 :             const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2070             : 
    2071           2 :             if(pIdx)
    2072             :             {
    2073           2 :                 SwNodeIndex aIdx(*pIdx, 1);
    2074           2 :                 SwGrfNode* pGrfNode = aIdx.GetNode().GetGrfNode();
    2075           2 :                 if(!pGrfNode)
    2076           0 :                     throw uno::RuntimeException();
    2077             : 
    2078           2 :                 const GraphicObject* pGraphicObject = pGrfNode->GetReplacementGrfObj();
    2079             : 
    2080           2 :                 if(pGraphicObject)
    2081             :                 {
    2082           0 :                     sGrfName = sGraphicObjectProtocol
    2083           0 :                              + OStringToOUString( pGraphicObject->GetUniqueID(), RTL_TEXTENCODING_ASCII_US );
    2084           2 :                 }
    2085             :             }
    2086             : 
    2087           2 :             aAny <<= sGrfName;
    2088             :         }
    2089        7212 :         else if( FN_UNO_GRAPHIC_FILTER == pEntry->nWID )
    2090             :         {
    2091           6 :             OUString sFltName;
    2092           6 :             pFmt->GetDoc()->GetGrfNms( *(SwFlyFrmFmt*)pFmt, 0, &sFltName );
    2093           6 :                 aAny <<= sFltName;
    2094             :         }
    2095        7206 :         else if( FN_UNO_GRAPHIC == pEntry->nWID )
    2096             :         {
    2097          12 :             const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2098          12 :             if(pIdx)
    2099             :             {
    2100          12 :                 SwNodeIndex aIdx(*pIdx, 1);
    2101          12 :                 SwGrfNode* pGrfNode = aIdx.GetNode().GetGrfNode();
    2102          12 :                 if(!pGrfNode)
    2103           0 :                     throw uno::RuntimeException();
    2104          12 :                 aAny <<= pGrfNode->GetGrf().GetXGraphic();
    2105             :             }
    2106             :         }
    2107        7194 :         else if(FN_UNO_FRAME_STYLE_NAME == pEntry->nWID)
    2108             :         {
    2109         128 :             aAny <<= OUString(SwStyleNameMapper::GetProgName(pFmt->DerivedFrom()->GetName(), nsSwGetPoolIdFromName::GET_POOLID_FRMFMT ) );
    2110             :         }
    2111             :         // #i73249#
    2112        7066 :         else if( FN_UNO_TITLE == pEntry->nWID )
    2113             :         {
    2114          58 :             SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    2115             :             // assure that <SdrObject> instance exists.
    2116          58 :             GetOrCreateSdrObject(rFlyFmt);
    2117          58 :             aAny <<= OUString(rFlyFmt.GetObjTitle());
    2118             :         }
    2119             :         // New attribute Description
    2120        7008 :         else if( FN_UNO_DESCRIPTION == pEntry->nWID )
    2121             :         {
    2122          66 :             SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    2123             :             // assure that <SdrObject> instance exists.
    2124          66 :             GetOrCreateSdrObject(rFlyFmt);
    2125          66 :             aAny <<= OUString(rFlyFmt.GetObjDescription());
    2126             :         }
    2127        7304 :         else if(eType == FLYCNTTYPE_GRF &&
    2128         362 :                 (rPropertyName == UNO_NAME_ACTUAL_SIZE))
    2129             :         {
    2130           4 :             const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2131           4 :             if(pIdx)
    2132             :             {
    2133           4 :                 SwNodeIndex aIdx(*pIdx, 1);
    2134             :                 // --> OD #i85105#
    2135           4 :                 Size aActSize;
    2136             :                 {
    2137           4 :                     SwGrfNode* pGrfNode = dynamic_cast<SwGrfNode*>(aIdx.GetNode().GetNoTxtNode());
    2138           4 :                     if ( pGrfNode )
    2139             :                     {
    2140           4 :                         aActSize = pGrfNode->GetTwipSize();
    2141           8 :                         if ( aActSize.Width() == 0 && aActSize.Height() == 0 &&
    2142           4 :                              pGrfNode->IsLinkedFile() )
    2143             :                         {
    2144           4 :                             pGrfNode->SwapIn( true );
    2145           4 :                             aActSize = pGrfNode->GetTwipSize();
    2146             :                         }
    2147             :                     }
    2148             :                 }
    2149             :                 // <--
    2150           4 :                 awt::Size aTmp;
    2151           4 :                 aTmp.Width = convertTwipToMm100(aActSize.Width());
    2152           4 :                 aTmp.Height = convertTwipToMm100(aActSize.Height());
    2153           4 :                 aAny.setValue(&aTmp, ::cppu::UnoType<awt::Size>::get());
    2154             :             }
    2155             :         }
    2156        6938 :         else if(FN_PARAM_LINK_DISPLAY_NAME == pEntry->nWID)
    2157             :         {
    2158           0 :             aAny <<= pFmt->GetName();
    2159             :         }
    2160        6938 :         else if(FN_UNO_Z_ORDER == pEntry->nWID)
    2161             :         {
    2162         210 :             const SdrObject* pObj = pFmt->FindRealSdrObject();
    2163         210 :             if( pObj == NULL )
    2164         142 :                 pObj = pFmt->FindSdrObject();
    2165         210 :             if( pObj )
    2166             :             {
    2167         210 :                 aAny <<= (sal_Int32)pObj->GetOrdNum();
    2168             :             }
    2169             :         }
    2170       12816 :         else if(FN_UNO_CLSID == pEntry->nWID || FN_UNO_MODEL == pEntry->nWID||
    2171       18250 :                 FN_UNO_COMPONENT == pEntry->nWID ||FN_UNO_STREAM_NAME == pEntry->nWID||
    2172        6078 :                 FN_EMBEDDED_OBJECT == pEntry->nWID)
    2173             :         {
    2174         652 :             SwDoc* pDoc = pFmt->GetDoc();
    2175         652 :             const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    2176             :             OSL_ENSURE( pCnt->GetCntntIdx() &&
    2177             :                            pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    2178             :                                             GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    2179             : 
    2180         652 :             SwOLENode* pOleNode =  pDoc->GetNodes()[ pCnt->GetCntntIdx()
    2181        1304 :                                             ->GetIndex() + 1 ]->GetOLENode();
    2182         652 :             uno::Reference < embed::XEmbeddedObject > xIP = pOleNode->GetOLEObj().GetOleRef();
    2183        1304 :             OUString aHexCLSID;
    2184             :             {
    2185         652 :                 SvGlobalName aClassName( xIP->getClassID() );
    2186         652 :                 aHexCLSID = aClassName.GetHexName();
    2187         652 :                 if(FN_UNO_CLSID != pEntry->nWID)
    2188             :                 {
    2189         596 :                     if ( svt::EmbeddedObjectRef::TryRunningState( xIP ) )
    2190             :                     {
    2191         566 :                         uno::Reference < lang::XComponent > xComp( xIP->getComponent(), uno::UNO_QUERY );
    2192        1132 :                         uno::Reference < frame::XModel > xModel( xComp, uno::UNO_QUERY );
    2193         566 :                         if ( FN_EMBEDDED_OBJECT == pEntry->nWID )
    2194             :                         {
    2195             :                             // when exposing the EmbeddedObject, ensure it has a client site
    2196             :                             OSL_ENSURE( pDoc->GetDocShell(), "no doc shell => no client site" );
    2197           2 :                             if ( pDoc->GetDocShell() )
    2198           2 :                                 pDoc->GetDocShell()->GetIPClient( svt::EmbeddedObjectRef( xIP, embed::Aspects::MSOLE_CONTENT ) );
    2199           2 :                             aAny <<= xIP;
    2200             :                         }
    2201         564 :                         else if ( xModel.is() )
    2202         564 :                             aAny <<= xModel;
    2203           0 :                         else if ( FN_UNO_COMPONENT == pEntry->nWID )
    2204         566 :                             aAny <<= xComp;
    2205             :                     }
    2206         652 :                 }
    2207             :             }
    2208             : 
    2209         652 :             if(FN_UNO_CLSID == pEntry->nWID)
    2210          56 :                 aAny <<= aHexCLSID;
    2211         596 :             else if(FN_UNO_STREAM_NAME == pEntry->nWID)
    2212             :             {
    2213           6 :                 aAny <<= OUString(pOleNode->GetOLEObj().GetCurrentPersistName());
    2214             :             }
    2215         590 :             else if(FN_EMBEDDED_OBJECT == pEntry->nWID)
    2216             :             {
    2217           2 :                 aAny <<= pOleNode->GetOLEObj().GetOleRef();
    2218         652 :             }
    2219             :         }
    2220        6076 :         else if(WID_LAYOUT_SIZE == pEntry->nWID)
    2221             :         {
    2222             :             // format document completely in order to get correct value
    2223           0 :             pFmt->GetDoc()->GetEditShell()->CalcLayout();
    2224             : 
    2225           0 :             SwFrm* pTmpFrm = SwIterator<SwFrm,SwFmt>::FirstElement( *pFmt );
    2226           0 :             if ( pTmpFrm )
    2227             :             {
    2228             :                 OSL_ENSURE( pTmpFrm->IsValid(), "frame not valid" );
    2229           0 :                 const SwRect &rRect = pTmpFrm->Frm();
    2230             :                 Size aMM100Size = OutputDevice::LogicToLogic(
    2231             :                         Size( rRect.Width(), rRect.Height() ),
    2232           0 :                         MapMode( MAP_TWIP ), MapMode( MAP_100TH_MM ));
    2233           0 :                 aAny <<= awt::Size( aMM100Size.Width(), aMM100Size.Height() );
    2234             :             }
    2235             :         }
    2236             :         else
    2237             :         {   //UUUU
    2238             :             // standard UNO API read attributes
    2239             :             // adapt former attr from SvxBrushItem::PutValue to new items XATTR_FILL_FIRST, XATTR_FILL_LAST
    2240        6076 :             const SwAttrSet& rSet = pFmt->GetAttrSet();
    2241        6076 :             bool bDone(false);
    2242             : 
    2243        6076 :             if(RES_BACKGROUND == pEntry->nWID)
    2244             :             {
    2245             :                 //UUUU
    2246         212 :                 const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(rSet, RES_BACKGROUND));
    2247             : 
    2248         212 :                 if(!aOriginalBrushItem.QueryValue(aAny, nMemberId))
    2249             :                 {
    2250             :                     OSL_ENSURE(false, "Error getting attribute from RES_BACKGROUND (!)");
    2251             :                 }
    2252             : 
    2253         212 :                 bDone = true;
    2254             :             }
    2255        5864 :             else if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
    2256             :             {
    2257             :                 //UUUU
    2258           0 :                 const XFillBmpStretchItem* pStretchItem = dynamic_cast< const XFillBmpStretchItem* >(&rSet.Get(XATTR_FILLBMP_STRETCH));
    2259           0 :                 const XFillBmpTileItem* pTileItem = dynamic_cast< const XFillBmpTileItem* >(&rSet.Get(XATTR_FILLBMP_TILE));
    2260             : 
    2261           0 :                 if( pTileItem && pTileItem->GetValue() )
    2262             :                 {
    2263           0 :                     aAny <<= drawing::BitmapMode_REPEAT;
    2264             :                 }
    2265           0 :                 else if( pStretchItem && pStretchItem->GetValue() )
    2266             :                 {
    2267           0 :                     aAny <<= drawing::BitmapMode_STRETCH;
    2268             :                 }
    2269             :                 else
    2270             :                 {
    2271           0 :                     aAny <<= drawing::BitmapMode_NO_REPEAT;
    2272             :                 }
    2273             : 
    2274           0 :                 bDone = true;
    2275             :             }
    2276             : 
    2277        6076 :             if(!bDone)
    2278             :             {
    2279        5864 :                 m_pPropSet->getPropertyValue(*pEntry, rSet, aAny);
    2280             :             }
    2281             :         }
    2282             :     }
    2283        2034 :     else if(IsDescriptor())
    2284             :     {
    2285        2034 :         if ( ! m_pDoc )
    2286           0 :             throw uno::RuntimeException();
    2287        2034 :         if(WID_LAYOUT_SIZE != pEntry->nWID)  // there is no LayoutSize in a descriptor
    2288             :         {
    2289        2034 :             const uno::Any* pAny = 0;
    2290        2034 :             if( !pProps->GetProperty( pEntry->nWID, nMemberId, pAny ) )
    2291        1348 :                 aAny = mxStyleData->getPropertyValue( rPropertyName );
    2292         686 :             else if ( pAny )
    2293         686 :                 aAny = *pAny;
    2294             :         }
    2295             :     }
    2296             :     else
    2297           0 :         throw uno::RuntimeException();
    2298             : 
    2299             :     //UUUU
    2300        9628 :     if(pEntry && pEntry->aType == ::cppu::UnoType<sal_Int16>::get() && pEntry->aType != aAny.getValueType())
    2301             :     {
    2302             :         // since the sfx uint16 item now exports a sal_Int32, we may have to fix this here
    2303          60 :         sal_Int32 nValue = 0;
    2304          60 :         aAny >>= nValue;
    2305          60 :         aAny <<= (sal_Int16)nValue;
    2306             :     }
    2307             : 
    2308             :     //UUUU check for needed metric translation
    2309        9628 :     if(pEntry->nMemberId & SFX_METRIC_ITEM)
    2310             :     {
    2311          12 :         bool bDoIt(true);
    2312             : 
    2313          12 :         if(XATTR_FILLBMP_SIZEX == pEntry->nWID || XATTR_FILLBMP_SIZEY == pEntry->nWID)
    2314             :         {
    2315             :             // exception: If these ItemTypes are used, do not convert when these are negative
    2316             :             // since this means they are intended as percent values
    2317           0 :             sal_Int32 nValue = 0;
    2318             : 
    2319           0 :             if(aAny >>= nValue)
    2320             :             {
    2321           0 :                 bDoIt = nValue > 0;
    2322             :             }
    2323             :         }
    2324             : 
    2325          12 :         if(bDoIt)
    2326             :         {
    2327          12 :             const SwDoc* pDoc = (IsDescriptor() ? m_pDoc : GetFrmFmt()->GetDoc());
    2328          12 :             const SfxItemPool& rPool = pDoc->GetAttrPool();
    2329          12 :             const SfxMapUnit eMapUnit(rPool.GetMetric(pEntry->nWID));
    2330             : 
    2331          12 :             if(eMapUnit != SFX_MAPUNIT_100TH_MM)
    2332             :             {
    2333          12 :                 SvxUnoConvertToMM(eMapUnit, aAny);
    2334             :             }
    2335             :         }
    2336             :     }
    2337             : 
    2338        9634 :     return aAny;
    2339             : }
    2340             : 
    2341           0 : void SwXFrame::addPropertyChangeListener(const OUString& /*PropertyName*/,
    2342             :     const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/)
    2343             :     throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    2344             : {
    2345             :     OSL_FAIL("not implemented");
    2346           0 : }
    2347             : 
    2348           0 : void SwXFrame::removePropertyChangeListener(const OUString& /*PropertyName*/,
    2349             :     const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/)
    2350             :     throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    2351             : {
    2352             :     OSL_FAIL("not implemented");
    2353           0 : }
    2354             : 
    2355           0 : void SwXFrame::addVetoableChangeListener(const OUString& /*PropertyName*/,
    2356             :                                 const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/)
    2357             :     throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    2358             : {
    2359             :     OSL_FAIL("not implemented");
    2360           0 : }
    2361             : 
    2362           0 : void SwXFrame::removeVetoableChangeListener(
    2363             :     const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/)
    2364             :         throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    2365             : {
    2366             :     OSL_FAIL("not implemented");
    2367           0 : }
    2368             : 
    2369          60 : beans::PropertyState SwXFrame::getPropertyState( const OUString& rPropertyName )
    2370             :     throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
    2371             : {
    2372          60 :     SolarMutexGuard aGuard;
    2373         120 :     uno::Sequence< OUString > aPropertyNames(1);
    2374          60 :     OUString* pNames = aPropertyNames.getArray();
    2375          60 :     pNames[0] = rPropertyName;
    2376         120 :     uno::Sequence< beans::PropertyState > aStates = getPropertyStates(aPropertyNames);
    2377         120 :     return aStates.getConstArray()[0];
    2378             : }
    2379             : 
    2380         176 : uno::Sequence< beans::PropertyState > SwXFrame::getPropertyStates(
    2381             :     const uno::Sequence< OUString >& aPropertyNames )
    2382             :         throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
    2383             : {
    2384         176 :     SolarMutexGuard aGuard;
    2385         176 :     uno::Sequence< beans::PropertyState > aStates(aPropertyNames.getLength());
    2386         176 :     beans::PropertyState* pStates = aStates.getArray();
    2387         176 :     SwFrmFmt* pFmt = GetFrmFmt();
    2388         176 :     if(pFmt)
    2389             :     {
    2390         176 :         const OUString* pNames = aPropertyNames.getConstArray();
    2391         176 :         const SwAttrSet& rFmtSet = pFmt->GetAttrSet();
    2392        7324 :         for(int i = 0; i < aPropertyNames.getLength(); i++)
    2393             :         {
    2394        7148 :             const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(pNames[i]);
    2395        7148 :             if (!pEntry)
    2396           0 :                 throw beans::UnknownPropertyException(OUString( "Unknown property: " ) + pNames[i], static_cast < cppu::OWeakObject * > ( this ) );
    2397             : 
    2398       14296 :             if(pEntry->nWID == FN_UNO_ANCHOR_TYPES||
    2399       14296 :                 pEntry->nWID == FN_PARAM_LINK_DISPLAY_NAME||
    2400       14296 :                 FN_UNO_FRAME_STYLE_NAME == pEntry->nWID||
    2401       14296 :                 FN_UNO_GRAPHIC_U_R_L == pEntry->nWID||
    2402       14296 :                 FN_UNO_GRAPHIC_FILTER     == pEntry->nWID||
    2403       14296 :                 FN_UNO_ACTUAL_SIZE == pEntry->nWID||
    2404        7148 :                 FN_UNO_ALTERNATIVE_TEXT == pEntry->nWID)
    2405             :             {
    2406           0 :                 pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2407             :             }
    2408        7148 :             else if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
    2409             :             {
    2410             :                 //UUUU
    2411         232 :                 if(SfxItemState::SET == rFmtSet.GetItemState(XATTR_FILLBMP_STRETCH, false)
    2412         116 :                     || SfxItemState::SET == rFmtSet.GetItemState(XATTR_FILLBMP_TILE, false))
    2413             :                 {
    2414           0 :                     pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2415             :                 }
    2416             :                 else
    2417             :                 {
    2418         116 :                     pStates[i] = beans::PropertyState_AMBIGUOUS_VALUE;
    2419             :                 }
    2420             :             }
    2421             :             //UUUU for FlyFrames we need to mark all properties from type RES_BACKGROUND
    2422             :             // as beans::PropertyState_DIRECT_VALUE to let users of this property call
    2423             :             // getPropertyValue where the member properties will be mapped from the
    2424             :             // fill attributes to the according SvxBrushItem entries
    2425        7032 :             else if(RES_BACKGROUND == pEntry->nWID && SWUnoHelper::needToMapFillItemsToSvxBrushItemTypes(rFmtSet))
    2426             :             {
    2427         198 :                 pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2428             :             }
    2429             :             else
    2430             :             {
    2431       13958 :                 if ((eType == FLYCNTTYPE_GRF) &&
    2432        7124 :                         pEntry && isGRFATR(pEntry->nWID))
    2433             :                 {
    2434          52 :                     const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2435          52 :                     if(pIdx)
    2436             :                     {
    2437          52 :                         SwNodeIndex aIdx(*pIdx, 1);
    2438          52 :                         SwNoTxtNode* pNoTxt = aIdx.GetNode().GetNoTxtNode();
    2439         104 :                         SfxItemSet aSet(pNoTxt->GetSwAttrSet());
    2440          52 :                         aSet.GetItemState(pEntry->nWID);
    2441          52 :                         if(SfxItemState::SET == aSet.GetItemState( pEntry->nWID, false ))
    2442         104 :                             pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2443             :                     }
    2444             :                 }
    2445             :                 else
    2446             :                 {
    2447        6782 :                     if(SfxItemState::SET == rFmtSet.GetItemState( pEntry->nWID, false ))
    2448        2144 :                         pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2449             :                     else
    2450        4638 :                         pStates[i] = beans::PropertyState_DEFAULT_VALUE;
    2451             :                 }
    2452             :             }
    2453             :         }
    2454             :     }
    2455           0 :     else if(IsDescriptor())
    2456             :     {
    2457           0 :         for(int i = 0; i < aPropertyNames.getLength(); i++)
    2458           0 :             pStates[i] = beans::PropertyState_DIRECT_VALUE;
    2459             :     }
    2460             :     else
    2461           0 :         throw uno::RuntimeException();
    2462         176 :     return aStates;
    2463             : }
    2464             : 
    2465           0 : void SwXFrame::setPropertyToDefault( const OUString& rPropertyName )
    2466             :     throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
    2467             : {
    2468           0 :     SolarMutexGuard aGuard;
    2469           0 :     SwFrmFmt* pFmt = GetFrmFmt();
    2470           0 :     if(pFmt)
    2471             :     {
    2472           0 :         const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(rPropertyName);
    2473           0 :         if (!pEntry)
    2474           0 :             throw beans::UnknownPropertyException( "Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    2475           0 :         if ( pEntry->nFlags & beans::PropertyAttribute::READONLY)
    2476           0 :             throw uno::RuntimeException("setPropertyToDefault: property is read-only: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    2477             : 
    2478             :         bool bNextFrame;
    2479           0 :         if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
    2480             :         {
    2481             :             //UUUU
    2482           0 :             SwDoc* pDoc = pFmt->GetDoc();
    2483           0 :             SfxItemSet aSet(pDoc->GetAttrPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
    2484           0 :             aSet.SetParent(&pFmt->GetAttrSet());
    2485             : 
    2486           0 :             aSet.ClearItem(XATTR_FILLBMP_STRETCH);
    2487           0 :             aSet.ClearItem(XATTR_FILLBMP_TILE);
    2488             : 
    2489           0 :             pFmt->SetFmtAttr(aSet);
    2490             :         }
    2491           0 :         else if( pEntry->nWID &&
    2492           0 :             pEntry->nWID != FN_UNO_ANCHOR_TYPES &&
    2493           0 :             pEntry->nWID != FN_PARAM_LINK_DISPLAY_NAME)
    2494             :         {
    2495           0 :             if ( (eType == FLYCNTTYPE_GRF) && isGRFATR(pEntry->nWID) )
    2496             :             {
    2497           0 :                 const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    2498           0 :                 if(pIdx)
    2499             :                 {
    2500           0 :                     SwNodeIndex aIdx(*pIdx, 1);
    2501           0 :                     SwNoTxtNode* pNoTxt = aIdx.GetNode().GetNoTxtNode();
    2502             :                     {
    2503           0 :                         SfxItemSet aSet(pNoTxt->GetSwAttrSet());
    2504           0 :                         aSet.ClearItem(pEntry->nWID);
    2505           0 :                         pNoTxt->SetAttr(aSet);
    2506           0 :                     }
    2507             :                 }
    2508             :             }
    2509             :             // #i73249#
    2510           0 :             else if( FN_UNO_TITLE == pEntry->nWID )
    2511             :             {
    2512           0 :                 SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    2513             :                 // assure that <SdrObject> instance exists.
    2514           0 :                 GetOrCreateSdrObject(rFlyFmt);
    2515           0 :                 rFlyFmt.GetDoc()->SetFlyFrmTitle(rFlyFmt, aEmptyOUStr);
    2516             :             }
    2517             :             // New attribute Description
    2518           0 :             else if( FN_UNO_DESCRIPTION == pEntry->nWID )
    2519             :             {
    2520           0 :                 SwFlyFrmFmt& rFlyFmt = dynamic_cast<SwFlyFrmFmt&>(*pFmt);
    2521             :                 // assure that <SdrObject> instance exists.
    2522           0 :                 GetOrCreateSdrObject(rFlyFmt);
    2523           0 :                 rFlyFmt.GetDoc()->SetFlyFrmDescription(rFlyFmt, aEmptyOUStr);
    2524             :             }
    2525             :             else
    2526             :             {
    2527           0 :                 SwDoc* pDoc = pFmt->GetDoc();
    2528           0 :                 SfxItemSet aSet( pDoc->GetAttrPool(),
    2529           0 :                     RES_FRMATR_BEGIN, RES_FRMATR_END - 1 );
    2530           0 :                 aSet.SetParent(&pFmt->GetAttrSet());
    2531           0 :                 aSet.ClearItem(pEntry->nWID);
    2532           0 :                 if(rPropertyName != UNO_NAME_ANCHOR_TYPE)
    2533           0 :                     pFmt->SetFmtAttr(aSet);
    2534           0 :             }
    2535             :         }
    2536           0 :         else if((bNextFrame = (rPropertyName == UNO_NAME_CHAIN_NEXT_NAME))
    2537           0 :                 || rPropertyName == UNO_NAME_CHAIN_PREV_NAME)
    2538             :         {
    2539           0 :             SwDoc* pDoc = pFmt->GetDoc();
    2540           0 :             if(bNextFrame)
    2541           0 :                 pDoc->Unchain(*pFmt);
    2542             :             else
    2543             :             {
    2544           0 :                 SwFmtChain aChain( pFmt->GetChain() );
    2545           0 :                 SwFrmFmt *pPrev = aChain.GetPrev();
    2546           0 :                 if(pPrev)
    2547           0 :                     pDoc->Unchain(*pPrev);
    2548             :             }
    2549             :         }
    2550             :     }
    2551           0 :     else if(!IsDescriptor())
    2552           0 :         throw uno::RuntimeException();
    2553             : 
    2554           0 : }
    2555             : 
    2556           0 : uno::Any SwXFrame::getPropertyDefault( const OUString& rPropertyName )
    2557             :     throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
    2558             : {
    2559           0 :     SolarMutexGuard aGuard;
    2560           0 :     uno::Any aRet;
    2561           0 :     SwFrmFmt* pFmt = GetFrmFmt();
    2562           0 :     if(pFmt)
    2563             :     {
    2564           0 :         const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap().getByName(rPropertyName);
    2565           0 :         if(pEntry)
    2566             :         {
    2567           0 :             if ( pEntry->nWID < RES_FRMATR_END )
    2568             :             {
    2569             :                 const SfxPoolItem& rDefItem =
    2570           0 :                     pFmt->GetDoc()->GetAttrPool().GetDefaultItem(pEntry->nWID);
    2571             :                 //UUUU
    2572           0 :                 const sal_uInt8 nMemberId(pEntry->nMemberId & (~SFX_METRIC_ITEM));
    2573             : 
    2574           0 :                 rDefItem.QueryValue(aRet, nMemberId);
    2575             :             }
    2576             :         }
    2577             :         else
    2578           0 :             throw beans::UnknownPropertyException( "Unknown property: " + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
    2579             :     }
    2580           0 :     else if(!IsDescriptor())
    2581           0 :         throw uno::RuntimeException();
    2582           0 :     return aRet;
    2583             : }
    2584             : 
    2585          12 : void SAL_CALL SwXFrame::addEventListener(
    2586             :         const uno::Reference<lang::XEventListener> & xListener)
    2587             : throw (uno::RuntimeException, std::exception)
    2588             : {
    2589             :     // no need to lock here as m_pImpl is const and container threadsafe
    2590          12 :     m_pImpl->m_EventListeners.addInterface(xListener);
    2591          12 : }
    2592             : 
    2593           6 : void SAL_CALL SwXFrame::removeEventListener(
    2594             :         const uno::Reference<lang::XEventListener> & xListener)
    2595             : throw (uno::RuntimeException, std::exception)
    2596             : {
    2597             :     // no need to lock here as m_pImpl is const and container threadsafe
    2598           6 :     m_pImpl->m_EventListeners.removeInterface(xListener);
    2599           6 : }
    2600             : 
    2601       24690 : void SwXFrame::Modify(const SfxPoolItem* pOld, const SfxPoolItem *pNew)
    2602             : {
    2603       24690 :     ClientModify(this, pOld, pNew);
    2604       24690 :     if (GetRegisteredIn())
    2605             :     {
    2606       48988 :         return; // core object still alive
    2607             :     }
    2608         196 :     mxStyleData.clear();
    2609         196 :     mxStyleFamily.clear();
    2610         196 :     m_pDoc = 0;
    2611         196 :     uno::Reference<uno::XInterface> const xThis(m_pImpl->m_wThis);
    2612         196 :     if (!xThis.is())
    2613             :     {   // fdo#72695: if UNO object is already dead, don't revive it with event
    2614           0 :         return;
    2615             :     }
    2616         392 :     lang::EventObject const ev(xThis);
    2617         392 :     m_pImpl->m_EventListeners.disposeAndClear(ev);
    2618             : }
    2619             : 
    2620          14 : void SwXFrame::dispose(void) throw( uno::RuntimeException, std::exception )
    2621             : {
    2622          14 :     SolarMutexGuard aGuard;
    2623          14 :     SwFrmFmt* pFmt = GetFrmFmt();
    2624          14 :     if ( pFmt )
    2625             :     {
    2626          14 :         SdrObject* pObj = pFmt->FindSdrObject();
    2627             :         // OD 11.09.2003 #112039# - add condition to perform delete of
    2628             :         // format/anchor sign, not only if the object is inserted, but also
    2629             :         // if a contact object is registered, which isn't in the destruction.
    2630          42 :         if ( pObj &&
    2631          22 :              ( pObj->IsInserted() ||
    2632          16 :                ( pObj->GetUserCall() &&
    2633           8 :                  !static_cast<SwContact*>(pObj->GetUserCall())->IsInDTOR() ) ) )
    2634             :         {
    2635          14 :             if (pFmt->GetAnchor().GetAnchorId() == FLY_AS_CHAR)
    2636             :             {
    2637           6 :                 const SwPosition &rPos = *(pFmt->GetAnchor().GetCntntAnchor());
    2638           6 :                 SwTxtNode *pTxtNode = rPos.nNode.GetNode().GetTxtNode();
    2639           6 :                 const sal_Int32 nIdx = rPos.nContent.GetIndex();
    2640           6 :                 pTxtNode->DeleteAttributes( RES_TXTATR_FLYCNT, nIdx, nIdx );
    2641             :             }
    2642             :             else
    2643           8 :                 pFmt->GetDoc()->getIDocumentLayoutAccess().DelLayoutFmt(pFmt);
    2644             :         }
    2645          14 :     }
    2646             : 
    2647          14 : }
    2648             : 
    2649          72 : uno::Reference< text::XTextRange >  SwXFrame::getAnchor(void) throw( uno::RuntimeException, std::exception )
    2650             : {
    2651          72 :     SolarMutexGuard aGuard;
    2652          72 :     uno::Reference< text::XTextRange >  aRef;
    2653          72 :     SwFrmFmt* pFmt = GetFrmFmt();
    2654          72 :     if(pFmt)
    2655             :     {
    2656          72 :         const SwFmtAnchor& rAnchor = pFmt->GetAnchor();
    2657             :         // return an anchor for non-page bound frames
    2658             :         // and for page bound frames that have a page no == NULL and a content position
    2659         144 :         if ((rAnchor.GetAnchorId() != FLY_AT_PAGE) ||
    2660           0 :             (rAnchor.GetCntntAnchor() && !rAnchor.GetPageNum()))
    2661             :         {
    2662          72 :             const SwPosition &rPos = *(rAnchor.GetCntntAnchor());
    2663          72 :             aRef = SwXTextRange::CreateXTextRange(*pFmt->GetDoc(), rPos, 0);
    2664             :         }
    2665             :     }
    2666             :     else
    2667           0 :         throw uno::RuntimeException();
    2668          72 :     return aRef;
    2669             : }
    2670             : 
    2671        3072 : void SwXFrame::ResetDescriptor()
    2672             : {
    2673        3072 :     bIsDescriptor = false;
    2674        3072 :     mxStyleData.clear();
    2675        3072 :     mxStyleFamily.clear();
    2676        3072 :     DELETEZ(pProps);
    2677        3072 : }
    2678             : 
    2679        3072 : void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRange)
    2680             :             throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
    2681             : {
    2682        3072 :     SolarMutexGuard aGuard;
    2683        3072 :     if(!IsDescriptor())
    2684           0 :         throw uno::RuntimeException();
    2685        6144 :     uno::Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
    2686        3072 :     SwXTextRange* pRange = 0;
    2687        3072 :     OTextCursorHelper* pCursor = 0;
    2688        3072 :     if(xRangeTunnel.is())
    2689             :     {
    2690             :         pRange  = reinterpret_cast< SwXTextRange * >(
    2691        3072 :                 sal::static_int_cast< sal_IntPtr >( xRangeTunnel->getSomething( SwXTextRange::getUnoTunnelId()) ));
    2692             :         pCursor = reinterpret_cast< OTextCursorHelper * >(
    2693        3072 :                 sal::static_int_cast< sal_IntPtr >( xRangeTunnel->getSomething( OTextCursorHelper::getUnoTunnelId()) ));
    2694             :     }
    2695             : 
    2696        3072 :     SwDoc* pDoc = pRange ? (SwDoc*)pRange->GetDoc() : pCursor ? (SwDoc*)pCursor->GetDoc() : 0;
    2697        3072 :     if(pDoc)
    2698             :     {
    2699        3072 :         SwUnoInternalPaM aIntPam(*pDoc);
    2700             :         // this now needs to return TRUE
    2701        3072 :         ::sw::XTextRangeToSwPaM(aIntPam, xTextRange);
    2702             : 
    2703        3072 :         SwNode& rNode = pDoc->GetNodes().GetEndOfContent();
    2704        6144 :         SwPaM aPam(rNode);
    2705        3072 :         aPam.Move( fnMoveBackward, fnGoDoc );
    2706             :         static sal_uInt16 const aFrmAttrRange[] =
    2707             :         {
    2708             :             RES_FRMATR_BEGIN,       RES_FRMATR_END-1,
    2709             :             RES_UNKNOWNATR_CONTAINER, RES_UNKNOWNATR_CONTAINER,
    2710             : 
    2711             :             //UUUU FillAttribute support
    2712             :             XATTR_FILL_FIRST, XATTR_FILL_LAST,
    2713             : 
    2714             :             SID_ATTR_BORDER_INNER,  SID_ATTR_BORDER_INNER,
    2715             :             0
    2716             :         };
    2717             :         static sal_uInt16 const aGrAttrRange[] =
    2718             :         {
    2719             :             RES_GRFATR_BEGIN,       RES_GRFATR_END-1,
    2720             :             0
    2721             :         };
    2722        6144 :         SfxItemSet aGrSet(pDoc->GetAttrPool(), aGrAttrRange );
    2723             : 
    2724        6144 :         SfxItemSet aFrmSet(pDoc->GetAttrPool(), aFrmAttrRange );
    2725             : 
    2726             :         //UUUU set correct parent to get the XFILL_NONE FillStyle as needed
    2727        3072 :         aFrmSet.SetParent(&pDoc->GetDfltFrmFmt()->GetAttrSet());
    2728             : 
    2729             :         // no the related items need to be added to the set
    2730             :         bool bSizeFound;
    2731        3072 :         if(!pProps->AnyToItemSet( pDoc, aFrmSet, aGrSet, bSizeFound))
    2732           0 :             throw lang::IllegalArgumentException();
    2733             :         // a TextRange is handled separately
    2734        3072 :         *aPam.GetPoint() = *aIntPam.GetPoint();
    2735        3072 :         if(aIntPam.HasMark())
    2736             :         {
    2737         202 :             aPam.SetMark();
    2738         202 :             *aPam.GetMark() = *aIntPam.GetMark();
    2739             :         }
    2740             : 
    2741             :         const SfxPoolItem* pItem;
    2742        3072 :         RndStdIds eAnchorId = FLY_AT_PARA;
    2743        3072 :         if(SfxItemState::SET == aFrmSet.GetItemState(RES_ANCHOR, false, &pItem) )
    2744             :         {
    2745        3072 :             eAnchorId = ((const SwFmtAnchor*)pItem)->GetAnchorId();
    2746        3072 :             if( FLY_AT_FLY == eAnchorId &&
    2747           0 :                 !aPam.GetNode().FindFlyStartNode())
    2748             :             {
    2749             :                 // framebound only where a frame exists
    2750           0 :                 SwFmtAnchor aAnchor(FLY_AT_PARA);
    2751           0 :                 aFrmSet.Put(aAnchor);
    2752             :             }
    2753        3268 :             else if ((FLY_AT_PAGE == eAnchorId) &&
    2754         196 :                      0 == ((const SwFmtAnchor*)pItem)->GetPageNum() )
    2755             :             {
    2756          14 :                 SwFmtAnchor aAnchor( *((const SwFmtAnchor*)pItem) );
    2757          14 :                 aAnchor.SetAnchor( aPam.GetPoint() );
    2758          14 :                 aFrmSet.Put(aAnchor);
    2759             :             }
    2760             :         }
    2761             : 
    2762             :         const ::uno::Any* pStyle;
    2763        3072 :         SwFrmFmt *pParentFrmFmt = 0;
    2764        3072 :         if(pProps->GetProperty(FN_UNO_FRAME_STYLE_NAME, 0, pStyle))
    2765         446 :             pParentFrmFmt = lcl_GetFrmFmt( *pStyle, pDoc );
    2766             : 
    2767        3072 :         SwFlyFrmFmt* pFmt = 0;
    2768        3072 :         if( eType == FLYCNTTYPE_FRM)
    2769             :         {
    2770        1506 :             UnoActionContext aCont(pDoc);
    2771        1506 :             if(m_pCopySource)
    2772             :             {
    2773         202 :                 SwFmtAnchor* pAnchorItem = 0;
    2774             :                 // the frame is inserted bound to page
    2775             :                 // to prevent conflicts if the to-be-anchored position is part of the to-be-copied text
    2776         202 :                 if (eAnchorId != FLY_AT_PAGE)
    2777             :                 {
    2778         202 :                     pAnchorItem = static_cast<SwFmtAnchor*>(aFrmSet.Get(RES_ANCHOR).Clone());
    2779         202 :                     aFrmSet.Put( SwFmtAnchor( FLY_AT_PAGE, 1 ));
    2780             :                 }
    2781             : 
    2782         202 :                 aPam.DeleteMark(); // mark position node will be deleted!
    2783         202 :                 aIntPam.DeleteMark(); // mark position node will be deleted!
    2784             :                 pFmt = pDoc->MakeFlyAndMove( *m_pCopySource, aFrmSet,
    2785             :                                0,
    2786         202 :                                pParentFrmFmt );
    2787         202 :                 if(pAnchorItem && pFmt)
    2788             :                 {
    2789         202 :                     pFmt->DelFrms();
    2790         202 :                     pAnchorItem->SetAnchor( m_pCopySource->Start() );
    2791         202 :                     SfxItemSet aAnchorSet( pDoc->GetAttrPool(), RES_ANCHOR, RES_ANCHOR );
    2792         202 :                     aAnchorSet.Put( *pAnchorItem );
    2793         202 :                     pDoc->SetFlyFrmAttr( *pFmt, aAnchorSet );
    2794         202 :                     delete pAnchorItem;
    2795             :                 }
    2796         202 :                 DELETEZ( m_pCopySource );
    2797             :             }
    2798             :             else
    2799             :             {
    2800        1304 :                 pFmt = pDoc->MakeFlySection( FLY_AT_PARA, aPam.GetPoint(),
    2801        1304 :                                          &aFrmSet, pParentFrmFmt );
    2802             :             }
    2803        1506 :             if(pFmt)
    2804             :             {
    2805        1506 :                 pFmt->Add(this);
    2806        1506 :                 if(!m_sName.isEmpty())
    2807         216 :                     pDoc->SetFlyName((SwFlyFrmFmt&)*pFmt, m_sName);
    2808             :             }
    2809             :             // wake up the SwXTextFrame
    2810        1506 :             ((SwXTextFrame*)this)->SetDoc( bIsDescriptor ? m_pDoc : GetFrmFmt()->GetDoc() );
    2811             :         }
    2812        1566 :         else if( eType == FLYCNTTYPE_GRF)
    2813             :         {
    2814         750 :             UnoActionContext aCont(pDoc);
    2815             :             const ::uno::Any* pGraphicURL;
    2816        1500 :             OUString sGraphicURL;
    2817         750 :             GraphicObject *pGrfObj = 0;
    2818         750 :             if(pProps->GetProperty(FN_UNO_GRAPHIC_U_R_L, 0, pGraphicURL))
    2819             :             {
    2820         292 :                 (*pGraphicURL) >>= sGraphicURL;
    2821         292 :                 if( sGraphicURL.startsWith(sPackageProtocol) )
    2822             :                 {
    2823          42 :                     pGrfObj = new GraphicObject;
    2824          42 :                     pGrfObj->SetUserData( sGraphicURL );
    2825          42 :                     pGrfObj->SetSwapState();
    2826          42 :                     sGraphicURL = "";
    2827             :                 }
    2828         250 :                 else if( sGraphicURL.startsWith(sGraphicObjectProtocol) )
    2829             :                 {
    2830             :                     OString sId(OUStringToOString(
    2831             :                         sGraphicURL.copy( sizeof(sGraphicObjectProtocol)-1 ),
    2832         250 :                         RTL_TEXTENCODING_ASCII_US));
    2833         250 :                     pGrfObj = new GraphicObject( sId );
    2834         250 :                     sGraphicURL = "";
    2835             :                 }
    2836             :             }
    2837        1500 :             Graphic aGraphic;
    2838             :             const ::uno::Any* pGraphic;
    2839         750 :             if( pProps->GetProperty( FN_UNO_GRAPHIC, 0, pGraphic ))
    2840             :             {
    2841         446 :                 uno::Reference< graphic::XGraphic > xGraphic;
    2842         446 :                 (*pGraphic) >>= xGraphic;
    2843         446 :                 aGraphic = Graphic( xGraphic );
    2844             :             }
    2845             : 
    2846        1500 :             OUString sFltName;
    2847             :             const ::uno::Any* pFilter;
    2848         750 :             if(pProps->GetProperty(FN_UNO_GRAPHIC_FILTER, 0, pFilter))
    2849             :             {
    2850         292 :                 (*pFilter) >>= sFltName;
    2851             :             }
    2852             : 
    2853             :             pFmt =
    2854         292 :                 pGrfObj ? pDoc->getIDocumentContentOperations().Insert( aPam, *pGrfObj, &aFrmSet, &aGrSet,
    2855         292 :                                         pParentFrmFmt )
    2856         458 :                         : pDoc->getIDocumentContentOperations().Insert( aPam, sGraphicURL, sFltName, &aGraphic,
    2857        1500 :                                         &aFrmSet, &aGrSet, pParentFrmFmt  );
    2858         750 :             delete pGrfObj;
    2859         750 :             if(pFmt)
    2860             :             {
    2861        1500 :                 SwGrfNode *pGrfNd = pDoc->GetNodes()[ pFmt->GetCntnt().GetCntntIdx()
    2862        1500 :                                             ->GetIndex()+1 ]->GetGrfNode();
    2863         750 :                 if (pGrfNd)
    2864         750 :                     pGrfNd->SetChgTwipSize( !bSizeFound );
    2865         750 :                 pFmt->Add(this);
    2866         750 :                 if(!m_sName.isEmpty())
    2867         646 :                     pDoc->SetFlyName((SwFlyFrmFmt&)*pFmt, m_sName);
    2868             : 
    2869             :             }
    2870             :             const ::uno::Any* pSurroundContour;
    2871         750 :             if(pProps->GetProperty(RES_SURROUND, MID_SURROUND_CONTOUR, pSurroundContour))
    2872         138 :                 setPropertyValue(UNO_NAME_SURROUND_CONTOUR, *pSurroundContour);
    2873             :             const ::uno::Any* pContourOutside;
    2874         750 :             if(pProps->GetProperty(RES_SURROUND, MID_SURROUND_CONTOUROUTSIDE, pContourOutside))
    2875         136 :                 setPropertyValue(UNO_NAME_CONTOUR_OUTSIDE, *pContourOutside);
    2876             :             const ::uno::Any* pContourPoly;
    2877         750 :             if(pProps->GetProperty(FN_PARAM_COUNTOUR_PP, 0, pContourPoly))
    2878         136 :                 setPropertyValue(UNO_NAME_CONTOUR_POLY_POLYGON, *pContourPoly);
    2879             :             const ::uno::Any* pPixelContour;
    2880         750 :             if(pProps->GetProperty(FN_UNO_IS_PIXEL_CONTOUR, 0, pPixelContour))
    2881           0 :                 setPropertyValue(UNO_NAME_IS_PIXEL_CONTOUR, *pPixelContour);
    2882             :             const ::uno::Any* pAutoContour;
    2883         750 :             if(pProps->GetProperty(FN_UNO_IS_AUTOMATIC_CONTOUR, 0, pAutoContour))
    2884         750 :                 setPropertyValue(UNO_NAME_IS_AUTOMATIC_CONTOUR, *pAutoContour);
    2885             :         }
    2886             :         else
    2887             :         {
    2888         816 :             const ::uno::Any* pCLSID = 0;
    2889         816 :             const ::uno::Any* pStreamName = 0;
    2890         816 :             const ::uno::Any* pEmbeddedObject = 0;
    2891        1632 :             if(!pProps->GetProperty(FN_UNO_CLSID, 0, pCLSID)
    2892         804 :                 && !pProps->GetProperty( FN_UNO_STREAM_NAME, 0, pStreamName )
    2893        1522 :                 && !pProps->GetProperty( FN_EMBEDDED_OBJECT, 0, pEmbeddedObject ))
    2894           0 :                 throw uno::RuntimeException();
    2895         816 :             if(pCLSID)
    2896             :             {
    2897          12 :                 OUString aCLSID;
    2898          24 :                 SvGlobalName aClassName;
    2899          24 :                 uno::Reference < embed::XEmbeddedObject > xIPObj;
    2900          24 :                 std::unique_ptr < comphelper::EmbeddedObjectContainer > pCnt;
    2901          12 :                 if( (*pCLSID) >>= aCLSID )
    2902             :                 {
    2903          12 :                     if( !aClassName.MakeId( aCLSID ) )
    2904             :                     {
    2905           0 :                         lang::IllegalArgumentException aExcept;
    2906           0 :                         aExcept.Message = "CLSID invalid";
    2907           0 :                         throw aExcept;
    2908             :                     }
    2909             : 
    2910          12 :                     pCnt.reset( new comphelper::EmbeddedObjectContainer );
    2911          12 :                     OUString aName;
    2912          12 :                     xIPObj = pCnt->CreateEmbeddedObject( aClassName.GetByteSequence(), aName );
    2913             :                 }
    2914          12 :                 if ( xIPObj.is() )
    2915             :                 {
    2916          12 :                     UnoActionContext aAction(pDoc);
    2917          12 :                     pDoc->GetIDocumentUndoRedo().StartUndo(UNDO_INSERT, NULL);
    2918          12 :                     if(!bSizeFound)
    2919             :                     {
    2920             :                         //TODO/LATER: from where do I get a ViewAspect? And how do I transport it to the OLENode?
    2921           4 :                         sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
    2922             : 
    2923             :                         // TODO/LEAN: VisualArea still needs running state
    2924           4 :                         svt::EmbeddedObjectRef::TryRunningState( xIPObj );
    2925             : 
    2926             :                         // set parent to get correct VisArea(in case of object needing parent printer)
    2927           4 :                         uno::Reference < container::XChild > xChild( xIPObj, uno::UNO_QUERY );
    2928           4 :                         if ( xChild.is() )
    2929           4 :                             xChild->setParent( pDoc->GetDocShell()->GetModel() );
    2930             : 
    2931             :                         //The Size should be suggested by the OLE server if not manually set
    2932           4 :                         MapUnit aRefMap = VCLUnoHelper::UnoEmbed2VCLMapUnit( xIPObj->getMapUnit( nAspect ) );
    2933           4 :                         awt::Size aSize;
    2934             :                         try
    2935             :                         {
    2936           4 :                             aSize = xIPObj->getVisualAreaSize( nAspect );
    2937             :                         }
    2938           0 :                         catch ( embed::NoVisualAreaSizeException& )
    2939             :                         {
    2940             :                             // the default size will be set later
    2941             :                         }
    2942             : 
    2943           4 :                         Size aSz( aSize.Width, aSize.Height );
    2944           4 :                         if ( !aSz.Width() || !aSz.Height() )
    2945             :                         {
    2946           0 :                             aSz.Width() = aSz.Height() = 5000;
    2947             :                             aSz = OutputDevice::LogicToLogic
    2948           0 :                                                     ( aSz, MapMode( MAP_100TH_MM ), aRefMap );
    2949             :                         }
    2950           8 :                         MapMode aMyMap( MAP_TWIP );
    2951           4 :                         aSz = OutputDevice::LogicToLogic( aSz, aRefMap, aMyMap );
    2952           8 :                         SwFmtFrmSize aFrmSz;
    2953           4 :                         aFrmSz.SetSize(aSz);
    2954           8 :                         aFrmSet.Put(aFrmSz);
    2955             :                     }
    2956          12 :                     SwFlyFrmFmt* pFmt2 = 0;
    2957             : 
    2958             :                     // TODO/LATER: Is it the only possible aspect here?
    2959          12 :                     sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
    2960          24 :                     ::svt::EmbeddedObjectRef xObjRef( xIPObj, nAspect );
    2961          12 :                     pFmt2 = pDoc->getIDocumentContentOperations().Insert(aPam, xObjRef, &aFrmSet, NULL, NULL );
    2962             :                     assert(pFmt2 && "Doc->Insert(notxt) failed.");
    2963             : 
    2964          12 :                     pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_INSERT, NULL);
    2965          12 :                     pFmt2->Add(this);
    2966          12 :                     if(!m_sName.isEmpty())
    2967          12 :                         pDoc->SetFlyName((SwFlyFrmFmt&)*pFmt2, m_sName);
    2968          12 :                 }
    2969             :             }
    2970         804 :             else if( pStreamName )
    2971             :             {
    2972          98 :                 OUString sStreamName;
    2973          98 :                 (*pStreamName) >>= sStreamName;
    2974          98 :                 pDoc->GetIDocumentUndoRedo().StartUndo(UNDO_INSERT, NULL);
    2975             : 
    2976          98 :                 SwFlyFrmFmt* pFrmFmt = 0;
    2977          98 :                 pFrmFmt = pDoc->getIDocumentContentOperations().InsertOLE( aPam, sStreamName, embed::Aspects::MSOLE_CONTENT, &aFrmSet, NULL, NULL );
    2978          98 :                 pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_INSERT, NULL);
    2979          98 :                 pFrmFmt->Add(this);
    2980          98 :                 if(!m_sName.isEmpty())
    2981           0 :                     pDoc->SetFlyName((SwFlyFrmFmt&)*pFrmFmt, m_sName);
    2982             :             }
    2983         706 :             else if( pEmbeddedObject || pStreamName )
    2984             :             {
    2985         706 :                 uno::Reference< embed::XEmbeddedObject > obj;
    2986         706 :                 (*pEmbeddedObject) >>= obj;
    2987        1412 :                 svt::EmbeddedObjectRef xObj;
    2988         706 :                 xObj.Assign( obj, embed::Aspects::MSOLE_CONTENT );
    2989             : 
    2990         706 :                 pDoc->GetIDocumentUndoRedo().StartUndo(UNDO_INSERT, NULL);
    2991             : 
    2992             :                 // Not sure if these setParent() and InsertEmbeddedObject() calls are really
    2993             :                 // needed, it seems to work without, but logic from code elsewhere suggests
    2994             :                 // they should be done.
    2995         706 :                 SfxObjectShell& mrPers = *pDoc->GetPersist();
    2996        1412 :                 uno::Reference < container::XChild > xChild( obj, uno::UNO_QUERY );
    2997         706 :                 if ( xChild.is() )
    2998         706 :                     xChild->setParent( mrPers.GetModel() );
    2999        1412 :                 OUString rName;
    3000         706 :                 mrPers.GetEmbeddedObjectContainer().InsertEmbeddedObject( obj, rName );
    3001             : 
    3002         706 :                 SwFlyFrmFmt* pFrmFmt = 0;
    3003         706 :                 pFrmFmt = pDoc->getIDocumentContentOperations().Insert( aPam, xObj, &aFrmSet, NULL, NULL );
    3004         706 :                 pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_INSERT, NULL);
    3005         706 :                 pFrmFmt->Add(this);
    3006         706 :                 if(!m_sName.isEmpty())
    3007         706 :                     pDoc->SetFlyName((SwFlyFrmFmt&)*pFrmFmt, m_sName);
    3008             :             }
    3009             :         }
    3010        3072 :         if( pFmt && pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
    3011        2256 :             GetOrCreateSdrObject(*pFmt);
    3012             :         const ::uno::Any* pOrder;
    3013        3072 :         if( pProps->GetProperty(FN_UNO_Z_ORDER, 0, pOrder) )
    3014         300 :             setPropertyValue(UNO_NAME_Z_ORDER, *pOrder);
    3015             :         const ::uno::Any* pReplacement;
    3016        3072 :         if( pProps->GetProperty(FN_UNO_REPLACEMENT_GRAPHIC, 0, pReplacement) )
    3017         104 :             setPropertyValue(UNO_NAME_GRAPHIC, *pReplacement);
    3018             :         // new attribute Title
    3019             :         const ::uno::Any* pTitle;
    3020        3072 :         if ( pProps->GetProperty(FN_UNO_TITLE, 0, pTitle) )
    3021             :         {
    3022         446 :             setPropertyValue(UNO_NAME_TITLE, *pTitle);
    3023             :         }
    3024             :         // new attribute Description
    3025             :         const ::uno::Any* pDescription;
    3026        3072 :         if ( pProps->GetProperty(FN_UNO_DESCRIPTION, 0, pDescription) )
    3027             :         {
    3028         446 :             setPropertyValue(UNO_NAME_DESCRIPTION, *pDescription);
    3029             :         }
    3030             : 
    3031             :         // For grabbag
    3032             :         const uno::Any* pFrameIntropgrabbagItem;
    3033        3072 :         if( pProps->GetProperty(RES_FRMATR_GRABBAG, 0, pFrameIntropgrabbagItem) )
    3034             :         {
    3035         280 :             setPropertyValue(UNO_NAME_FRAME_INTEROP_GRAB_BAG, *pFrameIntropgrabbagItem);
    3036        3072 :         }
    3037             :     }
    3038             :     else
    3039           0 :         throw lang::IllegalArgumentException();
    3040             :     // reset the flag and delete Descriptor pointer
    3041        6144 :     ResetDescriptor();
    3042        3072 : }
    3043             : 
    3044        3332 : void SwXFrame::attach(const uno::Reference< text::XTextRange > & xTextRange)
    3045             :     throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
    3046             : {
    3047             :     SwFrmFmt* pFmt;
    3048        3332 :     if(IsDescriptor())
    3049        3072 :         attachToRange(xTextRange);
    3050         260 :     else if(0 != (pFmt = GetFrmFmt()))
    3051             :     {
    3052         260 :         uno::Reference<lang::XUnoTunnel> xRangeTunnel( xTextRange, uno::UNO_QUERY);
    3053         260 :         SwDoc* pDoc = pFmt->GetDoc();
    3054         520 :         SwUnoInternalPaM aIntPam(*pDoc);
    3055         260 :         if (::sw::XTextRangeToSwPaM(aIntPam, xTextRange))
    3056             :         {
    3057         258 :             SfxItemSet aSet( pDoc->GetAttrPool(), RES_ANCHOR, RES_ANCHOR );
    3058         258 :             aSet.SetParent(&pFmt->GetAttrSet());
    3059         516 :             SwFmtAnchor aAnchor = (const SwFmtAnchor&)aSet.Get(RES_ANCHOR);
    3060         258 :             aAnchor.SetAnchor( aIntPam.Start() );
    3061         258 :             aSet.Put(aAnchor);
    3062         516 :             pDoc->SetFlyFrmAttr( *pFmt, aSet );
    3063             :         }
    3064             :         else
    3065         262 :             throw lang::IllegalArgumentException();
    3066             :     }
    3067        3330 : }
    3068             : 
    3069         146 : awt::Point SwXFrame::getPosition(void) throw( uno::RuntimeException, std::exception )
    3070             : {
    3071         146 :     SolarMutexGuard aGuard;
    3072         292 :     uno::RuntimeException aRuntime;
    3073         146 :     aRuntime.Message = "position cannot be determined with this method";
    3074         292 :     throw aRuntime;
    3075             : }
    3076             : 
    3077           0 : void SwXFrame::setPosition(const awt::Point& /*aPosition*/) throw( uno::RuntimeException, std::exception )
    3078             : {
    3079           0 :     SolarMutexGuard aGuard;
    3080           0 :     uno::RuntimeException aRuntime;
    3081           0 :     aRuntime.Message = "position cannot be changed with this method";
    3082           0 :     throw aRuntime;
    3083             : }
    3084             : 
    3085         164 : awt::Size SwXFrame::getSize(void) throw( uno::RuntimeException, std::exception )
    3086             : {
    3087         164 :     const ::uno::Any aVal = getPropertyValue("Size");
    3088         164 :     awt::Size* pRet =  (awt::Size*)aVal.getValue();
    3089         164 :     return *pRet;
    3090             : }
    3091             : 
    3092         260 : void SwXFrame::setSize(const awt::Size& aSize)
    3093             :     throw( beans::PropertyVetoException, uno::RuntimeException, std::exception )
    3094             : {
    3095         260 :     const ::uno::Any aVal(&aSize, ::cppu::UnoType<awt::Size>::get());
    3096         260 :     setPropertyValue("Size", aVal);
    3097         260 : }
    3098             : 
    3099          16 : OUString SwXFrame::getShapeType(void) throw( uno::RuntimeException, std::exception )
    3100             : {
    3101          16 :     return OUString("FrameShape");
    3102             : }
    3103             : 
    3104        1508 : SwXTextFrame::SwXTextFrame( SwDoc *_pDoc ) :
    3105             :     SwXText(0, CURSOR_FRAME),
    3106        1508 :     SwXFrame(FLYCNTTYPE_FRM, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_FRAME), _pDoc )
    3107             : {
    3108        1508 : }
    3109             : 
    3110       19396 : SwXTextFrame::SwXTextFrame(SwFrmFmt& rFmt) :
    3111             :     SwXText(rFmt.GetDoc(), CURSOR_FRAME),
    3112       19396 :     SwXFrame(rFmt, FLYCNTTYPE_FRM, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_FRAME))
    3113             : {
    3114             : 
    3115       19396 : }
    3116             : 
    3117       41808 : SwXTextFrame::~SwXTextFrame()
    3118             : {
    3119       41808 : }
    3120             : 
    3121             : uno::Reference<text::XTextFrame>
    3122       24656 : SwXTextFrame::CreateXTextFrame(SwDoc & rDoc, SwFrmFmt *const pFrmFmt)
    3123             : {
    3124       24656 :     return CreateXFrame<text::XTextFrame, SwXTextFrame>(rDoc, pFrmFmt);
    3125             : }
    3126             : 
    3127      217414 : void SAL_CALL SwXTextFrame::acquire(  )throw()
    3128             : {
    3129      217414 :     SwXFrame::acquire();
    3130      217414 : }
    3131             : 
    3132      217414 : void SAL_CALL SwXTextFrame::release(  )throw()
    3133             : {
    3134      217414 :     SwXFrame::release();
    3135      217414 : }
    3136             : 
    3137       93744 : ::uno::Any SAL_CALL SwXTextFrame::queryInterface( const uno::Type& aType )
    3138             :     throw (uno::RuntimeException, std::exception)
    3139             : {
    3140       93744 :     ::uno::Any aRet = SwXFrame::queryInterface(aType);
    3141       93744 :     if(aRet.getValueType() == ::getCppuVoidType())
    3142       13198 :         aRet = SwXText::queryInterface(aType);
    3143       93744 :     if(aRet.getValueType() == ::getCppuVoidType())
    3144        8806 :         aRet = SwXTextFrameBaseClass::queryInterface(aType);
    3145       93744 :     return aRet;
    3146             : }
    3147             : 
    3148           0 : uno::Sequence< uno::Type > SAL_CALL SwXTextFrame::getTypes(  ) throw(uno::RuntimeException, std::exception)
    3149             : {
    3150           0 :     uno::Sequence< uno::Type > aTextFrameTypes = SwXTextFrameBaseClass::getTypes();
    3151           0 :     uno::Sequence< uno::Type > aFrameTypes = SwXFrame::getTypes();
    3152           0 :     uno::Sequence< uno::Type > aTextTypes = SwXText::getTypes();
    3153             : 
    3154           0 :     long nIndex = aTextFrameTypes.getLength();
    3155             :     aTextFrameTypes.realloc(
    3156           0 :         aTextFrameTypes.getLength() +
    3157           0 :         aFrameTypes.getLength() +
    3158           0 :         aTextTypes.getLength());
    3159             : 
    3160           0 :     uno::Type* pTextFrameTypes = aTextFrameTypes.getArray();
    3161           0 :     const uno::Type* pFrameTypes = aFrameTypes.getConstArray();
    3162             :     long nPos;
    3163           0 :     for(nPos = 0; nPos <aFrameTypes.getLength(); nPos++)
    3164           0 :         pTextFrameTypes[nIndex++] = pFrameTypes[nPos];
    3165             : 
    3166           0 :     const uno::Type* pTextTypes = aTextTypes.getConstArray();
    3167           0 :     for(nPos = 0; nPos <aTextTypes.getLength(); nPos++)
    3168           0 :         pTextFrameTypes[nIndex++] = pTextTypes[nPos];
    3169             : 
    3170           0 :     return aTextFrameTypes;
    3171             : }
    3172             : 
    3173           0 : uno::Sequence< sal_Int8 > SAL_CALL SwXTextFrame::getImplementationId(  ) throw(uno::RuntimeException, std::exception)
    3174             : {
    3175           0 :     return css::uno::Sequence<sal_Int8>();
    3176             : }
    3177             : 
    3178         300 : uno::Reference< text::XText >  SwXTextFrame::getText(void) throw( uno::RuntimeException, std::exception )
    3179             : {
    3180         300 :     return this;
    3181             : }
    3182             : 
    3183        3536 : const SwStartNode *SwXTextFrame::GetStartNode() const
    3184             : {
    3185        3536 :     const SwStartNode *pSttNd = 0;
    3186             : 
    3187        3536 :     const SwFrmFmt* pFmt = GetFrmFmt();
    3188        3536 :     if(pFmt)
    3189             :     {
    3190        3536 :         const SwFmtCntnt& rFlyCntnt = pFmt->GetCntnt();
    3191        3536 :         if( rFlyCntnt.GetCntntIdx() )
    3192        3536 :             pSttNd = rFlyCntnt.GetCntntIdx()->GetNode().GetStartNode();
    3193             :     }
    3194             : 
    3195        3536 :     return pSttNd;
    3196             : }
    3197             : 
    3198             : uno::Reference< text::XTextCursor >
    3199        7350 : SwXTextFrame::CreateCursor() throw (uno::RuntimeException)
    3200             : {
    3201        7350 :     return createTextCursor();
    3202             : }
    3203             : 
    3204       11468 : uno::Reference< text::XTextCursor >  SwXTextFrame::createTextCursor(void) throw( uno::RuntimeException, std::exception )
    3205             : {
    3206       11468 :     SolarMutexGuard aGuard;
    3207       11468 :     uno::Reference< text::XTextCursor >  aRef;
    3208       11468 :     SwFrmFmt* pFmt = GetFrmFmt();
    3209       11468 :     if(pFmt)
    3210             :     {
    3211             :         //save current start node to be able to check if there is content after the table -
    3212             :         //otherwise the cursor would be in the body text!
    3213       11468 :         const SwNode& rNode = pFmt->GetCntnt().GetCntntIdx()->GetNode();
    3214       11468 :         const SwStartNode* pOwnStartNode = rNode.FindSttNodeByType(SwFlyStartNode);
    3215             : 
    3216       11468 :         SwPaM aPam(rNode);
    3217       11468 :         aPam.Move(fnMoveForward, fnGoNode);
    3218       11468 :         SwTableNode* pTblNode = aPam.GetNode().FindTableNode();
    3219       11468 :         SwCntntNode* pCont = 0;
    3220       22986 :         while( pTblNode )
    3221             :         {
    3222          50 :             aPam.GetPoint()->nNode = *pTblNode->EndOfSectionNode();
    3223          50 :             pCont = GetDoc()->GetNodes().GoNext(&aPam.GetPoint()->nNode);
    3224          50 :             pTblNode = pCont->FindTableNode();
    3225             :         }
    3226       11468 :         if(pCont)
    3227          50 :             aPam.GetPoint()->nContent.Assign(pCont, 0);
    3228             : 
    3229             :         const SwStartNode* pNewStartNode =
    3230       11468 :             aPam.GetNode().FindSttNodeByType(SwFlyStartNode);
    3231       11468 :         if(!pNewStartNode || pNewStartNode != pOwnStartNode)
    3232             :         {
    3233           0 :             uno::RuntimeException aExcept;
    3234           0 :             aExcept.Message = "no text available";
    3235           0 :             throw aExcept;
    3236             :         }
    3237             : 
    3238             :         SwXTextCursor *const pXCursor = new SwXTextCursor(
    3239       11468 :                  *pFmt->GetDoc(), this, CURSOR_FRAME, *aPam.GetPoint());
    3240       11468 :         aRef =  static_cast<text::XWordCursor*>(pXCursor);
    3241             : #if OSL_DEBUG_LEVEL > 1
    3242             :         SwUnoCrsr *const pUnoCrsr = pXCursor->GetCursor();
    3243             :         (void) pUnoCrsr;
    3244             : #endif
    3245             :     }
    3246             :     else
    3247           0 :         throw uno::RuntimeException();
    3248       11468 :     return aRef;
    3249             : }
    3250             : 
    3251        1074 : uno::Reference< text::XTextCursor >  SwXTextFrame::createTextCursorByRange(const uno::Reference< text::XTextRange > & aTextPosition) throw( uno::RuntimeException, std::exception )
    3252             : {
    3253        1074 :     SolarMutexGuard aGuard;
    3254        1074 :     uno::Reference< text::XTextCursor >  aRef;
    3255        1074 :     SwFrmFmt* pFmt = GetFrmFmt();
    3256        2148 :     SwUnoInternalPaM aPam(*GetDoc());
    3257        1074 :     if (pFmt && ::sw::XTextRangeToSwPaM(aPam, aTextPosition))
    3258             :     {
    3259        1074 :         SwNode& rNode = pFmt->GetCntnt().GetCntntIdx()->GetNode();
    3260        1074 :         if(aPam.GetNode().FindFlyStartNode() == rNode.FindFlyStartNode())
    3261             :         {
    3262             :             aRef = static_cast<text::XWordCursor*>(
    3263        1074 :                     new SwXTextCursor(*pFmt->GetDoc(), this, CURSOR_FRAME,
    3264        1074 :                         *aPam.GetPoint(), aPam.GetMark()));
    3265             :         }
    3266             :     }
    3267             :     else
    3268           0 :         throw uno::RuntimeException();
    3269        2148 :     return aRef;
    3270             : }
    3271             : 
    3272          72 : uno::Reference< container::XEnumeration >  SwXTextFrame::createEnumeration(void) throw( uno::RuntimeException, std::exception )
    3273             : {
    3274          72 :     SolarMutexGuard aGuard;
    3275          72 :     uno::Reference< container::XEnumeration >  aRef;
    3276          72 :     SwFrmFmt* pFmt = GetFrmFmt();
    3277          72 :     if(pFmt)
    3278             :     {
    3279          72 :         SwPosition aPos(pFmt->GetCntnt().GetCntntIdx()->GetNode());
    3280             :         ::std::unique_ptr<SwUnoCrsr> pUnoCursor(
    3281         144 :                 GetDoc()->CreateUnoCrsr(aPos, false));
    3282          72 :         pUnoCursor->Move(fnMoveForward, fnGoNode);
    3283         144 :         aRef = new SwXParagraphEnumeration(this, std::move(pUnoCursor), CURSOR_FRAME);
    3284             :     }
    3285          72 :     return aRef;
    3286             : }
    3287             : 
    3288           2 : uno::Type  SwXTextFrame::getElementType(void) throw( uno::RuntimeException, std::exception )
    3289             : {
    3290           2 :     return cppu::UnoType<text::XTextRange>::get();
    3291             : }
    3292             : 
    3293           2 : sal_Bool SwXTextFrame::hasElements(void) throw( uno::RuntimeException, std::exception )
    3294             : {
    3295           2 :     return sal_True;
    3296             : }
    3297             : 
    3298        1762 : void SwXTextFrame::attach(const uno::Reference< text::XTextRange > & xTextRange)
    3299             :     throw( lang::IllegalArgumentException, uno::RuntimeException, std::exception )
    3300             : {
    3301        1762 :     SwXFrame::attach(xTextRange);
    3302        1762 : }
    3303             : 
    3304          14 : uno::Reference< text::XTextRange >  SwXTextFrame::getAnchor(void) throw( uno::RuntimeException, std::exception )
    3305             : {
    3306          14 :     SolarMutexGuard aGuard;
    3307          14 :     return SwXFrame::getAnchor();
    3308             : }
    3309             : 
    3310           4 : void SwXTextFrame::dispose(void) throw( uno::RuntimeException, std::exception )
    3311             : {
    3312           4 :     SolarMutexGuard aGuard;
    3313           4 :     SwXFrame::dispose();
    3314           4 : }
    3315             : 
    3316           4 : void SwXTextFrame::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException, std::exception )
    3317             : {
    3318           4 :     SwXFrame::addEventListener(aListener);
    3319           4 : }
    3320             : 
    3321           2 : void SwXTextFrame::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException, std::exception )
    3322             : {
    3323           2 :     SwXFrame::removeEventListener(aListener);
    3324           2 : }
    3325             : 
    3326           0 : OUString SwXTextFrame::getImplementationName(void) throw( uno::RuntimeException, std::exception )
    3327             : {
    3328           0 :     return OUString("SwXTextFrame");
    3329             : }
    3330             : 
    3331        1536 : sal_Bool SwXTextFrame::supportsService(const OUString& rServiceName) throw( uno::RuntimeException, std::exception )
    3332             : {
    3333        1536 :     return cppu::supportsService(this, rServiceName);
    3334             : }
    3335             : 
    3336        1538 : uno::Sequence< OUString > SwXTextFrame::getSupportedServiceNames(void) throw( uno::RuntimeException, std::exception )
    3337             : {
    3338        1538 :     uno::Sequence < OUString > aRet = SwXFrame::getSupportedServiceNames();
    3339        1538 :     aRet.realloc(aRet.getLength() + 2);
    3340        1538 :     OUString* pArray = aRet.getArray();
    3341        1538 :     pArray[aRet.getLength() - 2] = "com.sun.star.text.TextFrame";
    3342        1538 :     pArray[aRet.getLength() - 1] = "com.sun.star.text.Text";
    3343        1538 :     return aRet;
    3344             : }
    3345             : 
    3346       20904 : void * SAL_CALL SwXTextFrame::operator new( size_t t) throw()
    3347             : {
    3348       20904 :     return SwXTextFrameBaseClass::operator new( t);
    3349             : }
    3350             : 
    3351       20904 : void SAL_CALL SwXTextFrame::operator delete( void * p) throw()
    3352             : {
    3353       20904 :     SwXTextFrameBaseClass::operator delete(p);
    3354       20904 : }
    3355             : 
    3356          38 : uno::Reference<container::XNameReplace > SAL_CALL SwXTextFrame::getEvents()
    3357             :     throw(uno::RuntimeException, std::exception)
    3358             : {
    3359          38 :     return new SwFrameEventDescriptor( *this );
    3360             : }
    3361             : 
    3362       14448 : sal_Int64 SAL_CALL SwXTextFrame::getSomething( const uno::Sequence< sal_Int8 >& rId )
    3363             :     throw(uno::RuntimeException, std::exception)
    3364             : {
    3365       14448 :     sal_Int64 nRet = SwXFrame::getSomething( rId );
    3366       14448 :     if( !nRet )
    3367       14448 :         nRet = SwXText::getSomething( rId );
    3368             : 
    3369       14448 :     return nRet;
    3370             : }
    3371             : 
    3372        6818 : ::uno::Any SwXTextFrame::getPropertyValue(const OUString& rPropertyName)
    3373             :     throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
    3374             : {
    3375        6818 :     SolarMutexGuard aGuard;
    3376        6818 :     ::uno::Any aRet;
    3377       13594 :     if(rPropertyName == UNO_NAME_START_REDLINE||
    3378        6776 :             rPropertyName == UNO_NAME_END_REDLINE)
    3379             :     {
    3380             :         //redline can only be returned if it's a living object
    3381          84 :         if(!IsDescriptor())
    3382          84 :             aRet = SwXText::getPropertyValue(rPropertyName);
    3383             :     }
    3384             :     else
    3385        6734 :         aRet = SwXFrame::getPropertyValue(rPropertyName);
    3386        6812 :     return aRet;
    3387             : }
    3388             : 
    3389         750 : SwXTextGraphicObject::SwXTextGraphicObject( SwDoc *pDoc ) :
    3390         750 :     SwXFrame(FLYCNTTYPE_GRF, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_GRAPHIC), pDoc)
    3391             : {
    3392         750 : }
    3393             : 
    3394         438 : SwXTextGraphicObject::SwXTextGraphicObject(SwFrmFmt& rFmt) :
    3395         438 :     SwXFrame(rFmt, FLYCNTTYPE_GRF, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_GRAPHIC))
    3396             : {
    3397             : 
    3398         438 : }
    3399             : 
    3400        2376 : SwXTextGraphicObject::~SwXTextGraphicObject()
    3401             : {
    3402             : 
    3403        2376 : }
    3404             : 
    3405             : uno::Reference<text::XTextContent>
    3406        1196 : SwXTextGraphicObject::CreateXTextGraphicObject(SwDoc & rDoc, SwFrmFmt *const pFrmFmt)
    3407             : {
    3408        1196 :     return CreateXFrame<text::XTextContent, SwXTextGraphicObject>(rDoc, pFrmFmt);
    3409             : }
    3410             : 
    3411       15472 : void SAL_CALL SwXTextGraphicObject::acquire(  )throw()
    3412             : {
    3413       15472 :     SwXFrame::acquire();
    3414       15472 : }
    3415             : 
    3416       15472 : void SAL_CALL SwXTextGraphicObject::release(  )throw()
    3417             : {
    3418       15472 :     SwXFrame::release();
    3419       15472 : }
    3420             : 
    3421        9504 : ::uno::Any SAL_CALL SwXTextGraphicObject::queryInterface( const uno::Type& aType )
    3422             :     throw(uno::RuntimeException, std::exception)
    3423             : {
    3424        9504 :     ::uno::Any aRet = SwXFrame::queryInterface(aType);
    3425        9504 :     if(aRet.getValueType() == ::getCppuVoidType())
    3426        1380 :         aRet = SwXTextGraphicObjectBaseClass::queryInterface(aType);
    3427        9504 :     return aRet;
    3428             : }
    3429             : 
    3430             : uno::Sequence< uno::Type > SAL_CALL
    3431           0 :     SwXTextGraphicObject::getTypes(  ) throw(uno::RuntimeException, std::exception)
    3432             : {
    3433           0 :     uno::Sequence< uno::Type > aGraphicTypes = SwXTextGraphicObjectBaseClass::getTypes();
    3434           0 :     uno::Sequence< uno::Type > aFrameTypes = SwXFrame::getTypes();
    3435             : 
    3436           0 :     long nIndex = aGraphicTypes.getLength();
    3437             :     aGraphicTypes.realloc(
    3438           0 :         aGraphicTypes.getLength() +
    3439           0 :         aFrameTypes.getLength());
    3440             : 
    3441           0 :     uno::Type* pGraphicTypes = aGraphicTypes.getArray();
    3442           0 :     const uno::Type* pFrameTypes = aFrameTypes.getConstArray();
    3443             :     long nPos;
    3444           0 :     for(nPos = 0; nPos <aFrameTypes.getLength(); nPos++)
    3445           0 :         pGraphicTypes[nIndex++] = pFrameTypes[nPos];
    3446             : 
    3447           0 :     return aGraphicTypes;
    3448             : }
    3449             : 
    3450           0 : uno::Sequence< sal_Int8 > SAL_CALL SwXTextGraphicObject::getImplementationId(  ) throw(uno::RuntimeException, std::exception)
    3451             : {
    3452           0 :     return css::uno::Sequence<sal_Int8>();
    3453             : }
    3454             : 
    3455         752 : void SwXTextGraphicObject::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException, std::exception )
    3456             : {
    3457         752 :     SwXFrame::attach(xTextRange);
    3458         752 : }
    3459             : 
    3460           2 : uno::Reference< text::XTextRange >  SwXTextGraphicObject::getAnchor(void) throw( uno::RuntimeException, std::exception )
    3461             : {
    3462           2 :     SolarMutexGuard aGuard;
    3463           2 :     return SwXFrame::getAnchor();
    3464             : }
    3465             : 
    3466           8 : void SwXTextGraphicObject::dispose(void) throw( uno::RuntimeException, std::exception )
    3467             : {
    3468           8 :     SolarMutexGuard aGuard;
    3469           8 :     SwXFrame::dispose();
    3470           8 : }
    3471             : 
    3472           4 : void SwXTextGraphicObject::addEventListener(const uno::Reference< lang::XEventListener > & aListener)
    3473             :                                                     throw( uno::RuntimeException, std::exception )
    3474             : {
    3475           4 :     SwXFrame::addEventListener(aListener);
    3476           4 : }
    3477             : 
    3478           2 : void SwXTextGraphicObject::removeEventListener(const uno::Reference< lang::XEventListener > & aListener)
    3479             :                                                     throw( uno::RuntimeException, std::exception )
    3480             : {
    3481           2 :     SwXFrame::removeEventListener(aListener);
    3482           2 : }
    3483             : 
    3484           0 : OUString SwXTextGraphicObject::getImplementationName(void) throw( uno::RuntimeException, std::exception )
    3485             : {
    3486           0 :     return OUString("SwXTextGraphicObject");
    3487             : }
    3488             : 
    3489         124 : sal_Bool SwXTextGraphicObject::supportsService(const OUString& rServiceName) throw( uno::RuntimeException, std::exception )
    3490             : {
    3491         124 :     return cppu::supportsService(this, rServiceName);
    3492             : }
    3493             : 
    3494         126 : uno::Sequence< OUString > SwXTextGraphicObject::getSupportedServiceNames(void)
    3495             :         throw( uno::RuntimeException, std::exception )
    3496             : {
    3497         126 :     uno::Sequence < OUString > aRet = SwXFrame::getSupportedServiceNames();
    3498         126 :     aRet.realloc(aRet.getLength() + 1);
    3499         126 :     OUString* pArray = aRet.getArray();
    3500         126 :     pArray[aRet.getLength() - 1] = "com.sun.star.text.TextGraphicObject";
    3501         126 :     return aRet;
    3502             : }
    3503             : 
    3504        1188 : void * SAL_CALL SwXTextGraphicObject::operator new( size_t t) throw()
    3505             : {
    3506        1188 :     return SwXTextGraphicObjectBaseClass::operator new(t);
    3507             : }
    3508             : 
    3509        1188 : void SAL_CALL SwXTextGraphicObject::operator delete( void * p) throw()
    3510             : {
    3511        1188 :     SwXTextGraphicObjectBaseClass::operator delete(p);
    3512        1188 : }
    3513             : 
    3514             : uno::Reference<container::XNameReplace> SAL_CALL
    3515           2 :     SwXTextGraphicObject::getEvents()
    3516             :         throw(uno::RuntimeException, std::exception)
    3517             : {
    3518           2 :     return new SwFrameEventDescriptor( *this );
    3519             : }
    3520             : 
    3521         816 : SwXTextEmbeddedObject::SwXTextEmbeddedObject( SwDoc *pDoc ) :
    3522         816 :     SwXFrame(FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT), pDoc)
    3523             : {
    3524         816 : }
    3525             : 
    3526         920 : SwXTextEmbeddedObject::SwXTextEmbeddedObject(SwFrmFmt& rFmt) :
    3527         920 :     SwXFrame(rFmt, FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT))
    3528             : {
    3529             : 
    3530         920 : }
    3531             : 
    3532        3472 : SwXTextEmbeddedObject::~SwXTextEmbeddedObject()
    3533             : {
    3534             : 
    3535        3472 : }
    3536             : 
    3537             : uno::Reference<text::XTextContent>
    3538        1744 : SwXTextEmbeddedObject::CreateXTextEmbeddedObject(SwDoc & rDoc, SwFrmFmt *const pFrmFmt)
    3539             : {
    3540        1744 :     return CreateXFrame<text::XTextContent, SwXTextEmbeddedObject>(rDoc, pFrmFmt);
    3541             : }
    3542             : 
    3543       14784 : void SAL_CALL SwXTextEmbeddedObject::acquire()throw()
    3544             : {
    3545       14784 :     SwXFrame::acquire();
    3546       14784 : }
    3547             : 
    3548       14784 : void SAL_CALL SwXTextEmbeddedObject::release()throw()
    3549             : {
    3550       14784 :     SwXFrame::release();
    3551       14784 : }
    3552             : 
    3553        9282 : ::uno::Any SAL_CALL SwXTextEmbeddedObject::queryInterface( const uno::Type& aType )
    3554             :     throw( uno::RuntimeException, std::exception)
    3555             : {
    3556        9282 :     ::uno::Any aRet = SwXFrame::queryInterface(aType);;
    3557        9282 :     if(aRet.getValueType() == ::getCppuVoidType())
    3558        1194 :         aRet = SwXTextEmbeddedObjectBaseClass::queryInterface(aType);
    3559        9282 :     return aRet;
    3560             : }
    3561             : 
    3562           0 : uno::Sequence< uno::Type > SAL_CALL SwXTextEmbeddedObject::getTypes(  ) throw(uno::RuntimeException, std::exception)
    3563             : {
    3564           0 :     uno::Sequence< uno::Type > aTextEmbeddedTypes = SwXTextEmbeddedObjectBaseClass::getTypes();
    3565           0 :     uno::Sequence< uno::Type > aFrameTypes = SwXFrame::getTypes();
    3566             : 
    3567           0 :     long nIndex = aTextEmbeddedTypes.getLength();
    3568             :     aTextEmbeddedTypes.realloc(
    3569           0 :         aTextEmbeddedTypes.getLength() +
    3570           0 :         aFrameTypes.getLength());
    3571             : 
    3572           0 :     uno::Type* pTextEmbeddedTypes = aTextEmbeddedTypes.getArray();
    3573             : 
    3574           0 :     const uno::Type* pFrameTypes = aFrameTypes.getConstArray();
    3575             :     long nPos;
    3576           0 :     for(nPos = 0; nPos <aFrameTypes.getLength(); nPos++)
    3577           0 :         pTextEmbeddedTypes[nIndex++] = pFrameTypes[nPos];
    3578             : 
    3579           0 :     return aTextEmbeddedTypes;
    3580             : }
    3581             : 
    3582           0 : uno::Sequence< sal_Int8 > SAL_CALL SwXTextEmbeddedObject::getImplementationId(  ) throw(uno::RuntimeException, std::exception)
    3583             : {
    3584           0 :     return css::uno::Sequence<sal_Int8>();
    3585             : }
    3586             : 
    3587         818 : void SwXTextEmbeddedObject::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException, std::exception )
    3588             : {
    3589         818 :     SwXFrame::attach(xTextRange);
    3590         816 : }
    3591             : 
    3592          56 : uno::Reference< text::XTextRange >  SwXTextEmbeddedObject::getAnchor(void) throw( uno::RuntimeException, std::exception )
    3593             : {
    3594          56 :     SolarMutexGuard aGuard;
    3595          56 :     return SwXFrame::getAnchor();
    3596             : }
    3597             : 
    3598           2 : void SwXTextEmbeddedObject::dispose(void) throw( uno::RuntimeException, std::exception )
    3599             : {
    3600           2 :     SolarMutexGuard aGuard;
    3601           2 :     SwXFrame::dispose();
    3602           2 : }
    3603             : 
    3604           4 : void SwXTextEmbeddedObject::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException, std::exception )
    3605             : {
    3606           4 :     SwXFrame::addEventListener(aListener);
    3607           4 : }
    3608             : 
    3609           2 : void SwXTextEmbeddedObject::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException, std::exception )
    3610             : {
    3611           2 :     SwXFrame::removeEventListener(aListener);
    3612           2 : }
    3613             : 
    3614          20 : uno::Reference< lang::XComponent >  SwXTextEmbeddedObject::getEmbeddedObject(void) throw( uno::RuntimeException, std::exception )
    3615             : {
    3616          20 :     uno::Reference< lang::XComponent >  xRet;
    3617          20 :     SwFrmFmt*   pFmt = GetFrmFmt();
    3618          20 :     if(pFmt)
    3619             :     {
    3620          20 :         SwDoc* pDoc = pFmt->GetDoc();
    3621          20 :         const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    3622             :         OSL_ENSURE( pCnt->GetCntntIdx() &&
    3623             :                        pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    3624             :                                         GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    3625             : 
    3626          20 :         SwOLENode* pOleNode =  pDoc->GetNodes()[ pCnt->GetCntntIdx()
    3627          40 :                                         ->GetIndex() + 1 ]->GetOLENode();
    3628          20 :         uno::Reference < embed::XEmbeddedObject > xIP = pOleNode->GetOLEObj().GetOleRef();
    3629          20 :         if ( svt::EmbeddedObjectRef::TryRunningState( xIP ) )
    3630             :         {
    3631             :             // TODO/LATER: the listener registered after client creation should be able to handle scaling, after that the client is not necessary here
    3632          20 :             if ( pDoc->GetDocShell() )
    3633          20 :                 pDoc->GetDocShell()->GetIPClient( svt::EmbeddedObjectRef( xIP, embed::Aspects::MSOLE_CONTENT ) );
    3634             : 
    3635          20 :             xRet = uno::Reference < lang::XComponent >( xIP->getComponent(), uno::UNO_QUERY );
    3636          20 :             uno::Reference< util::XModifyBroadcaster >  xBrdcst( xRet, uno::UNO_QUERY);
    3637          40 :             uno::Reference< frame::XModel > xModel( xRet, uno::UNO_QUERY);
    3638          20 :             if( xBrdcst.is() && xModel.is() )
    3639             :             {
    3640          20 :                 SwXOLEListener* pListener = SwIterator<SwXOLEListener,SwFmt>::FirstElement( *pFmt );
    3641             :                 //create a new one if the OLE object doesn't have one already
    3642          20 :                 if( !pListener )
    3643             :                 {
    3644          18 :                     uno::Reference< util::XModifyListener > xOLEListener = new SwXOLEListener(*pFmt, xModel);
    3645          18 :                     xBrdcst->addModifyListener( xOLEListener );
    3646             :                 }
    3647          20 :             }
    3648          20 :         }
    3649             :     }
    3650          20 :     return xRet;
    3651             : }
    3652             : 
    3653           0 : uno::Reference< embed::XEmbeddedObject > SAL_CALL SwXTextEmbeddedObject::getExtendedControlOverEmbeddedObject()
    3654             :         throw( uno::RuntimeException, std::exception )
    3655             : {
    3656           0 :     uno::Reference< embed::XEmbeddedObject > xResult;
    3657           0 :     SwFrmFmt*   pFmt = GetFrmFmt();
    3658           0 :     if(pFmt)
    3659             :     {
    3660           0 :         SwDoc* pDoc = pFmt->GetDoc();
    3661           0 :         const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    3662             :         OSL_ENSURE( pCnt->GetCntntIdx() &&
    3663             :                        pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    3664             :                                         GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    3665             : 
    3666           0 :         SwOLENode* pOleNode =  pDoc->GetNodes()[ pCnt->GetCntntIdx()
    3667           0 :                                         ->GetIndex() + 1 ]->GetOLENode();
    3668           0 :         xResult = pOleNode->GetOLEObj().GetOleRef();
    3669           0 :         if ( svt::EmbeddedObjectRef::TryRunningState( xResult ) )
    3670             :         {
    3671             :             // TODO/LATER: the listener registered after client creation should be able to handle scaling, after that the client is not necessary here
    3672           0 :             if ( pDoc->GetDocShell() )
    3673           0 :                 pDoc->GetDocShell()->GetIPClient( svt::EmbeddedObjectRef( xResult, embed::Aspects::MSOLE_CONTENT ) );
    3674             : 
    3675           0 :             uno::Reference < lang::XComponent > xComp( xResult->getComponent(), uno::UNO_QUERY );
    3676           0 :             uno::Reference< util::XModifyBroadcaster >  xBrdcst( xComp, uno::UNO_QUERY);
    3677           0 :             uno::Reference< frame::XModel > xModel( xComp, uno::UNO_QUERY);
    3678           0 :             if( xBrdcst.is() && xModel.is() )
    3679             :             {
    3680           0 :                 SwXOLEListener* pListener = SwIterator<SwXOLEListener,SwFmt>::FirstElement( *pFmt );
    3681             :                 //create a new one if the OLE object doesn't have one already
    3682           0 :                 if( !pListener )
    3683             :                 {
    3684           0 :                     uno::Reference< util::XModifyListener > xOLEListener = new SwXOLEListener(*pFmt, xModel);
    3685           0 :                     xBrdcst->addModifyListener( xOLEListener );
    3686             :                 }
    3687           0 :             }
    3688             :         }
    3689             :     }
    3690           0 :     return xResult;
    3691             : }
    3692             : 
    3693           0 : sal_Int64 SAL_CALL SwXTextEmbeddedObject::getAspect() throw (uno::RuntimeException, std::exception)
    3694             : {
    3695           0 :     SwFrmFmt*   pFmt = GetFrmFmt();
    3696           0 :     if(pFmt)
    3697             :     {
    3698           0 :         SwDoc* pDoc = pFmt->GetDoc();
    3699           0 :         const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    3700             :         OSL_ENSURE( pCnt->GetCntntIdx() &&
    3701             :                        pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    3702             :                                         GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    3703             : 
    3704           0 :         return pDoc->GetNodes()[ pCnt->GetCntntIdx()->GetIndex() + 1 ]->GetOLENode()->GetAspect();
    3705             :     }
    3706             : 
    3707           0 :     return embed::Aspects::MSOLE_CONTENT; // return the default value
    3708             : }
    3709             : 
    3710           0 : void SAL_CALL SwXTextEmbeddedObject::setAspect( sal_Int64 nAspect ) throw (uno::RuntimeException, std::exception)
    3711             : {
    3712           0 :     SwFrmFmt*   pFmt = GetFrmFmt();
    3713           0 :     if(pFmt)
    3714             :     {
    3715           0 :         SwDoc* pDoc = pFmt->GetDoc();
    3716           0 :         const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    3717             :         OSL_ENSURE( pCnt->GetCntntIdx() &&
    3718             :                        pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    3719             :                                         GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    3720             : 
    3721           0 :         pDoc->GetNodes()[ pCnt->GetCntntIdx()->GetIndex() + 1 ]->GetOLENode()->SetAspect( nAspect );
    3722             :     }
    3723           0 : }
    3724             : 
    3725           2 : uno::Reference< graphic::XGraphic > SAL_CALL SwXTextEmbeddedObject::getReplacementGraphic() throw (uno::RuntimeException, std::exception)
    3726             : {
    3727           2 :     SwFrmFmt*   pFmt = GetFrmFmt();
    3728           2 :     if(pFmt)
    3729             :     {
    3730           2 :         SwDoc* pDoc = pFmt->GetDoc();
    3731           2 :         const SwFmtCntnt* pCnt = &pFmt->GetCntnt();
    3732             :         OSL_ENSURE( pCnt->GetCntntIdx() &&
    3733             :                        pDoc->GetNodes()[ pCnt->GetCntntIdx()->
    3734             :                                         GetIndex() + 1 ]->GetOLENode(), "kein OLE-Node?");
    3735             : 
    3736           2 :         const Graphic* pGraphic = pDoc->GetNodes()[ pCnt->GetCntntIdx()->GetIndex() + 1 ]->GetOLENode()->GetGraphic();
    3737           2 :         if ( pGraphic )
    3738           2 :             return pGraphic->GetXGraphic();
    3739             :     }
    3740             : 
    3741           0 :     return uno::Reference< graphic::XGraphic >();
    3742             : }
    3743             : 
    3744           0 : OUString SwXTextEmbeddedObject::getImplementationName(void) throw( uno::RuntimeException, std::exception )
    3745             : {
    3746           0 :     return OUString("SwXTextEmbeddedObject");
    3747             : }
    3748             : 
    3749         122 : sal_Bool SwXTextEmbeddedObject::supportsService(const OUString& rServiceName) throw( uno::RuntimeException, std::exception )
    3750             : {
    3751         122 :     return cppu::supportsService(this, rServiceName);
    3752             : }
    3753             : 
    3754         124 : uno::Sequence< OUString > SwXTextEmbeddedObject::getSupportedServiceNames(void)
    3755             :         throw( uno::RuntimeException, std::exception )
    3756             : {
    3757         124 :     uno::Sequence < OUString > aRet = SwXFrame::getSupportedServiceNames();
    3758         124 :     aRet.realloc(aRet.getLength() + 1);
    3759         124 :     OUString* pArray = aRet.getArray();
    3760         124 :     pArray[aRet.getLength() - 1] = "com.sun.star.text.TextEmbeddedObject";
    3761         124 :     return aRet;
    3762             : }
    3763             : 
    3764        1736 : void * SAL_CALL SwXTextEmbeddedObject::operator new( size_t t) throw()
    3765             : {
    3766        1736 :     return SwXTextEmbeddedObjectBaseClass::operator new(t);
    3767             : }
    3768             : 
    3769        1736 : void SAL_CALL SwXTextEmbeddedObject::operator delete( void * p) throw()
    3770             : {
    3771        1736 :     SwXTextEmbeddedObjectBaseClass::operator delete(p);
    3772        1736 : }
    3773             : 
    3774             : uno::Reference<container::XNameReplace> SAL_CALL
    3775          18 :     SwXTextEmbeddedObject::getEvents()
    3776             :         throw(uno::RuntimeException, std::exception)
    3777             : {
    3778          18 :     return new SwFrameEventDescriptor( *this );
    3779             : }
    3780             : 
    3781         358 : TYPEINIT1(SwXOLEListener, SwClient);
    3782             : 
    3783          18 : SwXOLEListener::SwXOLEListener( SwFmt& rOLEFmt, uno::Reference< XModel > xOLE) :
    3784             :     SwClient(&rOLEFmt),
    3785          18 :     xOLEModel(xOLE)
    3786             : {
    3787          18 : }
    3788             : 
    3789          36 : SwXOLEListener::~SwXOLEListener()
    3790          36 : {}
    3791             : 
    3792         508 : void SwXOLEListener::modified( const lang::EventObject& /*rEvent*/ )
    3793             :                                         throw( uno::RuntimeException, std::exception )
    3794             : {
    3795         508 :     SolarMutexGuard aGuard;
    3796             : 
    3797         508 :     SwOLENode* pNd = 0;
    3798         508 :     SwFmt* pFmt = GetFmt();
    3799         508 :     if(pFmt)
    3800         508 :     {const SwNodeIndex* pIdx = pFmt->GetCntnt().GetCntntIdx();
    3801         508 :         if(pIdx)
    3802             :         {
    3803         508 :             SwNodeIndex aIdx(*pIdx, 1);
    3804         508 :             SwNoTxtNode* pNoTxt = aIdx.GetNode().GetNoTxtNode();
    3805         508 :             pNd = pNoTxt->GetOLENode();
    3806             :         }
    3807             :     }
    3808         508 :     if(!pNd)
    3809           0 :         throw uno::RuntimeException();
    3810             : 
    3811        1016 :     uno::Reference < embed::XEmbeddedObject > xIP = pNd->GetOLEObj().GetOleRef();
    3812         508 :     if ( xIP.is() )
    3813             :     {
    3814         508 :         sal_Int32 nState = xIP->getCurrentState();
    3815         508 :         if ( nState == embed::EmbedStates::INPLACE_ACTIVE || nState == embed::EmbedStates::UI_ACTIVE )
    3816         508 :             return;
    3817             :     }
    3818             : 
    3819             :     // if the OLE-Node is UI-Active do nothing
    3820         508 :     pNd->SetOLESizeInvalid(true);
    3821        1016 :     pNd->GetDoc()->SetOLEObjModified();
    3822             : }
    3823             : 
    3824          18 : void SwXOLEListener::disposing( const lang::EventObject& rEvent )
    3825             :                         throw( uno::RuntimeException, std::exception )
    3826             : {
    3827          18 :     SolarMutexGuard aGuard;
    3828             : 
    3829          36 :     uno::Reference< util::XModifyListener >  xListener( this );
    3830             : 
    3831          36 :     uno::Reference< frame::XModel >  xModel( rEvent.Source, uno::UNO_QUERY );
    3832          36 :     uno::Reference< util::XModifyBroadcaster >  xBrdcst(xModel, uno::UNO_QUERY);
    3833             : 
    3834             :     try
    3835             :     {
    3836          18 :         if( xBrdcst.is() )
    3837          18 :             xBrdcst->removeModifyListener( xListener );
    3838             :     }
    3839           0 :     catch(uno::Exception const &)
    3840             :     {
    3841             :         OSL_FAIL("OLE Listener couldn't be removed");
    3842          18 :     }
    3843          18 : }
    3844             : 
    3845          24 : void SwXOLEListener::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew )
    3846             : {
    3847          24 :     ClientModify(this, pOld, pNew);
    3848          24 :     if(!GetRegisteredIn())
    3849          10 :         xOLEModel = 0;
    3850         294 : }
    3851             : 
    3852             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10